OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [m68k/] [ods68302/] [start/] [reset.S] - Blame information for rev 173

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
2
 *  $Id: reset.S,v 1.2 2001-09-27 12:00:21 chris Exp $
3
 *
4
 *  Re-written the gen68302 start-up code.
5
 *
6
 *  Uses gas syntax only, removed the OAR asm.h.
7
 *
8
 *  Supplies a complete vector table in ROM.
9
 *
10
 *  Manages all vectors with seperate handlers to trap unhandled
11
 *  execptions.
12
 *
13
 *  Uses the target specific header file to get the runtime
14
 *  configuration
15
 *
16
 *  COPYRIGHT (c) 1996
17
 *  Objective Design Systems Pty Ltd (ODS)
18
 *
19
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
20
 *  On-Line Applications Research Corporation (OAR).
21
 *  All rights assigned to U.S. Government, 1994.
22
 *
23
 *  This material may be reproduced by or for the U.S. Government pursuant
24
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
25
 *  notice must appear in all copies of this file and its derivatives.
26
 *
27
 */
28
 
29
|
30
| some basic defined, this is that is required
31
|
32
#define MC68302_BAR                0x000000F2
33
#define MC68302_BAR_FC_CFC         0x0000
34
#define MC68302_SYS_RAM_SIZE       0x240
35
 
36
|
37
| Boot boot code in a special section, ld postions
38
|
39
| Initial stack pointer is in the dual ported RAM
40
|
41
        .sect   .text
42
 
43
        .global M68Kvec                 | Vector Table
44
 
45
M68Kvec:                                | standard location for vectors
46
 
47
|
48
| Make relative, can have the code positioned any where
49
|
50
 
51
V___ISSP: .long  MC68302_BASE + MC68302_SYS_RAM_SIZE
52
V____IPC: .long  start - V___ISSP
53
 
54
|
55
| Create the rest of the vector table to point to the unhandled expection
56
| handler
57
|
58
| Lots of macros, how-ever it creates a simple ROM vector table
59
|
60
 
61
exception_handler = unhandled_exception - V___ISSP
62
#define MAKE_EXCEPTION_VECTOR(n) V___##n: .long (exception_handler + (n * 8))
63
 
64
MAKE_EXCEPTION_VECTOR(2)
65
MAKE_EXCEPTION_VECTOR(3)
66
MAKE_EXCEPTION_VECTOR(4)
67
MAKE_EXCEPTION_VECTOR(5)
68
MAKE_EXCEPTION_VECTOR(6)
69
MAKE_EXCEPTION_VECTOR(7)
70
MAKE_EXCEPTION_VECTOR(8)
71
MAKE_EXCEPTION_VECTOR(9)
72
 
73
MAKE_EXCEPTION_VECTOR(10)
74
MAKE_EXCEPTION_VECTOR(11)
75
MAKE_EXCEPTION_VECTOR(12)
76
MAKE_EXCEPTION_VECTOR(13)
77
MAKE_EXCEPTION_VECTOR(14)
78
MAKE_EXCEPTION_VECTOR(15)
79
MAKE_EXCEPTION_VECTOR(16)
80
MAKE_EXCEPTION_VECTOR(17)
81
MAKE_EXCEPTION_VECTOR(18)
82
MAKE_EXCEPTION_VECTOR(19)
83
 
84
MAKE_EXCEPTION_VECTOR(20)
85
MAKE_EXCEPTION_VECTOR(21)
86
MAKE_EXCEPTION_VECTOR(22)
87
MAKE_EXCEPTION_VECTOR(23)
88
MAKE_EXCEPTION_VECTOR(24)
89
MAKE_EXCEPTION_VECTOR(25)
90
MAKE_EXCEPTION_VECTOR(26)
91
MAKE_EXCEPTION_VECTOR(27)
92
MAKE_EXCEPTION_VECTOR(28)
93
MAKE_EXCEPTION_VECTOR(29)
94
 
95
MAKE_EXCEPTION_VECTOR(30)
96
MAKE_EXCEPTION_VECTOR(31)
97
MAKE_EXCEPTION_VECTOR(32)
98
MAKE_EXCEPTION_VECTOR(33)
99
MAKE_EXCEPTION_VECTOR(34)
100
MAKE_EXCEPTION_VECTOR(35)
101
MAKE_EXCEPTION_VECTOR(36)
102
MAKE_EXCEPTION_VECTOR(37)
103
MAKE_EXCEPTION_VECTOR(38)
104
MAKE_EXCEPTION_VECTOR(39)
105
 
106
MAKE_EXCEPTION_VECTOR(40)
107
MAKE_EXCEPTION_VECTOR(41)
108
MAKE_EXCEPTION_VECTOR(42)
109
MAKE_EXCEPTION_VECTOR(43)
110
MAKE_EXCEPTION_VECTOR(44)
111
MAKE_EXCEPTION_VECTOR(45)
112
MAKE_EXCEPTION_VECTOR(46)
113
MAKE_EXCEPTION_VECTOR(47)
114
MAKE_EXCEPTION_VECTOR(48)
115
MAKE_EXCEPTION_VECTOR(49)
116
 
