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