change log for rtems (2011-03-28)

rtems-vc at rtems.org rtems-vc at rtems.org
Mon Mar 28 09:10:39 UTC 2011


 *sh*:
2011-03-29	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* shared/start/start.S: Default exception handler will result in
	bsp_reset().
	* shared/startup/linkcmds.base: Move unsupported sections into
	read-only section.  Changed barrier sections.

M   1.90  c/src/lib/libbsp/arm/ChangeLog
M   1.12  c/src/lib/libbsp/arm/shared/start/start.S
M   1.10  c/src/lib/libbsp/arm/shared/startup/linkcmds.base

diff -u rtems/c/src/lib/libbsp/arm/ChangeLog:1.89 rtems/c/src/lib/libbsp/arm/ChangeLog:1.90
--- rtems/c/src/lib/libbsp/arm/ChangeLog:1.89	Fri Feb 11 05:49:52 2011
+++ rtems/c/src/lib/libbsp/arm/ChangeLog	Mon Mar 28 03:49:58 2011
@@ -1,3 +1,10 @@
+2011-03-29	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+	* shared/start/start.S: Default exception handler will result in
+	bsp_reset().
+	* shared/startup/linkcmds.base: Move unsupported sections into
+	read-only section.  Changed barrier sections.
+
 2011-02-11	Ralf Corsépius <ralf.corsepius at rtems.org>
 
 	* shared/abort/abort.c, shared/abort/simple_abort.c:

diff -u rtems/c/src/lib/libbsp/arm/shared/start/start.S:1.11 rtems/c/src/lib/libbsp/arm/shared/start/start.S:1.12
--- rtems/c/src/lib/libbsp/arm/shared/start/start.S:1.11	Fri Dec  3 03:23:52 2010
+++ rtems/c/src/lib/libbsp/arm/shared/start/start.S	Mon Mar 28 03:49:58 2011
@@ -68,31 +68,31 @@
 
 handler_addr_undef:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_swi:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_prefetch:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_abort:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_reserved:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_irq:
 
-	.word	twiddle
+	.word	reset
 
 handler_addr_fiq:
 
-	.word	twiddle
+	.word	reset
 
 /* Start entry */
 
@@ -184,15 +184,18 @@
 	mov	r0, #0
 	bl	boot_card
 
+twiddle:
+
 	/* Branch to reset function */
 	bl	bsp_reset
 
-	SWITCH_FROM_THUMB_TO_ARM
+	b	twiddle
 
-	/* Spin forever */
+.arm
 
-twiddle:
+reset:
 
+	SWITCH_FROM_ARM_TO_THUMB	r0
 	b	twiddle
 
 DEFINE_FUNCTION_ARM(bsp_start_memcpy)

diff -u rtems/c/src/lib/libbsp/arm/shared/startup/linkcmds.base:1.9 rtems/c/src/lib/libbsp/arm/shared/startup/linkcmds.base:1.10
--- rtems/c/src/lib/libbsp/arm/shared/startup/linkcmds.base:1.9	Wed Jan 26 06:21:26 2011
+++ rtems/c/src/lib/libbsp/arm/shared/startup/linkcmds.base	Mon Mar 28 03:49:58 2011
@@ -32,8 +32,9 @@
 
 bsp_vector_table_size = DEFINED (bsp_vector_table_size) ? bsp_vector_table_size : 64;
 
-bsp_section_vbarrier_align = DEFINED (bsp_section_vbarrier_align) ? bsp_section_vbarrier_align : 1;
+bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 1;
 bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1;
+bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1;
 
 bsp_stack_align = DEFINED (bsp_stack_align) ? bsp_stack_align : 8;
 
@@ -102,107 +103,47 @@
 	bsp_vector_table_begin = DEFINED (bsp_vector_table_in_start_section) ? bsp_section_start_begin : bsp_section_vector_begin;
 	bsp_vector_table_end = bsp_vector_table_begin + bsp_vector_table_size;
 
