diff --git a/Makefile b/Makefile
index e922ec3a7bcde15c6a68a4715909bca3ef4c53aa..0381c8110fecfe00d8ae1807cb284b3369bedde5 100644
--- a/Makefile
+++ b/Makefile
@@ -3745,7 +3745,7 @@ clean:
 	       $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds  \
 	       $(obj)arch/blackfin/lib/u-boot.lds				  \
 	       $(obj)u-boot.lds						  \
-	       $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
+	       $(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs]
 	@rm -f $(obj)include/bmp_logo.h
 	@rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
 	@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
diff --git a/cpu/blackfin/.gitignore b/arch/blackfin/cpu/.gitignore
similarity index 100%
rename from cpu/blackfin/.gitignore
rename to arch/blackfin/cpu/.gitignore
diff --git a/cpu/blackfin/Makefile b/arch/blackfin/cpu/Makefile
similarity index 100%
rename from cpu/blackfin/Makefile
rename to arch/blackfin/cpu/Makefile
diff --git a/cpu/blackfin/bootrom-asm-offsets.awk b/arch/blackfin/cpu/bootrom-asm-offsets.awk
similarity index 100%
rename from cpu/blackfin/bootrom-asm-offsets.awk
rename to arch/blackfin/cpu/bootrom-asm-offsets.awk
diff --git a/cpu/blackfin/bootrom-asm-offsets.c.in b/arch/blackfin/cpu/bootrom-asm-offsets.c.in
similarity index 100%
rename from cpu/blackfin/bootrom-asm-offsets.c.in
rename to arch/blackfin/cpu/bootrom-asm-offsets.c.in
diff --git a/cpu/blackfin/cache.S b/arch/blackfin/cpu/cache.S
similarity index 100%
rename from cpu/blackfin/cache.S
rename to arch/blackfin/cpu/cache.S
diff --git a/cpu/blackfin/cpu.c b/arch/blackfin/cpu/cpu.c
similarity index 100%
rename from cpu/blackfin/cpu.c
rename to arch/blackfin/cpu/cpu.c
diff --git a/cpu/blackfin/cpu.h b/arch/blackfin/cpu/cpu.h
similarity index 100%
rename from cpu/blackfin/cpu.h
rename to arch/blackfin/cpu/cpu.h
diff --git a/cpu/blackfin/initcode.c b/arch/blackfin/cpu/initcode.c
similarity index 100%
rename from cpu/blackfin/initcode.c
rename to arch/blackfin/cpu/initcode.c
diff --git a/cpu/blackfin/interrupt.S b/arch/blackfin/cpu/interrupt.S
similarity index 100%
rename from cpu/blackfin/interrupt.S
rename to arch/blackfin/cpu/interrupt.S
diff --git a/cpu/blackfin/interrupts.c b/arch/blackfin/cpu/interrupts.c
similarity index 100%
rename from cpu/blackfin/interrupts.c
rename to arch/blackfin/cpu/interrupts.c
diff --git a/cpu/blackfin/jtag-console.c b/arch/blackfin/cpu/jtag-console.c
similarity index 100%
rename from cpu/blackfin/jtag-console.c
rename to arch/blackfin/cpu/jtag-console.c
diff --git a/cpu/blackfin/os_log.c b/arch/blackfin/cpu/os_log.c
similarity index 100%
rename from cpu/blackfin/os_log.c
rename to arch/blackfin/cpu/os_log.c
diff --git a/cpu/blackfin/reset.c b/arch/blackfin/cpu/reset.c
similarity index 100%
rename from cpu/blackfin/reset.c
rename to arch/blackfin/cpu/reset.c
diff --git a/cpu/blackfin/serial.c b/arch/blackfin/cpu/serial.c
similarity index 100%
rename from cpu/blackfin/serial.c
rename to arch/blackfin/cpu/serial.c
diff --git a/cpu/blackfin/serial.h b/arch/blackfin/cpu/serial.h
similarity index 100%
rename from cpu/blackfin/serial.h
rename to arch/blackfin/cpu/serial.h
diff --git a/cpu/blackfin/start.S b/arch/blackfin/cpu/start.S
similarity index 100%
rename from cpu/blackfin/start.S
rename to arch/blackfin/cpu/start.S
diff --git a/cpu/blackfin/traps.c b/arch/blackfin/cpu/traps.c
similarity index 100%
rename from cpu/blackfin/traps.c
rename to arch/blackfin/cpu/traps.c
diff --git a/cpu/blackfin/watchdog.c b/arch/blackfin/cpu/watchdog.c
similarity index 100%
rename from cpu/blackfin/watchdog.c
rename to arch/blackfin/cpu/watchdog.c
diff --git a/arch/blackfin/lib/u-boot.lds.S b/arch/blackfin/lib/u-boot.lds.S
index 2b23d8ba63ed9e87f90b9977e589a8dafbe2f319..9163d20c29b858a448d021d00e36476dac3b0a23 100644
--- a/arch/blackfin/lib/u-boot.lds.S
+++ b/arch/blackfin/lib/u-boot.lds.S
@@ -73,14 +73,14 @@ SECTIONS
 {
 	.text.pre :
 	{
-		cpu/blackfin/start.o (.text .text.*)
+		arch/blackfin/cpu/start.o (.text .text.*)
 
 		LDS_BOARD_TEXT
 	} >ram_code
 
 	.text.init :
 	{
-		cpu/blackfin/initcode.o (.text .text.*)
+		arch/blackfin/cpu/initcode.o (.text .text.*)
 	} >ram_code
 	__initcode_lma = LOADADDR(.text.init);
 	__initcode_len = SIZEOF(.text.init);
diff --git a/include/configs/bf533-stamp.h b/include/configs/bf533-stamp.h
index 0b94f559fd2cbfa47a10061f36183eecc07b463f..80c48847e42cf34a602b056a4fd1a96fe2132b4b 100644
--- a/include/configs/bf533-stamp.h
+++ b/include/configs/bf533-stamp.h
@@ -126,9 +126,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/bf537-pnav.h b/include/configs/bf537-pnav.h
index 8038c40de1b78630361a3d0e6b59e9f85afd19f7..cf40d06b8868e47040c48ff5aa45fd911ae0c403 100644
--- a/include/configs/bf537-pnav.h
+++ b/include/configs/bf537-pnav.h
@@ -112,9 +112,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h
index 0f8679b57e56281e56685415420acbae7e9c0325..92ceb3815b67e0209228d7900f06fd9eb3ffc062 100644
--- a/include/configs/bf537-stamp.h
+++ b/include/configs/bf537-stamp.h
@@ -122,9 +122,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/bf538f-ezkit.h b/include/configs/bf538f-ezkit.h
index 696fe29d207bcef5289bd6f06dfaf4b511d9809a..59e05650ec1233c09e0efb89f90e32cdb95e6af4 100644
--- a/include/configs/bf538f-ezkit.h
+++ b/include/configs/bf538f-ezkit.h
@@ -119,9 +119,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/bf561-ezkit.h b/include/configs/bf561-ezkit.h
index fca6e43b479bae9d7ef1cb58503610ff337f423d..1e3fdef64a36234ab9a92f16839e2ed79ae05312 100644
--- a/include/configs/bf561-ezkit.h
+++ b/include/configs/bf561-ezkit.h
@@ -96,9 +96,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	lib/zlib.o		(.text .text.*); \
diff --git a/include/configs/cm-bf537e.h b/include/configs/cm-bf537e.h
index d86409fcd302d5ac781ae56cbccf54ad97f6d33c..8d0bc1232f001ce1f3d964aec51293b3b002e86c 100644
--- a/include/configs/cm-bf537e.h
+++ b/include/configs/cm-bf537e.h
@@ -104,9 +104,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/cm-bf537u.h b/include/configs/cm-bf537u.h
index 6be9dbad816142b3284da83b92e2da066fce9b02..bbea3ab00991acfeb88b46df865d8ceece5f331a 100644
--- a/include/configs/cm-bf537u.h
+++ b/include/configs/cm-bf537u.h
@@ -105,9 +105,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \
diff --git a/include/configs/ibf-dsp561.h b/include/configs/ibf-dsp561.h
index 6fa8cf7a9156ce82f8376c1f23ad8f0694613af8..2eef5efa78fe8f46efaeed3967e5ec741ffdad49 100644
--- a/include/configs/ibf-dsp561.h
+++ b/include/configs/ibf-dsp561.h
@@ -84,9 +84,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	lib/zlib.o		(.text .text.*); \
diff --git a/include/configs/tcm-bf537.h b/include/configs/tcm-bf537.h
index e9dfcc95fe0d9b45c8e11b79d7b2cbee91f753c8..409a042d05183adfce96304d976b70387aab6bfb 100644
--- a/include/configs/tcm-bf537.h
+++ b/include/configs/tcm-bf537.h
@@ -105,9 +105,9 @@
  * it linked after the configuration sector.
  */
 # define LDS_BOARD_TEXT \
-	cpu/blackfin/traps.o		(.text .text.*); \
-	cpu/blackfin/interrupt.o	(.text .text.*); \
-	cpu/blackfin/serial.o		(.text .text.*); \
+	arch/blackfin/cpu/traps.o		(.text .text.*); \
+	arch/blackfin/cpu/interrupt.o	(.text .text.*); \
+	arch/blackfin/cpu/serial.o		(.text .text.*); \
 	common/dlmalloc.o		(.text .text.*); \
 	lib/crc32.o		(.text .text.*); \
 	. = DEFINED(env_offset) ? env_offset : .; \