1 #include <asm/asm-offsets.h>
3 #include <asm-generic/vmlinux.lds.h>
10 text PT_LOAD FLAGS(7); /* RWX */
11 note PT_NOTE FLAGS(4); /* R__ */
17 #ifdef CONFIG_BOOT_ELF64
18 /* Read-only sections, merged into text segment: */
19 /* . = 0xc000000000000000; */
21 /* This is the value for an Origin kernel, taken from an IRIX kernel. */
22 /* . = 0xc00000000001c000; */
24 /* Set the vaddr for the text segment to a value
25 * >= 0xa800 0000 0001 9000 if no symmon is going to configured
26 * >= 0xa800 0000 0030 0000 otherwise
29 /* . = 0xa800000000300000; */
30 . = 0xffffffff80300000;
34 _text = .; /* Text and read-only data */
44 _etext = .; /* End of text section */
49 __start___ex_table = .;
51 __stop___ex_table = .;
54 /* Exception table for data bus errors */
56 __start___dbe_table = .;
58 __stop___dbe_table = .;
62 .dummy : { *(.dummy) } :text
68 . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */
70 * This ALIGN is needed as a workaround for a bug a
71 * gcc bug upto 4.1 which limits the maximum alignment
72 * to at most 32kB and results in the following
75 * CC arch/mips/kernel/init_task.o
76 * arch/mips/kernel/init_task.c:30: warning: alignment
77 * of ‘init_thread_union’ is greater than maximum
78 * object file alignment. Using 32768
93 /* We want the small data sections together, so single-instruction offsets
94 can access them all, and initialized data all before uninitialized, so
95 we can shorten the on-disk segment size. */
100 . = ALIGN(PAGE_SIZE);
105 . = ALIGN(PAGE_SIZE);
108 . = ALIGN(1 << CONFIG_MIPS_L1_CACHE_SHIFT);
109 .data.cacheline_aligned : {
110 *(.data.cacheline_aligned)
112 _edata = .; /* End of data section */
114 /* will be freed after init */
115 . = ALIGN(PAGE_SIZE); /* Init code and data */
133 __initcall_start = .;
138 .con_initcall.init : {
139 __con_initcall_start = .;
140 *(.con_initcall.init)
141 __con_initcall_end = .;
145 /* .exit.text is discarded at runtime, not link time, to deal with
146 * references from .rodata
154 #if defined(CONFIG_BLK_DEV_INITRD)
155 . = ALIGN(PAGE_SIZE);
157 __initramfs_start = .;
163 . = ALIGN(PAGE_SIZE);
165 /* freed after init ends here */
167 __bss_start = .; /* BSS */
180 /* These mark the ABI of the kernel for debuggers. */
182 KEEP(*(.mdebug.abi32))
185 KEEP(*(.mdebug.abi64))
188 /* This is the MIPS specific mdebug section. */
196 /* These must appear regardless of . */
206 /* Sections to be discarded */
209 /* ABI crap starts here */