1 | /* |
---|
2 | * $Id$ |
---|
3 | */ |
---|
4 | |
---|
5 | OUTPUT_ARCH(h8300h) |
---|
6 | /* |
---|
7 | * Declare some sizes. |
---|
8 | */ |
---|
9 | _RamBase = DEFINED(_RamBase) ? _RamBase : 0x0; |
---|
10 | _RamSize = DEFINED(_RamSize) ? _RamSize : 1M; |
---|
11 | _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x4000; |
---|
12 | _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000; |
---|
13 | |
---|
14 | ENTRY("_start") |
---|
15 | /* The memory size is 256KB to coincide with the simulator. |
---|
16 | Don't change either without considering the other. */ |
---|
17 | MEMORY |
---|
18 | { |
---|
19 | /* 0xc4 is a magic entry. We should have the linker just |
---|
20 | skip over it one day... */ |
---|
21 | vectors : o = 0x0000, l = 0xc4 |
---|
22 | magicvectors : o = 0xc4, l = 0x3c |
---|
23 | /* We still only use 256k as the main ram size. */ |
---|
24 | ram : o = 0x0100, l = 0xffefc /* 256K RAM --> 0x3fefc */ |
---|
25 | /* The stack starts at the top of main ram. */ |
---|
26 | topram : o = 0xffffc, l = 0x4 /* 256K RAM --> 0x3fffc */ |
---|
27 | /* This holds variables in the "tiny" sections. */ |
---|
28 | tiny : o = 0xff8000, l = 0x7f00 |
---|
29 | /* At the very top of the address space is the 8-bit area. */ |
---|
30 | eight : o = 0xffff00, l = 0x100 |
---|
31 | } |
---|
32 | |
---|
33 | |
---|
34 | SECTIONS |
---|
35 | { |
---|
36 | .vectors : |
---|
37 | { |
---|
38 | *(.vectors) |
---|
39 | } > vectors |
---|
40 | |
---|
41 | .text : |
---|
42 | { |
---|
43 | *(.text*) |
---|
44 | *(.gnu.linkonce.t*) |
---|
45 | |
---|
46 | /* |
---|
47 | * Special FreeBSD sysctl sections. |
---|
48 | */ |
---|
49 | . = ALIGN (16); |
---|
50 | ___start_set_sysctl_set = .; |
---|
51 | *(set_sys*); /* sysctl set */ |
---|
52 | ___stop_set_sysctl_set = ABSOLUTE(.); |
---|
53 | *(set_dom*); /* domain set */ |
---|
54 | *(set_pse*); |
---|
55 | |
---|
56 | /* |
---|
57 | * Read-only data |
---|
58 | */ |
---|
59 | . = ALIGN (16); |
---|
60 | PROVIDE(_rodata_start = . ); |
---|
61 | *(.rodata*) |
---|
62 | *(.gnu.linkonce.r*) |
---|
63 | PROVIDE(_erodata = . ); |
---|
64 | |
---|
65 | _etext = .; |
---|
66 | } >ram |
---|
67 | .tors SIZEOF(.text) + ADDR(.text): { |
---|
68 | ___ctors = . ; |
---|
69 | *(.ctors) |
---|
70 | ___ctors_end = . ; |
---|
71 | ___dtors = . ; |
---|
72 | *(.dtors) |
---|
73 | ___dtors_end = . ; |
---|
74 | } >ram |
---|
75 | .data SIZEOF(.tors) + ADDR(.tors): |
---|
76 | { |
---|
77 | *(.data) |
---|
78 | *(.gcc_exc*) |
---|
79 | CONSTRUCTORS |
---|
80 | _edata = .; |
---|
81 | } >ram |
---|
82 | .bss SIZEOF(.data) + ADDR(.data): |
---|
83 | { |
---|
84 | _bss_start = .; |
---|
85 | *(.bss* .gnu.linkonce.b.*) |
---|
86 | *(COMMON) |
---|
87 | . = ALIGN (64); |
---|
88 | . += _StackSize; |
---|
89 | _stack_init = .; |
---|
90 | _clear_end = .; |
---|
91 | _WorkspaceBase = .; |
---|
92 | _end = .; |
---|
93 | __end = .; |
---|
94 | } >ram |
---|
95 | .tiny : { |
---|
96 | *(.tiny) |
---|
97 | } > tiny |
---|
98 | .eight : { |
---|
99 | *(.eight) |
---|
100 | } > eight |
---|
101 | .stab 0 (NOLOAD) : { |
---|
102 | [ .stab ] |
---|
103 | } |
---|
104 | .stabstr 0 (NOLOAD) : { |
---|
105 | [ .stabstr ] |
---|
106 | } |
---|
107 | |
---|
108 | } |
---|