1#include <linux/config.h> 2#include <asm/asm-offsets.h> 3#include <asm-generic/vmlinux.lds.h> 4 5#undef mips 6#define mips mips 7OUTPUT_ARCH(mips) 8ENTRY(kernel_entry) 9jiffies = JIFFIES; 10SECTIONS 11{ 12#ifdef CONFIG_BOOT_ELF64 13 /* Read-only sections, merged into text segment: */ 14 /* . = 0xc000000000000000; */ 15 16 /* This is the value for an Origin kernel, taken from an IRIX kernel. */ 17 /* . = 0xc00000000001c000; */ 18 19 /* Set the vaddr for the text segment to a value 20 >= 0xa800 0000 0001 9000 if no symmon is going to configured 21 >= 0xa800 0000 0030 0000 otherwise */ 22 23 /* . = 0xa800000000300000; */ 24 /* . = 0xa800000000300000; */ 25 . = 0xffffffff80300000; 26#endif 27 . = LOADADDR; 28 /* read-only */ 29 _text = .; /* Text and read-only data */ 30 .text : { 31 *(.text) 32 SCHED_TEXT 33 LOCK_TEXT 34 *(.fixup) 35 *(.gnu.warning) 36 } =0 37 38 _etext = .; /* End of text section */ 39 40 . = ALIGN(16); /* Exception table */ 41 __start___ex_table = .; 42 __ex_table : { *(__ex_table) } 43 __stop___ex_table = .; 44 45 __start___dbe_table = .; /* Exception table for data bus errors */ 46 __dbe_table : { *(__dbe_table) } 47 __stop___dbe_table = .; 48 49 RODATA 50 51 /* writeable */ 52 .data : { /* Data */ 53 . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ 54 *(.data.init_task) 55 56 *(.data) 57 58 CONSTRUCTORS 59 } 60 _gp = . + 0x8000; 61 .lit8 : { *(.lit8) } 62 .lit4 : { *(.lit4) } 63 /* We want the small data sections together, so single-instruction offsets 64 can access them all, and initialized data all before uninitialized, so 65 we can shorten the on-disk segment size. */ 66 .sdata : { *(.sdata) } 67 68 . = ALIGN(_PAGE_SIZE); 69 __nosave_begin = .; 70 .data_nosave : { *(.data.nosave) } 71 . = ALIGN(_PAGE_SIZE); 72 __nosave_end = .; 73 74 . = ALIGN(32); 75 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 76 77 _edata = .; /* End of data section */ 78 79 /* will be freed after init */ 80 . = ALIGN(_PAGE_SIZE); /* Init code and data */ 81 __init_begin = .; 82 .init.text : { 83 _sinittext = .; 84 *(.init.text) 85 _einittext = .; 86 } 87 .init.data : { *(.init.data) } 88 . = ALIGN(16); 89 __setup_start = .; 90 .init.setup : { *(.init.setup) } 91 __setup_end = .; 92 93 __initcall_start = .; 94 .initcall.init : { 95 *(.initcall1.init) 96 *(.initcall2.init) 97 *(.initcall3.init) 98 *(.initcall4.init) 99 *(.initcall5.init) 100 *(.initcall6.init) 101 *(.initcall7.init) 102 } 103 __initcall_end = .; 104 105 __con_initcall_start = .; 106 .con_initcall.init : { *(.con_initcall.init) } 107 __con_initcall_end = .; 108 SECURITY_INIT 109 /* .exit.text is discarded at runtime, not link time, to deal with 110 references from .rodata */ 111 .exit.text : { *(.exit.text) } 112 . = ALIGN(_PAGE_SIZE); 113 __initramfs_start = .; 114 .init.ramfs : { *(.init.ramfs) } 115 __initramfs_end = .; 116 . = ALIGN(32); 117 __per_cpu_start = .; 118 .data.percpu : { *(.data.percpu) } 119 __per_cpu_end = .; 120 . = ALIGN(_PAGE_SIZE); 121 __init_end = .; 122 /* freed after init ends here */ 123 124 __bss_start = .; /* BSS */ 125 .sbss : { 126 *(.sbss) 127 *(.scommon) 128 } 129 .bss : { 130 *(.bss) 131 *(COMMON) 132 } 133 __bss_stop = .; 134 135 _end = . ; 136 137 /* Sections to be discarded */ 138 /DISCARD/ : { 139 *(.exit.data) 140 *(.exitcall.exit) 141 142 /* ABI crap starts here */ 143 *(.comment) 144 *(.MIPS.options) 145 *(.note) 146 *(.options) 147 *(.pdr) 148 *(.reginfo) 149 *(.mdebug*) 150 } 151 152 /* This is the MIPS specific mdebug section. */ 153 .mdebug : { *(.mdebug) } 154 155 STABS_DEBUG 156 157 DWARF_DEBUG 158 159 /* These must appear regardless of . */ 160 .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } 161 .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } 162 .note : { *(.note) } 163} 164