nuclear@0: OUTPUT_ARCH(m68k) nuclear@0: nuclear@0: MEMORY nuclear@0: { nuclear@0: rom : ORIGIN = 0x00000000, LENGTH = 0x00a00000 nuclear@0: ram : ORIGIN = 0x00ff0000, LENGTH = 0x00010000 nuclear@0: } nuclear@0: nuclear@0: PROVIDE (_stacktop = 0x01000000); nuclear@0: nuclear@0: SECTIONS { nuclear@0: /* ---- start of ROM ---- */ nuclear@0: /* .vect section is used to place the m68k exception vectors at the nuclear@0: * beginning of the address space nuclear@0: */ nuclear@0: .vect : { * (.vect); } >rom nuclear@0: /* .romhdr section is used to place the SEGA ROM header at 0x100 */ nuclear@0: . = 0x100; nuclear@0: .romhdr : { * (.romhdr); } >rom nuclear@0: .text : { * (.text); } >rom nuclear@0: .rodata : { * (.rodata); } >rom nuclear@0: nuclear@0: /* place the load address of the .data section after .rodata */ nuclear@0: . = ALIGN(4); nuclear@0: _data_lma = .; nuclear@0: _rom_end = _data_lma + _data_size; nuclear@0: nuclear@0: /* ---- start of RAM ---- */ nuclear@0: . = 0xff0000; nuclear@0: /* place the .data section at the start of RAM */ nuclear@0: .data ALIGN(4): AT (_data_lma) { nuclear@0: _data_start = .; nuclear@0: * (.data); nuclear@0: . = ALIGN(4); nuclear@0: _data_end = .; nuclear@0: } >ram nuclear@0: _data_size = SIZEOF(.data); nuclear@0: nuclear@0: /* place the .bss section at the end */ nuclear@0: .bss ALIGN(4): { nuclear@0: _bss_start = .; nuclear@0: * (.bss); nuclear@0: . = ALIGN(4); nuclear@0: _bss_end = .; nuclear@0: } >ram nuclear@0: _bss_size = SIZEOF(.bss); nuclear@0: }