117
MAKE_EXCEPTION_VECTOR(50)
118
MAKE_EXCEPTION_VECTOR(51)
119
MAKE_EXCEPTION_VECTOR(52)
120
MAKE_EXCEPTION_VECTOR(53)
121
MAKE_EXCEPTION_VECTOR(54)
122
MAKE_EXCEPTION_VECTOR(55)
123
MAKE_EXCEPTION_VECTOR(56)
124
MAKE_EXCEPTION_VECTOR(57)
125
MAKE_EXCEPTION_VECTOR(58)
126
MAKE_EXCEPTION_VECTOR(59)
127
 
128
MAKE_EXCEPTION_VECTOR(60)
129
MAKE_EXCEPTION_VECTOR(61)
130
MAKE_EXCEPTION_VECTOR(62)
131
MAKE_EXCEPTION_VECTOR(63)
132
MAKE_EXCEPTION_VECTOR(64)
133
MAKE_EXCEPTION_VECTOR(65)
134
MAKE_EXCEPTION_VECTOR(66)
135
MAKE_EXCEPTION_VECTOR(67)
136
MAKE_EXCEPTION_VECTOR(68)
137
MAKE_EXCEPTION_VECTOR(69)
138
 
139
MAKE_EXCEPTION_VECTOR(70)
140
MAKE_EXCEPTION_VECTOR(71)
141
MAKE_EXCEPTION_VECTOR(72)
142
MAKE_EXCEPTION_VECTOR(73)
143
MAKE_EXCEPTION_VECTOR(74)
144
MAKE_EXCEPTION_VECTOR(75)
145
MAKE_EXCEPTION_VECTOR(76)
146
MAKE_EXCEPTION_VECTOR(77)
147
MAKE_EXCEPTION_VECTOR(78)
148
MAKE_EXCEPTION_VECTOR(79)
149
 
150
MAKE_EXCEPTION_VECTOR(80)
151
MAKE_EXCEPTION_VECTOR(81)
152
MAKE_EXCEPTION_VECTOR(82)
153
MAKE_EXCEPTION_VECTOR(83)
154
MAKE_EXCEPTION_VECTOR(84)
155
MAKE_EXCEPTION_VECTOR(85)
156
MAKE_EXCEPTION_VECTOR(86)
157
MAKE_EXCEPTION_VECTOR(87)
158
MAKE_EXCEPTION_VECTOR(88)
159
MAKE_EXCEPTION_VECTOR(89)
160
 
161
MAKE_EXCEPTION_VECTOR(90)
162
MAKE_EXCEPTION_VECTOR(91)
163
MAKE_EXCEPTION_VECTOR(92)
164
MAKE_EXCEPTION_VECTOR(93)
165
MAKE_EXCEPTION_VECTOR(94)
166
MAKE_EXCEPTION_VECTOR(95)
167
MAKE_EXCEPTION_VECTOR(96)
168
MAKE_EXCEPTION_VECTOR(97)
169
MAKE_EXCEPTION_VECTOR(98)
170
MAKE_EXCEPTION_VECTOR(99)
171
 
172
MAKE_EXCEPTION_VECTOR(100)
173
MAKE_EXCEPTION_VECTOR(101)
174
MAKE_EXCEPTION_VECTOR(102)
175
MAKE_EXCEPTION_VECTOR(103)
176
MAKE_EXCEPTION_VECTOR(104)
177
MAKE_EXCEPTION_VECTOR(105)
178
MAKE_EXCEPTION_VECTOR(106)
179
MAKE_EXCEPTION_VECTOR(107)
180
MAKE_EXCEPTION_VECTOR(108)
181
MAKE_EXCEPTION_VECTOR(109)
182
 
183
MAKE_EXCEPTION_VECTOR(110)
184
MAKE_EXCEPTION_VECTOR(111)
185
MAKE_EXCEPTION_VECTOR(112)
186
MAKE_EXCEPTION_VECTOR(113)
187
MAKE_EXCEPTION_VECTOR(114)
188
MAKE_EXCEPTION_VECTOR(115)
189
MAKE_EXCEPTION_VECTOR(116)
190
MAKE_EXCEPTION_VECTOR(117)
191
MAKE_EXCEPTION_VECTOR(118)
192
MAKE_EXCEPTION_VECTOR(119)
193
 
194
MAKE_EXCEPTION_VECTOR(120)
195
MAKE_EXCEPTION_VECTOR(121)
196
MAKE_EXCEPTION_VECTOR(122)
197
MAKE_EXCEPTION_VECTOR(123)
198
MAKE_EXCEPTION_VECTOR(124)
199
MAKE_EXCEPTION_VECTOR(125)
200
MAKE_EXCEPTION_VECTOR(126)
201
MAKE_EXCEPTION_VECTOR(127)
202
MAKE_EXCEPTION_VECTOR(128)
203
MAKE_EXCEPTION_VECTOR(129)
204
 
