diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 92a7e60..90f024d 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -446,7 +446,7 @@
 /* Implement a dummy function for those platforms w/o SERDES */
 static void __fsl_serdes__init(void)
 {
-	return ;
+	return;
 }
 __attribute__((weak, alias("__fsl_serdes__init"))) void fsl_serdes_init(void);
 
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
index 8d629d3..e6d3058 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c
@@ -76,7 +76,7 @@
 	ifc_out32(&(ifc_regs.gregs->csor_cs[0].csor), CONFIG_SYS_CSOR0);
 	ifc_out32(&(ifc_regs.gregs->amask_cs[0].amask), CONFIG_SYS_AMASK0);
 
-	return ;
+	return;
 }
 #endif
 
diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c
index c8ad6a1..61d8aa7 100644
--- a/arch/powerpc/cpu/mpc85xx/fdt.c
+++ b/arch/powerpc/cpu/mpc85xx/fdt.c
@@ -271,13 +271,13 @@
 
 	if (ph == NULL) {
 		debug("no next-level-cache property\n");
-		return ;
+		return;
 	}
 
 	off = fdt_node_offset_by_phandle(blob, *ph);
 	if (off < 0) {
 		printf("%s: %s\n", __func__, fdt_strerror(off));
-		return ;
+		return;
 	}
 
 	ft_fixup_l2cache_compatible(blob, off);
@@ -373,7 +373,7 @@
 		l3_off = fdt_node_offset_by_phandle(blob, l3_off);
 		if (l3_off < 0) {
 			printf("%s: %s\n", __func__, fdt_strerror(off));
-			return ;
+			return;
 		}
 		ft_fixup_l3cache(blob, l3_off);
 	}
diff --git a/arch/powerpc/cpu/mpc85xx/liodn.c b/arch/powerpc/cpu/mpc85xx/liodn.c
index a084002..34974c9 100644
--- a/arch/powerpc/cpu/mpc85xx/liodn.c
+++ b/arch/powerpc/cpu/mpc85xx/liodn.c
@@ -111,7 +111,7 @@
 #endif
 	default:
 		printf("Error: Invalid device type to %s\n", __FUNCTION__);
-		return ;
+		return;
 	}
 
 	base = (liodn_bases[dev].id[0] << 16) | liodn_bases[dev].id[0];
@@ -232,7 +232,7 @@
 	/* search for srio node, if doesn't exist just return - nothing todo */
 	srio_off = fdt_node_offset_by_compatible(blob, -1, "fsl,srio");
 	if (srio_off < 0)
-		return ;
+		return;
 
 	for (i = 0; i < srio_liodn_tbl_sz; i++) {
 		int off, portid = tbl[i].portid;
diff --git a/arch/powerpc/cpu/mpc85xx/mpc8548_serdes.c b/arch/powerpc/cpu/mpc85xx/mpc8548_serdes.c
index 2a5c3e3..38f30af 100644
--- a/arch/powerpc/cpu/mpc85xx/mpc8548_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/mpc8548_serdes.c
@@ -45,7 +45,7 @@
 
 	if (srds1_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
 		printf("Invalid PORDEVSR[IO_SEL] = %d\n", srds1_cfg);
-		return ;
+		return;
 	}
 
 	for (lane = 0; lane < SRDS1_MAX_LANES; lane++) {
diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c
index 52e2124..6b4cbdd 100644
--- a/arch/powerpc/cpu/mpc85xx/portals.c
+++ b/arch/powerpc/cpu/mpc85xx/portals.c
@@ -21,7 +21,7 @@
 
 	off = fdt_node_offset_by_compatible(blob, -1, compat);
 	if (off < 0)
-		return ;
+		return;
 
 	off = fdt_parent_offset(blob, off);
 	/* if non-zero assume we have a container */
@@ -35,7 +35,7 @@
 		range = fdt_getprop_w(blob, off, "ranges", &len);
 		if (range == NULL) {
 			printf("ERROR: container for %s has no ranges", compat);
-			return ;
+			return;
 		}
 
 		range[0] = 0;
@@ -61,13 +61,13 @@
 		if (container && (memcmp(container, name, len))) {
 			printf("WARNING: container names didn't match %s %s\n",
 				container, name);
-			return ;
+			return;
 		}
 
 		memcpy(&buf, name, len);
 		len += sprintf(&buf[len], "@%llx", addr);
 		fdt_set_name(blob, off, buf);
-		return ;
+		return;
 	}
 
 	printf("ERROR: %s isn't in a container.  Not supported\n", compat);
diff --git a/arch/powerpc/cpu/mpc85xx/tlb.c b/arch/powerpc/cpu/mpc85xx/tlb.c
index e39fe14..81e6072 100644
--- a/arch/powerpc/cpu/mpc85xx/tlb.c
+++ b/arch/powerpc/cpu/mpc85xx/tlb.c
@@ -41,7 +41,7 @@
 			  tlb_table[i].mas7);
 	}
 
-	return ;
+	return;
 }
 
 #if !defined(CONFIG_NAND_SPL) && \
diff --git a/arch/powerpc/cpu/mpc8xxx/fdt.c b/arch/powerpc/cpu/mpc8xxx/fdt.c
index 871554a..3004290 100644
--- a/arch/powerpc/cpu/mpc8xxx/fdt.c
+++ b/arch/powerpc/cpu/mpc8xxx/fdt.c
@@ -128,7 +128,7 @@
 	/* search for srio node, if doesn't exist just return - nothing todo */
 	srio_off = fdt_node_offset_by_compatible(blob, -1, "fsl,srio");
 	if (srio_off < 0)
-		return ;
+		return;
 
 #ifdef CONFIG_SRIO1
 	if (is_serdes_configured(SRIO1))
diff --git a/arch/powerpc/cpu/mpc8xxx/law.c b/arch/powerpc/cpu/mpc8xxx/law.c
index 198b5b1..24bbe3b 100644
--- a/arch/powerpc/cpu/mpc8xxx/law.c
+++ b/arch/powerpc/cpu/mpc8xxx/law.c
@@ -353,5 +353,5 @@
 	}
 #endif
 
-	return ;
+	return;
 }
diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
index 5127878..8ae8d8a 100644
--- a/arch/powerpc/lib/bootm.c
+++ b/arch/powerpc/lib/bootm.c
@@ -113,7 +113,7 @@
 			   cmd_start, cmd_end, 0, 0);
 		/* does not return */
 	}
-	return ;
+	return;
 }
 
 void arch_lmb_reserve(struct lmb *lmb)
@@ -148,7 +148,7 @@
 	cpu_mp_lmb_reserve(lmb);
 #endif
 
-	return ;
+	return;
 }
 
 static void boot_prep_linux(struct bootm_headers *images)
