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                IRQENTRY_TEXT
  50                *(.text.*)
  51                *(.fixup)
  52                *(.gnu.warning)
  53        } :text = 0
  54        _etext = .;     /* End of text section */
  55
  56        EXCEPTION_TABLE(16)
  57
  58        /* Exception table for data bus errors */
  59        __dbe_table : {
  60                __start___dbe_table = .;
  61                *(__dbe_table)
  62                __stop___dbe_table = .;
  63        }
  64
  65        NOTES :text :note
  66        .dummy : { *(.dummy) } :text
  67
  68        _sdata = .;                     /* Start of data section */
  69        RODATA
  70
  71        /* writeable */
  72        .data : {       /* Data */
  73                . = . + DATAOFFSET;             /* for CONFIG_MAPPED_KERNEL */
  74
  75                INIT_TASK_DATA(PAGE_SIZE)
  76                NOSAVE_DATA
  77                CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
  78                READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
  79                DATA_DATA
  80                CONSTRUCTORS
  81        }
  82        _gp = . + 0x8000;
  83        .lit8 : {
  84                *(.lit8)
  85        }
  86        .lit4 : {
  87                *(.lit4)
  88        }
  89        /* We want the small data sections together, so single-instruction offsets
  90           can access them all, and initialized data all before uninitialized, so
  91           we can shorten the on-disk segment size.  */
  92        .sdata : {
  93                *(.sdata)
  94        }
  95        _edata =  .;                    /* End of data section */
  96
  97        /* will be freed after init */
  98        . = ALIGN(PAGE_SIZE);           /* Init code and data */
  99        __init_begin = .;
 100        INIT_TEXT_SECTION(PAGE_SIZE)
 101        INIT_DATA_SECTION(16)
 102
 103        . = ALIGN(4);
 104        .mips.machines.init : AT(ADDR(.mips.machines.init) - LOAD_OFFSET) {
 105                __mips_machines_start = .;
 106                *(.mips.machines.init)
 107                __mips_machines_end = .;
 108        }
 109
 110        /* .exit.text is discarded at runtime, not link time, to deal with
 111         * references from .rodata
 112         */
 113        .exit.text : {
 114                EXIT_TEXT
 115        }
 116        .exit.data : {
 117                EXIT_DATA
 118        }
 119
 120        PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
 121        . = ALIGN(PAGE_SIZE);
 122        __init_end = .;
 123        /* freed after init ends here */
 124
 125        BSS_SECTION(0, 0, 0)
 126
 127        _end = . ;
 128
 129        /* These mark the ABI of the kernel for debuggers.  */
 130        .mdebug.abi32 : {
 131                KEEP(*(.mdebug.abi32))
 132        }
 133        .mdebug.abi64 : {
 134                KEEP(*(.mdebug.abi64))
 135        }
 136
 137        /* This is the MIPS specific mdebug section.  */
 138        .mdebug : {
 139                *(.mdebug)
 140        }
 141
 142        STABS_DEBUG
 143        DWARF_DEBUG
 144
 145        /* These must appear regardless of  .  */
 146        .gptab.sdata : {
 147                *(.gptab.data)
 148                *(.gptab.sdata)
 149        }
 150        .gptab.sbss : {
 151                *(.gptab.bss)
 152                *(.gptab.sbss)
 153        }
 154
 155        /* Sections to be discarded */
 156        DISCARDS
 157        /DISCARD/ : {
 158                /* ABI crap starts here */
 159                *(.MIPS.options)
 160                *(.options)
 161                *(.pdr)
 162                *(.reginfo)
 163        }
 164}
 165
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.