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