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