/* ld script to make the Linux/CRIS kernel1* Authors: Bjorn Wesen ([email protected])2*3* It is VERY DANGEROUS to fiddle around with the symbols in this4* script. It is for example quite vital that all generated sections5* that are used are actually named here, otherwise the linker will6* put them at the end, where the init stuff is which is FREED after7* the kernel has booted.8*/910#include <asm-generic/vmlinux.lds.h>11#include <asm/page.h>1213#ifdef CONFIG_ETRAX_VMEM_SIZE14#define __CONFIG_ETRAX_VMEM_SIZE CONFIG_ETRAX_VMEM_SIZE15#else16#define __CONFIG_ETRAX_VMEM_SIZE 017#endif181920jiffies = jiffies_64;21SECTIONS22{23. = DRAM_VIRTUAL_BASE;24dram_start = .;25#ifdef CONFIG_ETRAX_ARCH_V1026ibr_start = .;27#else28ebp_start = .;29/* The boot section is only necessary until the VCS top */30/* level testbench includes both flash and DRAM. */31.boot : { *(.boot) }32#endif3334/* see head.S and pages reserved at the start */35. = DRAM_VIRTUAL_BASE + 0x4000;3637_text = .; /* Text and read-only data. */38text_start = .; /* Lots of aliases. */39_stext = .;40__stext = .;41.text : {42TEXT_TEXT43SCHED_TEXT44LOCK_TEXT45*(.fixup)46*(.text.__*)47}4849_etext = . ; /* End of text section. */50__etext = .;5152EXCEPTION_TABLE(4)5354RODATA5556. = ALIGN (4);57___data_start = . ;58__Sdata = . ;59.data : { /* Data */60CACHELINE_ALIGNED_DATA(32)61READ_MOSTLY_DATA(32)62DATA_DATA63}64__edata = . ; /* End of data section. */65_edata = . ;6667INIT_TASK_DATA_SECTION(PAGE_SIZE)6869. = ALIGN(PAGE_SIZE); /* Init code and data. */70__init_begin = .;71INIT_TEXT_SECTION(PAGE_SIZE)72.init.data : { INIT_DATA }73.init.setup : { INIT_SETUP(16) }74.initcall.init : {75INIT_CALLS76}7778.con_initcall.init : {79CON_INITCALL80}81SECURITY_INIT8283/* .exit.text is discarded at runtime, not link time,84* to deal with references from __bug_table85*/86.exit.text : {87EXIT_TEXT88}89.exit.data : {90EXIT_DATA91}9293#ifdef CONFIG_ETRAX_ARCH_V1094#ifdef CONFIG_BLK_DEV_INITRD95.init.ramfs : {96__initramfs_start = .;97*(.init.ramfs)98__initramfs_end = .;99}100#endif101#endif102__vmlinux_end = .; /* Last address of the physical file. */103#ifdef CONFIG_ETRAX_ARCH_V32104PERCPU_SECTION(32)105106.init.ramfs : {107INIT_RAM_FS108}109#endif110111/*112* We fill to the next page, so we can discard all init113* pages without needing to consider what payload might be114* appended to the kernel image.115*/116. = ALIGN(PAGE_SIZE);117118__init_end = .;119120__data_end = . ; /* Move to _edata ? */121BSS_SECTION(1, 1, 1)122123. = ALIGN (0x20);124_end = .;125__end = .;126127dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024;128129DISCARDS130}131132133