source: rtems/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds @ 8ac4213

4.104.114.84.95
Last change on this file since 8ac4213 was 702c5f5, checked in by Joel Sherrill <joel.sherrill@…>, on 10/27/99 at 15:29:18

The rxgen960 BSP and i960 RPM support was submitted by Mark Bronson
<mark@…> of RAMIX.

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