-	.vbarrier : {
-		. = ALIGN (bsp_section_vbarrier_align);
+	.xbarrier : {
+		. = ALIGN (bsp_section_xbarrier_align);
 	} > REGION_VECTOR
 
-	.interp : {
+	.fast_text : {
+		bsp_section_fast_text_begin = .;
+		*(.bsp_fast_text)
+		bsp_section_fast_text_end = .;
+	} > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
+	bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
+	bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
+	bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
+
+	.text : {
 		bsp_section_text_begin = .;
-		*(.interp)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.note.gnu.build-id : {
-		*(.note.gnu.build-id)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.hash : {
-		*(.hash)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.gnu.hash : {
-		*(.gnu.hash)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.dynsym : {
-		*(.dynsym)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.dynstr : {
-		*(.dynstr)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.gnu.version : {
-		*(.gnu.version)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.gnu.version_d : {
-		*(.gnu.version_d)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.gnu.version_r : {
-		*(.gnu.version_r)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.rel.dyn : {
-		*(.rel.init)
-		*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
-		*(.rel.fini)
-		*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-		*(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
-		*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
-		*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
-		*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
-		*(.rel.ctors)
-		*(.rel.dtors)
-		*(.rel.got)
-		*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
-		PROVIDE_HIDDEN (__rel_iplt_start = .);
-		*(.rel.iplt)
-		PROVIDE_HIDDEN (__rel_iplt_end = .);
-		PROVIDE_HIDDEN (__rela_iplt_start = .);
-		PROVIDE_HIDDEN (__rela_iplt_end = .);
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.rela.dyn : {
-		*(.rela.init)
-		*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
-		*(.rela.fini)
-		*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
-		*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
-		*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
-		*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
-		*(.rela.ctors)
-		*(.rela.dtors)
-		*(.rela.got)
-		*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-		PROVIDE_HIDDEN (__rel_iplt_start = .);
-		PROVIDE_HIDDEN (__rel_iplt_end = .);
-		PROVIDE_HIDDEN (__rela_iplt_start = .);
-		*(.rela.iplt)
-		PROVIDE_HIDDEN (__rela_iplt_end = .);
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.rel.plt : {
-		*(.rel.plt)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.rela.plt : {
-		*(.rela.plt)
+		*(.text.unlikely .text.*_unlikely)
+		*(.text .stub .text.* .gnu.linkonce.t.*)
+		/* .gnu.warning sections are handled specially by elf32.em.  */
+		*(.gnu.warning)
+		*(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
 	} > REGION_TEXT AT > REGION_TEXT_LOAD
 	.init : {
 		KEEP (*(.init))
 	} > REGION_TEXT AT > REGION_TEXT_LOAD
 	.fini : {
 		KEEP (*(.fini))
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.plt : {
-		*(.plt)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.iplt : {
-		*(.iplt)
-	} > REGION_TEXT AT > REGION_TEXT_LOAD
-	.text : {
-		*(.text.unlikely .text.*_unlikely)
-		*(.text .stub .text.* .gnu.linkonce.t.*)
-		/* .gnu.warning sections are handled specially by elf32.em.  */
-		*(.gnu.warning)
-		*(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
 		bsp_section_text_end = .;
 	} > REGION_TEXT AT > REGION_TEXT_LOAD
 	bsp_section_text_size = bsp_section_text_end - bsp_section_text_begin;
-	bsp_section_text_load_begin = LOADADDR (.interp);
+	bsp_section_text_load_begin = LOADADDR (.text);
 	bsp_section_text_load_end = bsp_section_text_load_begin + bsp_section_text_size;
 
-	.rodata1 : {
+	.robarrier : {
+		. = ALIGN (bsp_section_robarrier_align);
+	} > REGION_RODATA
+
+	.rodata : {
 		bsp_section_rodata_begin = .;
+		*(.rodata .rodata.* .gnu.linkonce.r.*)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.rodata1 : {
 		*(.rodata1)
 	} > REGION_RODATA AT > REGION_RODATA_LOAD
 	.ARM.extab : {
@@ -276,17 +217,89 @@
 	.got : {
 		*(.got.plt) *(.igot.plt) *(.got) *(.igot)
 	} > REGION_RODATA AT > REGION_RODATA_LOAD
-	.rodata : {
-		/* Special FreeBSD sysctl sections */
-		. = ALIGN (16);
+	.interp : {
+		*(.interp)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.note.gnu.build-id : {
+		*(.note.gnu.build-id)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.hash : {
+		*(.hash)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.gnu.hash : {
+		*(.gnu.hash)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.dynsym : {
+		*(.dynsym)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.dynstr : {
+		*(.dynstr)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.gnu.version : {
+		*(.gnu.version)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.gnu.version_d : {
+		*(.gnu.version_d)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.gnu.version_r : {
+		*(.gnu.version_r)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.rel.dyn : {
+		*(.rel.init)
+		*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
+		*(.rel.fini)
+		*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
+		*(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+		*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
+		*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
+		*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
+		*(.rel.ctors)
+		*(.rel.dtors)
+		*(.rel.got)
+		*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
+		PROVIDE_HIDDEN (__rel_iplt_start = .);
+		*(.rel.iplt)
+		PROVIDE_HIDDEN (__rel_iplt_end = .);
+		PROVIDE_HIDDEN (__rela_iplt_start = .);
+		PROVIDE_HIDDEN (__rela_iplt_end = .);
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.rela.dyn : {
+		*(.rela.init)
+		*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
+		*(.rela.fini)
+		*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
+		*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
+		*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
+		*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
+		*(.rela.ctors)
+		*(.rela.dtors)
+		*(.rela.got)
+		*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
+		PROVIDE_HIDDEN (__rel_iplt_start = .);
+		PROVIDE_HIDDEN (__rel_iplt_end = .);
+		PROVIDE_HIDDEN (__rela_iplt_start = .);
+		*(.rela.iplt)
+		PROVIDE_HIDDEN (__rela_iplt_end = .);
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.rel.plt : {
+		*(.rel.plt)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.rela.plt : {
+		*(.rela.plt)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.plt : {
+		*(.plt)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.iplt : {
+		*(.iplt)
+	} > REGION_RODATA AT > REGION_RODATA_LOAD
+	.robsdsets : {
+		/* Special FreeBSD linker set sections */
 		__start_set_sysctl_set = .;
 		*(set_sysctl_*);
-		__stop_set_sysctl_set = ABSOLUTE(.);
+		__stop_set_sysctl_set = .;
 		*(set_domain_*);
 		*(set_pseudo_*);
-		_bsd__start_set_sysinit_set = .;
-		*(_bsd_set_sysinit_set);
-		_bsd__stop_set_sysinit_set = .;
 		_bsd__start_set_modmetadata_set = .;
 		*(_bsd_set_modmetadata_set);
 		_bsd__stop_set_modmetadata_set = .;
@@ -294,38 +307,15 @@
 		*(_bsd_set_sysctl_set);
 		_bsd__stop_set_sysctl_set = .;
 
-		*(.rodata .rodata.* .gnu.linkonce.r.*)
 		bsp_section_rodata_end = .;
 	} > REGION_RODATA AT > REGION_RODATA_LOAD
 	bsp_section_rodata_size = bsp_section_rodata_end - bsp_section_rodata_begin;
-	bsp_section_rodata_load_begin = LOADADDR (.rodata1);
+	bsp_section_rodata_load_begin = LOADADDR (.rodata);
 	bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
 
-	.robarrier : {
-		. = ALIGN (bsp_section_robarrier_align);
-	} > REGION_RODATA
-
-	.data1 : {
-		bsp_section_data_begin = .;
-		*(.data1)
-	} > REGION_DATA AT > REGION_DATA_LOAD
-	.data : {
-		*(.data .data.* .gnu.linkonce.d.*)
-		SORT(CONSTRUCTORS)
-		bsp_section_data_end = .;
-	} > REGION_DATA AT > REGION_DATA_LOAD
-	bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
-	bsp_section_data_load_begin = LOADADDR (.data1);
-	bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
-
-	.fast_text : {
-		bsp_section_fast_text_begin = .;
-		*(.bsp_fast_text)
-		bsp_section_fast_text_end = .;
-	} > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
-	bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
-	bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
-	bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
+	.rwbarrier : {
+		. = ALIGN (bsp_section_rwbarrier_align);
+	} > REGION_DATA
 
 	.fast_data : {
 		bsp_section_fast_data_begin = .;
@@ -336,6 +326,26 @@
 	bsp_section_fast_data_load_begin = LOADADDR (.fast_data);
 	bsp_section_fast_data_load_end = bsp_section_fast_data_load_begin + bsp_section_fast_data_size;
 
+	.data : {
+		bsp_section_data_begin = .;
+		*(.data .data.* .gnu.linkonce.d.*)
+		SORT(CONSTRUCTORS)
+	} > REGION_DATA AT > REGION_DATA_LOAD
+	.data1 : {
+		*(.data1)
+	} > REGION_DATA AT > REGION_DATA_LOAD
+	.rwbsdsets : {
+		/* Special FreeBSD linker set sections */
+		_bsd__start_set_sysinit_set = .;
+		*(_bsd_set_sysinit_set);
+		_bsd__stop_set_sysinit_set = .;
+
+		bsp_section_data_end = .;
+	} > REGION_DATA AT > REGION_DATA_LOAD
+	bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
+	bsp_section_data_load_begin = LOADADDR (.data);
+	bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
+
 	.bss : {
 		bsp_section_bss_begin = .;
 		*(.dynbss)


 *sh*:
2011-03-29	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* configure.ac, include/bspopts.h.in: New BSP option
	LPC32XX_SCRATCH_AREA_SIZE.  Disable BSP option
	LPC32XX_DISABLE_READ_ONLY_PROTECTION for all BSPs.
	* include/boot.h: Removed application specific defines.
	* include/nand-mlc.h, misc/nand-mlc.c: Changed configuration layout.
	* include/mmu.h, misc/mmu.c: Documentation.  Bugfix.
	* include/bsp.h, startup/bspstarthooks.c, misc/restart.c,
	startup/linkcmds.lpc32xx_mzx, startup/linkcmds.lpc32xx_mzx_stage_1,
	startup/linkcmds.lpc32xx_mzx_stage_2,
	startup/linkcmds.lpc32xx_phycore: Support for scratch area.  Moved
	code into macros for reusability.

M   1.29  c/src/lib/libbsp/arm/lpc32xx/ChangeLog
M   1.11  c/src/lib/libbsp/arm/lpc32xx/configure.ac
M    1.2  c/src/lib/libbsp/arm/lpc32xx/include/boot.h
M    1.8  c/src/lib/libbsp/arm/lpc32xx/include/bsp.h
M    1.9  c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in
M    1.5  c/src/lib/libbsp/arm/lpc32xx/include/mmu.h
M    1.3  c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h
M    1.3  c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c
M    1.2  c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc.c
M    1.5  c/src/lib/libbsp/arm/lpc32xx/misc/restart.c
M   1.11  c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c
M    1.4  c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx
M    1.4  c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1
M    1.4  c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2
M    1.6  c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.28 rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.29
--- rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.28	Mon Feb 21 06:54:58 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog	Mon Mar 28 04:00:00 2011
@@ -1,3 +1,17 @@
+2011-03-29	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+	* configure.ac, include/bspopts.h.in: New BSP option
+	LPC32XX_SCRATCH_AREA_SIZE.  Disable BSP option
+	LPC32XX_DISABLE_READ_ONLY_PROTECTION for all BSPs.
+	* include/boot.h: Removed application specific defines.
+	* include/nand-mlc.h, misc/nand-mlc.c: Changed configuration layout.
+	* include/mmu.h, misc/mmu.c: Documentation.  Bugfix.
+	* include/bsp.h, startup/bspstarthooks.c, misc/restart.c,
+	startup/linkcmds.lpc32xx_mzx, startup/linkcmds.lpc32xx_mzx_stage_1,
+	startup/linkcmds.lpc32xx_mzx_stage_2,
+	startup/linkcmds.lpc32xx_phycore: Support for scratch area.  Moved
+	code into macros for reusability.
+
 2011-02-21	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
 	* include/bsp.h, lpc32xx/misc/restart.c: Renamed lpc32xx_restart() in

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.10 rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.11
--- rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac:1.10	Wed Feb  2 08:57:56 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/configure.ac	Mon Mar 28 04:00:00 2011
@@ -73,10 +73,12 @@
 RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_READ_WRITE_DATA_CACHE],[*],[])
 RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_READ_WRITE_DATA_CACHE],[disable cache for read-write data sections])
 
-RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_READ_ONLY_PROTECTION],[lpc32xx_mzx*],[1])
 RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_READ_ONLY_PROTECTION],[*],[])
 RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_READ_ONLY_PROTECTION],[disable MMU protection of read-only sections])
 
+RTEMS_BSPOPTS_SET([LPC32XX_SCRATCH_AREA_SIZE],[lpc32xx_mzx*],[4096])
+RTEMS_BSPOPTS_HELP([LPC32XX_SCRATCH_AREA_SIZE],[size of scratch area])
+
 RTEMS_BSPOPTS_SET([LPC32XX_STOP_GPDMA],[*],[1])
 RTEMS_BSPOPTS_HELP([LPC32XX_STOP_GPDMA],[stop general purpose DMA at start-up to avoid DMA interference])
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/boot.h:1.1 rtems/c/src/lib/libbsp/arm/lpc32xx/include/boot.h:1.2
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/boot.h:1.1	Wed Jun 23 03:27:56 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/boot.h	Mon Mar 28 04:00:00 2011
@@ -55,9 +55,8 @@
  * @{
  */
 
-#define LPC32XX_BOOT_STAGE_1_BLOCK_0 0
-#define LPC32XX_BOOT_STAGE_1_BLOCK_1 1
-#define LPC32XX_BOOT_STAGE_2_BLOCK_0 2
+#define LPC32XX_BOOT_BLOCK_0 0
+#define LPC32XX_BOOT_BLOCK_1 1
 
 #define LPC32XX_BOOT_ICR_SP_3AC_8IF 0xf0
 #define LPC32XX_BOOT_ICR_SP_4AC_8IF 0xd2

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.7 rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.8
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h:1.7	Mon Feb 21 06:54:44 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/bsp.h	Mon Mar 28 04:00:00 2011
@@ -135,6 +135,71 @@
  */
 extern uint32_t lpc32xx_magic_zero_size [];
 
+#ifdef LPC32XX_SCRATCH_AREA_SIZE
+  /**
+   * @rief Scratch area.
+   *
+   * The usage is application specific.
+   */
+  extern uint8_t lpc32xx_scratch_area [LPC32XX_SCRATCH_AREA_SIZE];
+#endif
+
+#define LPC32XX_DO_STOP_GPDMA \
+  do { \
+    if ((LPC32XX_DMACLK_CTRL & 0x1) != 0) { \
+      if ((lpc32xx.dma.cfg & LPC_DMA_CFG_EN) != 0) { \
+        int i = 0; \
+        for (i = 0; i < 8; ++i) { \
+          lpc32xx.dma.channels [i].cfg = 0; \
+        } \
+        lpc32xx.dma.cfg &= ~LPC_DMA_CFG_EN; \
+      } \
+      LPC32XX_DMACLK_CTRL = 0; \
+    } \
+  } while (0)
+
+#define LPC32XX_DO_STOP_ETHERNET \
+  do { \
+    if ((LPC32XX_MAC_CLK_CTRL & 0x7) == 0x7) { \
+      lpc32xx.eth.command = 0x38; \
+      lpc32xx.eth.mac1 = 0xcf00; \
+      lpc32xx.eth.mac1 = 0; \
+      LPC32XX_MAC_CLK_CTRL = 0; \
+    } \
+  } while (0)
+
+#define LPC32XX_DO_STOP_USB \
+  do { \
+    if ((LPC32XX_USB_CTRL & 0x010e8000) != 0) { \
+      LPC32XX_OTG_CLK_CTRL = 0; \
+      LPC32XX_USB_CTRL = 0x80000; \
+    } \
+  } while (0)
+
+#define LPC32XX_DO_RESTART(addr) \
+  do { \
+    ARM_SWITCH_REGISTERS; \
+    rtems_interrupt_level level; \
+    uint32_t ctrl = 0; \
+  \
+    rtems_interrupt_disable(level); \
+  \
+    arm_cp15_data_cache_test_and_clean(); \
+    arm_cp15_instruction_cache_invalidate(); \
+  \
+    ctrl = arm_cp15_get_control(); \
+    ctrl &= ~(ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M); \
+    arm_cp15_set_control(ctrl); \
+  \
+    __asm__ volatile ( \
+      ARM_SWITCH_TO_ARM \
+      "mov pc, %[addr]\n" \
+      ARM_SWITCH_BACK \
+      : ARM_SWITCH_OUTPUT \
+      : [addr] "r" (addr) \
+    ); \
+  } while (0)
+
 /** @} */
 
 /**

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.8 rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.9
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in:1.8	Thu Dec 16 07:35:06 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/bspopts.h.in	Mon Mar 28 04:00:00 2011
@@ -63,6 +63,9 @@
 /* peripheral clock in Hz */
 #undef LPC32XX_PERIPH_CLK
 
+/* size of scratch area */
+#undef LPC32XX_SCRATCH_AREA_SIZE
+
 /* stop Ethernet controller at start-up to avoid DMA interference */
 #undef LPC32XX_STOP_ETHERNET
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/mmu.h:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/include/mmu.h:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/mmu.h:1.4	Thu Dec 16 07:35:06 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/mmu.h	Mon Mar 28 04:00:00 2011
@@ -7,12 +7,13 @@
  */
 
 /*
- * Copyright (c) 2009
- * embedded brains GmbH
- * Obere Lagerstr. 30
- * D-82178 Puchheim
- * Germany
- * <rtems at embedded-brains.de>
+ * Copyright (c) 2009-2011 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Obere Lagerstr. 30
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
  *
  * The license and distribution terms for this file may be
  * found in the file LICENSE in this distribution or at
@@ -55,7 +56,12 @@
 #define LPC32XX_MMU_READ_WRITE_CACHED \
   (LPC32XX_MMU_READ_WRITE | ARM_MMU_SECT_C | ARM_MMU_SECT_B)
 
-void lpc32xx_set_translation_table_entries(
+/**
+ * @brief Sets the @a section_flags for the address range [@a begin, @a end).
+ *
+ * @return Previous section flags of the first modified entry.
+ */
+uint32_t lpc32xx_set_translation_table_entries(
   const void *begin,
   const void *end,
   uint32_t section_flags

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.2 rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.3
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.2	Thu Oct 14 04:37:18 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h	Mon Mar 28 04:00:00 2011
@@ -181,22 +181,7 @@
  * @brief MLC NAND controller configuration.
  */
 typedef struct {
-  /**
-   * @brief Selects small pages (512 Bytes user data and 16 Bytes spare data)
-   * or large pages (2048 Bytes user data and 64 Bytes spare data).
-   */
-  bool small_pages;
-
-  /**
-   * @brief Selects 3/4 address cycles for small pages/large pages or 4/5
-   * address cycles.
-   */
-  bool many_address_cycles;
-
-  /**
-   * @brief Selects 64 or 128 pages per block in case of large pages.
-   */
-  bool normal_blocks;
+  uint32_t flags;
 
   uint32_t block_count;
 
@@ -207,6 +192,23 @@
 } lpc32xx_mlc_config;
 
 /**
+ * @brief Selects small pages (512 Bytes user data and 16 Bytes spare data)
+ * or large pages (2048 Bytes user data and 64 Bytes spare data).
+ */
+#define MLC_SMALL_PAGES 0x1U
+
+/**
+ * @Brief Selects 3/4 address cycles for small pages/large pages or 4/5
+ * address cycles.
+ */
+#define MLC_MANY_ADDRESS_CYCLES 0x2U
+
+/**
+ * @brief Selects 64 or 128 pages per block in case of large pages.
+ */
+#define MLC_NORMAL_BLOCKS 0x4U
+
+/**
  * @brief Initializes the MLC NAND controller according to @a cfg.
  */
 void lpc32xx_mlc_init(const lpc32xx_mlc_config *cfg);

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c:1.2 rtems/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c:1.3
--- rtems/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c:1.2	Thu Dec 16 07:35:06 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c	Mon Mar 28 04:00:00 2011
@@ -7,7 +7,7 @@
  */
 
 /*
- * Copyright (c) 2010 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2010-2011 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
  *  Obere Lagerstr. 30
@@ -22,7 +22,26 @@
 
 #include <bsp/mmu.h>
 
-void lpc32xx_set_translation_table_entries(
+static uint32_t disable_mmu(void)
+{
+  uint32_t ctrl = 0;
+
+  arm_cp15_data_cache_test_and_clean_and_invalidate();
+
+  ctrl = arm_cp15_get_control();
+  arm_cp15_set_control(ctrl & ~ARM_CP15_CTRL_M);
+
+  arm_cp15_tlb_invalidate();
+
+  return ctrl;
+}
+
+static void restore_mmu_control(uint32_t ctrl)
+{
+  arm_cp15_set_control(ctrl);
+}
+
+uint32_t set_translation_table_entries(
   const void *begin,
   const void *end,
   uint32_t section_flags
@@ -31,9 +50,32 @@
   uint32_t *ttb = arm_cp15_get_translation_table_base();
   uint32_t i = ARM_MMU_SECT_GET_INDEX(begin);
   uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end));
+  uint32_t ctrl = disable_mmu();
+  uint32_t section_flags_of_first_entry = ttb [i];
 
   while (i < iend) {
     ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | section_flags;
     ++i;
   }
+
+  restore_mmu_control(ctrl);
+
+  return section_flags_of_first_entry;
+}
+
+uint32_t lpc32xx_set_translation_table_entries(
+  const void *begin,
+  const void *end,
+  uint32_t section_flags
+)
+{
+  rtems_interrupt_level level;
+  uint32_t section_flags_of_first_entry = 0;
+
+  rtems_interrupt_disable(level);
+  section_flags_of_first_entry =
+    set_translation_table_entries(begin, end, section_flags);
+  rtems_interrupt_enable(level);
+
+  return section_flags_of_first_entry;
 }

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc.c:1.1 rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc.c:1.2
--- rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc.c:1.1	Wed Jun 23 03:27:57 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc.c	Mon Mar 28 04:00:00 2011
@@ -24,19 +24,30 @@
 
 static volatile lpc32xx_nand_mlc *const mlc = &lpc32xx.nand_mlc;
 
-static bool mlc_small_pages;
-
-static bool mlc_many_address_cycles;
-
-static bool mlc_normal_blocks;
+static uint32_t mlc_flags;
 
 static uint32_t mlc_block_count;
 
 static uint32_t mlc_page_count;
 
+static bool mlc_small_pages(void)
+{
+  return (mlc_flags & MLC_SMALL_PAGES) != 0;
+}
+
+static bool mlc_many_address_cycles(void)
+{
+  return (mlc_flags & MLC_MANY_ADDRESS_CYCLES) != 0;
+}
+
+static bool mlc_normal_blocks(void)
+{
+  return (mlc_flags & MLC_NORMAL_BLOCKS) != 0;
+}
+
 uint32_t lpc32xx_mlc_page_size(void)
 {
-  if (mlc_small_pages) {
+  if (mlc_small_pages()) {
     return 512;
   } else {
     return 2048;
@@ -45,10 +56,10 @@
 
 uint32_t lpc32xx_mlc_pages_per_block(void)
 {
-  if (mlc_small_pages) {
+  if (mlc_small_pages()) {
     return 32;
   } else {
-    if (mlc_normal_blocks) {
+    if (mlc_normal_blocks()) {
       return 64;
     } else {
       return 128;
@@ -99,23 +110,23 @@
 
 static void mlc_set_block_address(uint32_t block_index)
 {
-  if (mlc_small_pages) {
+  if (mlc_small_pages()) {
     mlc->addr = (uint8_t) (block_index << 5);
     mlc->addr = (uint8_t) (block_index >> 3);
-    if (mlc_many_address_cycles) {
+    if (mlc_many_address_cycles()) {
       mlc->addr = (uint8_t) (block_index >> 11);
     }
   } else {
-    if (mlc_normal_blocks) {
+    if (mlc_normal_blocks()) {
       mlc->addr = (uint8_t) (block_index << 6);
       mlc->addr = (uint8_t) (block_index >> 2);
-      if (mlc_many_address_cycles) {
+      if (mlc_many_address_cycles()) {
         mlc->addr = (uint8_t) (block_index >> 10);
       }
     } else {
       mlc->addr = (uint8_t) (block_index << 7);
       mlc->addr = (uint8_t) (block_index >> 1);
-      if (mlc_many_address_cycles) {
+      if (mlc_many_address_cycles()) {
         mlc->addr = (uint8_t) (block_index >> 9);
       }
     }
@@ -125,17 +136,17 @@
 static void mlc_set_page_address(uint32_t page_index)
 {
   mlc->addr = 0;
-  if (mlc_small_pages) {
+  if (mlc_small_pages()) {
     mlc->addr = (uint8_t) page_index;
     mlc->addr = (uint8_t) (page_index >> 8);
-    if (mlc_many_address_cycles) {
+    if (mlc_many_address_cycles()) {
       mlc->addr = (uint8_t) (page_index >> 16);
     }
   } else {
     mlc->addr = 0;
     mlc->addr = (uint8_t) page_index;
     mlc->addr = (uint8_t) (page_index >> 8);
-    if (mlc_many_address_cycles) {
+    if (mlc_many_address_cycles()) {
       mlc->addr = (uint8_t) (page_index >> 16);
     }
   }
@@ -145,9 +156,7 @@
 {
   uint32_t icr = 0;
 
-  mlc_small_pages = cfg->small_pages;
-  mlc_many_address_cycles = cfg->many_address_cycles;
-  mlc_normal_blocks = cfg->normal_blocks;
+  mlc_flags = cfg->flags;
   mlc_block_count = cfg->block_count;
   mlc_page_count = cfg->block_count * lpc32xx_mlc_pages_per_block();
 
@@ -159,10 +168,10 @@
   mlc->time = cfg->time;
 
   /* Configuration */
-  if (!mlc_small_pages) {
+  if (!mlc_small_pages()) {
     icr |= MLC_ICR_LARGE_PAGES;
   }
-  if (mlc_many_address_cycles) {
+  if (mlc_many_address_cycles()) {
     icr |= MLC_ICR_ADDR_WORD_COUNT_4_5;
   }
   mlc_unlock();
@@ -191,7 +200,7 @@
 )
 {
   rtems_status_code sc = RTEMS_SUCCESSFUL;
-  size_t small_pages_count = mlc_small_pages ? 1 : MLC_SMALL_PAGES_PER_LARGE_PAGE;
+  size_t small_pages_count = mlc_small_pages() ? 1 : MLC_SMALL_PAGES_PER_LARGE_PAGE;
   size_t sp = 0;
   size_t i = 0;
   uint32_t isr = 0;
@@ -202,7 +211,7 @@
 
   mlc_wait_until_ready();
   mlc->cmd = 0x00;
-  if (!mlc_small_pages) {
+  if (!mlc_small_pages()) {
     mlc->cmd = 0x30;
   }
   mlc_set_page_address(page_index);
@@ -284,7 +293,7 @@
 )
 {
   rtems_status_code sc = RTEMS_IO_ERROR;
-  size_t small_pages_count = mlc_small_pages ? 1 : MLC_SMALL_PAGES_PER_LARGE_PAGE;
+  size_t small_pages_count = mlc_small_pages() ? 1 : MLC_SMALL_PAGES_PER_LARGE_PAGE;
   size_t sp = 0;
   size_t i = 0;
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c:1.4	Mon Feb 21 06:54:45 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c	Mon Mar 28 04:00:00 2011
@@ -30,24 +30,5 @@
 
 void bsp_restart(void *addr)
 {
-  ARM_SWITCH_REGISTERS;
-  rtems_interrupt_level level;
-  uint32_t ctrl = 0;
-
-  rtems_interrupt_disable(level);
-
-  arm_cp15_data_cache_test_and_clean();
-  arm_cp15_instruction_cache_invalidate();
-
-  ctrl = arm_cp15_get_control();
-  ctrl &= ~(ARM_CP15_CTRL_I | ARM_CP15_CTRL_C | ARM_CP15_CTRL_M);
-  arm_cp15_set_control(ctrl);
-
-  __asm__ volatile (
-    ARM_SWITCH_TO_ARM
-    "mov pc, %[addr]\n"
-    ARM_SWITCH_BACK
-    : ARM_SWITCH_OUTPUT
-    : [addr] "r" (addr)
-  );
+  LPC32XX_DO_RESTART(addr);
 }

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.10 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.11
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c:1.10	Fri Dec  3 03:29:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c	Mon Mar 28 04:00:01 2011
@@ -73,6 +73,12 @@
       .begin = (uint32_t) bsp_section_fast_data_begin,
       .end = (uint32_t) bsp_section_fast_data_end,
       .flags = LPC32XX_MMU_READ_WRITE_DATA
+#ifdef LPC32XX_SCRATCH_AREA_SIZE
+    }, {
+      .begin = (uint32_t) &lpc32xx_scratch_area [0],
+      .end = (uint32_t) &lpc32xx_scratch_area [LPC32XX_SCRATCH_AREA_SIZE],
+      .flags = LPC32XX_MMU_READ_ONLY_DATA
+#endif
     }, {
       .begin = (uint32_t) bsp_section_start_begin,
       .end = (uint32_t) bsp_section_start_end,
@@ -224,34 +230,15 @@
 static void BSP_START_TEXT_SECTION stop_dma_activities(void)
 {
   #ifdef LPC32XX_STOP_GPDMA
-    if ((LPC32XX_DMACLK_CTRL & 0x1) != 0) {
-      if ((lpc32xx.dma.cfg & LPC_DMA_CFG_EN) != 0) {
-        int i = 0;
-
-        for (i = 0; i < 8; ++i) {
-          lpc32xx.dma.channels [i].cfg = 0;
-        }
-
-        lpc32xx.dma.cfg &= ~LPC_DMA_CFG_EN;
-      }
-      LPC32XX_DMACLK_CTRL = 0;
-    }
+    LPC32XX_DO_STOP_GPDMA;
   #endif
 
   #ifdef LPC32XX_STOP_ETHERNET
-    if ((LPC32XX_MAC_CLK_CTRL & 0x7) == 0x7) {
-      lpc32xx.eth.command = 0x38;
-      lpc32xx.eth.mac1 = 0xcf00;
-      lpc32xx.eth.mac1 = 0;
-      LPC32XX_MAC_CLK_CTRL = 0;
-    }
+    LPC32XX_DO_STOP_ETHERNET;
   #endif
 
   #ifdef LPC32XX_STOP_USB
-    if ((LPC32XX_USB_CTRL & 0x010e8000) != 0) {
-      LPC32XX_OTG_CLK_CTRL = 0;
-      LPC32XX_USB_CTRL = 0x80000;
-    }
+    LPC32XX_DO_STOP_USB;
   #endif
 }
 

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx:1.3 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx:1.4
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx:1.3	Fri Dec  3 04:13:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx	Mon Mar 28 04:00:01 2011
@@ -37,7 +37,8 @@
 MEMORY {
 	RAM_INT : ORIGIN = 0x08000000, LENGTH = 256k
 	RAM_MMU : ORIGIN = 0x80000000, LENGTH = 16k /* SDRAM on DYCS0 */
-	RAM_EXT : ORIGIN = 0x80004000, LENGTH = 32M - 16k /* SDRAM on DYCS0 */
+	RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */
+	RAM_EXT : ORIGIN = 0x80005000, LENGTH = 32M - 20k /* SDRAM on DYCS0 */
 	NIRVANA : ORIGIN = 0, LENGTH = 0
 }
 
@@ -57,9 +58,11 @@
 REGION_ALIAS ("REGION_WORK", RAM_EXT);
 REGION_ALIAS ("REGION_STACK", RAM_INT);
 
+lpc32xx_scratch_area = ORIGIN (RAM_SCRATCH);
+
 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 4096;
 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024;
 
-bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1M;
+bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1M;
 
 INCLUDE linkcmds.lpc32xx

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1:1.3 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1:1.4
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1:1.3	Fri Dec  3 04:13:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1	Mon Mar 28 04:00:01 2011
@@ -38,6 +38,7 @@
 	RAM_INT : ORIGIN = 0x08000000, LENGTH = 232k
 	RAM_VEC : ORIGIN = 0x0803a000, LENGTH = 8k
 	RAM_MMU : ORIGIN = 0x0803c000, LENGTH = 16k
+	RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */
 	NIRVANA : ORIGIN = 0, LENGTH = 0
 }
 
@@ -57,6 +58,8 @@
 REGION_ALIAS ("REGION_WORK", RAM_INT);
 REGION_ALIAS ("REGION_STACK", RAM_INT);
 
+lpc32xx_scratch_area = ORIGIN (RAM_SCRATCH);
+
 bsp_stack_svc_size = DEFINED (bsp_stack_svc_size) ? bsp_stack_svc_size : 7296;
 
 bsp_vector_table_in_start_section = 1;

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2:1.3 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2:1.4
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2:1.3	Fri Dec  3 04:13:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2	Mon Mar 28 04:00:01 2011
@@ -35,9 +35,11 @@
  */
 
 MEMORY {
-	RAM_INT : ORIGIN = 0x08000000, LENGTH = 256k
-	RAM_MMU : ORIGIN = 0x81c00000, LENGTH = 16k /* SDRAM on DYCS0 */
-	RAM_EXT : ORIGIN = 0x81c04000, LENGTH = 4M - 16k /* SDRAM on DYCS0 */
+	RAM_INT : ORIGIN = 0x08000000, LENGTH = 240k
+	RAM_FAST : ORIGIN = 0x0803c000, LENGTH = 16k
+	RAM_MMU : ORIGIN = 0x80000000, LENGTH = 16k /* SDRAM on DYCS0 */
+	RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */
+	RAM_EXT : ORIGIN = 0x81c00000, LENGTH = 4M /* SDRAM on DYCS0 */
 	NIRVANA : ORIGIN = 0, LENGTH = 0
 }
 
@@ -49,14 +51,16 @@
 REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
 REGION_ALIAS ("REGION_DATA", RAM_EXT);
 REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_FAST);
 REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST_DATA", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_FAST);
 REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM_EXT);
 REGION_ALIAS ("REGION_BSS", RAM_EXT);
 REGION_ALIAS ("REGION_WORK", RAM_EXT);
 REGION_ALIAS ("REGION_STACK", RAM_INT);
 
+lpc32xx_scratch_area = ORIGIN (RAM_SCRATCH);
+
 bsp_stack_svc_size = DEFINED (bsp_stack_svc_size) ? bsp_stack_svc_size : 8192;
 
 INCLUDE linkcmds.lpc32xx

diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore:1.5 rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore:1.6
--- rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore:1.5	Fri Dec  3 04:13:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore	Mon Mar 28 04:00:01 2011
@@ -62,6 +62,6 @@
 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 4096;
 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024;
 
-bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1M;
+bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1M;
 
 INCLUDE linkcmds.lpc32xx



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20110328/a533772d/attachment.html>


More information about the vc mailing list