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