2 * arch/v850/vmlinux.lds.S -- kernel linker script for v850 platforms
4 * Copyright (C) 2002,03,04,05 NEC Electronics Corporation
5 * Copyright (C) 2002,03,04,05 Miles Bader <miles@gnu.org>
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
11 * Written by Miles Bader <miles@gnu.org>
14 #include <linux/config.h>
15 #define VMLINUX_SYMBOL(_sym_) _##_sym_
16 #include <asm-generic/vmlinux.lds.h>
18 /* For most platforms, this will define useful things like RAM addr/size. */
19 #include <asm/machdep.h>
22 /* The following macros contain the usual definitions for various data areas.
23 The prefix `RAMK_' is used to indicate macros suitable for kernels loaded
24 into RAM, and similarly `ROMK_' for ROM-resident kernels. Note that all
25 symbols are prefixed with an extra `_' for compatibility with the v850
29 /* Interrupt vectors. */
30 #define INTV_CONTENTS \
33 *(.intv.reset) /* Reset vector */ \
34 . = __intv_start + 0x10 ; \
35 *(.intv.common) /* Vectors common to all v850e proc */\
36 . = __intv_start + 0x80 ; \
37 *(.intv.mach) /* Machine-specific int. vectors. */ \
40 #define RODATA_CONTENTS \
42 *(.rodata) *(.rodata.*) \
43 *(__vermagic) /* Kernel version magic */ \
45 /* Kernel symbol table: Normal symbols */ \
46 ___start___ksymtab = .; \
48 ___stop___ksymtab = .; \
49 /* Kernel symbol table: GPL-only symbols */ \
50 ___start___ksymtab_gpl = .; \
52 ___stop___ksymtab_gpl = .; \
53 /* Kernel symbol table: strings */ \
54 *(__ksymtab_strings) \
55 /* Kernel symbol table: Normal symbols */ \
56 ___start___kcrctab = .; \
58 ___stop___kcrctab = .; \
59 /* Kernel symbol table: GPL-only symbols */ \
60 ___start___kcrctab_gpl = .; \
62 ___stop___kcrctab_gpl = .; \
63 /* Built-in module parameters */ \
65 ___start___param = .; \
70 /* Kernel text segment, and some constant data areas. */
71 #define TEXT_CONTENTS \
75 *(.exit.text) /* 2.5 convention */ \
76 *(.text.exit) /* 2.4 convention */ \
79 __real_etext = . ; /* There may be data after here. */ \
84 . = ALIGN (16) ; /* Exception table. */ \
85 ___start___ex_table = . ; \
87 ___stop___ex_table = . ; \
91 /* Kernel data segment. */
92 #define DATA_CONTENTS \
95 *(.exit.data) /* 2.5 convention */ \
96 *(.data.exit) /* 2.4 convention */ \
98 *(.data.cacheline_aligned) \
99 . = ALIGN (0x2000) ; \
101 . = ALIGN (0x2000) ; \
104 /* Kernel BSS segment. */
105 #define BSS_CONTENTS \
110 __init_stack_end = . ; \
113 /* `initcall' tables. */
114 #define INITCALL_CONTENTS \
116 ___setup_start = . ; \
117 *(.init.setup) /* 2.5 convention */ \
118 *(.setup.init) /* 2.4 convention */ \
120 ___initcall_start = . ; \
130 ___initcall_end = . ; \
131 ___con_initcall_start = .; \
132 *(.con_initcall.init) \
133 ___con_initcall_end = .;
135 /* Contents of `init' section for a kernel that's loaded into RAM. */
136 #define RAMK_INIT_CONTENTS \
137 RAMK_INIT_CONTENTS_NO_END \
139 /* Same as RAMK_INIT_CONTENTS, but doesn't define the `__init_end' symbol. */
140 #define RAMK_INIT_CONTENTS_NO_END \
144 *(.init.text) /* 2.5 convention */ \
147 *(.text.init) /* 2.4 convention */ \
152 /* The contents of `init' section for a ROM-resident kernel which
153 should go into RAM. */
154 #define ROMK_INIT_RAM_CONTENTS \
157 *(.init.data) /* 2.5 convention */ \
158 *(.data.init) /* 2.4 convention */ \
162 /* The contents of `init' section for a ROM-resident kernel which
163 should go into ROM. */
164 #define ROMK_INIT_ROM_CONTENTS \
166 *(.init.text) /* 2.5 convention */ \
168 *(.text.init) /* 2.4 convention */ \
172 /* A root filesystem image, for kernels with an embedded root filesystem. */
173 #define ROOT_FS_CONTENTS \
174 __root_fs_image_start = . ; \
176 __root_fs_image_end = . ;
177 /* The initramfs archive. */
178 #define INITRAMFS_CONTENTS \
180 ___initramfs_start = . ; \
182 ___initramfs_end = . ;
183 /* Where the initial bootmap (bitmap for the boot-time memory allocator)
185 #define BOOTMAP_CONTENTS \
188 . = . + 4096 ; /* enough for 128MB. */
190 /* The contents of a `typical' kram area for a kernel in RAM. */
191 #define RAMK_KRAM_CONTENTS \
201 /* Define output sections normally used for a ROM-resident kernel.
202 ROM and RAM should be appropriate memory areas to use for kernel
203 ROM and RAM data. This assumes that ROM starts at 0 (and thus can
204 hold the interrupt vectors). */
205 #define ROMK_SECTIONS(ROM, RAM) \
209 ROMK_INIT_ROM_CONTENTS \
213 __rom_copy_src_start = . ; \
217 __rom_copy_dst_start = . ; \
219 ROMK_INIT_RAM_CONTENTS \
220 __rom_copy_dst_end = . ; \
230 /* The 32-bit variable `jiffies' is just the lower 32-bits of `jiffies_64'. */
231 _jiffies = _jiffies_64 ;
234 /* Include an appropriate platform-dependent linker-script (which
235 usually should use the above macros to do most of the work). */
237 #ifdef CONFIG_V850E_SIM
241 #ifdef CONFIG_V850E2_SIM85E2
242 # include "sim85e2.ld"
245 #ifdef CONFIG_V850E2_FPGA85E2C
246 # include "fpga85e2c.ld"
249 #ifdef CONFIG_V850E2_ANNA
250 # ifdef CONFIG_ROM_KERNEL
251 # include "anna-rom.ld"
257 #ifdef CONFIG_V850E_AS85EP1
258 # ifdef CONFIG_ROM_KERNEL
259 # include "as85ep1-rom.ld"
261 # include "as85ep1.ld"
265 #ifdef CONFIG_RTE_CB_MA1
266 # ifdef CONFIG_ROM_KERNEL
267 # include "rte_ma1_cb-rom.ld"
269 # include "rte_ma1_cb.ld"
273 #ifdef CONFIG_RTE_CB_NB85E
274 # ifdef CONFIG_ROM_KERNEL
275 # include "rte_nb85e_cb-rom.ld"
276 # elif defined(CONFIG_RTE_CB_MULTI)
277 # include "rte_nb85e_cb-multi.ld"
279 # include "rte_nb85e_cb.ld"
283 #ifdef CONFIG_RTE_CB_ME2
284 # include "rte_me2_cb.ld"