/* * * legOS - the independent LEGO Mindstorms OS * h8300.rcx - linker command file * (c) 1998 by Markus L. Noga * * This file is adapted from GNU ld's h8300.x, GPL applies. * */ OUTPUT_FORMAT("srec") /* MLN: srec is standard */ OUTPUT_ARCH(h8300) ENTRY("_kmain") /* MLN: kmain() is kernel main entry point */ MEMORY { /* 0xc4 is a magic entry. We should have the linker just skip over it one day... */ vectors : o = 0x0000, l = 0xc4 magicvectors : o = 0xc4, l = 0x3c ram : o = 0x0100, l = 0xfdfc /* The stack starts at the top of main ram. */ topram : o = 0xfefc, l = 0x4 /* At the very to of the address space is the 8-bit area. */ eight : o = 0xff00, l = 0x100 } SECTIONS { .vectors : { /* Use something like this to place a specific function's address into the vector table. SHORT(ABSOLUTE(_foobar)) */ *(.vectors) } > vectors .text 0x8000: { /* MLN: text starts at 0x8000 for firmware */ *(.text) *(.rodata) /* MLN: rodata *behind* text */ *(.strings) _etext = . ; } > ram .tors : { ___ctors = . ; *(.ctors) ___ctors_end = . ; ___dtors = . ; *(.dtors) ___dtors_end = . ; } > ram .data : { *(.data) *(.tiny) _edata = . ; } > ram .bss : { _bss_start = . ; *(.bss) *(COMMON) _end = . ; _mm_start = . ;/* MLN: start memory management here */ } >ram .stack : { _stack = . ; *(.stack) } > topram .eight : { *(.eight) } > eight .stab 0 (NOLOAD) : { [ .stab ] } .stabstr 0 (NOLOAD) : { [ .stabstr ] } }