From b812f841553be30baab45f08b3f6fda692b5166b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 1 Aug 2000 20:01:14 +0000 Subject: Added sim68000 BSP for the BSVC simulator. This BSP includes the alias simcpu32 that supports the CPU32 simulator in BSVC. At this point, it is still under development. --- c/src/lib/libbsp/m68k/sim68000/startup/linkcmds | 129 ++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 c/src/lib/libbsp/m68k/sim68000/startup/linkcmds (limited to 'c/src/lib/libbsp/m68k/sim68000/startup/linkcmds') diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds new file mode 100644 index 0000000000..82f44ba523 --- /dev/null +++ b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds @@ -0,0 +1,129 @@ +/* + * $Id$ + * + * MC68302 Linker command file + * + */ + +/* + * Declare some sizes. + */ +_RomBase = DEFINED(_RomBase) ? _RomBase : 0x0; +_RomSize = DEFINED(_RomSize) ? _RomSize : 256K; +_RamBase = DEFINED(_RamBase) ? _RamBase : 0x40000; +_RamSize = DEFINED(_RamSize) ? _RamSize : 128K; +_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 32K; +_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000; + +/* + * Declare on-board memory. + */ +MEMORY { + eprom : ORIGIN = 0x00000000, LENGTH = 256K + ram : ORIGIN = 0x00040000, LENGTH = 128K +} +SECTIONS +{ + ram : { + . = .; + } >ram + + /* + * Text, data and bss segments + */ + .text 0x0 : { + *(.text) + + /* + * C++ constructors/destructors + */ + *(.gnu.linkonce.t.*) + + /* + * Initialization and finalization code. + * + * Various files can provide initialization and finalization + * functions. crtbegin.o and crtend.o are two instances. The + * body of these functions are in .init and .fini sections. We + * accumulate the bodies here, and prepend function prologues + * from crti.o and function epilogues from crtn.o. crti.o must + * be linked first; crtn.o must be linked last. Because these + * are wildcards, it doesn't matter if the user does not + * actually link against crti.o and crtn.o; the linker won't + * look for a file to match a wildcard. The wildcard also + * means that it doesn't matter which directory crti.o and + * crtn.o are in. + */ + PROVIDE (_init = .); + *crti.o(.init) + *(.init) + *crtn.o(.init) + PROVIDE (_fini = .); + *crti.o(.fini) + *(.fini) + *crtn.o(.fini) + + /* + * C++ constructors/destructors + * + * gcc uses crtbegin.o to find the start of the constructors + * and destructors so we make sure it is first. Because this + * is a wildcard, it doesn't matter if the user does not + * actually link against crtbegin.o; the linker won't look for + * a file to match a wildcard. The wildcard also means that + * it doesn't matter which directory crtbegin.o is in. The + * constructor and destructor list are terminated in + * crtend.o. The same comments apply to it. + */ + . = ALIGN (16); + *crtbegin.o(.ctors) + *(.ctors) + *crtend.o(.ctors) + *crtbegin.o(.dtors) + *(.dtors) + *crtend.o(.dtors) + + /* + * Exception frame info + */ + . = ALIGN (16); + *(.eh_frame) + + /* + * Read-only data + */ + . = ALIGN (16); + _rodata_start = . ; + *(.rodata) + *(.gnu.linkonce.r*) + + . = ALIGN (16); + PROVIDE (_etext = .); + } + .data 0x40000 : AT (ADDR(.text) + SIZEOF (.text)) { + PROVIDE (_copy_start = .); + *(.data) + *(.gnu.linkonce.d*) + *(.gcc_except_table) + . = ALIGN (16); + PROVIDE (_edata = .); + PROVIDE (_copy_end = .); + } + .bss ADDR(.data) + SIZEOF(.data) : { + _clear_start = .; + *(.bss) + *(COMMON) + . = ALIGN (16); + PROVIDE (end = .); + + . += _StackSize; + . = ALIGN (16); + _stack_init = .; + _clear_end = .; + + _WorkspaceBase = .; + } +} + +_VBR = 0xFFFFFFFF; /* indicates VBR table is in ROM */ + -- cgit v1.2.3