205
MAKE_EXCEPTION_VECTOR(130)
206
MAKE_EXCEPTION_VECTOR(131)
207
MAKE_EXCEPTION_VECTOR(132)
208
MAKE_EXCEPTION_VECTOR(133)
209
MAKE_EXCEPTION_VECTOR(134)
210
MAKE_EXCEPTION_VECTOR(135)
211
MAKE_EXCEPTION_VECTOR(136)
212
MAKE_EXCEPTION_VECTOR(137)
213
MAKE_EXCEPTION_VECTOR(138)
214
MAKE_EXCEPTION_VECTOR(139)
215
 
216
MAKE_EXCEPTION_VECTOR(140)
217
MAKE_EXCEPTION_VECTOR(141)
218
MAKE_EXCEPTION_VECTOR(142)
219
MAKE_EXCEPTION_VECTOR(143)
220
MAKE_EXCEPTION_VECTOR(144)
221
MAKE_EXCEPTION_VECTOR(145)
222
MAKE_EXCEPTION_VECTOR(146)
223
MAKE_EXCEPTION_VECTOR(147)
224
MAKE_EXCEPTION_VECTOR(148)
225
MAKE_EXCEPTION_VECTOR(149)
226
 
227
MAKE_EXCEPTION_VECTOR(150)
228
MAKE_EXCEPTION_VECTOR(151)
229
MAKE_EXCEPTION_VECTOR(152)
230
MAKE_EXCEPTION_VECTOR(153)
231
MAKE_EXCEPTION_VECTOR(154)
232
MAKE_EXCEPTION_VECTOR(155)
233
MAKE_EXCEPTION_VECTOR(156)
234
MAKE_EXCEPTION_VECTOR(157)
235
MAKE_EXCEPTION_VECTOR(158)
236
MAKE_EXCEPTION_VECTOR(159)
237
 
238
MAKE_EXCEPTION_VECTOR(160)
239
MAKE_EXCEPTION_VECTOR(161)
240
MAKE_EXCEPTION_VECTOR(162)
241
MAKE_EXCEPTION_VECTOR(163)
242
MAKE_EXCEPTION_VECTOR(164)
243
MAKE_EXCEPTION_VECTOR(165)
244
MAKE_EXCEPTION_VECTOR(166)
245
MAKE_EXCEPTION_VECTOR(167)
246
MAKE_EXCEPTION_VECTOR(168)
247
MAKE_EXCEPTION_VECTOR(169)
248
 
249
MAKE_EXCEPTION_VECTOR(170)
250
MAKE_EXCEPTION_VECTOR(171)
251
MAKE_EXCEPTION_VECTOR(172)
252
MAKE_EXCEPTION_VECTOR(173)
253
MAKE_EXCEPTION_VECTOR(174)
254
MAKE_EXCEPTION_VECTOR(175)
255
MAKE_EXCEPTION_VECTOR(176)
256
MAKE_EXCEPTION_VECTOR(177)
257
MAKE_EXCEPTION_VECTOR(178)
258
MAKE_EXCEPTION_VECTOR(179)
259
 
260
MAKE_EXCEPTION_VECTOR(180)
261
MAKE_EXCEPTION_VECTOR(181)
262
MAKE_EXCEPTION_VECTOR(182)
263
MAKE_EXCEPTION_VECTOR(183)
264
MAKE_EXCEPTION_VECTOR(184)
265
MAKE_EXCEPTION_VECTOR(185)
266
MAKE_EXCEPTION_VECTOR(186)
267
MAKE_EXCEPTION_VECTOR(187)
268
MAKE_EXCEPTION_VECTOR(188)
269
MAKE_EXCEPTION_VECTOR(189)
270
 
271
MAKE_EXCEPTION_VECTOR(190)
272
MAKE_EXCEPTION_VECTOR(191)
273
MAKE_EXCEPTION_VECTOR(192)
274
MAKE_EXCEPTION_VECTOR(193)
275
MAKE_EXCEPTION_VECTOR(194)
276
MAKE_EXCEPTION_VECTOR(195)
277
MAKE_EXCEPTION_VECTOR(196)
278
MAKE_EXCEPTION_VECTOR(197)
279
MAKE_EXCEPTION_VECTOR(198)
280
MAKE_EXCEPTION_VECTOR(199)
281
 
282
MAKE_EXCEPTION_VECTOR(200)
283
MAKE_EXCEPTION_VECTOR(201)
284
MAKE_EXCEPTION_VECTOR(202)
285
MAKE_EXCEPTION_VECTOR(203)
286
MAKE_EXCEPTION_VECTOR(204)
287
MAKE_EXCEPTION_VECTOR(205)
288
MAKE_EXCEPTION_VECTOR(206)
289
MAKE_EXCEPTION_VECTOR(207)
290
MAKE_EXCEPTION_VECTOR(208)
291
MAKE_EXCEPTION_VECTOR(209)
292
 
