diff options
author | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-10-02 13:39:12 +0000 |
---|---|---|
committer | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-10-02 13:39:12 +0000 |
commit | 1a328955345754131f06ebbec6896d5a6c10a09c (patch) | |
tree | f359e6feab6e31124aed2a73359976757076429e /c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds | |
parent | 2009-10-02 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-1a328955345754131f06ebbec6896d5a6c10a09c.tar.bz2 |
* Makefile.am, irq/irq_config.h, irq/irq_init.c, irq/irq.h:
add basic IRQ support (for decrementer)
* start/start.S, startup/cmain.c, startup/linkcmds: add support
for sdata* sections
* startup/bsppanic.c: some cleanup
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds index 8a5007615c..6787e3f1a3 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds @@ -14,6 +14,8 @@ RamBase = DEFINED(RamBase) ? RamBase : 0x0; RamSize = DEFINED(RamSize) ? RamSize : 4M; HeapSize = DEFINED(HeapSize) ? HeapSize : 0; +bsp_section_align = 32; + SECTIONS { /* Read-only sections, merged into text segment: */ @@ -43,6 +45,7 @@ SECTIONS /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) + . = ALIGN (bsp_section_align); __text_end = .; } >ROM =0 .init : @@ -77,7 +80,7 @@ SECTIONS { *(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata1) - . = ALIGN(4); + . = ALIGN (bsp_section_align); __rodata_end = .; } >ROM =0 @@ -88,14 +91,14 @@ SECTIONS __sdata2_start = .; PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) - . = ALIGN(4); + . = ALIGN (bsp_section_align); __sdata2_end = .; } >RAM .sbss2 : { __sbss2_start = .; *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) - . = ALIGN(4); + . = ALIGN (bsp_section_align); __sbss2_end = .; } >RAM __data_load = __sdata2_load + SIZEOF (.sdata2); @@ -106,20 +109,38 @@ SECTIONS KEEP (*(.gnu.linkonce.d.*personality*)) SORT(CONSTRUCTORS) *(.data1) - PROVIDE (_SDA_BASE_ = 32768); - *(.sdata .sdata.* .gnu.linkonce.s.*) - . = ALIGN(4); + . = ALIGN (bsp_section_align); __data_end = .; } >RAM + __sdata_load = __data_load + SIZEOF (.data); + .sdata : AT(__sdata_load) { + __sdata_start = .; + PROVIDE (_SDA_BASE_ = 32768); + *(.sdata .sdata.* .gnu.linkonce.s.*) + + . = ALIGN (bsp_section_align); + + _edata = .; + __sdata_end = .; + PROVIDE (edata = .); + + /* + * BSP: End of data section + */ + bsp_section_data_end = .; + } > RAM + PROVIDE (__EXCEPT_START__ = .); .gcc_except_table : { *(.gcc_except_table*) } >RAM PROVIDE (__EXCEPT_END__ = .); + .sbss : { __sbss_start = .; *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) + . = ALIGN (bsp_section_align); __sbss_end = .; } >RAM .bss : @@ -128,7 +149,7 @@ SECTIONS *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) - . = ALIGN(4); + . = ALIGN (bsp_section_align); __bss_end = .; /* Allocate the main stack area. Make sure it starts 16bytes aligned @@ -137,6 +158,13 @@ SECTIONS _end = _stack; } >RAM + /* + * BSP: Interrupt stack + */ + bsp_interrupt_stack_start = _end; + bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k; + bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start; + WorkAreaBase = .; . = RamBase + RamSize; |