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

