1 /* $NetBSD: kern.ldscript,v 1.9 2015/08/22 23:19:55 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 PROVIDE (__etext = .); 25 PROVIDE (_etext = .); 26 PROVIDE (etext = .); 27 /* Adjust the address for the data segment to start on the next page 28 boundary. */ 29 . = ALIGN(0x8000); 30 .data : 31 { 32 __data_start = . ; 33 *(.data) 34 *(.data.*) 35 } 36 .sdata : 37 { 38 *(.sdata) 39 *(.sdata.*) 40 } 41 _edata = .; 42 PROVIDE (edata = .); 43 __bss_start = .; 44 __bss_start__ = .; 45 .sbss : 46 { 47 PROVIDE (__sbss_start = .); 48 PROVIDE (___sbss_start = .); 49 *(.dynsbss) 50 *(.sbss) 51 *(.sbss.*) 52 *(.scommon) 53 PROVIDE (__sbss_end = .); 54 PROVIDE (___sbss_end = .); 55 } 56 .bss : 57 { 58 *(.dynbss) 59 *(.bss) 60 *(.bss.*) 61 *(COMMON) 62 /* Align here to ensure that the .bss section occupies space up to 63 _end. Align after .bss to ensure correct alignment even if the 64 .bss section disappears because there are no input sections. */ 65 . = ALIGN(32 / 8); 66 } 67 . = ALIGN(32 / 8); 68 _end = .; 69 _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 70 PROVIDE (end = .); 71 } 72 SECTIONS 73 { 74 KERNEL_BASE_phys = 0x0000c000; 75 KERNEL_BASE_virt = 0xf000c000; 76 77 .start (KERNEL_BASE_phys) : 78 { 79 *(.start) 80 } =0 81 82 .text (KERNEL_BASE_virt + SIZEOF(.start)) : 83 AT (LOADADDR(.start) + SIZEOF(.start)) 84 { 85 *(.text) 86 } =0 87 88 .data : 89 AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text))) 90 { 91 *(.data) 92 } 93 } 94