blob: a68b983dcea1bd413630c03e375f20a21baa5db8 [file] [log] [blame]
Mikael Starvik51533b62005-07-27 11:44:44 -07001/* 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
Mikael Starvik51533b62005-07-27 11:44:44 -070011#include <asm-generic/vmlinux.lds.h>
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010012#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
Mikael Starvik51533b62005-07-27 11:44:44 -070019
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020020
Mikael Starvik51533b62005-07-27 11:44:44 -070021jiffies = jiffies_64;
22SECTIONS
23{
24 . = DRAM_VIRTUAL_BASE;
25 dram_start = .;
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020026#ifdef CONFIG_ETRAX_ARCH_V10
27 ibr_start = .;
28#else
Mikael Starvik51533b62005-07-27 11:44:44 -070029 ebp_start = .;
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010030 /* The boot section is only necessary until the VCS top */
31 /* level testbench includes both flash and DRAM. */
Mikael Starvik51533b62005-07-27 11:44:44 -070032 .boot : { *(.boot) }
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020033#endif
Mikael Starvik51533b62005-07-27 11:44:44 -070034
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020035 /* see head.S and pages reserved at the start */
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010036 . = DRAM_VIRTUAL_BASE + 0x4000;
Mikael Starvik51533b62005-07-27 11:44:44 -070037
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020038 _text = .; /* Text and read-only data. */
39 text_start = .; /* Lots of aliases. */
Mikael Starvik51533b62005-07-27 11:44:44 -070040 _stext = .;
41 __stext = .;
42 .text : {
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010043 TEXT_TEXT
Mikael Starvik51533b62005-07-27 11:44:44 -070044 SCHED_TEXT
45 LOCK_TEXT
46 *(.fixup)
47 *(.text.__*)
48 }
49
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020050 _etext = . ; /* End of text section. */
Mikael Starvik51533b62005-07-27 11:44:44 -070051 __etext = .;
52
Jesper Nilsson24924ec2009-09-23 13:21:57 +020053 EXCEPTION_TABLE(4)
Mikael Starvik51533b62005-07-27 11:44:44 -070054
Jesper Nilsson473e1622011-10-24 11:19:25 +020055 _sdata = .;
Mikael Starvik51533b62005-07-27 11:44:44 -070056 RODATA
57
58 . = ALIGN (4);
59 ___data_start = . ;
60 __Sdata = . ;
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020061 .data : { /* Data */
Jesper Nilssondcb313c2010-08-04 14:01:28 +020062 CACHELINE_ALIGNED_DATA(32)
63 READ_MOSTLY_DATA(32)
Mathieu Desnoyers5c617c62007-06-16 22:28:26 -040064 DATA_DATA
Mikael Starvik51533b62005-07-27 11:44:44 -070065 }
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020066 __edata = . ; /* End of data section. */
Mikael Starvik51533b62005-07-27 11:44:44 -070067 _edata = . ;
68
Jesper Nilsson24924ec2009-09-23 13:21:57 +020069 INIT_TASK_DATA_SECTION(PAGE_SIZE)
Mikael Starvik51533b62005-07-27 11:44:44 -070070
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020071 . = ALIGN(PAGE_SIZE); /* Init code and data. */
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010072 __init_begin = .;
Jesper Nilsson24924ec2009-09-23 13:21:57 +020073 INIT_TEXT_SECTION(PAGE_SIZE)
Sam Ravnborg01ba2bd2008-01-20 14:15:03 +010074 .init.data : { INIT_DATA }
Jesper Nilsson24924ec2009-09-23 13:21:57 +020075 .init.setup : { INIT_SETUP(16) }
Jesper Nilssonbaa69b12008-01-30 12:57:31 +010076 .initcall.init : {
Jesper Nilsson24924ec2009-09-23 13:21:57 +020077 INIT_CALLS
Mikael Starvik51533b62005-07-27 11:44:44 -070078 }
79
80 .con_initcall.init : {
Jesper Nilsson24924ec2009-09-23 13:21:57 +020081 CON_INITCALL
Mikael Starvik51533b62005-07-27 11:44:44 -070082 }
83 SECURITY_INIT
84
Jesper Nilsson7c8a25b2010-08-04 14:10:04 +020085 /* .exit.text is discarded at runtime, not link time,
86 * to deal with references from __bug_table
87 */
88 .exit.text : {
89 EXIT_TEXT
90 }
91 .exit.data : {
92 EXIT_DATA
93 }
94
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +020095#ifdef CONFIG_ETRAX_ARCH_V10
96#ifdef CONFIG_BLK_DEV_INITRD
97 .init.ramfs : {
98 __initramfs_start = .;
99 *(.init.ramfs)
100 __initramfs_end = .;
101 }
102#endif
103#endif
104 __vmlinux_end = .; /* Last address of the physical file. */
105#ifdef CONFIG_ETRAX_ARCH_V32
Tejun Heo0415b00d12011-03-24 18:50:09 +0100106 PERCPU_SECTION(32)
Mikael Starvik51533b62005-07-27 11:44:44 -0700107
108 .init.ramfs : {
Jesper Nilsson24924ec2009-09-23 13:21:57 +0200109 INIT_RAM_FS
Mikael Starvik51533b62005-07-27 11:44:44 -0700110 }
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +0200111#endif
Mikael Starvik51533b62005-07-27 11:44:44 -0700112
Jesper Nilssonbaa69b12008-01-30 12:57:31 +0100113 /*
114 * We fill to the next page, so we can discard all init
115 * pages without needing to consider what payload might be
116 * appended to the kernel image.
117 */
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +0200118 . = ALIGN(PAGE_SIZE);
Jesper Nilssonbaa69b12008-01-30 12:57:31 +0100119
120 __init_end = .;
Mikael Starvik51533b62005-07-27 11:44:44 -0700121
Jesper Nilssonc5ec6fb2008-10-22 23:57:53 +0200122 __data_end = . ; /* Move to _edata ? */
Jesper Nilsson85d98652010-08-04 18:30:01 +0200123 BSS_SECTION(1, 1, 1)
Mikael Starvik51533b62005-07-27 11:44:44 -0700124
125 . = ALIGN (0x20);
126 _end = .;
127 __end = .;
128
Jesper Nilssonbaa69b12008-01-30 12:57:31 +0100129 dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024;
Tejun Heo023bf6f2009-07-09 11:27:40 +0900130
131 DISCARDS
Mikael Starvik51533b62005-07-27 11:44:44 -0700132}