1: /*
2: *----------------------------------------------------------------------
3: * T2EX Software Package
4: *
5: * Copyright 2012 by Ken Sakamura.
6: * This software is distributed under the latest version of T-License 2.x.
7: *----------------------------------------------------------------------
8: *
9: * Released by T-Engine Forum(http://www.t-engine.org/) at 2012/12/12.
10: * Modified by T-Engine Forum at 2013/03/04.
11: * Modified by TRON Forum(http://www.tron.org/) at 2015/06/04.
12: *
13: *----------------------------------------------------------------------
14: */
15: /*
16: * This software package is available for use, modification,
17: * and redistribution in accordance with the terms of the attached
18: * T-License 2.x.
19: * If you want to redistribute the source code, you need to attach
20: * the T-License 2.x document.
21: * There's no obligation to publish the content, and no obligation
22: * to disclose it to the TRON Forum if you have modified the
23: * software package.
24: * You can also distribute the modified source code. In this case,
25: * please register the modification to T-Kernel traceability service.
26: * People can know the history of modifications by the service,
27: * and can be sure that the version you have inherited some
28: * modification of a particular version or not.
29: *
30: * http://trace.tron.org/tk/?lang=en
31: * http://trace.tron.org/tk/?lang=ja
32: *
33: * As per the provisions of the T-License 2.x, TRON Forum ensures that
34: * the portion of the software that is copyrighted by Ken Sakamura or
35: * the TRON Forum does not infringe the copyrights of a third party.
36: * However, it does not make any warranty other than this.
37: * DISCLAIMER: TRON Forum and Ken Sakamura shall not be held
38: * responsible for any consequences or damages caused directly or
39: * indirectly by the use of this software package.
40: *
41: * The source codes in bsd_source.tar.gz in this software package are
42: * derived from NetBSD or OpenBSD and not covered under T-License 2.x.
43: * They need to be changed or redistributed according to the
44: * representation of each source header.
45: */
46:
47: /*
48: * kernel_t2ex-rom.lnk (sysmain, EM1-D512)
49: * linker script (ROM, with T2EX memory protection)
50: */
51:
52: OUTPUT_FORMAT("elf32-larm-tkernel", "elf32-barm-tkernel", "elf32-larm-tkernel")
53: OUTPUT_ARCH(arm)
54: ENTRY(_start)
55:
56: SECTIONS {
57: .text 0x70030000 : {
58: /* System Level (Executable) */
59: PROVIDE (__stext = .);
60: PROVIDE (_stext = .);
61: PROVIDE (stext = .);
62: KEEP (*(.init))
63: *(EXCLUDE_FILE (*.uo) .text)
64: *(EXCLUDE_FILE (*.uo) .text.*)
65: *(EXCLUDE_FILE (*.uo) .stub)
66: KEEP (*(.fini))
67: PROVIDE (__etext = .);
68: PROVIDE (_etext = .);
69: PROVIDE (etext = .);
70: . = ALIGN(4);
71: /* System Level (Read-Only Data) */
72: PROVIDE (__srodata = .);
73: PROVIDE (_srodata = .);
74: PROVIDE (srodata = .);
75: *(EXCLUDE_FILE (*.uo) .rodata)
76: *(EXCLUDE_FILE (*.uo) .rodata.*)
77: *(EXCLUDE_FILE (*.uo) .rodata1)
78: PROVIDE (__erodata = .);
79: PROVIDE (_erodata = .);
80: PROVIDE (erodata = .);
81: . = ALIGN(4);
82: /* User Level (Executable) */
83: PROVIDE (__stext_usr = .);
84: PROVIDE (_stext_usr = .);
85: PROVIDE (stext_usr = .);
86: *.uo(.text)
87: *.uo(.text.*)
88: *.uo(.stub)
89: PROVIDE (__etext_usr = .);
90: PROVIDE (_etext_usr = .);
91: PROVIDE (etext_usr = .);
92: . = ALIGN(4);
93: /* User Level (Read-Only Data) */
94: PROVIDE (__srodata_usr = .);
95: PROVIDE (_srodata_usr = .);
96: PROVIDE (srodata_usr = .);
97: *.uo(.rodata)
98: *.uo(.rodata.*)
99: *.uo(.rodata1)
100: PROVIDE (__erodata_usr = .);
101: PROVIDE (_erodata_usr = .);
102: PROVIDE (erodata_usr = .);
103: } =0
104: __data_org = ALIGN(4);
105: .data 0x30006000 : AT(__data_org) {
106: __data_start = . ;
107: *(EXCLUDE_FILE (*.uo) .data)
108: *(EXCLUDE_FILE (*.uo) .data.*)
109: SORT(CONSTRUCTORS)
110: *(EXCLUDE_FILE (*.uo) .data1)
111: KEEP (*(EXCLUDE_FILE (*.uo) .eh_frame))
112: *(EXCLUDE_FILE (*.uo) .gcc_except_table)
113: KEEP (*crtbegin.o(.ctors))
114: KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
115: KEEP (*(SORT(.ctors.*)))
116: KEEP (*(.ctors))
117: KEEP (*crtbegin.o(.dtors))
118: KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
119: KEEP (*(SORT(.dtors.*)))
120: KEEP (*(.dtors))
121: *(EXCLUDE_FILE (*.uo) .sdata)
122: *(EXCLUDE_FILE (*.uo) .sdata.*)
123: . = ALIGN(4);
124: _edata = .;
125: PROVIDE (edata = .);
126: }
127: .bss ALIGN(4) : {
128: __bss_start = .;
129: PROVIDE (__sbss_start = .);
130: PROVIDE (___sbss_start = .);
131: *(EXCLUDE_FILE (*.uo) .sbss)
132: *(EXCLUDE_FILE (*.uo) .sbss.*)
133: *(EXCLUDE_FILE (*.uo) .scommon)
134: PROVIDE (__sbss_end = .);
135: PROVIDE (___sbss_end = .);
136: *(EXCLUDE_FILE (*.uo) .bss)
137: *(EXCLUDE_FILE (*.uo) .bss.*)
138: *(EXCLUDE_FILE (*.uo) COMMON)
139: . = ALIGN(4);
140: _end = .;
141: PROVIDE (end = .);
142: }
143: __data_usr_org = LOADADDR(.bss) + SIZEOF(.bss);
144: .data_usr ALIGN(0x1000) : AT(__data_usr_org) {
145: __data_usr_start = . ;
146: *.uo(.data)
147: *.uo(.data.*)
148: *.uo(.data1)
149: KEEP (*.uo(.eh_frame))
150: *.uo(.gcc_except_table)
151: *.uo(.sdata)
152: *.uo(.sdata.*)
153: . = ALIGN(4);
154: _edata_usr = .;
155: PROVIDE (edata_usr = .);
156: }
157: .bss_usr ALIGN(4) : {
158: __bss_usr_start = .;
159: PROVIDE (__sbss_usr_start = .);
160: PROVIDE (___sbss_usr_start = .);
161: *.uo(.sbss)
162: *.uo(.sbss.*)
163: *.uo(.scommon)
164: PROVIDE (__sbss_usr_end = .);
165: PROVIDE (___sbss_usr_end = .);
166: *.uo(.bss)
167: *.uo(.bss.*)
168: *.uo(COMMON)
169: . = ALIGN(4);
170: _end_usr = .;
171: PROVIDE (end_usr = .);
172: }
173: }