]> rtime.felk.cvut.cz Git - sysless.git/blobdiff - board/arm/lpc17xx-common/libs/ldscripts/lpc17xx-base.ld-boot
Merge with git://ulan.git.sourceforge.net/gitroot/ulan/sysless
[sysless.git] / board / arm / lpc17xx-common / libs / ldscripts / lpc17xx-base.ld-boot
diff --git a/board/arm/lpc17xx-common/libs/ldscripts/lpc17xx-base.ld-boot b/board/arm/lpc17xx-common/libs/ldscripts/lpc17xx-base.ld-boot
new file mode 100644 (file)
index 0000000..6d80128
--- /dev/null
@@ -0,0 +1,182 @@
+/***********************************************************************/
+/*                                                                     */
+/*  ROM.ld:  Linker Script File                                        */
+/*                                                                     */
+/***********************************************************************/
+
+ENTRY(g_pfnVectors)
+
+PROVIDE (_setup_board = 0);
+PROVIDE (__bbconf_pt_magic = 0xd1ab46d6);
+
+/* SECTION command : Define mapping of input sections */
+/* into output sections. */
+
+SECTIONS
+{
+       /******************************************/
+       /* code section */
+
+        /* "normal" code */
+       
+       .text :
+       {
+               KEEP(*(.isr_vector .isr_vector.*))
+               *(.text .text.*)
+               *(.gnu.linkonce.t.*)
+               *(.glue_7)
+               *(.glue_7t)
+               *(.gcc_except_table)
+               *(.rodata .rodata*)
+               *(.gnu.linkonce.r.*)
+       } >FLASHBOOT
+
+       /******************************************/
+       /* .ctors .dtors are used for c++ constructors/destructors */
+       .ctors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__ctors_start = .);
+               KEEP(*(SORT(.ctors.*)))
+               KEEP(*(.ctors))
+               PROVIDE(__ctors_end = .);
+       } >FLASHBOOT
+
+       .dtors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__dtors_start = .);
+               KEEP(*(SORT(.dtors.*)))
+               KEEP(*(.dtors))
+               PROVIDE(__dtors_end = .);
+
+               . = ALIGN(4);
+               /* End Of .text section */
+               _etext = .;
+                _sifastcode = .;
+       } >FLASHBOOT
+       
+
+        .keyval :
+        {
+                PROVIDE (_keyval_start = .);
+                PROVIDE (_keyval_page_len = KEYVAL_PAGE_LEN );
+        }> KEYVAL
+
+        .app :
+        {
+                PROVIDE (_mem_app_start = . );
+          } > FLASHAPP
+
+        .irqarea (NOLOAD):
+        {
+                . = ALIGN (256);
+                *(.irqarea .irqarea.*)
+
+        } >IRAM0
+
+       /**************************************************/
+        /* fastcode - copied at startup & executed in RAM */
+
+        .fastcode :
+        {
+          . = ALIGN (4);
+          _sfastcode = . ;
+
+          *(.glue_7t) *(.glue_7)
+          *(.fastcode)
+          
+          /* add other modules here ... */
+
+          . = ALIGN (4);
+          _efastcode = . ;
+          _sidata = .;
+        } >IRAM0 AT>FLASHBOOT
+
+       /******************************************/
+       /* This used for USB RAM section */
+       .usbram (NOLOAD):
+       {
+               _usbram = . ;
+               *(.usbram)
+               . = ALIGN(4);
+               _eusbram = . ;
+               _usbram_end = . ;
+       } > IRAM1
+
+        /******************************************/
+       /* data section */
+       .data :
+       {
+               _sidata = LOADADDR (.data);
+               . = ALIGN(4);
+               _sdata = .;
+
+               *(vtable vtable.*)
+               *(.data .data.*)
+               *(.gnu.linkonce.d*)
+
+               . = ALIGN(4);
+               _edata = . ;
+       } >IRAM0 AT>FLASHBOOT
+
+       /******************************************/
+       /* For no-init variables section */
+       .bss (NOLOAD) :
+       {
+               . = ALIGN(4);
+               _sbss = . ;
+
+               *(.bss .bss.*)
+               *(.gnu.linkonce.b*)
+               *(COMMON)
+
+               . = ALIGN(4);
+               _ebss = . ;
+
+               . = ALIGN(4);
+               _end = . ;
+               PROVIDE (end = .);
+       } >IRAM0
+
+        .stack :
+        {
+             _stack = .;
+        } >STACK
+
+
+       /******************************************/
+       /* 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 .gnu.linkonce.wi.*) }
+       .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) }
+}