293
MAKE_EXCEPTION_VECTOR(210)
294
MAKE_EXCEPTION_VECTOR(211)
295
MAKE_EXCEPTION_VECTOR(212)
296
MAKE_EXCEPTION_VECTOR(213)
297
MAKE_EXCEPTION_VECTOR(214)
298
MAKE_EXCEPTION_VECTOR(215)
299
MAKE_EXCEPTION_VECTOR(216)
300
MAKE_EXCEPTION_VECTOR(217)
301
MAKE_EXCEPTION_VECTOR(218)
302
MAKE_EXCEPTION_VECTOR(219)
303
 
304
MAKE_EXCEPTION_VECTOR(220)
305
MAKE_EXCEPTION_VECTOR(221)
306
MAKE_EXCEPTION_VECTOR(222)
307
MAKE_EXCEPTION_VECTOR(223)
308
MAKE_EXCEPTION_VECTOR(224)
309
MAKE_EXCEPTION_VECTOR(225)
310
MAKE_EXCEPTION_VECTOR(226)
311
MAKE_EXCEPTION_VECTOR(227)
312
MAKE_EXCEPTION_VECTOR(228)
313
MAKE_EXCEPTION_VECTOR(229)
314
 
315
MAKE_EXCEPTION_VECTOR(230)
316
MAKE_EXCEPTION_VECTOR(231)
317
MAKE_EXCEPTION_VECTOR(232)
318
MAKE_EXCEPTION_VECTOR(233)
319
MAKE_EXCEPTION_VECTOR(234)
320
MAKE_EXCEPTION_VECTOR(235)
321
MAKE_EXCEPTION_VECTOR(236)
322
MAKE_EXCEPTION_VECTOR(237)
323
MAKE_EXCEPTION_VECTOR(238)
324
MAKE_EXCEPTION_VECTOR(239)
325
 
326
MAKE_EXCEPTION_VECTOR(240)
327
MAKE_EXCEPTION_VECTOR(241)
328
MAKE_EXCEPTION_VECTOR(242)
329
MAKE_EXCEPTION_VECTOR(243)
330
MAKE_EXCEPTION_VECTOR(244)
331
MAKE_EXCEPTION_VECTOR(245)
332
MAKE_EXCEPTION_VECTOR(246)
333
MAKE_EXCEPTION_VECTOR(247)
334
MAKE_EXCEPTION_VECTOR(248)
335
MAKE_EXCEPTION_VECTOR(249)
336
 
337
MAKE_EXCEPTION_VECTOR(250)
338
MAKE_EXCEPTION_VECTOR(251)
339
MAKE_EXCEPTION_VECTOR(252)
340
MAKE_EXCEPTION_VECTOR(253)
341
MAKE_EXCEPTION_VECTOR(254)
342
MAKE_EXCEPTION_VECTOR(255)
343
 
344
|
345
| Start
346
|
347
| Entered from a hardware reset.
348
|
349
 
350
        .global start                           | Default entry point for GNU
351
start:
352
 
353
        move.w  #0x2700,%sr                     | Disable all interrupts
354
 
355
        |
356
        | Program the BAR, give us a stack !!
357
        |
358
 
359
        moveq   #0,%d0
360
        move.w  #(MC68302_BASE >> 12),%d0
361
        or.w    #(MC68302_BAR_FC_CFC << 12),%d0
362
        move.l  #MC68302_BAR,%a0
363
        move.w  %d0,%a0@(0)
364
 
365
        |
366
        | watch for sign extended maths with the linker on (boot_phase_1-V___ISSP)
367
        | manage the address with code, limited address of 2K at reset for CS0
368
        |
369
 
370
        move.l  #boot_phase_1,%d0
371
        and.l   #0x1FFF,%d0
372
        move.l  %d0,%a0
373
        jsr     %a0@(0)                         | programs all basic 302 registers
374
 
375
        |
376
        | Map to the 68302 registers
377
        |
378
 
379
        move.l  #MC68302_BASE,%a5
380
 
381
        |
382
        | Make a vector table in RAM
383
        |
384
 
385
        move.l  #RAM_BASE,%a0                   | a0 -> rom vector table
386
        moveal  #ROM_BASE,%a1                   | d1 -> start of tmp SRAM
387
 
388
        move.l  #255,%d0
389
 
390
copy_vec_table:
391
 
392
        move.l  (%a0)+,%d1
393
        or.l    #ROM_BASE,%d1
394
        move.l  %d1,(%a1)+
395
        subq.l  #1,%d0
396
        bne     copy_vec_table
397
 
398
#if defined(SYSTEM_TABLE_ANCHOR_OFFSET)
399
        |
400
        | Clear the system table
401
        |
402
 
403
        move.l  #SYSTEM_TABLE_ANCHOR_OFFSET,%a0
404
        move.l  #0,(%a0)
405
#endif
406
 
407
        |
408
        | Copy the chip select swap code to DPRAM and run it
409
        |
410
 
411
        move.l  #boot_phase_2,%d0
412
        and.l   #(ROM_SIZE - 1),%d0
413
        move.l  %d0,%a0                         | a0 -> remap code
