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 <linux/autoconf.h>
  12#include <asm-generic/vmlinux.lds.h>
  13#include <asm/page.h>
  14
  15#ifdef CONFIG_ETRAX_VMEM_SIZE
  16#define __CONFIG_ETRAX_VMEM_SIZE CONFIG_ETRAX_VMEM_SIZE
  17#else
  18#define __CONFIG_ETRAX_VMEM_SIZE 0
  19#endif
  20
  21
  22jiffies = jiffies_64;
  23SECTIONS
  24{
  25        . = DRAM_VIRTUAL_BASE;
  26        dram_start = .;
  27#ifdef CONFIG_ETRAX_ARCH_V10
  28        ibr_start = .;
  29#else
  30        ebp_start = .;
  31        /* The boot section is only necessary until the VCS top */
  32        /* level testbench includes both flash and DRAM. */
  33        .boot : { *(.boot) }
  34#endif
  35
  36        /* see head.S and pages reserved at the start */
  37        . = DRAM_VIRTUAL_BASE + 0x4000;
  38
  39        _text = .;                      /* Text and read-only data. */
  40        text_start = .;                 /* Lots of aliases. */
  41        _stext = .;
  42        __stext = .;
  43        .text : {
  44                TEXT_TEXT
  45                SCHED_TEXT
  46                LOCK_TEXT
  47                *(.fixup)
  48                *(.text.__*)
  49        }
  50
  51        _etext = . ;                    /* End of text section. */
  52        __etext = .;
  53
  54        EXCEPTION_TABLE(4)
  55
  56        RODATA
  57
  58        . = ALIGN (4);
  59        ___data_start = . ;
  60        __Sdata = . ;
  61        .data : {                       /* Data */
  62                DATA_DATA
  63        }
  64        __edata = . ;                   /* End of data section. */
  65        _edata = . ;
  66
  67        INIT_TASK_DATA_SECTION(PAGE_SIZE)
  68
  69        . = ALIGN(PAGE_SIZE);           /* Init code and data. */
  70        __init_begin = .;
  71        INIT_TEXT_SECTION(PAGE_SIZE)
  72        .init.data : { INIT_DATA }
  73        .init.setup : { INIT_SETUP(16) }
  74#ifdef CONFIG_ETRAX_ARCH_V32
  75        __start___param = .;
  76        __param : { *(__param) }
  77        __stop___param = .;
  78#endif
  79        .initcall.init : {
  80                INIT_CALLS
  81        }
  82
  83        .con_initcall.init : {
  84                CON_INITCALL
  85        }
  86        SECURITY_INIT
  87
  88#ifdef CONFIG_ETRAX_ARCH_V10
  89#ifdef CONFIG_BLK_DEV_INITRD
  90        .init.ramfs : {
  91                __initramfs_start = .;
  92                *(.init.ramfs)
  93                __initramfs_end = .;
  94        }
  95#endif
  96#endif
  97        __vmlinux_end = .;              /* Last address of the physical file. */
  98#ifdef CONFIG_ETRAX_ARCH_V32
  99        PERCPU(PAGE_SIZE)
 100
 101        .init.ramfs : {
 102                INIT_RAM_FS
 103        }
 104#endif
 105
 106        /*
 107         * We fill to the next page, so we can discard all init
 108         * pages without needing to consider what payload might be
 109         * appended to the kernel image.
 110         */
 111        . = ALIGN(PAGE_SIZE);
 112
 113        __init_end = .;
 114
 115        __data_end = . ;                /* Move to _edata ? */
 116        BSS_SECTION(0, 0, 0)
 117
 118        . =  ALIGN (0x20);
 119        _end = .;
 120        __end = .;
 121
 122        dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024;
 123
 124        DISCARDS
 125}
 126