source: rtems/c/src/lib/libbsp/m68k/mcf5329/start/start.S @ e9db9661

4.9.1
Last change on this file since e9db9661 was 6b56ec3, checked in by Joel Sherrill <joel.sherrill@…>, on 06/20/08 at 14:58:34

2008-06-20 Matthew Riek <matthew.riek@…>

  • ChangeLog?, Makefile.am, README, bsp_specs, configure.ac, gdb-init, preinstall.am, clock/clock.c, console/console.c, include/bsp.h, include/bspopts.h.in, include/coverhd.h, include/tm27.h, network/network.c, start/start.S, startup/bspclean.c, startup/bspstart.c, startup/cfinit.c, startup/init5329.c, startup/linkcmds, startup/linkcmdsflash, timer/timer.c: New files.
  • Property mode set to 100644
File size: 10.7 KB
Line 
1/*
2 *  mcf52235 startup code
3 *
4 *  This file contains the entry point for the application.
5 *  The name of this entry point is compiler dependent.
6 *  It jumps to the BSP which is responsible for performing
7 *  all initialization.
8 *
9 *  COPYRIGHT (c) 1989-1998.
10 *  On-Line Applications Research Corporation (OAR).
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *
15 *  http://www.rtems.com/license/LICENSE.
16 *
17 *  $Id$
18 */
19
20#include <rtems/asm.h>
21
22.extern _StackInit
23
24BEGIN_CODE
25   
26    PUBLIC (_INTERRUPT_VECTOR)
27SYM(_INTERRUPT_VECTOR):
28
29    .long   _StackInit /* 00 Initial 'SSP' */
30    .long   SYM(start) /* 01 Initial PC */
31    .long   SYM(_uhoh) /* 02 Access Error */
32    .long   SYM(_uhoh) /* 03 Address Error */
33    .long   SYM(_uhoh) /* 04 Illegal Instruction */
34    .long   SYM(_uhoh) /* 05 Divide by Zero */
35    .long   SYM(_uhoh) /* 06 Reserved */
36    .long   SYM(_uhoh) /* 07 Reserved */
37    .long   SYM(_uhoh) /* 08 Privilege Violation */
38    .long   SYM(_uhoh) /* 09 Trace */
39    .long   SYM(_uhoh) /* 10 Unimplemented A-Line */
40    .long   SYM(_uhoh) /* 11 Unimplemented F-Line */
41    .long   SYM(_uhoh) /* 12 Debug Interrupt */
42    .long   SYM(_uhoh) /* 13 Reserved */
43    .long   SYM(_uhoh) /* 14 Format Error */
44    .long   SYM(_uhoh) /* 15 Reserved */
45    .long   SYM(_uhoh) /* 16 Reserved */
46    .long   SYM(_uhoh) /* 17 Reserved */
47    .long   SYM(_uhoh) /* 18 Reserved */
48    .long   SYM(_uhoh) /* 19 Reserved */
49    .long   SYM(_uhoh) /* 20 Reserved */
50    .long   SYM(_uhoh) /* 21 Reserved */
51    .long   SYM(_uhoh) /* 22 Reserved */
52    .long   SYM(_uhoh) /* 23 Reserved */
53    .long   SYM(_spuriousInterrupt) /* 24 Spurious Interrupt */
54    .long   SYM(_uhoh) /* Reserved */
55    .long   SYM(_uhoh) /* Reserved */
56    .long   SYM(_uhoh) /* Reserved */
57    .long   SYM(_uhoh) /* Reserved */
58    .long   SYM(_uhoh) /* Reserved */
59    .long   SYM(_uhoh) /* Reserved */
60    .long   SYM(_uhoh) /* Reserved */
61    .long   SYM(_uhoh) /* 32 TRAP #0 */
62    .long   SYM(_uhoh) /* 33 TRAP #1 */
63    .long   SYM(_uhoh) /* 34 TRAP #2 */
64    .long   SYM(_uhoh) /* 35 TRAP #3 */
65    .long   SYM(_uhoh) /* 36 TRAP #4 */
66    .long   SYM(_uhoh) /* 37 TRAP #5 */
67    .long   SYM(_uhoh) /* 38 TRAP #6 */
68    .long   SYM(_uhoh) /* 39 TRAP #7 */
69    .long   SYM(_uhoh) /* 40 TRAP #8 */
70    .long   SYM(_uhoh) /* 41 TRAP #9 */
71    .long   SYM(_uhoh) /* 42 TRAP #10 */
72    .long   SYM(_uhoh) /* 43 TRAP #11 */
73    .long   SYM(_uhoh) /* 44 TRAP #12 */
74    .long   SYM(_uhoh) /* 45 TRAP #13 */
75    .long   SYM(_uhoh) /* 46 TRAP #14 */
76    .long   SYM(_uhoh) /* 47 TRAP #15 */
77    .long   SYM(_uhoh) /* 48 Reserved */
78    .long   SYM(_uhoh) /* 49 Reserved */
79    .long   SYM(_uhoh) /* 50 Reserved */
80    .long   SYM(_uhoh) /* 51 Reserved */
81    .long   SYM(_uhoh) /* 52 Reserved */
82    .long   SYM(_uhoh) /* 53 Reserved */
83    .long   SYM(_uhoh) /* 54 Reserved */
84    .long   SYM(_uhoh) /* 55 Reserved */
85    .long   SYM(_uhoh) /* 56 Reserved */
86    .long   SYM(_uhoh) /* 57 Reserved */
87    .long   SYM(_uhoh) /* 58 Reserved */
88    .long   SYM(_uhoh) /* 59 Reserved */
89    .long   SYM(_uhoh) /* 60 Reserved */
90    .long   SYM(_uhoh) /* 61 Reserved */
91    .long   SYM(_uhoh) /* 62 Reserved */
92    .long   SYM(_uhoh) /* 63 Reserved */
93
94    /* INTC0 */
95
96    .long   SYM(_uhoh) /* 64*/
97    .long   SYM(_uhoh) /* 65*/
98    .long   SYM(_uhoh) /* 66*/
99    .long   SYM(_uhoh) /* 67*/
100    .long   SYM(_uhoh) /* 68*/
101    .long   SYM(_uhoh) /* 69*/
102    .long   SYM(_uhoh) /* 70*/
103    .long   SYM(_uhoh) /* 71*/
104    .long   SYM(_uhoh) /* 72*/
105    .long   SYM(_uhoh) /* 73*/
106    .long   SYM(_uhoh) /* 74*/
107    .long   SYM(_uhoh) /* 75*/
108    .long   SYM(_uhoh) /* 76*/
109    .long   SYM(_uhoh) /* 77*/
110    .long   SYM(_uhoh) /* 78*/
111    .long   SYM(_uhoh) /* 79*/
112    .long   SYM(_uhoh) /* 80*/
113    .long   SYM(_uhoh) /* 81*/
114    .long   SYM(_uhoh) /* 82*/
115    .long   SYM(_uhoh) /* 83*/
116    .long   SYM(_uhoh) /* 84*/
117    .long   SYM(_uhoh) /* 85*/
118    .long   SYM(_uhoh) /* 86*/
119    .long   SYM(_uhoh) /* 87*/
120    .long   SYM(_uhoh) /* 88*/
121    .long   SYM(_uhoh) /* 89*/
122    .long   SYM(_uhoh) /* 90*/
123    .long   SYM(_uhoh) /* 91*/
124    .long   SYM(_uhoh) /* 92*/
125    .long   SYM(_uhoh) /* 93*/
126    .long   SYM(_uhoh) /* 94*/
127    .long   SYM(_uhoh) /* 95*/
128    .long   SYM(_uhoh) /* 96*/
129    .long   SYM(_uhoh) /* 97*/
130    .long   SYM(_uhoh) /* 98*/
131    .long   SYM(_uhoh) /* 99*/
132    .long   SYM(_uhoh) /* 100*/
133    .long   SYM(_uhoh) /* 101*/
134    .long   SYM(_uhoh) /* 102*/
135    .long   SYM(_uhoh) /* 103*/
136    .long   SYM(_uhoh) /* 104*/
137    .long   SYM(_uhoh) /* 105*/
138    .long   SYM(_uhoh) /* 106*/
139    .long   SYM(_uhoh) /* 107*/
140    .long   SYM(_uhoh) /* 108*/
141    .long   SYM(_uhoh) /* 109*/
142    .long   SYM(_uhoh) /* 110*/
143    .long   SYM(_uhoh) /* 111*/
144    .long   SYM(_uhoh) /* 112*/
145    .long   SYM(_uhoh) /* 113*/
146    .long   SYM(_uhoh) /* 114*/
147    .long   SYM(_uhoh) /* 115*/
148    .long   SYM(_uhoh) /* 116*/
149    .long   SYM(_uhoh) /* 117*/
150    .long   SYM(_uhoh) /* 118*/
151    .long   SYM(_uhoh) /* 119*/
152    .long   SYM(_uhoh) /* 120*/
153    .long   SYM(_uhoh) /* 121*/
154    .long   SYM(_uhoh) /* 122*/
155    .long   SYM(_uhoh) /* 123*/
156    .long   SYM(_uhoh) /* 124*/
157    .long   SYM(_uhoh) /* 125*/
158    .long   SYM(_uhoh) /* 126*/
159    .long   SYM(_uhoh) /* 127*/
160
161    /* INTC1 */
162
163    .long   SYM(_uhoh) /* 128*/
164    .long   SYM(_uhoh) /* 129*/
165    .long   SYM(_uhoh) /* 130*/
166    .long   SYM(_uhoh) /* 131*/
167    .long   SYM(_uhoh) /* 132*/
168    .long   SYM(_uhoh) /* 133*/
169    .long   SYM(_uhoh) /* 134*/
170    .long   SYM(_uhoh) /* 135*/
171    .long   SYM(_uhoh) /* 136*/
172    .long   SYM(_uhoh) /* 137*/
173    .long   SYM(_uhoh) /* 138*/
174    .long   SYM(_uhoh) /* 139*/
175    .long   SYM(_uhoh) /* 140*/
176    .long   SYM(_uhoh) /* 141*/
177    .long   SYM(_uhoh) /* 142*/
178    .long   SYM(_uhoh) /* 143*/
179    .long   SYM(_uhoh) /* 144*/
180    .long   SYM(_uhoh) /* 145*/
181    .long   SYM(_uhoh) /* 146*/
182    .long   SYM(_uhoh) /* 147*/
183    .long   SYM(_uhoh) /* 148*/
184    .long   SYM(_uhoh) /* 149*/
185    .long   SYM(_uhoh) /* 150*/
186    .long   SYM(_uhoh) /* 151*/
187    .long   SYM(_uhoh) /* 152*/
188    .long   SYM(_uhoh) /* 153*/
189    .long   SYM(_uhoh) /* 154*/
190    .long   SYM(_uhoh) /* 155*/
191    .long   SYM(_uhoh) /* 156*/
192    .long   SYM(_uhoh) /* 157*/
193    .long   SYM(_uhoh) /* 158*/
194    .long   SYM(_uhoh) /* 159*/
195    .long   SYM(_uhoh) /* 160*/
196    .long   SYM(_uhoh) /* 161*/
197    .long   SYM(_uhoh) /* 162*/
198    .long   SYM(_uhoh) /* 163*/
199    .long   SYM(_uhoh) /* 164*/
200    .long   SYM(_uhoh) /* 165*/
201    .long   SYM(_uhoh) /* 166*/
202    .long   SYM(_uhoh) /* 167*/
203    .long   SYM(_uhoh) /* 168*/
204    .long   SYM(_uhoh) /* 169*/
205    .long   SYM(_uhoh) /* 170*/
206    .long   SYM(_uhoh) /* 171*/
207    .long   SYM(_uhoh) /* 172*/
208    .long   SYM(_uhoh) /* 173*/
209    .long   SYM(_uhoh) /* 174*/
210    .long   SYM(_uhoh) /* 175*/
211    .long   SYM(_uhoh) /* 176*/
212    .long   SYM(_uhoh) /* 177*/
213    .long   SYM(_uhoh) /* 178*/
214    .long   SYM(_uhoh) /* 179*/
215    .long   SYM(_uhoh) /* 180*/
216    .long   SYM(_uhoh) /* 181*/
217    .long   SYM(_uhoh) /* 182*/
218    .long   SYM(_uhoh) /* 183*/
219    .long   SYM(_uhoh) /* 184*/
220    .long   SYM(_uhoh) /* 185*/
221    .long   SYM(_uhoh) /* 186*/
222    .long   SYM(_uhoh) /* 187*/
223    .long   SYM(_uhoh) /* 188*/
224    .long   SYM(_uhoh) /* 189*/
225    .long   SYM(_uhoh) /* 190*/
226    .long   SYM(_uhoh) /* 191*/
227    .long   SYM(_uhoh) /* 192*/
228
229    /* */
230
231    .long   SYM(_uhoh) /* 193*/
232    .long   SYM(_uhoh) /* 194*/
233    .long   SYM(_uhoh) /* 195*/
234    .long   SYM(_uhoh) /* 196*/
235    .long   SYM(_uhoh) /* 197*/
236    .long   SYM(_uhoh) /* 198*/
237    .long   SYM(_uhoh) /* 199*/
238    .long   SYM(_uhoh) /* 200*/
239    .long   SYM(_uhoh) /* 201*/
240    .long   SYM(_uhoh) /* 202*/
241    .long   SYM(_uhoh) /* 203*/
242    .long   SYM(_uhoh) /* 204*/
243    .long   SYM(_uhoh) /* 205*/
244    .long   SYM(_uhoh) /* 206*/
245    .long   SYM(_uhoh) /* 207*/
246    .long   SYM(_uhoh) /* 208*/
247    .long   SYM(_uhoh) /* 209*/
248    .long   SYM(_uhoh) /* 210*/
249    .long   SYM(_uhoh) /* 211*/
250    .long   SYM(_uhoh) /* 212*/
251    .long   SYM(_uhoh) /* 213*/
252    .long   SYM(_uhoh) /* 214*/
253    .long   SYM(_uhoh) /* 215*/
254    .long   SYM(_uhoh) /* 216*/
255    .long   SYM(_uhoh) /* 217*/
256    .long   SYM(_uhoh) /* 218*/
257    .long   SYM(_uhoh) /* 219*/
258    .long   SYM(_uhoh) /* 220*/
259    .long   SYM(_uhoh) /* 221*/
260    .long   SYM(_uhoh) /* 222*/
261    .long   SYM(_uhoh) /* 223*/
262    .long   SYM(_uhoh) /* 224*/
263    .long   SYM(_uhoh) /* 225*/
264    .long   SYM(_uhoh) /* 226*/
265    .long   SYM(_uhoh) /* 227*/
266    .long   SYM(_uhoh) /* 228*/
267    .long   SYM(_uhoh) /* 229*/
268    .long   SYM(_uhoh) /* 230*/
269    .long   SYM(_uhoh) /* 231*/
270    .long   SYM(_uhoh) /* 232*/
271    .long   SYM(_uhoh) /* 233*/
272    .long   SYM(_uhoh) /* 234*/
273    .long   SYM(_uhoh) /* 235*/
274    .long   SYM(_uhoh) /* 236*/
275    .long   SYM(_uhoh) /* 237*/
276    .long   SYM(_uhoh) /* 238*/
277    .long   SYM(_uhoh) /* 239*/
278    .long   SYM(_uhoh) /* 240*/
279    .long   SYM(_uhoh) /* 241*/
280    .long   SYM(_uhoh) /* 242*/
281    .long   SYM(_uhoh) /* 243*/
282    .long   SYM(_uhoh) /* 244*/
283    .long   SYM(_uhoh) /* 245*/
284    .long   SYM(_uhoh) /* 246*/
285    .long   SYM(_uhoh) /* 247*/
286    .long   SYM(_uhoh) /* 248*/
287    .long   SYM(_uhoh) /* 249*/
288    .long   SYM(_uhoh) /* 250*/
289    .long   SYM(_uhoh) /* 251*/
290    .long   SYM(_uhoh) /* 252*/
291    .long   SYM(_uhoh) /* 253*/
292    .long   SYM(_uhoh) /* 254*/
293    .long   SYM(_uhoh) /* 255*/
294
295/*
296 * Default trap handler
297 * With an oscilloscope you can see AS* stop
298 */
299.align 4
300    PUBLIC (_uhoh)
301SYM(_uhoh):
302    nop                     | Leave spot for breakpoint
303    stop    #0x2700         | Stop with interrupts disabled
304    bra.w   SYM(_uhoh)      | Stuck forever
305
306/*
307 * Spurious Interrupt Handler
308 */
309.align 4
310    PUBLIC (_spuriousInterrupt)
311SYM(_spuriousInterrupt):
312    addql   #1, SYM(_M68kSpuriousInterruptCount)
313    rte
314
315/*
316 * Write VBR Register
317 */
318.align 4
319    PUBLIC (_wr_vbr)
320SYM(_wr_vbr):
321    move.l  4(sp), d0
322    movec   d0, vbr
323    nop
324    rts
325
326/*
327 * Board startup
328 * Disable watchdog, interrupts
329 * Enable sram
330 */
331.align 4
332    PUBLIC (start)
333SYM(start):
334
335    /* Mask off interupts */
336    move.w   #0x2700,sr
337
338    /* Save off reset values of D0 and D1 */
339    move.l  d0,d6
340    move.l  d1,d7
341
342    /* Initialize RAMBAR1: locate SRAM and validate it */
343    move.l  #_CoreSRamBase,d0
344    add.l   #0x221,d0
345    movec   d0,%rambar
346
347    /* Save off intial D0 and D1 to RAM */
348    move.l  d6, SYM(_d0_reset)
349    move.l  d7, SYM(_d1_reset)
350
351    /* Locate Stack Pointer */
352    move.l  #_StackInit,sp
353
354    /*
355     * Remainder of the startup code is handled by C code
356     * This never returns
357     */
358    jmp SYM(Init5329)
359
360END_CODE
361
362
363BEGIN_DATA_DCL
364
365    .align 4
366
367PUBLIC (_M68kSpuriousInterruptCount)
368SYM (_M68kSpuriousInterruptCount):
369    .long   0
370
371PUBLIC (_d0_reset)
372SYM (_d0_reset):
373    .long   0
374
375PUBLIC (_d1_reset)
376SYM (_d1_reset):
377    .long   0
378
379END_DATA_DCL
380
381END
382
Note: See TracBrowser for help on using the repository browser.