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