1 /* $NetBSD: ldscript,v 1.1.4.2 2005/01/17 19:29:22 skrll Exp $ */ 2 3 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", 4 "elf32-littlearm") 5 OUTPUT_ARCH(arm) 6 ENTRY(FLASH) 7 MEMORY 8 { 9 /* We will locate the .text section in flash, and will run directly 10 from there just long enough to relocate our .text and .data into 11 a small chunk of SDRAM starting at (SDRAM + 1M). */ 12 flash : o = 0x60660000, l = 1408K 13 sdram : o = 0x00100000, l = 1M /* kernel loads at 0x00200000 */ 14 } 15 SECTIONS 16 { 17 FLASH = 0x60660000; 18 19 /* Read-only sections, merged into text segment: */ 20 __text_store = FLASH; 21 .text : 22 AT (FLASH) 23 { 24 *(.text) 25 *(.text.*) 26 *(.stub) 27 *(.glue_7t) *(.glue_7) 28 *(.rodata) *(.rodata.*) 29 } > sdram =0 30 PROVIDE (__etext = .); 31 PROVIDE (_etext = .); 32 PROVIDE (etext = .); 33 __data_store = FLASH + SIZEOF(.text); 34 .data : 35 AT (LOADADDR(.text) + SIZEOF(.text)) 36 { 37 __data_start = . ; 38 *(.data) 39 *(.data.*) 40 } > sdram 41 .sdata : 42 AT (LOADADDR(.data) + SIZEOF(.data)) 43 { 44 *(.sdata) 45 *(.sdata.*) 46 . = ALIGN(32 / 8); 47 } > sdram 48 _edata = .; 49 PROVIDE (edata = .); 50 __bss_start = .; 51 __bss_start__ = .; 52 .sbss : 53 { 54 PROVIDE (__sbss_start = .); 55 PROVIDE (___sbss_start = .); 56 *(.dynsbss) 57 *(.sbss) 58 *(.sbss.*) 59 *(.scommon) 60 PROVIDE (__sbss_end = .); 61 PROVIDE (___sbss_end = .); 62 } > sdram 63 .bss : 64 { 65 *(.dynbss) 66 *(.bss) 67 *(.bss.*) 68 *(COMMON) 69 /* Align here to ensure that the .bss section occupies space up to 70 _end. Align after .bss to ensure correct alignment even if the 71 .bss section disappears because there are no input sections. */ 72 . = ALIGN(32 / 8); 73 } > sdram 74 . = ALIGN(32 / 8); 75 _end = .; 76 _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 77 PROVIDE (end = .); 78 .image (FLASH + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.sdata)) : 79 AT (LOADADDR(.sdata) + SIZEOF(.sdata)) 80 { 81 *(.image) 82 } 83 } 84