OUTPUT_FORMAT(elf32-sparc)
OUTPUT_ARCH(sparc)

/* QEMU ELF loader can't handle very complex files, so we put ELFBoot
info to rodata and put initctx to data.*/

ENTRY(trap_table)

/* Initial load address
 */
BASE_ADDR = 0xffd00000;

/* 16KB stack */
STACK_SIZE = 16384;
VMEM_SIZE = 128 * 1024;
IOMEM_SIZE = 256 * 1024 + 768 * 1024;

SECTIONS
{
    . = BASE_ADDR;

    /* Start of the program.
     * Now the version string is in the note, we must include it
     * in the program. Otherwise we lose the string after relocation. */
    _start = .;

    /* Normal sections */
    .text ALIGN(4096): {
        *(.text.vectors)
        *(.text)
        *(.text.*)
    }
    .rodata ALIGN(4096): {
        _rodata = .;
	sound_drivers_start = .;
	*(.rodata.sound_drivers)
	sound_drivers_end = .;
	*(.rodata)
	*(.rodata.*)
        *(.note.ELFBoot)
    }
    .data ALIGN(4096): {
        _data = .;
        *(.data)
        *(.data.*)
    }

    .bss ALIGN(4096): {
        _bss = .;
	*(.bss)
	*(.bss.*)
	*(COMMON)

	. = ALIGN(4096);
	_vmem = .;
	. += VMEM_SIZE;
        _evmem = .;

	_stack = .;
	. += STACK_SIZE;
	. = ALIGN(16);
	_estack = .;
    }

    . = ALIGN(4096);
    _end = .;
    _iomem = _end + IOMEM_SIZE;

    /* We discard .note sections other than .note.ELFBoot,
     * because some versions of GCC generates useless ones. */

    /DISCARD/ : { *(.comment*) *(.note.*) }
}
