summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/arch/sparc64/ldscript
blob: 54288e825351d3cb889bff343fa2a5032e84c738 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
OUTPUT_FORMAT(elf64-sparc)
OUTPUT_ARCH(sparc:v9)

/* 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 = 0x00000000ffd00000;

/* 16KB stack */
STACK_SIZE = 16384;
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(524288): {
        *(.text.vectors)
        *(.text)
        *(.text.*)
    }
    .rodata ALIGN(524288): {
        _rodata = .;
	sound_drivers_start = .;
	*(.rodata.sound_drivers)
	sound_drivers_end = .;
	*(.rodata)
	*(.rodata.*)
        *(.note.ELFBoot)
    }
    .data ALIGN(524288): {
        _data = .;
        *(.data)
        *(.data.*)
    }

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

	_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.*) }
}