summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:50:28 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:50:28 +0000
commitf990c1ae619d0f0a5edf641d4c555682c2169106 (patch)
tree54a445bfd11c6cd13b73c88651e70346d5f405e4 /c
parent2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-f990c1ae619d0f0a5edf641d4c555682c2169106.tar.bz2
2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
* startup/linkcmds, start/start.S: Use linker command base file.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/rtl22xx/ChangeLog4
-rw-r--r--c/src/lib/libbsp/arm/rtl22xx/start/start.S22
-rw-r--r--c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds262
3 files changed, 35 insertions, 253 deletions
diff --git a/c/src/lib/libbsp/arm/rtl22xx/ChangeLog b/c/src/lib/libbsp/arm/rtl22xx/ChangeLog
index 9af6cf863e..a7004fa750 100644
--- a/c/src/lib/libbsp/arm/rtl22xx/ChangeLog
+++ b/c/src/lib/libbsp/arm/rtl22xx/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * startup/linkcmds, start/start.S: Use linker command base file.
+
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
* make/custom/rtl22xx_t.cfg: Workaround for GCC bug 38644.
diff --git a/c/src/lib/libbsp/arm/rtl22xx/start/start.S b/c/src/lib/libbsp/arm/rtl22xx/start/start.S
index 651fb6285d..17878ee4d7 100644
--- a/c/src/lib/libbsp/arm/rtl22xx/start/start.S
+++ b/c/src/lib/libbsp/arm/rtl22xx/start/start.S
@@ -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 @@ _start:
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 @@ _start:
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 @@ _start:
/* 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 --git a/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds b/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds
index 63cfc648d1..003e94b12b 100644
--- a/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds
@@ -1,245 +1,23 @@
-/*
- * Philips lpc ARM linker script
- * By Ray,Xu
- * Rayx.cn@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
-}
-
-/*
- * 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 . */
+ SDRAM : ORIGIN = 0x81000000, LENGTH = 512k
+ SRAM : ORIGIN = 0x40000000, LENGTH = 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
+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