1 /* $NetBSD: kern.ldscript,v 1.7 2015/08/21 04:13:23 uebayasi Exp $ */ 2 3 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", 4 "elf32-littlearm") 5 OUTPUT_ARCH(arm) 6 ENTRY(KERNEL_BASE_phys) 7 SECTIONS 8 { 9 /* Kernel start: */ 10 .start : 11 { 12 *(.start) 13 } 14 15 /* Read-only sections, merged into text segment: */ 16 .text : 17 { 18 *(.text) 19 *(.text.*) 20 *(.stub) 21 *(.glue_7t) *(.glue_7) 22 *(.rodata) *(.rodata.*) 23 } 24 .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } 25 PROVIDE (__exidx_start = .); 26 .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } 27 PROVIDE (__exidx_end = .); 28 PROVIDE (__etext = .); 29 PROVIDE (_etext = .); 30 PROVIDE (etext = .); 31 /* Adjust the address for the data segment to start on the next page 32 boundary. */ 33 . = ALIGN(0x8000); 34 .data : 35 { 36 __data_start = . ; 37 *(.data) 38 *(.data.*) 39 } 40 .sdata : 41 { 42 *(.sdata) 43 *(.sdata.*) 44 } 45 _edata = .; 46 PROVIDE (edata = .); 47 __bss_start = .; 48 __bss_start__ = .; 49 .sbss : 50 { 51 PROVIDE (__sbss_start = .); 52 PROVIDE (___sbss_start = .); 53 *(.dynsbss) 54 *(.sbss) 55 *(.sbss.*) 56 *(.scommon) 57 PROVIDE (__sbss_end = .); 58 PROVIDE (___sbss_end = .); 59 } 60 .bss : 61 { 62 *(.dynbss) 63 *(.bss) 64 *(.bss.*) 65 *(COMMON) 66 /* Align here to ensure that the .bss section occupies space up to 67 _end. Align after .bss to ensure correct alignment even if the 68 .bss section disappears because there are no input sections. */ 69 . = ALIGN(32 / 8); 70 } 71 . = ALIGN(32 / 8); 72 _end = .; 73 _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 74 PROVIDE (end = .); 75 } 76 SECTIONS 77 { 78 KERNEL_BASE_phys = 0x0000c000; 79 KERNEL_BASE_virt = 0xf000c000; 80 81 .start (KERNEL_BASE_phys) : 82 { 83 *(.start) 84 } =0 85 86 .text (KERNEL_BASE_virt + SIZEOF(.start)) : 87 AT (LOADADDR(.start) + SIZEOF(.start)) 88 { 89 *(.text) 90 } =0 91 } 92