linux/arch/mips/kernel/vmlinux.lds.S
<<
>>
Prefs
   1#include <asm/asm-offsets.h>
   2#include <asm/page.h>
   3#include <asm-generic/vmlinux.lds.h>
   4
   5#undef mips
   6#define mips mips
   7OUTPUT_ARCH(mips)
   8ENTRY(kernel_entry)
   9PHDRS {
  10        text PT_LOAD FLAGS(7);  /* RWX */
  11        note PT_NOTE FLAGS(4);  /* R__ */
  12}
  13
  14#ifdef CONFIG_32BIT
  15        #ifdef CONFIG_CPU_LITTLE_ENDIAN
  16                jiffies  = jiffies_64;
  17        #else
  18                jiffies  = jiffies_64 + 4;
  19        #endif
  20#else
  21        jiffies  = jiffies_64;
  22#endif
  23
  24SECTIONS
  25{
  26#ifdef CONFIG_BOOT_ELF64
  27        /* Read-only sections, merged into text segment: */
  28        /* . = 0xc000000000000000; */
  29
  30        /* This is the value for an Origin kernel, taken from an IRIX kernel.  */
  31        /* . = 0xc00000000001c000; */
  32
  33        /* Set the vaddr for the text segment to a value
  34         *   >= 0xa800 0000 0001 9000 if no symmon is going to configured
  35         *   >= 0xa800 0000 0030 0000 otherwise
  36         */
  37
  38        /* . = 0xa800000000300000; */
  39        . = 0xffffffff80300000;
  40#endif
  41        . = VMLINUX_LOAD_ADDRESS;
  42        /* read-only */
  43        _text = .;      /* Text and read-only data */
  44        .text : {
  45                TEXT_TEXT
  46                SCHED_TEXT
  47                LOCK_TEXT
  48                KPROBES_TEXT
  49                *(.text.*)
  50                *(.fixup)
  51                *(.gnu.warning)
  52        } :text = 0
  53        _etext = .;     /* End of text section */
  54
  55        EXCEPTION_TABLE(16)
  56
  57        /* Exception table for data bus errors */
  58        __dbe_table : {
  59                __start___dbe_table = .;
  60                *(__dbe_table)
  61                __stop___dbe_table = .;
  62        }
  63
  64        NOTES :text :note
  65        .dummy : { *(.dummy) } :text
  66
  67        RODATA
  68
  69        /* writeable */
  70        .data : {       /* Data */
  71                . = . + DATAOFFSET;             /* for CONFIG_MAPPED_KERNEL */
  72
  73                INIT_TASK_DATA(PAGE_SIZE)
  74                NOSAVE_DATA
  75                CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
  76                DATA_DATA
  77                CONSTRUCTORS
  78        }
  79        _gp = . + 0x8000;
  80        .lit8 : {
  81                *(.lit8)
  82        }
  83        .lit4 : {
  84                *(.lit4)
  85        }
  86        /* We want the small data sections together, so single-instruction offsets
  87           can access them all, and initialized data all before uninitialized, so
  88           we can shorten the on-disk segment size.  */
  89        .sdata : {
  90                *(.sdata)
  91        }
  92        _edata =  .;                    /* End of data section */
  93
  94        /* will be freed after init */
  95        . = ALIGN(PAGE_SIZE);           /* Init code and data */
  96        __init_begin = .;
  97        INIT_TEXT_SECTION(PAGE_SIZE)
  98        INIT_DATA_SECTION(16)
  99
 100        /* .exit.text is discarded at runtime, not link time, to deal with
 101         * references from .rodata
 102         */
 103        .exit.text : {
 104                EXIT_TEXT
 105        }
 106        .exit.data : {
 107                EXIT_DATA
 108        }
 109
 110        PERCPU(PAGE_SIZE)
 111        . = ALIGN(PAGE_SIZE);
 112        __init_end = .;
 113        /* freed after init ends here */
 114
 115        BSS_SECTION(0, 0, 0)
 116
 117        _end = . ;
 118
 119        /* These mark the ABI of the kernel for debuggers.  */
 120        .mdebug.abi32 : {
 121                KEEP(*(.mdebug.abi32))
 122        }
 123        .mdebug.abi64 : {
 124                KEEP(*(.mdebug.abi64))
 125        }
 126
 127        /* This is the MIPS specific mdebug section.  */
 128        .mdebug : {
 129                *(.mdebug)
 130        }
 131
 132        STABS_DEBUG
 133        DWARF_DEBUG
 134
 135        /* These must appear regardless of  .  */
 136        .gptab.sdata : {
 137                *(.gptab.data)
 138                *(.gptab.sdata)
 139        }
 140        .gptab.sbss : {
 141                *(.gptab.bss)
 142                *(.gptab.sbss)
 143        }
 144
 145        /* Sections to be discarded */
 146        DISCARDS
 147        /DISCARD/ : {
 148                /* ABI crap starts here */
 149                *(.MIPS.options)
 150                *(.options)
 151                *(.pdr)
 152                *(.reginfo)
 153        }
 154}
 155