Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -23,4 +23,5 @@
 REGION_ALIAS ("REGION_STACK", RAM);
 REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
 
 INCLUDE linkcmds.mpc55xx
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -23,4 +23,5 @@
 REGION_ALIAS ("REGION_STACK", RAM);
 REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
 
 INCLUDE linkcmds.mpc55xx
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -23,4 +23,5 @@
 REGION_ALIAS ("REGION_STACK", RAM);
 REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", ROM);
 
 INCLUDE linkcmds.mpc55xx
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -32,4 +32,5 @@
 REGION_ALIAS ("REGION_STACK", RAM);
 REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
 
 INCLUDE linkcmds.mpc55xx
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.xkt564levb
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.xkt564levb	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.xkt564levb	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -28,4 +28,5 @@
 REGION_ALIAS ("REGION_STACK", RAM_1);
 REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE);
 
 INCLUDE linkcmds.mpc55xx
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -8,5 +8,5 @@
 
 /*
- * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2008-2012 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
@@ -24,4 +24,12 @@
 #include <bsp/start.h>
 #include <bsp/mpc55xx-config.h>
+#include <bsp/linker-symbols.h>
+
+/* This function is defined in start.S */
+BSP_START_TEXT_SECTION void mpc55xx_start_load_section(
+  void *dst,
+  const void *src,
+  size_t n
+);
 
 static BSP_START_TEXT_SECTION void mpc55xx_start_mmu(void)
@@ -52,4 +60,17 @@
     bsp_start_zero(&bsp_ram_1_start [0], (size_t) bsp_ram_1_size);
   #endif
+}
+
+static BSP_START_TEXT_SECTION void mpc55xx_start_load_nocache_section(void)
+{
+  mpc55xx_start_load_section(
+    bsp_section_nocache_begin,
+    bsp_section_nocache_load_begin,
+    (size_t) bsp_section_nocache_size
+  );
+  rtems_cache_flush_multiple_data_lines(
+    bsp_section_nocache_begin,
+    (size_t) bsp_section_nocache_size
+  );
 }
 
@@ -168,4 +189,5 @@
   #endif
   mpc55xx_start_internal_ram();
+  mpc55xx_start_load_nocache_section();
   mpc55xx_start_mmu();
   mpc55xx_start_mode_change();
Index: c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start.S
===================================================================
--- c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start.S	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start.S	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -8,5 +8,5 @@
 
 /*
- * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2008-2012 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
@@ -22,5 +22,5 @@
 
 #include <bspopts.h>
-
+#include <bsp/linker-symbols.h>
 #include <libcpu/powerpc-utility.h>
 
@@ -42,13 +42,4 @@
 	.extern	boot_card
 	.extern	bsp_ram_start
-	.extern	bsp_section_data_begin
-	.extern	bsp_section_data_load_begin
-	.extern	bsp_section_data_size
-	.extern	bsp_section_fast_data_begin
-	.extern	bsp_section_fast_data_load_begin
-	.extern	bsp_section_fast_data_size
-	.extern	bsp_section_fast_text_begin
-	.extern	bsp_section_fast_text_load_begin
-	.extern	bsp_section_fast_text_size
 	.extern	mpc55xx_start_config_mmu_early
 	.extern	mpc55xx_start_config_mmu_early_count
@@ -56,4 +47,5 @@
 
 	.globl	_start
+	.globl	mpc55xx_start_load_section
 	.globl	mpc55xx_start_mmu_apply_config
 
@@ -226,13 +218,13 @@
 	LA	r4, bsp_section_fast_text_load_begin
 	LA	r5, bsp_section_fast_text_size
-	bl	load_section
+	bl	mpc55xx_start_load_section
 	LA	r3, bsp_section_fast_data_begin
 	LA	r4, bsp_section_fast_data_load_begin
 	LA	r5, bsp_section_fast_data_size
-	bl	load_section
+	bl	mpc55xx_start_load_section
 	LA	r3, bsp_section_data_begin
 	LA	r4, bsp_section_data_load_begin
 	LA	r5, bsp_section_data_size
-	bl	load_section
+	bl	mpc55xx_start_load_section
 
 	/* Set up EABI and SYSV environment */
@@ -271,5 +263,5 @@
 	blr
 
-load_section:
+mpc55xx_start_load_section:
 	cmpw	cr7, r3, r4
 	beqlr	cr7
Index: c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0
===================================================================
--- c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -26,5 +26,6 @@
 REGION_ALIAS ("REGION_WORK", HIGH);
 REGION_ALIAS ("REGION_STACK", HIGH);
-REGION_ALIAS ("REGION_NOCACHE", HIGH);
+REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
 
 bsp_section_robarrier_align = 0x1000000;
Index: c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1
===================================================================
--- c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -25,5 +25,6 @@
 REGION_ALIAS ("REGION_WORK", RAM);
 REGION_ALIAS ("REGION_STACK", RAM);
-REGION_ALIAS ("REGION_NOCACHE", RAM);
+REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
 
 bsp_section_robarrier_align = 0x1000000;
Index: c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb
===================================================================
--- c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -26,5 +26,6 @@
 REGION_ALIAS ("REGION_WORK", HIGH);
 REGION_ALIAS ("REGION_STACK", HIGH);
-REGION_ALIAS ("REGION_NOCACHE", HIGH);
+REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
 
 bsp_section_robarrier_align = 0x1000000;
Index: c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h
===================================================================
--- c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -97,4 +97,6 @@
 LINKER_SYMBOL(bsp_section_nocache_end)
 LINKER_SYMBOL(bsp_section_nocache_size)
+LINKER_SYMBOL(bsp_section_nocache_load_begin)
+LINKER_SYMBOL(bsp_section_nocache_load_end)
 
 #define BSP_FAST_TEXT_SECTION __attribute__((section(".bsp_fast_text")))
Index: c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base
===================================================================
--- c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -329,6 +329,8 @@
 		*(.bsp_nocache)
 		bsp_section_nocache_end = .;
-	} > REGION_NOCACHE AT > REGION_NOCACHE
+	} > REGION_NOCACHE AT > REGION_NOCACHE_LOAD
 	bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin;
+	bsp_section_nocache_load_begin = LOADADDR (.nocache);
+	bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
 
 	/* FIXME */
Index: c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc
===================================================================
--- c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc	(revision 105ccdd55ec3c683dcbe6f2eef3e44135f4ba53d)
+++ c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc	(revision 6273201b14fc0761df952e8ca76b367ef4f8b741)
@@ -19,5 +19,6 @@
 REGION_ALIAS ("REGION_WORK", RAM);
 REGION_ALIAS ("REGION_STACK", RAM);
-REGION_ALIAS ("REGION_NOCACHE", RAM);
+REGION_ALIAS ("REGION_NOCACHE", NIRVANA);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA);
 
 INCLUDE linkcmds.base
