source: rtems/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real @ 2aa61582

4.104.114.84.95
Last change on this file since 2aa61582 was 2aa61582, checked in by Joel Sherrill <joel.sherrill@…>, on 05/09/02 at 21:42:24

2001-05-09 Joel Sherrill <joel@…>

  • startup/linkcmds: In support of gcc 3.1, added one of more of the sections .jcr, .rodata*, .data.*, .gnu.linkonce.s2.*, .gnu.linkonce.sb2.*, and .gnu.linkonce.s.*. Spacing corrections and direction of segments to memory regions may also have been addressed. This was a sweep across all BSPs.
  • startup/linkcmds.real: Ditto.
  • clock/ckinit.c: Add volatile to Clock_driver_ticks.
  • Property mode set to 100644
File size: 4.6 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        *(.eh_fram)
110        . = ALIGN (16);
111
112        /*
113         * C++ constructors
114         */
115        __CTOR_LIST__ = .;
116        LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
117        *(.ctors)
118        LONG(0)
119        __CTOR_END__ = .;
120        __DTOR_LIST__ = .;
121        LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
122        *(.dtors)
123        LONG(0)
124        __DTOR_END__ = .;
125        _rodata_start = . ;
126        *(.rodata*)
127        *(.gnu.linkonce.r*)
128        _erodata = ALIGN( 0x10 ) ;
129        etext = ALIGN( 0x10 ) ;
130/* END NEW TEST TEST TEST */
131        /* 16 byte aligned PRCB.
132         */
133      . = ALIGN(16);
134      prcb.o(.data)
135        /* 16 byte aligned Control Table.
136         */
137      . = ALIGN(16);
138      cntrltbl.o(.data)                 
139      . = ALIGN(16);
140        systbl.o(.data)
141        /* All the rest of program defined data goes here.
142         */
143      *(.data)
144        /* RAM-based code section end.
145         * I need this symbol to know where to copy code
146         * at initialization time .
147         */   
148      _codeRamEnd = .;
149    } > eprom
150 
151    /* RAM based uninitialized data.
152     */   
153  bss (NOLOAD) :
154    {
155        /* BSS section start. I need this symbol to
156         * zero BSS on initialization.
157         */
158        /* Heap.  Aligned on a 64 boundary */
159      /* . = ALIGN(64);
160      _heap_initial = .;
161      . += 64K;*/
162        /* Supervisor Stack. Aligned on a 16 boundary.
163         */
164      . = ALIGN(16);
165      _svrStackPtr = .;
166      . += 16K;
167        /* Interrupt Stack. Aligned on a 16 boundary.
168         */
169      . = ALIGN(16);
170      _intStackPtr = .;
171      . += 16K;
172        /* Program defined BSS.
173         */
174      _bssStart = .;
175      _bss_start = .;
176      *(.bss)
177        /* Program defined COMMON.
178         */
179      *(COMMON)
180      _end = .;
181        /* BSS section end. I need this symbol to
182         * zero BSS on initialization.
183         */
184      _bssEnd = .;
185      _bssStart_1 = .;
186      _bssEnd_1 = .;
187    } > eprom
188
189}
190
191/*-------------*/
192/* End of file */
193/*-------------*/
Note: See TracBrowser for help on using the repository browser.