414
        lea     %a5@(0),%a1                     | a1 -> internal system RAM
415
 
416
        move.l  #boot_phase_3,%d0
417
        and.l   #(ROM_SIZE - 1),%d0
418
        sub.l   %a0,%d0
419
 
420
copy_remap:
421
        move.b  (%a0)+,(%a1)+                   | copy
422
        dbra    %d0,copy_remap
423
 
424
        |
425
        | Jump to the remap code in the 68302''s internal system RAM.
426
        |
427
 
428
        jsr     %a5@(0)                         | execute the swap code
429
 
430
        |
431
        | Map to the 68302 registers
432
        |
433
 
434
        move.l  #MC68302_BASE,%a5
435
 
436
        |
437
        | Copy initialized data area from ROM to RAM
438
        |
439
 
440
copy_data:
441
        moveal  #_etext,%a0                     | find the end of .text
442
        moveal  #_copy_start,%a1                | find the beginning of .data
443
        moveal  #_edata,%a2                     | find the end of .data
444
 
445
copy_data_loop:
446
 
447
        movel   %a0@+,%a1@+                     | copy the data
448
        cmpal   %a2,%a1
449
        jlt     copy_data_loop                  | loop until edata reached
450
 
451
        |
452
        | zero out uninitialized data area
453
        |
454
 
455
zerobss:
456
        moveal  #_clear_end,%a0                 | find end of .bss
457
        moveal  #_clear_start,%a1               | find beginning of .bss
458
        moveq   #0,%d0
459
 
460
zerobss_loop:
461
 
462
        movel   %d0,%a1@+                       | to zero out uninitialized
463
        cmpal   %a0,%a1
464
        jlt     zerobss_loop                    | loop until _end reached
465
 
466
        movel   %d0,_stack_init                 | load stack top
467
 
468
        movw    #0x3700,%sr                     | SUPV MODE,INTERRUPTS OFF!!!
469
        movel   %d0,%a7                         | set master stack pointer
470
        movel   %d0,%a6                         | set base pointer
471
 
472
        jsr     boot_phase_3
473
 
474
|
475
| Create an unhandled exception jump table. The table has an entry for
476
| each vector in the vector table. The entry pushes the vector number onto
477
| the stack and then calls a common exception handler using PIC.
478
|
479
| The macros are to create the labels and format vectors.
480
|
481
 
482
#define cat(x, y) x ## y
483
#define FORMAT_ID(n) (n << 2)
484
#define EXCEPTION_HANDLER(h, n) EH__##n: move.w cat(h, FORMAT_ID(n)),-(%sp) ;  \
485
                                        bra  common_exception_handler
486
 
487
unhandled_exception:
488
 
