2006-04-26 16:39:16 +00:00
|
|
|
OUTPUT_FORMAT(elf32-sparc)
|
|
|
|
|
OUTPUT_ARCH(sparc)
|
|
|
|
|
|
2006-05-22 10:33:31 +00:00
|
|
|
/* Qemu ELF loader can't handle very complex files, so we put ELFBoot
|
|
|
|
|
info to rodata and put initctx to data.*/
|
|
|
|
|
|
2006-04-26 16:39:16 +00:00
|
|
|
ENTRY(trap_table)
|
|
|
|
|
|
|
|
|
|
/* Initial load address
|
|
|
|
|
*/
|
|
|
|
|
BASE_ADDR = 0xffd00000;
|
|
|
|
|
|
2009-01-03 13:46:15 +00:00
|
|
|
/* 16KB stack */
|
2006-04-26 16:39:16 +00:00
|
|
|
STACK_SIZE = 16384;
|
2009-02-12 19:39:47 +00:00
|
|
|
/* 256k general alloc + 256k Forth dictionary + 128k Forth memory */
|
|
|
|
|
VMEM_SIZE = (256 + 256 + 128) * 1024;
|
2006-06-06 22:23:04 +00:00
|
|
|
IOMEM_SIZE = 256 * 1024 + 768 * 1024;
|
2006-04-26 16:39:16 +00:00
|
|
|
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
. = BASE_ADDR;
|
|
|
|
|
|
2008-07-07 18:35:51 +00:00
|
|
|
/* Start of the program.
|
2006-04-26 16:39:16 +00:00
|
|
|
* 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.*)
|
2006-05-22 10:33:31 +00:00
|
|
|
*(.note.ELFBoot)
|
2006-04-26 16:39:16 +00:00
|
|
|
}
|
|
|
|
|
.data ALIGN(4096): {
|
|
|
|
|
_data = .;
|
|
|
|
|
*(.data)
|
|
|
|
|
*(.data.*)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.bss ALIGN(4096): {
|
|
|
|
|
_bss = .;
|
|
|
|
|
*(.bss)
|
|
|
|
|
*(.bss.*)
|
|
|
|
|
*(COMMON)
|
|
|
|
|
|
2006-05-06 21:33:36 +00:00
|
|
|
. = ALIGN(4096);
|
|
|
|
|
_vmem = .;
|
|
|
|
|
. += VMEM_SIZE;
|
|
|
|
|
_evmem = .;
|
|
|
|
|
|
2006-04-26 16:39:16 +00:00
|
|
|
_stack = .;
|
|
|
|
|
. += STACK_SIZE;
|
|
|
|
|
. = ALIGN(16);
|
|
|
|
|
_estack = .;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4096);
|
|
|
|
|
_end = .;
|
2006-05-06 21:33:36 +00:00
|
|
|
_iomem = _end + IOMEM_SIZE;
|
2006-04-26 16:39:16 +00:00
|
|
|
|
2006-05-22 10:33:31 +00:00
|
|
|
/* We discard .note sections other than .note.ELFBoot,
|
|
|
|
|
* because some versions of GCC generates useless ones. */
|
|
|
|
|
|
|
|
|
|
/DISCARD/ : { *(.comment*) *(.note.*) }
|
2006-04-26 16:39:16 +00:00
|
|
|
}
|