]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* Linker script for the Midas labs RTE-V850E/MA1-CB evaluation board |
2 | (CONFIG_RTE_CB_MA1), with kernel in SDRAM, under Multi debugger. */ | |
3 | ||
4 | MEMORY { | |
5 | /* 1MB of SRAM; we can't use the last 32KB, because it's used by | |
6 | the monitor scratch-RAM. This memory is mirrored 4 times. */ | |
7 | SRAM : ORIGIN = SRAM_ADDR, LENGTH = (SRAM_SIZE - MON_SCRATCH_SIZE) | |
8 | /* Monitor scratch RAM; only the interrupt vectors should go here. */ | |
9 | MRAM : ORIGIN = MON_SCRATCH_ADDR, LENGTH = MON_SCRATCH_SIZE | |
10 | /* 32MB of SDRAM. */ | |
11 | SDRAM : ORIGIN = SDRAM_ADDR, LENGTH = SDRAM_SIZE | |
12 | } | |
13 | ||
14 | #ifdef CONFIG_RTE_CB_MA1_KSRAM | |
15 | # define KRAM SRAM | |
16 | #else | |
17 | # define KRAM SDRAM | |
18 | #endif | |
19 | ||
20 | SECTIONS { | |
21 | /* We can't use RAMK_KRAM_CONTENTS because that puts the whole | |
22 | kernel in a single ELF segment, and the Multi debugger (which | |
23 | we use to load the kernel) appears to have bizarre problems | |
24 | dealing with it. */ | |
25 | ||
26 | .text : { | |
27 | __kram_start = . ; | |
28 | TEXT_CONTENTS | |
29 | } > KRAM | |
30 | ||
31 | .data : { | |
32 | DATA_CONTENTS | |
33 | BSS_CONTENTS | |
34 | RAMK_INIT_CONTENTS | |
35 | __kram_end = . ; | |
36 | BOOTMAP_CONTENTS | |
37 | ||
38 | /* The address at which the interrupt vectors are initially | |
39 | loaded by the loader. We can't load the interrupt vectors | |
40 | directly into their target location, because the monitor | |
41 | ROM for the GHS Multi debugger barfs if we try. | |
42 | Unfortunately, Multi also doesn't deal correctly with ELF | |
43 | sections where the LMA and VMA differ (it just ignores the | |
44 | LMA), so we can't use that feature to work around the | |
45 | problem! What we do instead is just put the interrupt | |
46 | vectors into a normal section, and have the | |
47 | `mach_early_init' function for Midas boards do the | |
48 | necessary copying and relocation at runtime (this section | |
49 | basically only contains `jr' instructions, so it's not | |
50 | that hard). */ | |
51 | . = ALIGN (0x10) ; | |
52 | __intv_load_start = . ; | |
53 | INTV_CONTENTS | |
54 | } > KRAM | |
55 | ||
56 | .root ALIGN (4096) : { ROOT_FS_CONTENTS } > SDRAM | |
57 | } |