2 * vmlinux.lds.S -- master linker script for m68knommu arch
4 * (C) Copyright 2002-2004, Greg Ungerer <gerg@snapgear.com>
6 * This ends up looking compilcated, because of the number of
7 * address variations for ram and rom/flash layouts. The real
8 * work of the linker script is all at the end, and reasonably
12 #include <linux/config.h>
13 #include <asm-generic/vmlinux.lds.h>
16 * Original Palm pilot (same for Xcopilot).
17 * There is really only a rom target for this.
20 #define ROMVEC_START 0x10c00000
21 #define ROMVEC_LENGTH 0x10400
22 #define ROM_START 0x10c10400
23 #define ROM_LENGTH 0xfec00
24 #define ROM_END 0x10d00000
25 #define RAMVEC_START 0x00000000
26 #define RAMVEC_LENGTH 0x400
27 #define RAM_START 0x10000400
28 #define RAM_LENGTH 0xffc00
29 #define RAM_END 0x10100000
30 #define _ramend _ram_end_notused
31 #define DATA_ADDR RAM_START
35 * Same setup on both the uCsimm and uCdimm.
37 #if defined(CONFIG_UCSIMM) || defined(CONFIG_UCDIMM)
38 #ifdef CONFIG_RAMKERNEL
39 #define ROMVEC_START 0x10c10000
40 #define ROMVEC_LENGTH 0x400
41 #define ROM_START 0x10c10400
42 #define ROM_LENGTH 0x1efc00
43 #define ROM_END 0x10e00000
44 #define RAMVEC_START 0x00000000
45 #define RAMVEC_LENGTH 0x400
46 #define RAM_START 0x00020400
47 #define RAM_LENGTH 0x7dfc00
48 #define RAM_END 0x00800000
50 #ifdef CONFIG_ROMKERNEL
51 #define ROMVEC_START 0x10c10000
52 #define ROMVEC_LENGTH 0x400
53 #define ROM_START 0x10c10400
54 #define ROM_LENGTH 0x1efc00
55 #define ROM_END 0x10e00000
56 #define RAMVEC_START 0x00000000
57 #define RAMVEC_LENGTH 0x400
58 #define RAM_START 0x00020000
59 #define RAM_LENGTH 0x600000
60 #define RAM_END 0x00800000
62 #ifdef CONFIG_HIMEMKERNEL
63 #define ROMVEC_START 0x00600000
64 #define ROMVEC_LENGTH 0x400
65 #define ROM_START 0x00600400
66 #define ROM_LENGTH 0x1efc00
67 #define ROM_END 0x007f0000
68 #define RAMVEC_START 0x00000000
69 #define RAMVEC_LENGTH 0x400
70 #define RAM_START 0x00020000
71 #define RAM_LENGTH 0x5e0000
72 #define RAM_END 0x00600000
77 #define RAM_START 0x10000
78 #define RAM_LENGTH 0x7f0000
82 #define ROMVEC_START 0x00000000
83 #define ROMVEC_LENGTH 0x404
84 #define ROM_START 0x00000404
85 #define ROM_LENGTH 0x1ff6fc
86 #define ROM_END 0x00200000
87 #define RAMVEC_START 0x00200000
88 #define RAMVEC_LENGTH 0x404
89 #define RAM_START 0x00200404
90 #define RAM_LENGTH 0x1ff6fc
91 #define RAM_END 0x00400000
95 * The standard Arnewsh 5206 board only has 1MiB of ram. Not normally
96 * enough to be useful. Assume the user has fitted something larger,
97 * at least 4MiB in size. No point in not letting the kernel completely
98 * link, it will be obvious if it is too big when they go to load it.
100 #if defined(CONFIG_ARN5206)
101 #define RAM_START 0x10000
102 #define RAM_LENGTH 0x3f0000
106 * The Motorola 5206eLITE board only has 1MiB of static RAM.
108 #if defined(CONFIG_ELITE)
109 #define RAM_START 0x30020000
110 #define RAM_END 0xe0000
114 * All the Motorola eval boards have the same basic arrangement.
115 * The end of RAM will vary depending on how much ram is fitted,
116 * but this isn't important here, we assume at least 4MiB.
118 #if defined(CONFIG_M5206eC3) || defined(CONFIG_M5249C3) || \
119 defined(CONFIG_M5272C3) || defined(CONFIG_M5307C3) || \
120 defined(CONFIG_ARN5307) || defined(CONFIG_M5407C3) || \
121 defined(CONFIG_M5271EVB) || defined(CONFIG_M5275EVB)
122 #define RAM_START 0x20000
123 #define RAM_LENGTH 0x3e0000
127 * The senTec COBRA5272 board has nearly the same memory layout as
128 * the M5272C3. We assume 16MiB ram.
130 #if defined(CONFIG_COBRA5272)
131 #define RAM_START 0x20000
132 #define RAM_LENGTH 0xfe0000
135 #if defined(CONFIG_M5282EVB)
136 #define RAM_START 0x10000
137 #define RAM_LENGTH 0x3f0000
141 * The senTec COBRA5282 board has the same memory layout as the M5282EVB.
143 #if defined(CONFIG_COBRA5282)
144 #define RAM_START 0x10000
145 #define RAM_LENGTH 0x3f0000
149 * These flash boot boards use all of ram for operation. Again the
150 * actual memory size is not important here, assume at least 4MiB.
151 * They currently have no support for running in flash.
153 #if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || \
154 defined(CONFIG_DISKtel) || defined(CONFIG_SECUREEDGEMP3) || \
155 defined(CONFIG_HW_FEITH)
156 #define RAM_START 0x400
157 #define RAM_LENGTH 0x3ffc00
161 * Sneha Boards mimimun memmory
162 * The end of RAM will vary depending on how much ram is fitted,
163 * but this isn't important here, we assume at least 4MiB.
165 #if defined(CONFIG_CPU16B)
166 #define RAM_START 0x20000
167 #define RAM_LENGTH 0x3e0000
171 #if defined(CONFIG_RAMKERNEL)
177 #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
194 ramvec : ORIGIN = RAMVEC_START, LENGTH = RAMVEC_LENGTH
196 ram : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
198 eram : ORIGIN = RAM_END, LENGTH = 0
201 romvec : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
202 rom : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
203 erom : ORIGIN = ROM_END, LENGTH = 0
207 jiffies = jiffies_64 + 4;
226 . = ALIGN(16); /* Exception table */
227 __start___ex_table = .;
229 __stop___ex_table = .;
231 *(.rodata) *(.rodata.*)
232 *(__vermagic) /* Kernel version magic */
236 /* Kernel symbol table: Normal symbols */
238 __start___ksymtab = .;
240 __stop___ksymtab = .;
242 /* Kernel symbol table: GPL-only symbols */
243 __start___ksymtab_gpl = .;
245 __stop___ksymtab_gpl = .;
247 /* Kernel symbol table: Normal symbols */
248 __start___kcrctab = .;
250 __stop___kcrctab = .;
252 /* Kernel symbol table: GPL-only symbols */
253 __start___kcrctab_gpl = .;
255 __stop___kcrctab_gpl = .;
257 /* Kernel symbol table: strings */
260 /* Built-in module parameters */
302 __initcall_start = .;
311 __con_initcall_start = .;
312 *(.con_initcall.init)
313 __con_initcall_end = .;
314 __security_initcall_start = .;
315 *(.security_initcall.init)
316 __security_initcall_end = .;
318 __initramfs_start = .;