diff options
author | Chris Johns <chrisj@rtems.org> | 2003-06-23 12:04:21 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2003-06-23 12:04:21 +0000 |
commit | 29387823ca4787483d19d74bb276bafa34054c4c (patch) | |
tree | 4302edc36b35af649af638d480e0262a4df0bf4c /c/src/lib/libbsp/m68k/ods68302/startup/linkcmds | |
parent | PR264, PR414 (diff) | |
download | rtems-29387823ca4787483d19d74bb276bafa34054c4c.tar.bz2 |
PR264 - Stopped the core dump by removing the bad instruction.
PR414 - Fixed the global interupt vector register.
Linker command file to have the boot code in the first 8K.
The chip select remap needed to be volatile.
Diffstat (limited to 'c/src/lib/libbsp/m68k/ods68302/startup/linkcmds')
-rw-r--r-- | c/src/lib/libbsp/m68k/ods68302/startup/linkcmds | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds b/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds index a00c863e8e..c8d1660d74 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds @@ -14,6 +14,15 @@ _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000; _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000; /* + * Memory map. + */ +RAM_BASE = DEFINED(RAM_BASE) ? RAM_BASE : 0x00000000; +RAM_SIZE = DEFINED(RAM_SIZE) ? RAM_SIZE : 0x00100000; +ROM_BASE = DEFINED(ROM_BASE) ? ROM_BASE : 0x00C00000; +ROM_SIZE = DEFINED(ROM_SIZE) ? ROM_SIZE : 0x00100000; +MC68302_BASE = DEFINED(MC68302_BASE) ? MC68302_BASE : 0x00700000; + +/* * Declare on-board memory. */ MEMORY { @@ -21,22 +30,26 @@ MEMORY { } SECTIONS { - ram : { - . = .; - } >ram - - .vtable : + .vtable RAM_BASE : { vtable_start = .; *(.vtable) evtable = .; } >ram - /* * Text, data and bss segments */ - .text : { + .text ROM_BASE : { + /* + * Needs to be first. 8K limit on CS0 at reset. + */ + *(.resettext); + *cpuboot.o(.text) + + /* + * The reset of the text is entered once CS0 is remapped. + */ *(.text) /* @@ -114,8 +127,10 @@ SECTIONS . = ALIGN (16); PROVIDE (_etext = .); - } >ram - .data : { + } >rom + + .data (ADDR(.vtable) + SIZEOF(.vtable)) : + AT (ADDR(.text) + SIZEOF(.text)) { PROVIDE (_copy_start = .); *(.data) *(.gnu.linkonce.d*) @@ -125,7 +140,7 @@ SECTIONS PROVIDE (_edata = .); PROVIDE (_copy_end = .); } >ram - .bss : { + .bss (ADDR(.data) + SIZEOF(.data)) : { _clear_start = .; *(.bss) *(COMMON) @@ -181,11 +196,6 @@ SECTIONS /* These must appear regardless of . */ } -RAM_BASE = DEFINED(RAM_BASE) ? RAM_BASE : 0x00000000; -RAM_SIZE = DEFINED(RAM_SIZE) ? RAM_SIZE : 0x00100000; -ROM_BASE = DEFINED(ROM_BASE) ? ROM_BASE : 0x00C00000; -ROM_SIZE = DEFINED(ROM_SIZE) ? ROM_SIZE : 0x00100000; -MC68302_BASE = DEFINED(MC68302_BASE) ? MC68302_BASE : 0x00700000; m302 = MC68302_BASE; _VBR = ADDR(.vtable); /* location of the VBR table (in RAM) */ |