linux/arch/cris/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/* ld script to make the Linux/CRIS kernel
   2 * Authors: Bjorn Wesen (bjornw@axis.com)
   3 *
   4 * It is VERY DANGEROUS to fiddle around with the symbols in this
   5 * script. It is for example quite vital that all generated sections
   6 * that are used are actually named here, otherwise the linker will
   7 * put them at the end, where the init stuff is which is FREED after
   8 * the kernel has booted.
   9 */
  10
  11#include <asm-generic/vmlinux.lds.h>
  12#include <asm/page.h>
  13
  14#ifdef CONFIG_ETRAX_VMEM_SIZE
  15#define __CONFIG_ETRAX_VMEM_SIZE CONFIG_ETRAX_VMEM_SIZE
  16#else
  17#define __CONFIG_ETRAX_VMEM_SIZE 0
  18#endif
  19
  20
  21jiffies = jiffies_64;
  22SECTIONS
  23{
  24        . = DRAM_VIRTUAL_BASE;
  25        dram_start = .;
  26#ifdef CONFIG_ETRAX_ARCH_V10
  27        ibr_start = .;
  28#else
  29        ebp_start = .;
  30        /* The boot section is only necessary until the VCS top */
  31        /* level testbench includes both flash and DRAM. */
  32        .boot : { *(.boot) }
  33#endif
  34
  35        /* see head.S and pages reserved at the start */
  36        . = DRAM_VIRTUAL_BASE + 0x4000;
  37
  38        _text = .;                      /* Text and read-only data. */
  39        text_start = .;                 /* Lots of aliases. */
  40        _stext = .;
  41        __stext = .;
  42        .text : {
  43                TEXT_TEXT
  44                SCHED_TEXT
  45                LOCK_TEXT
  46                *(.fixup)
  47                *(.text.__*)
  48        }
  49
  50        _etext = . ;                    /* End of text section. */
  51        __etext = .;
  52
  53        EXCEPTION_TABLE(4)
  54
  55        _sdata = .;
  56        RODATA
  57
  58        . = ALIGN (4);
  59        ___data_start = . ;
  60        __Sdata = . ;
  61        .data : {                       /* Data */
  62                CACHELINE_ALIGNED_DATA(32)
  63                READ_MOSTLY_DATA(32)
  64                DATA_DATA
  65        }
  66        __edata = . ;                   /* End of data section. */
  67        _edata = . ;
  68
  69        INIT_TASK_DATA_SECTION(PAGE_SIZE)
  70
  71        . = ALIGN(PAGE_SIZE);           /* Init code and data. */
  72        __init_begin = .;
  73        INIT_TEXT_SECTION(PAGE_SIZE)
  74        .init.data : { INIT_DATA }
  75        .init.setup : { INIT_SETUP(16) }
  76        .initcall.init : {
  77                INIT_CALLS
  78        }
  79
  80        .con_initcall.init : {
  81                CON_INITCALL
  82        }
  83        SECURITY_INIT
  84
  85        /* .exit.text is discarded at runtime, not link time,
  86         * to deal with references from __bug_table
  87         */
  88        .exit.text : {
  89                EXIT_TEXT
  90        }
  91        .exit.data : {
  92                EXIT_DATA
  93        }
  94
  95#ifdef CONFIG_ETRAX_ARCH_V10
  96#ifdef CONFIG_BLK_DEV_INITRD
  97        .init.ramfs : {
  98                __initramfs_start = .;
  99                *(.init.ramfs)
 100                __initramfs_end = .;
 101        }
 102#endif
 103#endif
 104        __vmlinux_end = .;              /* Last address of the physical file. */
 105#ifdef CONFIG_ETRAX_ARCH_V32
 106        PERCPU_SECTION(32)
 107
 108        .init.ramfs : {
 109                INIT_RAM_FS
 110        }
 111#endif
 112
 113        /*
 114         * We fill to the next page, so we can discard all init
 115         * pages without needing to consider what payload might be
 116         * appended to the kernel image.
 117         */
 118        . = ALIGN(PAGE_SIZE);
 119
 120        __init_end = .;
 121
 122        __data_end = . ;                /* Move to _edata ? */
 123        BSS_SECTION(1, 1, 1)
 124
 125        . =  ALIGN (0x20);
 126        _end = .;
 127        __end = .;
 128
 129        dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024;
 130
 131        DISCARDS
 132}
 133