489
EXCEPTION_HANDLER(#, 0)
490
EXCEPTION_HANDLER(#, 1)
491
EXCEPTION_HANDLER(#, 2)
492
EXCEPTION_HANDLER(#, 3)
493
EXCEPTION_HANDLER(#, 4)
494
EXCEPTION_HANDLER(#, 5)
495
EXCEPTION_HANDLER(#, 6)
496
EXCEPTION_HANDLER(#, 7)
497
EXCEPTION_HANDLER(#, 8)
498
EXCEPTION_HANDLER(#, 9)
499
 
500
EXCEPTION_HANDLER(#, 10)
501
EXCEPTION_HANDLER(#, 11)
502
EXCEPTION_HANDLER(#, 12)
503
EXCEPTION_HANDLER(#, 13)
504
EXCEPTION_HANDLER(#, 14)
505
EXCEPTION_HANDLER(#, 15)
506
EXCEPTION_HANDLER(#, 16)
507
EXCEPTION_HANDLER(#, 17)
508
EXCEPTION_HANDLER(#, 18)
509
EXCEPTION_HANDLER(#, 19)
510
 
511
EXCEPTION_HANDLER(#, 20)
512
EXCEPTION_HANDLER(#, 21)
513
EXCEPTION_HANDLER(#, 22)
514
EXCEPTION_HANDLER(#, 23)
515
EXCEPTION_HANDLER(#, 24)
516
EXCEPTION_HANDLER(#, 25)
517
EXCEPTION_HANDLER(#, 26)
518
EXCEPTION_HANDLER(#, 27)
519
EXCEPTION_HANDLER(#, 28)
520
EXCEPTION_HANDLER(#, 29)
521
 
522
EXCEPTION_HANDLER(#, 30)
523
EXCEPTION_HANDLER(#, 31)
524
EXCEPTION_HANDLER(#, 32)
525
EXCEPTION_HANDLER(#, 33)
526
EXCEPTION_HANDLER(#, 34)
527
EXCEPTION_HANDLER(#, 35)
528
EXCEPTION_HANDLER(#, 36)
529
EXCEPTION_HANDLER(#, 37)
530
EXCEPTION_HANDLER(#, 38)
531
EXCEPTION_HANDLER(#, 39)
532
 
533
EXCEPTION_HANDLER(#, 40)
534
EXCEPTION_HANDLER(#, 41)
535
EXCEPTION_HANDLER(#, 42)
536
EXCEPTION_HANDLER(#, 43)
537
EXCEPTION_HANDLER(#, 44)
538
EXCEPTION_HANDLER(#, 45)
539
EXCEPTION_HANDLER(#, 46)
540
EXCEPTION_HANDLER(#, 47)
541
EXCEPTION_HANDLER(#, 48)
542
EXCEPTION_HANDLER(#, 49)
543
 
544
EXCEPTION_HANDLER(#, 50)
545
EXCEPTION_HANDLER(#, 51)
546
EXCEPTION_HANDLER(#, 52)
547
EXCEPTION_HANDLER(#, 53)
548
EXCEPTION_HANDLER(#, 54)
549
EXCEPTION_HANDLER(#, 55)
550
EXCEPTION_HANDLER(#, 56)
551
EXCEPTION_HANDLER(#, 57)
552
EXCEPTION_HANDLER(#, 58)
553
EXCEPTION_HANDLER(#, 59)
554
 
555
EXCEPTION_HANDLER(#, 60)
556
EXCEPTION_HANDLER(#, 61)
557
EXCEPTION_HANDLER(#, 62)
558
EXCEPTION_HANDLER(#, 63)
559
EXCEPTION_HANDLER(#, 64)
560
EXCEPTION_HANDLER(#, 65)
561
EXCEPTION_HANDLER(#, 66)
562
EXCEPTION_HANDLER(#, 67)
563
EXCEPTION_HANDLER(#, 68)
564
EXCEPTION_HANDLER(#, 69)
565
 
566
EXCEPTION_HANDLER(#, 70)
567
EXCEPTION_HANDLER(#, 71)
568
EXCEPTION_HANDLER(#, 72)
569
EXCEPTION_HANDLER(#, 73)
570
EXCEPTION_HANDLER(#, 74)
571
EXCEPTION_HANDLER(#, 75)
572
EXCEPTION_HANDLER(#, 76)
573
EXCEPTION_HANDLER(#, 77)
574
EXCEPTION_HANDLER(#, 78)
575
EXCEPTION_HANDLER(#, 79)
576
 
577
EXCEPTION_HANDLER(#, 80)
578
EXCEPTION_HANDLER(#, 81)
579
EXCEPTION_HANDLER(#, 82)
580
EXCEPTION_HANDLER(#, 83)
581
EXCEPTION_HANDLER(#, 84)
582
EXCEPTION_HANDLER(#, 85)
583
EXCEPTION_HANDLER(#, 86)
584
EXCEPTION_HANDLER(#, 87)
585
EXCEPTION_HANDLER(#, 88)
586
EXCEPTION_HANDLER(#, 89)
587
 
588
EXCEPTION_HANDLER(#, 90)
589
EXCEPTION_HANDLER(#, 91)
590
EXCEPTION_HANDLER(#, 92)
591
EXCEPTION_HANDLER(#, 93)
592
EXCEPTION_HANDLER(#, 94)
593
EXCEPTION_HANDLER(#, 95)
594
EXCEPTION_HANDLER(#, 96)
595
EXCEPTION_HANDLER(#, 97)
596
EXCEPTION_HANDLER(#, 98)
597
EXCEPTION_HANDLER(#, 99)
598
 
599
EXCEPTION_HANDLER(#, 100)
600
EXCEPTION_HANDLER(#, 101)
601
EXCEPTION_HANDLER(#, 102)
602
EXCEPTION_HANDLER(#, 103)
603
EXCEPTION_HANDLER(#, 104)
604
EXCEPTION_HANDLER(#, 105)
605
EXCEPTION_HANDLER(#, 106)
606
EXCEPTION_HANDLER(#, 107)
607
EXCEPTION_HANDLER(#, 108)
608
EXCEPTION_HANDLER(#, 109)
609
 
610
EXCEPTION_HANDLER(#, 110)
611
EXCEPTION_HANDLER(#, 111)
612
EXCEPTION_HANDLER(#, 112)
613
EXCEPTION_HANDLER(#, 113)
614
EXCEPTION_HANDLER(#, 114)
615
EXCEPTION_HANDLER(#, 115)
616
EXCEPTION_HANDLER(#, 116)
617
EXCEPTION_HANDLER(#, 117)
618
EXCEPTION_HANDLER(#, 118)
619
EXCEPTION_HANDLER(#, 119)
620
 
621
EXCEPTION_HANDLER(#, 120)
622
EXCEPTION_HANDLER(#, 121)
623
EXCEPTION_HANDLER(#, 122)
624
EXCEPTION_HANDLER(#, 123)
625
EXCEPTION_HANDLER(#, 124)
626
EXCEPTION_HANDLER(#, 125)
627
EXCEPTION_HANDLER(#, 126)
628
EXCEPTION_HANDLER(#, 127)
629
EXCEPTION_HANDLER(#, 128)
630
EXCEPTION_HANDLER(#, 129)
631
 
632
EXCEPTION_HANDLER(#, 130)
633
EXCEPTION_HANDLER(#, 131)
634
EXCEPTION_HANDLER(#, 132)
635
EXCEPTION_HANDLER(#, 133)
636
EXCEPTION_HANDLER(#, 134)
637
EXCEPTION_HANDLER(#, 135)
638
EXCEPTION_HANDLER(#, 136)
639
EXCEPTION_HANDLER(#, 137)
640
EXCEPTION_HANDLER(#, 138)
641
EXCEPTION_HANDLER(#, 139)
642
 
643
EXCEPTION_HANDLER(#, 140)
644
EXCEPTION_HANDLER(#, 141)
645
EXCEPTION_HANDLER(#, 142)
646
EXCEPTION_HANDLER(#, 143)
647
EXCEPTION_HANDLER(#, 144)
648
EXCEPTION_HANDLER(#, 145)
649
EXCEPTION_HANDLER(#, 146)
650
EXCEPTION_HANDLER(#, 147)
651
EXCEPTION_HANDLER(#, 148)
652
EXCEPTION_HANDLER(#, 149)
653
 
654
EXCEPTION_HANDLER(#, 150)
655
EXCEPTION_HANDLER(#, 151)
656
EXCEPTION_HANDLER(#, 152)
657
EXCEPTION_HANDLER(#, 153)
658
EXCEPTION_HANDLER(#, 154)
659
EXCEPTION_HANDLER(#, 155)
660
EXCEPTION_HANDLER(#, 156)
661
EXCEPTION_HANDLER(#, 157)
662
EXCEPTION_HANDLER(#, 158)
663
EXCEPTION_HANDLER(#, 159)
664
 
665
EXCEPTION_HANDLER(#, 160)
666
EXCEPTION_HANDLER(#, 161)
667
EXCEPTION_HANDLER(#, 162)
668
EXCEPTION_HANDLER(#, 163)
669
EXCEPTION_HANDLER(#, 164)
670
EXCEPTION_HANDLER(#, 165)
671
EXCEPTION_HANDLER(#, 166)
672
EXCEPTION_HANDLER(#, 167)
673
EXCEPTION_HANDLER(#, 168)
674
EXCEPTION_HANDLER(#, 169)
675
 
676
EXCEPTION_HANDLER(#, 170)
677
EXCEPTION_HANDLER(#, 171)
678
EXCEPTION_HANDLER(#, 172)
679
EXCEPTION_HANDLER(#, 173)
680
EXCEPTION_HANDLER(#, 174)
681
EXCEPTION_HANDLER(#, 175)
682
EXCEPTION_HANDLER(#, 176)
683
EXCEPTION_HANDLER(#, 177)
684
EXCEPTION_HANDLER(#, 178)
685
EXCEPTION_HANDLER(#, 179)
686
 
687
EXCEPTION_HANDLER(#, 180)
688
EXCEPTION_HANDLER(#, 181)
689
EXCEPTION_HANDLER(#, 182)
690
EXCEPTION_HANDLER(#, 183)
691
EXCEPTION_HANDLER(#, 184)
692
EXCEPTION_HANDLER(#, 185)
693
EXCEPTION_HANDLER(#, 186)
694
EXCEPTION_HANDLER(#, 187)
695
EXCEPTION_HANDLER(#, 188)
696
EXCEPTION_HANDLER(#, 189)
697
 
698
EXCEPTION_HANDLER(#, 190)
699
EXCEPTION_HANDLER(#, 191)
700
EXCEPTION_HANDLER(#, 192)
701
EXCEPTION_HANDLER(#, 193)
702
EXCEPTION_HANDLER(#, 194)
703
EXCEPTION_HANDLER(#, 195)
704
EXCEPTION_HANDLER(#, 196)
705
EXCEPTION_HANDLER(#, 197)
706
EXCEPTION_HANDLER(#, 198)
707
EXCEPTION_HANDLER(#, 199)
708
 
709
EXCEPTION_HANDLER(#, 200)
710
EXCEPTION_HANDLER(#, 201)
711
EXCEPTION_HANDLER(#, 202)
712
EXCEPTION_HANDLER(#, 203)
713
EXCEPTION_HANDLER(#, 204)
714
EXCEPTION_HANDLER(#, 205)
715
EXCEPTION_HANDLER(#, 206)
716
EXCEPTION_HANDLER(#, 207)
717
EXCEPTION_HANDLER(#, 208)
718
EXCEPTION_HANDLER(#, 209)
719
 
720
EXCEPTION_HANDLER(#, 210)
721
EXCEPTION_HANDLER(#, 211)
722
EXCEPTION_HANDLER(#, 212)
723
EXCEPTION_HANDLER(#, 213)
724
EXCEPTION_HANDLER(#, 214)
725
EXCEPTION_HANDLER(#, 215)
726
EXCEPTION_HANDLER(#, 216)
727
EXCEPTION_HANDLER(#, 217)
728
EXCEPTION_HANDLER(#, 218)
729
EXCEPTION_HANDLER(#, 219)
730
 
731
EXCEPTION_HANDLER(#, 220)
732
EXCEPTION_HANDLER(#, 221)
733
EXCEPTION_HANDLER(#, 222)
734
EXCEPTION_HANDLER(#, 223)
735
EXCEPTION_HANDLER(#, 224)
736
EXCEPTION_HANDLER(#, 225)
737
EXCEPTION_HANDLER(#, 226)
738
EXCEPTION_HANDLER(#, 227)
739
EXCEPTION_HANDLER(#, 228)
740
EXCEPTION_HANDLER(#, 229)
741
 
742
EXCEPTION_HANDLER(#, 230)
743
EXCEPTION_HANDLER(#, 231)
744
EXCEPTION_HANDLER(#, 232)
745
EXCEPTION_HANDLER(#, 233)
746
EXCEPTION_HANDLER(#, 234)
747
EXCEPTION_HANDLER(#, 235)
748
EXCEPTION_HANDLER(#, 236)
749
EXCEPTION_HANDLER(#, 237)
750
EXCEPTION_HANDLER(#, 238)
751
EXCEPTION_HANDLER(#, 239)
752
 
753
EXCEPTION_HANDLER(#, 240)
754
EXCEPTION_HANDLER(#, 241)
755
EXCEPTION_HANDLER(#, 242)
756
EXCEPTION_HANDLER(#, 243)
757
EXCEPTION_HANDLER(#, 244)
758
EXCEPTION_HANDLER(#, 245)
759
EXCEPTION_HANDLER(#, 246)
760
EXCEPTION_HANDLER(#, 247)
761
EXCEPTION_HANDLER(#, 248)
762
EXCEPTION_HANDLER(#, 249)
763
 
764
EXCEPTION_HANDLER(#, 250)
765
EXCEPTION_HANDLER(#, 251)
766
EXCEPTION_HANDLER(#, 252)
767
EXCEPTION_HANDLER(#, 253)
768
EXCEPTION_HANDLER(#, 254)
769
EXCEPTION_HANDLER(#, 255)
770
 
771
 
772
common_exception_handler:
773
 
774
        |
775
        | Need to put the format/vector above the PC and status register
776
        |
777
 
778
        move.l  %d0,-(%sp)                      | free a register
779
        move.w  4(%sp),%d0                      | get the format/vector id
780
 
781
        |
782
        | If a bus error or address error then trash the extra
783
        | data saved on the stack
784
        |
785
 
786
        cmp.w   #0x0008,%d0
787
        beq     ceh_10
788
 
789
        cmp.w   #0x000C,%d0
790
        beq     ceh_10
791
 
792
        bra     ceh_20
793
 
794
ceh_10:
795
 
796
        move.w  %d0,12(%sp)                     | need to move the format/id
797
        move.l  (%sp)+,%d0                      | recover d0
798
        addq    #8,%sp                          | trash the stack
799
        move.l  %d0,-(%sp)                      | free a register, again
800
        move.w  4(%sp),%d0                      | get the format/vector id
801
 
802
ceh_20:
803
 
804
        move.w  6(%sp),4(%sp)
805
        move.w  8(%sp),6(%sp)
806
        move.w  10(%sp),8(%sp)
807
        move.w  %d0,10(%sp)                     | put the format/vector id
808
        move.l  (%sp)+,%d0
809
 
810
        |
811
        | Save all the registers, pass control to a dump trace routine
812
        |
813
 
814
        movem.l %d0-%d7/%a0-%a7,%sp@-
815
 
816
        |
817
        | check to see if ROM is mapped to zero
818
        |
819
 
820
        move.l  #trace_exception,%d1            | get the linked address
821
        and.l   #(ROM_SIZE - 1),%d1             | obtain the offset into the ROM
822
        lea.l   %pc@(0),%a0                     | were are we currently
823
        move.l  %a0,%d0                         | need to use a data register
824
        and.l   #~(ROM_SIZE - 1),%d0            | keep the top part of the address
825
        or.l    %d1,%d0                         | apply it to the trace exception offset
826
        move.l  %d0,%a0                         | need an address register for jumping
827
        jsr     %a0@(0)
828
 
829
ceh_30:
830
        jmp     ceh_30
831
|
832
| The RAM based vector table
833
|
834
 
835
        .sect   .vtable
836
 
837
        .global vector_table
838
 
839
vector_table:
840
        .space  (256 * 4),0
841
 
842
|
843
| Initialised data
844
|
845
 
846
        .sect   .data
847
 
848
        .global start_frame
849
 
850
start_frame:
851
        .space  4,0
852
 
853
        .global stack_start
854
 
855
stack_start:
856
        .space  4,0
857
 
858
|
859
| Uninitialised data
860
|
861
 
862
        .sect   .bss
863
 
864
        .global environ
865
        .align  2
866
 
867
environ:
868
        .long   0
869
 
870
        .global heap_size
871
        .set    heap_size,0x2000
872
 
873
        .global stack_size
874
        .set    stack_size,0x1000
875
 
876
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.