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 20jiffies = jiffies_64; 21SECTIONS 22{ 23 . = DRAM_VIRTUAL_BASE; 24 dram_start = .; 25 ebp_start = .; 26 27 /* The boot section is only necessary until the VCS top */ 28 /* level testbench includes both flash and DRAM. */ 29 .boot : { *(.boot) } 30 31 /* See head.S and pages reserved at the start. */ 32 . = DRAM_VIRTUAL_BASE + 0x4000; 33 34 _text = .; /* Text and read-only data. */ 35 text_start = .; /* Lots of aliases. */ 36 _stext = .; 37 __stext = .; 38 .text : { 39 TEXT_TEXT 40 SCHED_TEXT 41 LOCK_TEXT 42 *(.fixup) 43 *(.text.__*) 44 } 45 46 _etext = . ; /* End of text section. */ 47 __etext = .; 48 49 . = ALIGN(4); /* Exception table. */ 50 __start___ex_table = .; 51 __ex_table : { *(__ex_table) } 52 __stop___ex_table = .; 53 54 RODATA 55 56 . = ALIGN (4); 57 ___data_start = . ; 58 __Sdata = . ; 59 .data : { /* Data */ 60 DATA_DATA 61 } 62 __edata = . ; /* End of data section. */ 63 _edata = . ; 64 65 . = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned. */ 66 .data.init_task : { *(.data.init_task) } 67 68 . = ALIGN(PAGE_SIZE); /* Init code and data. */ 69 __init_begin = .; 70 .init.text : { 71 _sinittext = .; 72 INIT_TEXT 73 _einittext = .; 74 } 75 .init.data : { INIT_DATA } 76 . = ALIGN(16); 77 __setup_start = .; 78 .init.setup : { *(.init.setup) } 79 __setup_end = .; 80 __start___param = .; 81 __param : { *(__param) } 82 __stop___param = .; 83 .initcall.init : { 84 __initcall_start = .; 85 INITCALLS 86 __initcall_end = .; 87 } 88 89 .con_initcall.init : { 90 __con_initcall_start = .; 91 *(.con_initcall.init) 92 __con_initcall_end = .; 93 } 94 SECURITY_INIT 95 96 __vmlinux_end = .; /* Last address of the physical file. */ 97 PERCPU(PAGE_SIZE) 98 99 .init.ramfs : { 100 __initramfs_start = .; 101 *(.init.ramfs) 102 __initramfs_end = .; 103 } 104 105 /* 106 * We fill to the next page, so we can discard all init 107 * pages without needing to consider what payload might be 108 * appended to the kernel image. 109 */ 110 . = ALIGN (PAGE_SIZE); 111 112 __init_end = .; 113 114 __data_end = . ; /* Move to _edata? */ 115 __bss_start = .; /* BSS. */ 116 .bss : { 117 *(COMMON) 118 *(.bss) 119 } 120 121 . = ALIGN (0x20); 122 _end = .; 123 __end = .; 124 125 /* Sections to be discarded */ 126 /DISCARD/ : { 127 EXIT_TEXT 128 EXIT_DATA 129 *(.exitcall.exit) 130 } 131 132 dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024; 133} 134

