source: rtems/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real @ 129daf3

4.104.114.84.95
Last change on this file since 129daf3 was 9c1133e, checked in by Joel Sherrill <joel.sherrill@…>, on 01/20/03 at 19:57:14

mkChangeLogList [-n]

  • Property mode set to 100644
File size: 4.8 KB
Line 
1/*------------------------------------*/
2/* rom.ld                             */
3/* Last change : 19. 4.95             */
4/*------------------------------------*
5 * To build ROM based i960 image.
6 *------------------------------------*/
7
8/*
9 *  $Id$
10 */
11
12
13MEMORY
14{
15  config : org = 0xFEFFFF30, len = 0xd0
16  eprom  : org = 0xFEC00000, len = 1024K
17}
18
19
20_bootAddr = 0xa0200000;
21/*_HEAP = 0xA0100000 ; */
22_rom_ibr_cksum = -(_romStart + _rom_prcb);
23
24SECTIONS
25{
26  prcb :
27    {
28      *(.prcb);  /* INPUT(rom_ibr.o) */
29    } > config
30   
31    /* Only monitor start point and fault handler
32     * will live in ROM as far as text is concerned.
33     * Only fault table will live in ROM as far as data
34     * is concerned. 
35     */
36  romCode :
37    {
38        /* Make sure that the monitor start point
39         * is the first location in EPROM.
40         */
41      rxgen_romld.o(.text)
42        /* Procedures to copy code and
43         * initialize bss in RAM.
44         */
45      sctns.o(.text)   
46        /* Make Sure Fault Table (and its handler's data)
47         * live here so that they wouldn't get destroyed).
48         */
49      asmfault.o   
50      ihandler.o
51      . = ALIGN(16);
52      flttbl.o
53        /* 16 byte aligned PRCB.
54         */
55      . = ALIGN(16);
56        rom_prcb.o(.data)
57      . = ALIGN(16);
58        rom_cntrltbl.o(.data)
59      . = ALIGN(16);
60        intrtbl.o(.data)
61      . = ALIGN(16);
62        nulsystbl.o(.data)
63      . = ALIGN(16);
64        /* I need this symbol to know where code which is
65         * to be copied reside in ROM. Align it on a 16
66         * boundary.
67         */       
68      . = ALIGN(16); 
69      _codeRomStart = .;   
70    } > eprom
71   
72    /* All the rest of the code will live in RAM.
73     * Relocation are created as though code resides
74     * in RAM, while code is placed right after romCode.
75     * This is responsiblity of the ROM monitor to
76     * copy code into ROM.
77     */   
78  ramCode : AT(ADDR(romCode) + SIZEOF(romCode))
79    {
80        /* RAM-based code section start.
81         * I need this symbol to know where to copy code
82         * at initialization time .
83         */
84      _codeRamStart = .;
85        /* RAM based fault recovery stuff.
86         */
87      _faultStart = .;
88      asmstub.o
89      fault.o
90      _faultEnd = .;
91        /* Check sum to gurantee that
92         * the above section wasn't broken.
93         */
94      . = ALIGN(16);
95      _faultCheckSum = .;
96      . += 4;
97        /* Fault Buffer to keep the state of
98         * the fauled procedure.
99         */
100      _faultBuffer = .;
101      . += 256;   
102        /* All the rest of the text goes here.
103         */
104      . = ALIGN(16);   
105      *(.text)
106/* NEW TEST TEST TEST TEST */
107                . = ALIGN (16);
108
109        /*
110         * Special FreeBSD sysctl sections.
111         */
112        . = ALIGN (16);
113        __start_set_sysctl_set = .;
114        *(set_sysctl_*);
115        __stop_set_sysctl_set = ABSOLUTE(.);
116        *(set_domain_*);
117        *(set_pseudo_*);
118
119        *(.eh_fram)
120        . = ALIGN (16);
121
122        /*
123         * C++ constructors
124         */
125        __CTOR_LIST__ = .;
126        LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
127        *(.ctors)
128        LONG(0)
129        __CTOR_END__ = .;
130        __DTOR_LIST__ = .;
131        LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
132        *(.dtors)
133        LONG(0)
134        __DTOR_END__ = .;
135        _rodata_start = . ;
136        *(.rodata*)
137        *(.gnu.linkonce.r*)
138        _erodata = ALIGN( 0x10 ) ;
139        etext = ALIGN( 0x10 ) ;
140/* END NEW TEST TEST TEST */
141        /* 16 byte aligned PRCB.
142         */
143      . = ALIGN(16);
144      prcb.o(.data)
145        /* 16 byte aligned Control Table.
146         */
147      . = ALIGN(16);
148      cntrltbl.o(.data)                 
149      . = ALIGN(16);
150        systbl.o(.data)
151        /* All the rest of program defined data goes here.
152         */
153      *(.data)
154        /* RAM-based code section end.
155         * I need this symbol to know where to copy code
156         * at initialization time .
157         */   
158      _codeRamEnd = .;
159    } > eprom
160 
161    /* RAM based uninitialized data.
162     */   
163  bss (NOLOAD) :
164    {
165        /* BSS section start. I need this symbol to
166         * zero BSS on initialization.
167         */
168        /* Heap.  Aligned on a 64 boundary */
169      /* . = ALIGN(64);
170      _heap_initial = .;
171      . += 64K;*/
172        /* Supervisor Stack. Aligned on a 16 boundary.
173         */
174      . = ALIGN(16);
175      _svrStackPtr = .;
176      . += 16K;
177        /* Interrupt Stack. Aligned on a 16 boundary.
178         */
179      . = ALIGN(16);
180      _intStackPtr = .;
181      . += 16K;
182        /* Program defined BSS.
183         */
184      _bssStart = .;
185      _bss_start = .;
186      *(.bss)
187        /* Program defined COMMON.
188         */
189      *(COMMON)
190      _end = .;
191        /* BSS section end. I need this symbol to
192         * zero BSS on initialization.
193         */
194      _bssEnd = .;
195      _bssStart_1 = .;
196      _bssEnd_1 = .;
197    } > eprom
198
199}
200
201/*-------------*/
202/* End of file */
203/*-------------*/
Note: See TracBrowser for help on using the repository browser.