Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* Linker script for the Midas labs RTE-NB85E-CB evaluation board |
| 2 | (CONFIG_RTE_CB_NB85E), with the Multi debugger ROM monitor . */ |
| 3 | |
| 4 | MEMORY { |
| 5 | /* 1MB of SRAM; we can't use the last 96KB, 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 | /* 16MB of SDRAM. */ |
| 11 | SDRAM : ORIGIN = SDRAM_ADDR, LENGTH = SDRAM_SIZE |
| 12 | } |
| 13 | |
| 14 | #ifdef CONFIG_RTE_CB_NB85E_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 | } |