change log for rtems (2010-12-03)
rtems-vc at rtems.org
rtems-vc at rtems.org
Fri Dec 3 11:10:37 UTC 2010
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* startup/linkcmds.lpc32xx_mzx, startup/linkcmds.lpc32xx_mzx_stage_1,
startup/linkcmds.lpc32xx_mzx_stage_2,
startup/linkcmds.lpc32xx_phycore: Update due to linker command file
changes.
M 1.22 c/src/lib/libbsp/arm/lpc32xx/ChangeLog
M 1.3 c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx
M 1.3 c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1
M 1.3 c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2
M 1.5 c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore
diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.21 rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.22
--- rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.21 Fri Dec 3 03:29:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog Fri Dec 3 04:13:07 2010
@@ -1,5 +1,12 @@
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+ * startup/linkcmds.lpc32xx_mzx, startup/linkcmds.lpc32xx_mzx_stage_1,
+ startup/linkcmds.lpc32xx_mzx_stage_2,
+ startup/linkcmds.lpc32xx_phycore: Update due to linker command file
+ changes.
+
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
* include/lpc32xx.h: Added I2S module.
* Makefile.am, bsp_specs, preinstall.am, startup/bspstarthooks.c,
startup/linkcmds.lpc32xx, startup/linkcmds.lpc32xx_mzx,
diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx:1.2 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.2 Fri Dec 3 03:29:07 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx Fri Dec 3 04:13:07 2010
@@ -49,8 +49,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_EXT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_EXT);
+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);
diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1:1.2 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.2 Fri Dec 3 03:29:08 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 Fri Dec 3 04:13:07 2010
@@ -49,8 +49,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_INT);
REGION_ALIAS ("REGION_DATA", RAM_INT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_INT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM_INT);
REGION_ALIAS ("REGION_BSS", RAM_INT);
REGION_ALIAS ("REGION_WORK", RAM_INT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2:1.2 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.2 Fri Dec 3 03:29:08 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 Fri Dec 3 04:13:07 2010
@@ -49,8 +49,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_EXT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_EXT);
+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);
diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore:1.4 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.4 Fri Dec 3 03:29:08 2010
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore Fri Dec 3 04:13:07 2010
@@ -51,8 +51,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_EXT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_EXT);
+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);
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* startup/linkcmds.lpc2362, startup/linkcmds.lpc23xx_tli800,
startup/linkcmds.lpc24xx_ea, startup/linkcmds.lpc24xx_ncs_ram,
startup/linkcmds.lpc24xx_ncs_rom_ext,
startup/linkcmds.lpc24xx_ncs_rom_int: Update due to linker command
file changes.
M 1.60 c/src/lib/libbsp/arm/lpc24xx/ChangeLog
M 1.5 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362
M 1.3 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800
M 1.4 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea
M 1.4 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram
M 1.4 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext
M 1.4 c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.59 rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.60
--- rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog:1.59 Fri Dec 3 03:56:47 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/ChangeLog Fri Dec 3 04:16:38 2010
@@ -1,5 +1,13 @@
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+ * startup/linkcmds.lpc2362, startup/linkcmds.lpc23xx_tli800,
+ startup/linkcmds.lpc24xx_ea, startup/linkcmds.lpc24xx_ncs_ram,
+ startup/linkcmds.lpc24xx_ncs_rom_ext,
+ startup/linkcmds.lpc24xx_ncs_rom_int: Update due to linker command
+ file changes.
+
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
* include/lcd.h, misc/lcd.c: New files.
* misc/io.c, include/io.h: Documentation, bug fixes, more
configurations.
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362:1.4 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362:1.5
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362:1.4 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 Fri Dec 3 04:16:38 2010
@@ -50,8 +50,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_DATA", RAM_INT);
REGION_ALIAS ("REGION_DATA_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_BSS", RAM_INT);
REGION_ALIAS ("REGION_WORK", RAM_INT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800:1.2 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800:1.3
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800:1.2 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 Fri Dec 3 04:16:38 2010
@@ -54,8 +54,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_DATA", RAM_INT);
REGION_ALIAS ("REGION_DATA_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_BSS", RAM_INT);
REGION_ALIAS ("REGION_WORK", RAM_INT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea:1.3 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea:1.4
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea:1.3 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea Fri Dec 3 04:16:38 2010
@@ -47,8 +47,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+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);
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram:1.3 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram:1.4
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram:1.3 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram Fri Dec 3 04:16:38 2010
@@ -47,8 +47,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+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);
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext:1.3 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext:1.4
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext:1.3 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext Fri Dec 3 04:16:38 2010
@@ -51,8 +51,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", ROM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", ROM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", ROM_BOOT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", ROM_BOOT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM_BOOT);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
diff -u rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int:1.3 rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int:1.4
--- rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int:1.3 Fri Dec 3 03:56:48 2010
+++ rtems/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int Fri Dec 3 04:16:38 2010
@@ -51,8 +51,10 @@
REGION_ALIAS ("REGION_RODATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM_INT);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST_DATA", RAM_INT);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM_INT);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* startup/bspgetworkarea.c: Removed file.
* Makefile.am, bsp_specs, start/start.S, startup/bspstart.c,
libnds/include/nds/jtypes.h, libnds/source/arm9/gurumeditation.c,
libnds/source/common/interruptDispatcher.S,
libnds/source/common/interrupts.c, startup/linkcmds: Use linker
command base file.
M 1.60 c/src/lib/libbsp/arm/nds/ChangeLog
M 1.19 c/src/lib/libbsp/arm/nds/Makefile.am
M 1.4 c/src/lib/libbsp/arm/nds/bsp_specs
M 1.4 c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h
M 1.5 c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c
M 1.5 c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S
M 1.5 c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
M 1.5 c/src/lib/libbsp/arm/nds/start/start.S
R 1.3 c/src/lib/libbsp/arm/nds/startup/bspgetworkarea.c
M 1.5 c/src/lib/libbsp/arm/nds/startup/bspstart.c
M 1.2 c/src/lib/libbsp/arm/nds/startup/linkcmds
diff -u rtems/c/src/lib/libbsp/arm/nds/ChangeLog:1.59 rtems/c/src/lib/libbsp/arm/nds/ChangeLog:1.60
--- rtems/c/src/lib/libbsp/arm/nds/ChangeLog:1.59 Thu May 20 08:00:19 2010
+++ rtems/c/src/lib/libbsp/arm/nds/ChangeLog Fri Dec 3 04:49:49 2010
@@ -1,3 +1,12 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * startup/bspgetworkarea.c: Removed file.
+ * Makefile.am, bsp_specs, start/start.S, startup/bspstart.c,
+ libnds/include/nds/jtypes.h, libnds/source/arm9/gurumeditation.c,
+ libnds/source/common/interruptDispatcher.S,
+ libnds/source/common/interrupts.c, startup/linkcmds: Use linker
+ command base file.
+
2010-05-20 Sebastian Huber <sebastian.huber at embedded-brains.de>
* make/dswifi/arm9/makefile: Workaround for GCC bug 38644.
diff -u rtems/c/src/lib/libbsp/arm/nds/Makefile.am:1.18 rtems/c/src/lib/libbsp/arm/nds/Makefile.am:1.19
--- rtems/c/src/lib/libbsp/arm/nds/Makefile.am:1.18 Fri Apr 30 08:41:52 2010
+++ rtems/c/src/lib/libbsp/arm/nds/Makefile.am Fri Dec 3 04:49:49 2010
@@ -37,7 +37,7 @@
noinst_PROGRAMS += startup.rel
startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
startup/bspstart.c ../../shared/bspclean.c startup/bspreset.c \
- startup/bspgetworkarea.c ../../shared/bsppredriverhook.c \
+ ../../shared/bspgetworkarea.c ../../shared/bsppredriverhook.c \
../../shared/bsppretaskinghook.c ../../shared/bootcard.c
startup_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
diff -u rtems/c/src/lib/libbsp/arm/nds/bsp_specs:1.3 rtems/c/src/lib/libbsp/arm/nds/bsp_specs:1.4
--- rtems/c/src/lib/libbsp/arm/nds/bsp_specs:1.3 Fri Dec 5 07:37:47 2008
+++ rtems/c/src/lib/libbsp/arm/nds/bsp_specs Fri Dec 3 04:49:50 2010
@@ -7,8 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dc -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
-
diff -u rtems/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h:1.3 rtems/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h:1.4
--- rtems/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h:1.3 Wed Aug 27 16:38:42 2008
+++ rtems/c/src/lib/libbsp/arm/nds/libnds/include/nds/jtypes.h Fri Dec 3 04:49:50 2010
@@ -38,9 +38,9 @@
//---------------------------------------------------------------------------------
// libgba compatible section macros
//---------------------------------------------------------------------------------
-#define ITCM_CODE __attribute__((section(".itcm"), long_call))
+#define ITCM_CODE __attribute__((section(".bsp_fast_text"), long_call))
-#define DTCM_DATA __attribute__((section(".dtcm")))
+#define DTCM_DATA __attribute__((section(".bsp_fast_data")))
#define DTCM_BSS __attribute__((section(".sbss")))
#define ALIGN(m) __attribute__((aligned (m)))
diff -u rtems/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c:1.4 rtems/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c:1.5
--- rtems/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c:1.4 Sun Nov 29 08:53:01 2009
+++ rtems/c/src/lib/libbsp/arm/nds/libnds/source/arm9/gurumeditation.c Fri Dec 3 04:49:50 2010
@@ -34,6 +34,8 @@
#include <stdio.h>
#include <inttypes.h>
+#include <bsp/linker-symbols.h>
+
//---------------------------------------------------------------------------------
unsigned long ARMShift(unsigned long value,unsigned char shift) {
//---------------------------------------------------------------------------------
@@ -205,7 +207,6 @@
{ "r0","r1","r2","r3","r4","r5","r6","r7",
"r8 ","r9 ","r10","r11","r12","sp ","lr ","pc " };
-extern const char __itcm_start[];
//---------------------------------------------------------------------------------
static void defaultHandler(void) {
//---------------------------------------------------------------------------------
@@ -232,7 +233,7 @@
iprintf ("\x1b[10Cdata abort!\n\n");
codeAddress = exceptionRegisters[15] - offset;
if ( (codeAddress > 0x02000000 && codeAddress < 0x02400000) ||
- (codeAddress > (u32)__itcm_start && codeAddress < (u32)(__itcm_start + 32768)) )
+ (codeAddress > (u32)bsp_section_fast_text_begin && codeAddress < (u32)(bsp_section_fast_text_begin + 32768)) )
exceptionAddress = getExceptionAddress( codeAddress, thumbState);
else
exceptionAddress = codeAddress;
diff -u rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S:1.4 rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S:1.5
--- rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S:1.4 Sun Nov 29 22:14:38 2009
+++ rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interruptDispatcher.S Fri Dec 3 04:49:50 2010
@@ -28,7 +28,7 @@
#endif
#ifdef ARM9
- .section .itcm,"ax",%progbits
+ .section .bsp_fast_text,"ax",%progbits
#endif
.extern irqTable
diff -u rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c:1.4 rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c:1.5
--- rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c:1.4 Sun Nov 29 22:14:38 2009
+++ rtems/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c Fri Dec 3 04:49:50 2010
@@ -34,7 +34,7 @@
#ifdef ARM9
-#define INT_TABLE_SECTION __attribute__((section(".itcm")))
+#define INT_TABLE_SECTION __attribute__((section(".bsp_fast_text")))
#else
#define INT_TABLE_SECTION
#endif
diff -u rtems/c/src/lib/libbsp/arm/nds/start/start.S:1.4 rtems/c/src/lib/libbsp/arm/nds/start/start.S:1.5
--- rtems/c/src/lib/libbsp/arm/nds/start/start.S:1.4 Wed Apr 7 16:49:56 2010
+++ rtems/c/src/lib/libbsp/arm/nds/start/start.S Fri Dec 3 04:49:50 2010
@@ -1,3 +1,5 @@
+#include <bsp/linker-symbols.h>
+
@---------------------------------------------------------------------------------
@ DS processor selection
@---------------------------------------------------------------------------------
@@ -73,9 +75,9 @@
@ Wait for write buffer to empty
mcr p15, 0, r0, c7, c10, 4
- ldr r0, =__dtcm_start
+ ldr r0, =bsp_section_fast_data_begin
orr r0,r0,#0x0a
- mcr p15, 0, r0, c9, c1,0 @ DTCM base = __dtcm_start, size = 16 KB
+ mcr p15, 0, r0, c9, c1,0 @ DTCM base = bsp_section_fast_data_begin, size = 16 KB
mov r0,#0x20
mcr p15, 0, r0, c9, c1,1 @ ITCM base = 0 , size = 32 MB
@@ -111,14 +113,14 @@
@-------------------------------------------------------------------------
@ Region 4 - DTCM
@-------------------------------------------------------------------------
- ldr r0,=__dtcm_start
+ ldr r0,=bsp_section_fast_data_begin
orr r0,r0,#(PAGE_16K | 1)
mcr p15, 0, r0, c6, c4, 0
@-------------------------------------------------------------------------
@ Region 5 - ITCM
@-------------------------------------------------------------------------
- ldr r0,=__itcm_start
+ ldr r0,=bsp_section_fast_text_begin
orr r0,r0,#(PAGE_32K | 1)
mcr p15, 0, r0, c6, c5, 0
@@ -169,24 +171,24 @@
mov r0, #0x12 @ Switch to IRQ Mode
msr cpsr, r0
- ldr sp, =__sp_irq @ Set IRQ stack
+ ldr sp, =bsp_stack_irq_end @ Set IRQ stack
mov r0, #0x1f @ Switch to SVC Mode
msr cpsr, r0
- ldr sp, =__sp_usr @ Set user stack
+ ldr sp, =bsp_stack_svc_end @ Set user stack
- ldr r1, =__itcm_lma @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA (ROM to RAM)
- ldr r2, =__itcm_start
- ldr r4, =__itcm_end
+ ldr r1, =bsp_section_fast_text_load_begin @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA (ROM to RAM)
+ ldr r2, =bsp_section_fast_text_begin
+ ldr r4, =bsp_section_fast_text_end
bl CopyMemCheck
- ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA (ROM to RAM)
- ldr r2, =__dtcm_start
- ldr r4, =__dtcm_end
+ ldr r1, =bsp_section_fast_data_load_begin @ Copy data tightly coupled memory (dtcm section) from LMA to VMA (ROM to RAM)
+ ldr r2, =bsp_section_fast_data_begin
+ ldr r4, =bsp_section_fast_data_end
bl CopyMemCheck
- ldr r0, =__bss_start @ Clear BSS section
- ldr r1, =__bss_end
+ ldr r0, =bsp_section_bss_begin @ Clear BSS section
+ ldr r1, =bsp_section_bss_end
sub r1, r1, r0
bl ClearMem
diff -u rtems/c/src/lib/libbsp/arm/nds/startup/bspstart.c:1.4 rtems/c/src/lib/libbsp/arm/nds/startup/bspstart.c:1.5
--- rtems/c/src/lib/libbsp/arm/nds/startup/bspstart.c:1.4 Sun Apr 25 20:30:08 2010
+++ rtems/c/src/lib/libbsp/arm/nds/startup/bspstart.c Fri Dec 3 04:49:50 2010
@@ -13,6 +13,7 @@
#include <bsp.h>
#include <bsp/bootcard.h>
+#include <bsp/linker-symbols.h>
#include <nds.h>
extern void BSP_rtems_irq_mngt_init (void);
@@ -50,14 +51,11 @@
* reset bss area.
*/
-extern uint8_t __bss_start;
-extern uint8_t __bss_end;
-
void
bss_reset (void)
{
- memset (&__bss_start, 0, (uint32_t) & __bss_end - (uint32_t) & __bss_start);
+ memset (bsp_section_bss_begin, 0, (size_t) bsp_section_bss_size);
}
/*
diff -u rtems/c/src/lib/libbsp/arm/nds/startup/linkcmds:1.1 rtems/c/src/lib/libbsp/arm/nds/startup/linkcmds:1.2
--- rtems/c/src/lib/libbsp/arm/nds/startup/linkcmds:1.1 Wed Apr 16 13:37:33 2008
+++ rtems/c/src/lib/libbsp/arm/nds/startup/linkcmds Fri Dec 3 04:49:50 2010
@@ -1,246 +1,39 @@
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
MEMORY {
-
- rom : ORIGIN = 0x08000000, LENGTH = 32M
- ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k
- dtcm : ORIGIN = 0x0b000000, LENGTH = 16K
- itcm : ORIGIN = 0x01000000, LENGTH = 32K
+ ROM : ORIGIN = 0x08000000, LENGTH = 32M
+ EWRAM : ORIGIN = 0x02000000, LENGTH = 4M - 4k
+ DTCM : ORIGIN = 0x0b000000, LENGTH = 16k
+ ITCM : ORIGIN = 0x01000000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-__itcm_start = ORIGIN(itcm);
-__ewram_end = ORIGIN(ewram) + LENGTH(ewram);
-__eheap_end = ORIGIN(ewram) + LENGTH(ewram);
-__dtcm_start = ORIGIN(dtcm);
-__dtcm_top = ORIGIN(dtcm) + LENGTH(dtcm);
-__irq_flags = __dtcm_top - 0x08;
-__irq_vector = __dtcm_top - 0x04;
-
-__sp_svc = __dtcm_top - 0x100;
-__sp_irq = __sp_svc - 0x100;
-__sp_usr = __sp_irq - 0x100;
-
-SECTIONS
-{
- .init :
- {
- __text_start = . ;
- KEEP (*(.init))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .plt : { *(.plt) } >ewram = 0xff
-
- .text : /* ALIGN (4): */
- {
- *(EXCLUDE_FILE (*.itcm*) .text)
-
- *(.text.*)
- *(.stub)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .fini :
- {
- KEEP (*(.fini))
- } >ewram =0xff
-
- __text_end = . ;
-
- .rodata :
- {
- *(.rodata)
- *all.rodata*(*)
- *(.roda)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- SORT(CONSTRUCTORS)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >ewram
- __exidx_start = .;
- .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } >ewram
- __exidx_end = .;
- /* Ensure the __preinit_array_start label is properly aligned. We
- could instead move the label definition inside the section, but
- the linker would then create the section even if it turns out to
- be empty, which isn't pretty. */
- . = ALIGN(32 / 8);
- PROVIDE (__preinit_array_start = .);
- .preinit_array : { KEEP (*(.preinit_array)) } >ewram = 0xff
- PROVIDE (__preinit_array_end = .);
- PROVIDE (__init_array_start = .);
- .init_array : { KEEP (*(.init_array)) } >ewram = 0xff
- PROVIDE (__init_array_end = .);
- PROVIDE (__fini_array_start = .);
- .fini_array : { KEEP (*(.fini_array)) } >ewram = 0xff
- PROVIDE (__fini_array_end = .);
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of the constructors, so
- we make sure it is first. Because this is a wildcard, it
- doesn't matter if the user does not actually link against
- crtbegin.o; the linker won't look for a file to match a
- wildcard. The wildcard also means that it doesn't matter which
- directory crtbegin.o is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .eh_frame :
- {
- KEEP (*(.eh_frame))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
- .gcc_except_table :
- {
- *(.gcc_except_table)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
- .jcr : { KEEP (*(.jcr)) } >ewram = 0
- .got : { *(.got.plt) *(.got) *(.rel.got) } >ewram = 0
-
- .ewram ALIGN(4) :
- {
- __ewram_start = ABSOLUTE(.) ;
- *(.ewram)
- *ewram.*(.text)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >ewram = 0xff
-
-
- .data ALIGN(4) :
- {
- __data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- . = ALIGN(4);
- __data_end = ABSOLUTE(.) ;
- } >ewram = 0xff
-
-
- __dtcm_lma = . ;
-
- .dtcm __dtcm_start : AT (__dtcm_lma)
- {
- *(.dtcm)
- *(.dtcm.*)
- . = ALIGN(4);
- __dtcm_end = ABSOLUTE(.);
- } >dtcm = 0xff
-
-
- __itcm_lma = __dtcm_lma + SIZEOF(.dtcm);
-
- .itcm __itcm_start : AT (__itcm_lma)
- {
- *(.itcm)
- *itcm.*(.text)
- . = ALIGN(4);
- __itcm_end = ABSOLUTE(.);
- } >itcm = 0xff
-
- .sbss __dtcm_end :
- {
- __sbss_start = ABSOLUTE(.);
- __sbss_start__ = ABSOLUTE(.);
- *(.sbss)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- __sbss_end = ABSOLUTE(.);
- } >dtcm
-
-
-
- __bss_lma = __itcm_lma + SIZEOF(.itcm) ;
- __appended_data = __itcm_lma + SIZEOF(.itcm) ;
- .bss __bss_lma : AT (__bss_lma)
- {
- __bss_start = ABSOLUTE(.);
- __bss_start__ = ABSOLUTE(.);
- *(.dynbss)
- *(.gnu.linkonce.b*)
- *(.bss*)
- *(COMMON)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- __bss_end = ABSOLUTE(.) ;
- __bss_end__ = __bss_end ;
- } >ewram
-
-
- _end = . ;
- __end__ = . ;
- PROVIDE (end = _end);
-
-
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- .stack 0x80000 : { _stack = .; *(.stack) }
- /* These must appear regardless of . */
+REGION_ALIAS ("REGION_START", EWRAM);
+REGION_ALIAS ("REGION_VECTOR", DTCM);
+REGION_ALIAS ("REGION_TEXT", EWRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", EWRAM);
+REGION_ALIAS ("REGION_RODATA", EWRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_DATA", EWRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", EWRAM);
+REGION_ALIAS ("REGION_FAST_DATA", DTCM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", EWRAM);
+REGION_ALIAS ("REGION_BSS", EWRAM);
+REGION_ALIAS ("REGION_WORK", EWRAM);
+REGION_ALIAS ("REGION_STACK", EWRAM);
+
+__dtcm_top = ORIGIN (DTCM) + LENGTH (DTCM);
+__irq_flags = __dtcm_top - 0x08;
+__irq_vector = __dtcm_top - 0x04;
+
+SECTIONS {
+ .sbss : {
+ __sbss_start = ABSOLUTE(.);
+ __sbss_start__ = ABSOLUTE(.);
+ *(.sbss)
+ . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
+ __sbss_end = ABSOLUTE(.);
+ } > DTCM
}
+
+INCLUDE linkcmds.armv4
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* startup/linkcmds, start/start.S: Use linker command base file.
M 1.54 c/src/lib/libbsp/arm/rtl22xx/ChangeLog
M 1.8 c/src/lib/libbsp/arm/rtl22xx/start/start.S
M 1.6 c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds
diff -u rtems/c/src/lib/libbsp/arm/rtl22xx/ChangeLog:1.53 rtems/c/src/lib/libbsp/arm/rtl22xx/ChangeLog:1.54
--- rtems/c/src/lib/libbsp/arm/rtl22xx/ChangeLog:1.53 Thu May 20 08:00:38 2010
+++ rtems/c/src/lib/libbsp/arm/rtl22xx/ChangeLog Fri Dec 3 04:50:28 2010
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * startup/linkcmds, start/start.S: Use linker command base file.
+
2010-05-20 Sebastian Huber <sebastian.huber at embedded-brains.de>
* make/custom/rtl22xx_t.cfg: Workaround for GCC bug 38644.
diff -u rtems/c/src/lib/libbsp/arm/rtl22xx/start/start.S:1.7 rtems/c/src/lib/libbsp/arm/rtl22xx/start/start.S:1.8
--- rtems/c/src/lib/libbsp/arm/rtl22xx/start/start.S:1.7 Wed Apr 7 16:49:20 2010
+++ rtems/c/src/lib/libbsp/arm/rtl22xx/start/start.S Fri Dec 3 04:50:28 2010
@@ -12,7 +12,7 @@
* $Id$
*/
-/* Some standard definitions...*/
+#include <bsp/linker-symbols.h>
/* Some standard definitions...*/
.equ PSR_MODE_USR, 0x10
@@ -44,16 +44,16 @@
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
bic r0, r0, #PSR_T
msr cpsr, r0
- ldr r1, =_irq_stack_size
- ldr sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ ldr sp, =bsp_stack_irq_begin
add sp, sp, r1
/* Enter FIQ mode and set up the FIQ stack pointer */
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
bic r0, r0, #PSR_T
msr cpsr, r0
- ldr r1, =_fiq_stack_size
- ldr sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ ldr sp, =bsp_stack_fiq_begin
add sp, sp, r1
/* Enter ABT mode and set up the ABT stack pointer */
@@ -61,16 +61,16 @@
bic r0, r0, #PSR_T
msr cpsr, r0
bic r0, r0, #PSR_T
- ldr r1, =_abt_stack_size
- ldr sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ ldr sp, =bsp_stack_abt_begin
add sp, sp, r1
/* Set up the SVC stack pointer last and stay in SVC mode */
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
bic r0, r0, #PSR_T
msr cpsr, r0
- ldr r1, =_svc_stack_size
- ldr sp, =_svc_stack
+ ldr r1, =bsp_stack_svc_size
+ ldr sp, =bsp_stack_svc_begin
add sp, sp, r1
sub sp, sp, #0x64
@@ -89,8 +89,8 @@
/* zero the bss */
- ldr r1, =_bss_end_
- ldr r0, =_bss_start_
+ ldr r1, =bsp_section_bss_end
+ ldr r0, =bsp_section_bss_begin
_bss_init:
mov r2, #0
diff -u rtems/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds:1.5 rtems/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds:1.6
--- rtems/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds:1.5 Fri Sep 19 16:14:01 2008
+++ rtems/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds Fri Dec 3 04:50:28 2010
@@ -1,245 +1,23 @@
-/*
- * Philips lpc ARM linker script
- * By Ray,Xu
- * Rayx.cn at gmail.com
- *
- * LPC22xx ARM do not have a MMU, the formatter got 512kb SRAM
- * I set the code entry to the beging of SRAM for debugging perpurse
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- *
- * $Id$
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-
MEMORY {
- sdram : ORIGIN = 0x81000000, LENGTH = 512K
- sram : ORIGIN = 0x40000000, LENGTH = 16K
- regs : ORIGIN = 0xe0000000, LENGTH = 2M
+ SDRAM : ORIGIN = 0x81000000, LENGTH = 512k
+ SRAM : ORIGIN = 0x40000000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x81000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 512K;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x100;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x50;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x50;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x100;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- _sram_base = .;
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
-
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- /*bsp_vector_table = .;*/
- /*. += (64 * 4); 64 LPC22xx interrupts */
-
- . = ALIGN (0x10);
-
- } > sram
-
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
-
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(0x10);
- _clear_end = .;
-
- . = ALIGN (0x10);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (0x10);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (0x10);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (0x10);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
- . = ALIGN (0x10);
- _bss_free_start = .;
- WorkAreaBase = .;
- } > sdram
-
-/*
- .regs :
- {
- lpc22xx_regs_base = .;
- lpc22xx_regs = .;
- . += 8192;
- } > regs
-*/
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
-
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
+INCLUDE linkcmds.armv4
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* start/start.S, startup/linkcmds: Use linker command base file.
M 1.62 c/src/lib/libbsp/arm/gp32/ChangeLog
M 1.6 c/src/lib/libbsp/arm/gp32/start/start.S
M 1.5 c/src/lib/libbsp/arm/gp32/startup/linkcmds
diff -u rtems/c/src/lib/libbsp/arm/gp32/ChangeLog:1.61 rtems/c/src/lib/libbsp/arm/gp32/ChangeLog:1.62
--- rtems/c/src/lib/libbsp/arm/gp32/ChangeLog:1.61 Fri Apr 30 09:30:09 2010
+++ rtems/c/src/lib/libbsp/arm/gp32/ChangeLog Fri Dec 3 04:50:51 2010
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * start/start.S, startup/linkcmds: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* Makefile.am, preinstall.am: Added generic interrupt support modules.
diff -u rtems/c/src/lib/libbsp/arm/gp32/start/start.S:1.5 rtems/c/src/lib/libbsp/arm/gp32/start/start.S:1.6
--- rtems/c/src/lib/libbsp/arm/gp32/start/start.S:1.5 Wed Apr 7 16:49:51 2010
+++ rtems/c/src/lib/libbsp/arm/gp32/start/start.S Fri Dec 3 04:50:51 2010
@@ -11,6 +11,8 @@
* $Id$
*/
+#include <bsp/linker-symbols.h>
+
/* Some standard definitions...*/
.equ PSR_MODE_USR, 0x10
.equ PSR_MODE_FIQ, 0x11
@@ -32,12 +34,12 @@
@---------------------------------------------------------------------------------
@ AXF addresses
@---------------------------------------------------------------------------------
- .word _axf_text_start
- .word _axf_ro_end
- .word _axf_data_start
- .word _axf_bss_end
- .word _axf_bss_start
- .word _axf_bss_end
+ .word bsp_section_text_begin
+ .word bsp_section_rodata_end
+ .word bsp_section_data_begin
+ .word bsp_section_bss_end
+ .word bsp_section_bss_begin
+ .word bsp_section_bss_end
@---------------------------------------------------------------------------------
@ GamePark magic sequence
@@ -77,29 +79,29 @@
/* Enter IRQ mode and set up the IRQ stack pointer */
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_irq_stack_size
- ldr sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ ldr sp, =bsp_stack_irq_begin
add sp, sp, r1
/* Enter FIQ mode and set up the FIQ stack pointer */
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_fiq_stack_size
- ldr sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ ldr sp, =bsp_stack_fiq_begin
add sp, sp, r1
/* Enter ABT mode and set up the ABT stack pointer */
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_abt_stack_size
- ldr sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ ldr sp, =bsp_stack_abt_begin
add sp, sp, r1
/* Set up the SVC stack pointer last and stay in SVC mode */
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_svc_stack_size
- ldr sp, =_svc_stack
+ ldr r1, =bsp_stack_svc_size
+ ldr sp, =bsp_stack_svc_begin
add sp, sp, r1
sub sp, sp, #0x64
diff -u rtems/c/src/lib/libbsp/arm/gp32/startup/linkcmds:1.4 rtems/c/src/lib/libbsp/arm/gp32/startup/linkcmds:1.5
--- rtems/c/src/lib/libbsp/arm/gp32/startup/linkcmds:1.4 Fri Sep 19 16:13:59 2008
+++ rtems/c/src/lib/libbsp/arm/gp32/startup/linkcmds Fri Dec 3 04:50:52 2010
@@ -1,279 +1,25 @@
-/*
- * GP32 Linker script
- *
- * Written by Philippe Simons <loki_666 at fastmail.fm>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm","elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
-
-
MEMORY {
- sdram : ORIGIN = 0xc000000, LENGTH = 7M
+ SDRAM_MMU : ORIGIN = 0x0c000000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x0c004000, LENGTH = 7M - 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-/* The base for SDRAM is set to umon's APPRAMBASE */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0xc000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 7M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- bsp_vector_table = .;
- . += (32 * 4); /* 32 S3C2400 interrupts */
-
- . = ALIGN (0x100);
-
-
- } > sdram
-
-
- .text :
- {
- _axf_text_start = . ;
- *(EXCLUDE_FILE (*text.iwram*) .text)
- *(.text.*)
- *(.stub)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- __text_end = . ;
-
- .init :
- {
- *(.init)
- } > sdram /*=0*/
-
- .jcr :
- {
- *(.jcr)
- } > sdram
-
-
- .fini :
- {
- *(.fini)
- } > sdram /*=0*/
-
- .rodata :
- {
- *(.rodata)
- *all.rodata*(*)
- *(.roda)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- SORT(CONSTRUCTORS)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram = 0xff
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of the constructors, so
- we make sure it is first. Because this is a wildcard, it
- doesn't matter if the user does not actually link against
- crtbegin.o; the linker won't look for a file to match a
- wildcard. The wildcard also means that it doesn't matter which
- directory crtbegin.o is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
-
- .eh_frame :
- {
- KEEP (*(.eh_frame))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .gcc_except_table :
- {
- *(.gcc_except_table*)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
- _axf_ro_end = . ;
-
- .data ALIGN(4) :
- {
- _axf_data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0xff
-
- __data_end = . ;
-
- .bss ALIGN(4):
- {
- _axf_bss_start = ABSOLUTE(.);
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we
- * don't have any. If we don't use more regions than TLB entries (64),
- * the lookup will only happen once for each region.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- } > sdram
- _axf_bss_end = . ;
-
- _end = . ;
- __end__ = . ;
- PROVIDE (end = _end);
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* startup/linkcmds: Use linker command base file.
M 1.67 c/src/lib/libbsp/arm/gba/ChangeLog
M 1.3 c/src/lib/libbsp/arm/gba/startup/linkcmds
M 1.30 c/src/lib/libbsp/arm/smdk2410/ChangeLog
M 1.5 c/src/lib/libbsp/arm/smdk2410/startup/linkcmds
diff -u rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.66 rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.67
--- rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.66 Fri Apr 30 09:55:49 2010
+++ rtems/c/src/lib/libbsp/arm/gba/ChangeLog Fri Dec 3 04:51:22 2010
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * startup/linkcmds: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* irq/irq_asm.S, irq/irq_init.c, irq/bsp_irq_asm.S,
diff -u rtems/c/src/lib/libbsp/arm/gba/startup/linkcmds:1.2 rtems/c/src/lib/libbsp/arm/gba/startup/linkcmds:1.3
--- rtems/c/src/lib/libbsp/arm/gba/startup/linkcmds:1.2 Mon Mar 3 17:05:31 2008
+++ rtems/c/src/lib/libbsp/arm/gba/startup/linkcmds Fri Dec 3 04:51:22 2010
@@ -192,6 +192,32 @@
. = ALIGN(4);
} =0xFF
+ .ARM.extab : {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } =0xff
+ __exidx_start = .;
+ .ARM.exidx : {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } =0xff
+ __exidx_end = .;
+ .preinit_array : {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } =0xFF
+ .init_array : {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } =0xFF
+ .fini_array : {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } =0xFF
+
/*************************************************************************
calculate __ro_end
*************************************************************************/
@@ -205,7 +231,12 @@
SIZEOF(.gcc_except_table) +
SIZEOF(.ctors) +
SIZEOF(.dtors) +
- SIZEOF(.jcr);
+ SIZEOF(.jcr) +
+ SIZEOF(.ARM.extab) +
+ SIZEOF(.ARM.exidx) +
+ SIZEOF(.preinit_array) +
+ SIZEOF(.init_array) +
+ SIZEOF(.fini_array);
PROVIDE(__text_end__ = __ro_end );
/*** IWRAM ***/
@@ -344,5 +375,11 @@
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
+ /* DWARF 3 */
+ .debug_pubtypes 0 : { *(.debug_pubtypes) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+ .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
+ .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
+ /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
}
/* @endcond */
diff -u rtems/c/src/lib/libbsp/arm/smdk2410/ChangeLog:1.29 rtems/c/src/lib/libbsp/arm/smdk2410/ChangeLog:1.30
--- rtems/c/src/lib/libbsp/arm/smdk2410/ChangeLog:1.29 Fri Apr 30 08:54:07 2010
+++ rtems/c/src/lib/libbsp/arm/smdk2410/ChangeLog Fri Dec 3 04:50:06 2010
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * startup/linkcmds: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* Makefile.am, preinstall.am: Added generic interrupt support modules.
diff -u rtems/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds:1.4 rtems/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds:1.5
--- rtems/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds:1.4 Sun Sep 21 15:47:47 2008
+++ rtems/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds Fri Dec 3 04:50:06 2010
@@ -1,279 +1,25 @@
-/*
- * GP32 Linker script
- *
- * Written by Philippe Simons <loki_666 at fastmail.fm>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm","elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
-
-
MEMORY {
- sdram : ORIGIN = 0x30000000, LENGTH = 64M
+ SDRAM_MMU : ORIGIN = 0x30000000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x30004000, LENGTH = 64M - 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-/* The base for SDRAM is set to umon's APPRAMBASE */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x30000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 64M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- bsp_vector_table = .;
- . += (32 * 4); /* 32 S3C2400 interrupts */
-
- . = ALIGN (0x100);
-
-
- } > sdram
-
-
- .text :
- {
- _axf_text_start = . ;
- *(EXCLUDE_FILE (*text.iwram*) .text)
- *(.text.*)
- *(.stub)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- __text_end = . ;
-
- .init :
- {
- *(.init)
- } > sdram /*=0*/
-
- .jcr :
- {
- *(.jcr)
- } > sdram
-
-
- .fini :
- {
- *(.fini)
- } > sdram /*=0*/
-
- .rodata :
- {
- *(.rodata)
- *all.rodata*(*)
- *(.roda)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- SORT(CONSTRUCTORS)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram = 0xff
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of the constructors, so
- we make sure it is first. Because this is a wildcard, it
- doesn't matter if the user does not actually link against
- crtbegin.o; the linker won't look for a file to match a
- wildcard. The wildcard also means that it doesn't matter which
- directory crtbegin.o is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
-
- .eh_frame :
- {
- KEEP (*(.eh_frame))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .gcc_except_table :
- {
- *(.gcc_except_table)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
- _axf_ro_end = . ;
-
- .data ALIGN(4) :
- {
- _axf_data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0xff
-
- __data_end = . ;
-
- .bss ALIGN(4):
- {
- _axf_bss_start = ABSOLUTE(.);
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we
- * don't have any. If we don't use more regions than TLB entries (64),
- * the lookup will only happen once for each region.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
- . = ALIGN (1024);
- _bss_free_start = .;
-
- } > sdram
- _axf_bss_end = . ;
-
- _end = . ;
- __end__ = . ;
- PROVIDE (end = _end);
- WorkAreaBase = .;
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* bsp_specs, start/start.S, startup/linkcmds.csb337,
startup/linkcmds.csb637: Use linker command base file.
M 1.73 c/src/lib/libbsp/arm/csb337/ChangeLog
M 1.9 c/src/lib/libbsp/arm/csb337/bsp_specs
M 1.6 c/src/lib/libbsp/arm/csb337/start/start.S
M 1.3 c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337
M 1.4 c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637
diff -u rtems/c/src/lib/libbsp/arm/csb337/ChangeLog:1.72 rtems/c/src/lib/libbsp/arm/csb337/ChangeLog:1.73
--- rtems/c/src/lib/libbsp/arm/csb337/ChangeLog:1.72 Fri Apr 30 09:44:17 2010
+++ rtems/c/src/lib/libbsp/arm/csb337/ChangeLog Fri Dec 3 04:51:54 2010
@@ -1,3 +1,8 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * bsp_specs, start/start.S, startup/linkcmds.csb337,
+ startup/linkcmds.csb637: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* Makefile.am, preinstall.am: Added generic interrupt support modules.
diff -u rtems/c/src/lib/libbsp/arm/csb337/bsp_specs:1.8 rtems/c/src/lib/libbsp/arm/csb337/bsp_specs:1.9
--- rtems/c/src/lib/libbsp/arm/csb337/bsp_specs:1.8 Fri Dec 5 07:37:41 2008
+++ rtems/c/src/lib/libbsp/arm/csb337/bsp_specs Fri Dec 3 04:51:54 2010
@@ -7,7 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
diff -u rtems/c/src/lib/libbsp/arm/csb337/start/start.S:1.5 rtems/c/src/lib/libbsp/arm/csb337/start/start.S:1.6
--- rtems/c/src/lib/libbsp/arm/csb337/start/start.S:1.5 Sun Nov 29 08:53:00 2009
+++ rtems/c/src/lib/libbsp/arm/csb337/start/start.S Fri Dec 3 04:51:54 2010
@@ -12,6 +12,8 @@
* $Id$
*/
+#include <bsp/linker-symbols.h>
+
/* Some standard definitions...*/
.equ PSR_MODE_USR, 0x10
.equ PSR_MODE_FIQ, 0x11
@@ -39,8 +41,8 @@
msr cpsr, r0
/* zero the bss */
- ldr r1, =_bss_end_
- ldr r0, =_bss_start_
+ ldr r1, =bsp_section_bss_end
+ ldr r0, =bsp_section_bss_begin
_bss_init:
mov r2, #0
@@ -53,29 +55,29 @@
/* Enter IRQ mode and set up the IRQ stack pointer */
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_irq_stack_size
- ldr sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ ldr sp, =bsp_stack_irq_begin
add sp, sp, r1
/* Enter FIQ mode and set up the FIQ stack pointer */
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_fiq_stack_size
- ldr sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ ldr sp, =bsp_stack_fiq_begin
add sp, sp, r1
/* Enter ABT mode and set up the ABT stack pointer */
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_abt_stack_size
- ldr sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ ldr sp, =bsp_stack_abt_begin
add sp, sp, r1
/* Set up the SVC stack pointer last and stay in SVC mode */
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_svc_stack_size
- ldr sp, =_svc_stack
+ ldr r1, =bsp_stack_svc_size
+ ldr sp, =bsp_stack_svc_begin
add sp, sp, r1
sub sp, sp, #0x64
diff -u rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337:1.2 rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337:1.3
--- rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337:1.2 Mon Nov 30 16:00:36 2009
+++ rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 Fri Dec 3 04:51:54 2010
@@ -1,230 +1,26 @@
-/*
- * Cogent CSB337 Linker script
- *
- * Copyright (c) 2004 by Jay Monkman <jtm at lopingdog.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-MEMORY
-{
- sdram : ORIGIN = 0x20100000, LENGTH = 15M
- sram : ORIGIN = 0x00200000, LENGTH = 16K
+MEMORY {
+ SDRAM_MMU : ORIGIN = 0x20100000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x20104000, LENGTH = 15M - 16k
+ SRAM : ORIGIN = 0x00200000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x20100000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 15M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_sram_base = DEFINED(_sram_base) ? _sram_base : 0x00000000;
-_sram_size = DEFINED(_sram_size) ? _sram_size : 16K;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- _sram_base = .;
-
- /* reserve room for the vectors and function pointers */
- arm_exception_table = .;
- . += 64;
-
- /* 256 byte aligned rx buffer header array */
- . = ALIGN (0x100);
- at91rm9200_emac_rxbuf_hdrs = .;
-
- /* 1 transmit buffer, 0x600 size */
- . += (0x100);
- at91rm9200_emac_txbuf = .;
- . += (0x600);
-
- /* 8 receive buffers, 0x600 each */
- at91rm9200_emac_rxbufs = .;
- . += (0x600 * 8);
-
- } > sram
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we need
- * 16K which is the size of SRAM. If we do the mapping right, the TLB
- * should be big enough that to hold all the translations that matter,
- * so keeping the table in SDRAM won't be a problem.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- } > sdram
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-/* .stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
diff -u rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637:1.3 rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637:1.4
--- rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637:1.3 Mon Nov 30 16:00:36 2009
+++ rtems/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 Fri Dec 3 04:51:54 2010
@@ -1,237 +1,26 @@
-/*
- * Cogent CSB637 linker script
- *
- * Copyright (c) 2004 by Jay Monkman <jtm at lopingdog.com>
- * File from the old CSB337 RTEMS BSP
- *
- * Modified by Joel Sherill
- * from OAR Corporation and
- * Fernando Nicodemos <fgnicodemos at terra.com.br>
- * from NCB - Sistemas Embarcados Ltda. (Brazil)
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-MEMORY
-{
- sdram : ORIGIN = 0x20100000, LENGTH = 63M
- sram : ORIGIN = 0x00200000, LENGTH = 16K
+MEMORY {
+ SDRAM_MMU : ORIGIN = 0x20100000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x20104000, LENGTH = 63M - 16k
+ SRAM : ORIGIN = 0x00200000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x20100000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 63M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_sram_base = DEFINED(_sram_base) ? _sram_base : 0x00000000;
-_sram_size = DEFINED(_sram_size) ? _sram_size : 16K;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- _sram_base = .;
-
- /* reserve room for the vectors and function pointers */
- arm_exception_table = .;
- . += 64;
-
- /* 256 byte aligned rx buffer header array */
- . = ALIGN (0x100);
- at91rm9200_emac_rxbuf_hdrs = .;
-
- /* 1 transmit buffer, 0x600 size */
- . += (0x100);
- at91rm9200_emac_txbuf = .;
- . += (0x600);
-
- /* 8 receive buffers, 0x600 each */
- at91rm9200_emac_rxbufs = .;
- . += (0x600 * 8);
-
- } > sram
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we need
- * 16K which is the size of SRAM. If we do the mapping right, the TLB
- * should be big enough that to hold all the translations that matter,
- * so keeping the table in SDRAM won't be a problem.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
-
- . = ALIGN (1024);
- _bss_free_start = .;
- . = ALIGN (32);
- WorkAreaBase = .;
-
- } > sdram
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-/* .stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
*sh*:
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
* bsp_specs, start/start.S, startup/linkcmds: Use linker command base
file.
M 1.69 c/src/lib/libbsp/arm/csb336/ChangeLog
M 1.9 c/src/lib/libbsp/arm/csb336/bsp_specs
M 1.7 c/src/lib/libbsp/arm/csb336/start/start.S
M 1.8 c/src/lib/libbsp/arm/csb336/startup/linkcmds
M 1.115 c/src/lib/libbsp/arm/edb7312/ChangeLog
M 1.10 c/src/lib/libbsp/arm/edb7312/bsp_specs
M 1.10 c/src/lib/libbsp/arm/edb7312/start/start.S
M 1.9 c/src/lib/libbsp/arm/edb7312/startup/linkcmds
M 1.10 c/src/lib/libbsp/arm/gdbarmsim/ChangeLog
M 1.2 c/src/lib/libbsp/arm/gdbarmsim/bsp_specs
M 1.4 c/src/lib/libbsp/arm/gdbarmsim/start/start.S
M 1.2 c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds
M 1.26 c/src/lib/libbsp/arm/gumstix/ChangeLog
M 1.3 c/src/lib/libbsp/arm/gumstix/bsp_specs
M 1.5 c/src/lib/libbsp/arm/gumstix/start/start.S
M 1.3 c/src/lib/libbsp/arm/gumstix/startup/linkcmds
diff -u rtems/c/src/lib/libbsp/arm/csb336/ChangeLog:1.68 rtems/c/src/lib/libbsp/arm/csb336/ChangeLog:1.69
--- rtems/c/src/lib/libbsp/arm/csb336/ChangeLog:1.68 Fri Apr 30 09:41:12 2010
+++ rtems/c/src/lib/libbsp/arm/csb336/ChangeLog Fri Dec 3 04:52:07 2010
@@ -1,3 +1,8 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
+ file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* Makefile.am, preinstall.am: Added generic interrupt support modules.
diff -u rtems/c/src/lib/libbsp/arm/csb336/bsp_specs:1.8 rtems/c/src/lib/libbsp/arm/csb336/bsp_specs:1.9
--- rtems/c/src/lib/libbsp/arm/csb336/bsp_specs:1.8 Fri Dec 5 07:37:39 2008
+++ rtems/c/src/lib/libbsp/arm/csb336/bsp_specs Fri Dec 3 04:52:07 2010
@@ -7,8 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
-
diff -u rtems/c/src/lib/libbsp/arm/csb336/start/start.S:1.6 rtems/c/src/lib/libbsp/arm/csb336/start/start.S:1.7
--- rtems/c/src/lib/libbsp/arm/csb336/start/start.S:1.6 Wed Apr 7 16:48:14 2010
+++ rtems/c/src/lib/libbsp/arm/csb336/start/start.S Fri Dec 3 04:52:07 2010
@@ -12,6 +12,8 @@
* $Id$
*/
+#include <bsp/linker-symbols.h>
+
/* Some standard definitions...*/
.equ PSR_MODE_USR, 0x10
.equ PSR_MODE_FIQ, 0x11
@@ -39,8 +41,8 @@
msr cpsr, r0
/* zero the bss */
- ldr r1, =_bss_end_
- ldr r0, =_bss_start_
+ ldr r1, =bsp_section_bss_end
+ ldr r0, =bsp_section_bss_begin
_bss_init:
mov r2, #0
@@ -53,36 +55,36 @@
/* Enter IRQ mode and set up the IRQ stack pointer */
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_irq_stack_size
- ldr sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ ldr sp, =bsp_stack_irq_begin
add sp, sp, r1
/* Enter FIQ mode and set up the FIQ stack pointer */
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_fiq_stack_size
- ldr sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ ldr sp, =bsp_stack_fiq_begin
add sp, sp, r1
/* Enter ABT mode and set up the ABT stack pointer */
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_abt_stack_size
- ldr sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ ldr sp, =bsp_stack_abt_begin
add sp, sp, r1
/* Enter UNDEF mode and set up the UNDEF stack pointer */
mov r0, #(PSR_MODE_UNDEF | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_undef_stack_size
- ldr sp, =_undef_stack
+ ldr r1, =bsp_stack_und_size
+ ldr sp, =bsp_stack_und_begin
add sp, sp, r1
/* Set up the SVC stack pointer last and stay in SVC mode */
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_svc_stack_size
- ldr sp, =_svc_stack
+ ldr r1, =bsp_stack_svc_size
+ ldr sp, =bsp_stack_svc_begin
add sp, sp, r1
sub sp, sp, #0x64
diff -u rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds:1.7 rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds:1.8
--- rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds:1.7 Fri Sep 19 16:13:54 2008
+++ rtems/c/src/lib/libbsp/arm/csb336/startup/linkcmds Fri Dec 3 04:52:07 2010
@@ -1,247 +1,25 @@
-/*
- * Cogent CSB336 Linker script
- *
- * Copyright (c) 2004 by Cogent Computer Systems
- * Written by Jay Monkman <jtm at lopingdog.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
-
-
MEMORY {
- sdram : ORIGIN = 0x08200000, LENGTH = 30M
+ SDRAM_MMU : ORIGIN = 0x08200000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x08204000, LENGTH = 30M - 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-/* The base for SDRAM is set to umon's APPRAMBASE */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x08200000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 30M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x400;
-_undef_stack_size = DEFINED(_undef_stack_size) ? _undef_stack_size : 0x400;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- . = ALIGN (0x100);
-
-
- } > sdram
-
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _undef_stack = .;
- . += _undef_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we
- * don't have any. If we don't use more regions than TLB entries (64),
- * the lookup will only happen once for each region.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- } > sdram
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
diff -u rtems/c/src/lib/libbsp/arm/edb7312/ChangeLog:1.114 rtems/c/src/lib/libbsp/arm/edb7312/ChangeLog:1.115
--- rtems/c/src/lib/libbsp/arm/edb7312/ChangeLog:1.114 Fri Apr 30 09:48:52 2010
+++ rtems/c/src/lib/libbsp/arm/edb7312/ChangeLog Fri Dec 3 04:51:37 2010
@@ -1,3 +1,8 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
+ file.
+
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
* irq/bsp_irq_init.c: Removed file.
diff -u rtems/c/src/lib/libbsp/arm/edb7312/bsp_specs:1.9 rtems/c/src/lib/libbsp/arm/edb7312/bsp_specs:1.10
--- rtems/c/src/lib/libbsp/arm/edb7312/bsp_specs:1.9 Fri Dec 5 07:37:43 2008
+++ rtems/c/src/lib/libbsp/arm/edb7312/bsp_specs Fri Dec 3 04:51:37 2010
@@ -7,7 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
diff -u rtems/c/src/lib/libbsp/arm/edb7312/start/start.S:1.9 rtems/c/src/lib/libbsp/arm/edb7312/start/start.S:1.10
--- rtems/c/src/lib/libbsp/arm/edb7312/start/start.S:1.9 Wed Apr 7 16:49:45 2010
+++ rtems/c/src/lib/libbsp/arm/edb7312/start/start.S Fri Dec 3 04:51:37 2010
@@ -1,6 +1,8 @@
/*
* Cirrus EP7312 Startup code
*
+ * Copyright (c) 2010 embedded brains GmbH.
+ *
* Copyright (c) 2002 by Jay Monkman <jtm at smoothsmoothie.com>
*
* Copyright (c) 2002 by Charlie Steader <charlies at poliac.com>
@@ -14,6 +16,8 @@
* $Id$
*/
+#include <bsp/linker-symbols.h>
+
/* Some standard definitions...*/
.equ Mode_USR, 0x10
@@ -28,50 +32,8 @@
.equ I_Bit, 0x80
.equ F_Bit, 0x40
- .text
- .globl _start
-
-_start:
- /* store the sp */
- mov r12, sp
-/*
- * Here is the code to initialize the low-level BSP environment
- * (Chip Select, PLL, ....?)
- */
-
-/* zero the bss */
- LDR r1, =_bss_end_ /* get end of ZI region */
- LDR r0, =_bss_start_ /* load base address of ZI region */
-
-zi_init:
- MOV r2, #0
- CMP r0, r1 /* loop whilst r0 < r1 */
- STRLOT r2, [r0], #4
- BLO zi_init
-
-/* Load basic ARM7 interrupt table */
-VectorInit:
- MOV R0, #0
- ADR R1, Vector_Init_Block
- LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */
- STMIA R0!, {r2, r3}
-
- LDMIA R1!, {R2, r3} /* Copy the .long'ed addresses (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the .long'ed addresses (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the .long'ed addresses (8 words) */
- STMIA R0!, {r2, r3}
- LDMIA R1!, {R2, r3} /* Copy the .long'ed addresses (8 words) */
- STMIA R0!, {r2, r3}
-
- B init2
+.section ".bsp_start_text", "ax"
+.arm
/*******************************************************
standard exception vectors table
@@ -118,38 +80,56 @@
FIQ_Handler:
B FIQ_Handler
-init2 :
+ .globl _start
+_start:
+ /* store the sp */
+ mov r12, sp
+/*
+ * Here is the code to initialize the low-level BSP environment
+ * (Chip Select, PLL, ....?)
+ */
+
+/* zero the bss */
+ LDR r1, =bsp_section_bss_end /* get end of ZI region */
+ LDR r0, =bsp_section_bss_begin /* load base address of ZI region */
+
+zi_init:
+ MOV r2, #0
+ CMP r0, r1 /* loop whilst r0 < r1 */
+ STRLOT r2, [r0], #4
+ BLO zi_init
+
/* --- Initialise stack pointer registers */
/* Enter IRQ mode and set up the IRQ stack pointer */
MOV r0, #Mode_IRQ | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0
- ldr r1, =_irq_stack_size
- LDR sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ LDR sp, =bsp_stack_irq_begin
add sp, sp, r1
sub sp, sp, #0x64
/* Enter FIQ mode and set up the FIQ stack pointer */
MOV r0, #Mode_FIQ | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0
- ldr r1, =_fiq_stack_size
- LDR sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ LDR sp, =bsp_stack_fiq_begin
add sp, sp, r1
sub sp, sp, #0x64
/* Enter ABT mode and set up the ABT stack pointer */
MOV r0, #Mode_ABT | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0
- ldr r1, =_abt_stack_size
- LDR sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ LDR sp, =bsp_stack_abt_begin
add sp, sp, r1
sub sp, sp, #0x64
/* Set up the SVC stack pointer last and stay in SVC mode */
MOV r0, #Mode_SVC | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0
- ldr r1, =_svc_stack_size
- LDR sp, =_svc_stack
+ ldr r1, =bsp_stack_svc_size
+ LDR sp, =bsp_stack_svc_begin
add sp, sp, r1
sub sp, sp, #0x64
diff -u rtems/c/src/lib/libbsp/arm/edb7312/startup/linkcmds:1.8 rtems/c/src/lib/libbsp/arm/edb7312/startup/linkcmds:1.9
--- rtems/c/src/lib/libbsp/arm/edb7312/startup/linkcmds:1.8 Fri Sep 19 16:13:57 2008
+++ rtems/c/src/lib/libbsp/arm/edb7312/startup/linkcmds Fri Dec 3 04:51:37 2010
@@ -1,243 +1,24 @@
-/*
- * Cirrus EP7312 linker script
- *
- * Copyright (c) 2002 by Jay Monkman <jtm at smoothsmoothie.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- *
- * $Id$
-*/
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-
MEMORY {
- sdram : ORIGIN = 0x00000000, LENGTH = 16M
- regs : ORIGIN = 0x80000000, LENGTH = 1M
+ SDRAM : ORIGIN = 0x00000000, LENGTH = 16M
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x00000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 16M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- _sram_base = .;
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
- fiq_vect_table = .; /* this and irq_vector_table should be swapped */
- . += (32 * 4);
-
- irq_vector_table = .;
- . += (32 * 4);
-
- } > sdram
-
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- } > sdram
-
-/*
- .regs :
- {
- ep7312_regs_base = .;
- ep7312_regs = .;
- . += 8192;
- } > regs
-*/
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+bsp_vector_table_in_start_section = 1;
+INCLUDE linkcmds.armv4
diff -u rtems/c/src/lib/libbsp/arm/gdbarmsim/ChangeLog:1.9 rtems/c/src/lib/libbsp/arm/gdbarmsim/ChangeLog:1.10
--- rtems/c/src/lib/libbsp/arm/gdbarmsim/ChangeLog:1.9 Sun Aug 15 17:51:01 2010
+++ rtems/c/src/lib/libbsp/arm/gdbarmsim/ChangeLog Fri Dec 3 04:51:06 2010
@@ -1,3 +1,8 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
+ file.
+
2010-08-15 Joel Sherrill <joel.sherrilL at OARcorp.com>
* startup/syscalls.c: ifdef out _times since it conflicts with
diff -u rtems/c/src/lib/libbsp/arm/gdbarmsim/bsp_specs:1.1 rtems/c/src/lib/libbsp/arm/gdbarmsim/bsp_specs:1.2
--- rtems/c/src/lib/libbsp/arm/gdbarmsim/bsp_specs:1.1 Thu Oct 1 16:48:42 2009
+++ rtems/c/src/lib/libbsp/arm/gdbarmsim/bsp_specs Fri Dec 3 04:51:06 2010
@@ -7,8 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
-
diff -u rtems/c/src/lib/libbsp/arm/gdbarmsim/start/start.S:1.3 rtems/c/src/lib/libbsp/arm/gdbarmsim/start/start.S:1.4
--- rtems/c/src/lib/libbsp/arm/gdbarmsim/start/start.S:1.3 Wed Apr 7 16:49:49 2010
+++ rtems/c/src/lib/libbsp/arm/gdbarmsim/start/start.S Fri Dec 3 04:51:06 2010
@@ -7,6 +7,7 @@
#include <newlib.h>
#include <bsp/swi.h>
+#include <bsp/linker-symbols.h>
/* ANSI concatenation macros. */
#define CONCAT(a, b) CONCAT2(a, b)
@@ -375,9 +376,9 @@
.fnend
#endif
.LC1:
- .word __bss_start__
+ .word bsp_section_bss_begin
.LC2:
- .word __clear_end__ /* __bss_end__ */
+ .word bsp_section_bss_end
#ifdef __USES_INITFINI__
.Lfini:
.word FUNCTION(_fini)
diff -u rtems/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds:1.1 rtems/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds:1.2
--- rtems/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds:1.1 Thu Oct 1 16:48:42 2009
+++ rtems/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds Fri Dec 3 04:51:06 2010
@@ -1,252 +1,22 @@
-/*
- * Cogent CSB336 Linker script
- *
- * Copyright (c) 2004 by Cogent Computer Systems
- * Written by Jay Monkman <jtm at lopingdog.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- *
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
-
-
MEMORY {
- sdram : ORIGIN = 0x00000000, LENGTH = 4M
+ RAM : ORIGIN = 0x00000000, LENGTH = 4M
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-
-/* The base for SDRAM is set to umon's APPRAMBASE */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x0;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 4M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x400;
-_undef_stack_size = DEFINED(_undef_stack_size) ? _undef_stack_size : 0x400;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- . = ALIGN (0x100);
-
-
- } > sdram
-
- .text :
- {
- . = 0x8000;
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
-
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table*) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- __bss_start__ = .;
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _undef_stack = .;
- . += _undef_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we
- * don't have any. If we don't use more regions than TLB entries (64),
- * the lookup will only happen once for each region.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- . = RamSize + RamBase - 1;
- __clear_end__ = .;
- __bss_end__ = .;
- _bss_end_ = .;
- _end = .;
- __end = .;
-
- } > sdram
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+REGION_ALIAS ("REGION_START", RAM);
+REGION_ALIAS ("REGION_VECTOR", RAM);
+REGION_ALIAS ("REGION_TEXT", RAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", RAM);
+REGION_ALIAS ("REGION_RODATA", RAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", RAM);
+REGION_ALIAS ("REGION_DATA", RAM);
+REGION_ALIAS ("REGION_DATA_LOAD", RAM);
+REGION_ALIAS ("REGION_FAST_TEXT", RAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM);
+REGION_ALIAS ("REGION_FAST_DATA", RAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
+REGION_ALIAS ("REGION_BSS", RAM);
+REGION_ALIAS ("REGION_WORK", RAM);
+REGION_ALIAS ("REGION_STACK", RAM);
+INCLUDE linkcmds.armv4
diff -u rtems/c/src/lib/libbsp/arm/gumstix/ChangeLog:1.25 rtems/c/src/lib/libbsp/arm/gumstix/ChangeLog:1.26
--- rtems/c/src/lib/libbsp/arm/gumstix/ChangeLog:1.25 Fri May 14 07:00:46 2010
+++ rtems/c/src/lib/libbsp/arm/gumstix/ChangeLog Fri Dec 3 04:50:40 2010
@@ -1,3 +1,8 @@
+2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
+ file.
+
2010-05-14 Joel Sherrill <joel.sherrilL at OARcorp.com>
* rtl8019/rtl8019.c: Fix typo.
diff -u rtems/c/src/lib/libbsp/arm/gumstix/bsp_specs:1.2 rtems/c/src/lib/libbsp/arm/gumstix/bsp_specs:1.3
--- rtems/c/src/lib/libbsp/arm/gumstix/bsp_specs:1.2 Mon Jun 29 18:16:44 2009
+++ rtems/c/src/lib/libbsp/arm/gumstix/bsp_specs Fri Dec 3 04:50:40 2010
@@ -7,7 +7,7 @@
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
*link:
-%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
+%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
diff -u rtems/c/src/lib/libbsp/arm/gumstix/start/start.S:1.4 rtems/c/src/lib/libbsp/arm/gumstix/start/start.S:1.5
--- rtems/c/src/lib/libbsp/arm/gumstix/start/start.S:1.4 Wed Apr 7 16:49:53 2010
+++ rtems/c/src/lib/libbsp/arm/gumstix/start/start.S Fri Dec 3 04:50:40 2010
@@ -9,6 +9,7 @@
* $Id$
*/
+#include <bsp/linker-symbols.h>
/* Some standard definitions...*/
.equ PSR_MODE_USR, 0x10
@@ -38,8 +39,8 @@
/* zero the bss */
- ldr r1, =_bss_end_
- ldr r0, =_bss_start_
+ ldr r1, =bsp_section_bss_end
+ ldr r0, =bsp_section_bss_begin
_bss_init:
mov r2, #0
@@ -51,29 +52,29 @@
/* Enter IRQ mode and set up the IRQ stack pointer */
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_irq_stack_size
- ldr sp, =_irq_stack
+ ldr r1, =bsp_stack_irq_size
+ ldr sp, =bsp_stack_irq_begin
add sp, sp, r1
/* Enter FIQ mode and set up the FIQ stack pointer */
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_fiq_stack_size
- ldr sp, =_fiq_stack
+ ldr r1, =bsp_stack_fiq_size
+ ldr sp, =bsp_stack_fiq_begin
add sp, sp, r1
/* Enter ABT mode and set up the ABT stack pointer */
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_abt_stack_size
- ldr sp, =_abt_stack
+ ldr r1, =bsp_stack_abt_size
+ ldr sp, =bsp_stack_abt_begin
add sp, sp, r1
/* Set up the SVC stack pointer last and stay in SVC mode */
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
msr cpsr, r0
- ldr r1, =_svc_stack_size
- ldr sp, =_svc_stack
+ ldr r1, =bsp_stack_und_size
+ ldr sp, =bsp_stack_und_begin
add sp, sp, r1
sub sp, sp, #0x64
diff -u rtems/c/src/lib/libbsp/arm/gumstix/startup/linkcmds:1.2 rtems/c/src/lib/libbsp/arm/gumstix/startup/linkcmds:1.3
--- rtems/c/src/lib/libbsp/arm/gumstix/startup/linkcmds:1.2 Thu Jun 11 08:12:42 2009
+++ rtems/c/src/lib/libbsp/arm/gumstix/startup/linkcmds Fri Dec 3 04:50:40 2010
@@ -1,217 +1,26 @@
-/*
- * GUMSTIX linkcmd by Yang Xi <hiyangxi at gmail.com>. Borrow form CSB337 linkcmd.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-MEMORY
-{
- sdram : ORIGIN = 0xA0000000, LENGTH = 64M
- sram : ORIGIN = 0x00000000, LENGTH = 16K
+MEMORY {
+ SDRAM_MMU : ORIGIN = 0xa0000000, LENGTH = 16k
+ SDRAM : ORIGIN = 0xa0004000, LENGTH = 64M - 16k
+ SRAM : ORIGIN = 0x00000000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
-/*
- * Declare some sizes.
- */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0xA0000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 64M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_sram_base = DEFINED(_sram_base) ? _sram_base : 0x00000000;
-_sram_size = DEFINED(_sram_size) ? _sram_size : 16K;
-
-
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
-
- arm_exception_table = .;
- . += 64;
- } > sdram
-
-/* } > sram*/
-
-
- .init :
- {
- KEEP (*(.init))
- } > sdram /*=0*/
-
- .text :
- {
- _text_start = .;
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- /* I think these come from the ld docs: */
- ___CTOR_LIST__ = .;
- LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
- *(.ctors)
- LONG(0)
- ___CTOR_END__ = .;
- ___DTOR_LIST__ = .;
- LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
- *(.dtors)
- LONG(0)
- ___DTOR_END__ = .;
-
- _etext = .;
- PROVIDE (etext = .);
- } > sdram
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
- .fini :
- {
- KEEP (*(.fini))
- } > sdram /*=0*/
-
- .data :
- {
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- *(.jcr)
- SORT(CONSTRUCTORS)
- _edata = .;
- } > sdram
-
- .eh_frame : { *(.eh_frame) } > sdram
- .data1 : { *(.data1) } > sdram
- .eh_frame : { *(.eh_frame) } > sdram
- .gcc_except_table : { *(.gcc_except_table) } > sdram
-
- .rodata :
- {
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- } > sdram
-
- .bss :
- {
- _bss_start_ = .;
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
- _bss_end_ = .;
- _end = .;
- __end = .;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we need
- * 16K which is the size of SRAM. If we do the mapping right, the TLB
- * should be big enough that to hold all the translations that matter,
- * so keeping the table in SDRAM won't be a problem.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
-
- . = ALIGN (1024);
- _bss_free_start = .;
- WorkAreaBase = .;
-
- } > sdram
-
-
-/* Debugging stuff follows? */
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-/* .stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
-}
+_ttbl_base = ORIGIN (SDRAM_MMU);
+INCLUDE linkcmds.armv4
*sh*:
Typo.
M 1.68 c/src/lib/libbsp/arm/gba/ChangeLog
diff -u rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.67 rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.68
--- rtems/c/src/lib/libbsp/arm/gba/ChangeLog:1.67 Fri Dec 3 04:51:22 2010
+++ rtems/c/src/lib/libbsp/arm/gba/ChangeLog Fri Dec 3 04:57:28 2010
@@ -1,6 +1,6 @@
2010-12-03 Sebastian Huber <sebastian.huber at embedded-brains.de>
- * startup/linkcmds: Use linker command base file.
+ * startup/linkcmds: ARM EABI compatibility.
2010-04-30 Sebastian Huber <sebastian.huber at embedded-brains.de>
--
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/20101203/c88c0446/attachment-0001.html>
More information about the vc
mailing list