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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [or1ksim/] [testbench/] [except.S] - Blame information for rev 957

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 342 markom
/* Support file for c based tests */
2 410 simons
#include "spr_defs.h"
3 957 simons
#include "board.h"
4 342 markom
 
5 441 simons
#define reset _reset
6
 
7 957 simons
#define MC_CSR          (0x00)
8
#define MC_POC          (0x04)
9
#define MC_BA_MASK      (0x08)
10
#define MC_CSC(i)       (0x10 + (i) * 8)
11
#define MC_TMS(i)       (0x14 + (i) * 8)
12
 
13 410 simons
        .section .stack
14
        .space 0x1000
15
_stack:
16
 
17 342 markom
        .extern _reset_support
18
        .extern _c_reset
19
        .extern _excpt_buserr
20
        .extern _excpt_dpfault
21
        .extern _excpt_ipfault
22 600 simons
        .extern _excpt_tick
23 342 markom
        .extern _excpt_align
24
        .extern _excpt_illinsn
25 600 simons
        .extern _excpt_int
26 342 markom
        .extern _excpt_dtlbmiss
27
        .extern _excpt_itlbmiss
28
        .extern _excpt_range
29
        .extern _excpt_syscall
30
        .extern _excpt_break
31
        .extern _excpt_trap
32
 
33
 
34 957 simons
              .section .except, "ax"
35 342 markom
_buserr_vector:
36
        l.addi  r1,r1,-116
37
        l.sw    0x18(r1),r9
38 957 simons
        l.sw    0x1c(r1),r10
39
        l.movhi r9,hi(store_regs)
40
        l.ori   r9,r9,lo(store_regs)
41 409 markom
        l.movhi r10,hi(_excpt_buserr)
42
        l.ori   r10,r10,lo(_excpt_buserr)
43 957 simons
        l.jr    r9
44 342 markom
        l.nop
45 957 simons
_buserr_vector_end:
46 342 markom
 
47
_dpfault_vector:
48
        l.addi  r1,r1,-116
49
        l.sw    0x18(r1),r9
50 957 simons
        l.sw    0x1c(r1),r10
51
        l.movhi r9,hi(store_regs)
52
        l.ori   r9,r9,lo(store_regs)
53 409 markom
        l.movhi r10,hi(_excpt_dpfault)
54
        l.ori   r10,r10,lo(_excpt_dpfault)
55 957 simons
        l.jr    r9
56 342 markom
        l.nop
57 957 simons
_dpfault_vector_end:
58 342 markom
 
59
_ipfault_vector:
60
        l.addi  r1,r1,-116
61
        l.sw    0x18(r1),r9
62 957 simons
        l.sw    0x1c(r1),r10
63
        l.movhi r9,hi(store_regs)
64
        l.ori   r9,r9,lo(store_regs)
65 409 markom
        l.movhi r10,hi(_excpt_ipfault)
66
        l.ori   r10,r10,lo(_excpt_ipfault)
67 957 simons
        l.jr    r9
68 342 markom
        l.nop
69 957 simons
_ipfault_vector_end:
70 342 markom
 
71
_lpint_vector:
72
        l.addi  r1,r1,-116
73
        l.sw    0x18(r1),r9
74 957 simons
        l.sw    0x1c(r1),r10
75
        l.movhi r9,hi(store_regs)
76
        l.ori   r9,r9,lo(store_regs)
77 600 simons
        l.movhi r10,hi(_excpt_tick)
78
        l.ori   r10,r10,lo(_excpt_tick)
79 957 simons
        l.jr    r9
80 342 markom
        l.nop
81 957 simons
_lpint_vector_end:
82 342 markom
 
83
_align_vector:
84
        l.addi  r1,r1,-116
85
        l.sw    0x18(r1),r9
86 957 simons
        l.sw    0x1c(r1),r10
87
        l.movhi r9,hi(store_regs)
88
        l.ori   r9,r9,lo(store_regs)
89 409 markom
        l.movhi r10,hi(_excpt_align)
90
        l.ori   r10,r10,lo(_excpt_align)
91 957 simons
        l.jr    r9
92 342 markom
        l.nop
93 957 simons
_align_vector_end:
94 342 markom
 
95
_illinsn_vector:
96
        l.addi  r1,r1,-116
97
        l.sw    0x18(r1),r9
98 957 simons
        l.sw    0x1c(r1),r10
99
        l.movhi r9,hi(store_regs)
100
        l.ori   r9,r9,lo(store_regs)
101 409 markom
        l.movhi r10,hi(_excpt_illinsn)
102
        l.ori   r10,r10,lo(_excpt_illinsn)
103 957 simons
        l.jr    r9
104 342 markom
        l.nop
105 957 simons
_illinsn_vector_end:
106 342 markom
 
107
_hpint_vector:
108
        l.addi  r1,r1,-116
109
        l.sw    0x18(r1),r9
110 957 simons
        l.sw    0x1c(r1),r10
111
        l.movhi r9,hi(store_regs)
112
        l.ori   r9,r9,lo(store_regs)
113 600 simons
        l.movhi r10,hi(_excpt_int)
114
        l.ori   r10,r10,lo(_excpt_int)
115 957 simons
        l.jr    r9
116 342 markom
        l.nop
117 957 simons
_hpint_vector_end:
118 342 markom
 
119
_dtlbmiss_vector:
120
        l.addi  r1,r1,-116
121
        l.sw    0x18(r1),r9
122 957 simons
        l.sw    0x1c(r1),r10
123
        l.movhi r9,hi(store_regs)
124
        l.ori   r9,r9,lo(store_regs)
125 409 markom
        l.movhi r10,hi(_excpt_dtlbmiss)
126
        l.ori   r10,r10,lo(_excpt_dtlbmiss)
127 957 simons
        l.jr    r9
128 342 markom
        l.nop
129 957 simons
_dtlbmiss_vector_end:
130 342 markom
 
131
_itlbmiss_vector:
132
        l.addi  r1,r1,-116
133
        l.sw    0x18(r1),r9
134 957 simons
        l.sw    0x1c(r1),r10
135
        l.movhi r9,hi(store_regs)
136
        l.ori   r9,r9,lo(store_regs)
137 409 markom
        l.movhi r10,hi(_excpt_itlbmiss)
138
        l.ori   r10,r10,lo(_excpt_itlbmiss)
139 957 simons
        l.jr    r9
140 342 markom
        l.nop
141 957 simons
_itlbmiss_vector_end:
142 342 markom
 
143
_range_vector:
144
        l.addi  r1,r1,-116
145
        l.sw    0x18(r1),r9
146 957 simons
        l.sw    0x1c(r1),r10
147
        l.movhi r9,hi(store_regs)
148
        l.ori   r9,r9,lo(store_regs)
149 409 markom
        l.movhi r10,hi(_excpt_range)
150
        l.ori   r10,r10,lo(_excpt_range)
151 957 simons
        l.jr    r9
152 342 markom
        l.nop
153 957 simons
_range_vector_end:
154 342 markom
 
155
_syscall_vector:
156
        l.addi  r1,r1,-116
157
        l.sw    0x18(r1),r9
158 957 simons
        l.sw    0x1c(r1),r10
159
        l.movhi r9,hi(store_regs)
160
        l.ori   r9,r9,lo(store_regs)
161 409 markom
        l.movhi r10,hi(_excpt_syscall)
162
        l.ori   r10,r10,lo(_excpt_syscall)
163 957 simons
        l.jr    r9
164 342 markom
        l.nop
165 957 simons
_syscall_vector_end:
166 342 markom
 
167
_break_vector:
168
        l.addi  r1,r1,-116
169
        l.sw    0x18(r1),r9
170 957 simons
        l.sw    0x1c(r1),r10
171
        l.movhi r9,hi(store_regs)
172
        l.ori   r9,r9,lo(store_regs)
173 409 markom
        l.movhi r10,hi(_excpt_break)
174
        l.ori   r10,r10,lo(_excpt_break)
175 957 simons
        l.jr    r9
176 342 markom
        l.nop
177 957 simons
_break_vector_end:
178 342 markom
 
179
_trap_vector:
180
        l.addi  r1,r1,-116
181
        l.sw    0x18(r1),r9
182 957 simons
        l.sw    0x1c(r1),r10
183
        l.movhi r9,hi(store_regs)
184
        l.ori   r9,r9,lo(store_regs)
185 409 markom
        l.movhi r10,hi(_excpt_trap)
186
        l.ori   r10,r10,lo(_excpt_trap)
187 957 simons
        l.jr    r9
188 342 markom
        l.nop
189 957 simons
_trap_vector_end:
190 342 markom
 
191 957 simons
              .section .text
192
 
193
        .org    0x100
194
_reset_vector:
195
        l.addi  r2,r0,0x0
196
        l.addi  r3,r0,0x0
197
        l.addi  r4,r0,0x0
198
        l.addi  r5,r0,0x0
199
        l.addi  r6,r0,0x0
200
        l.addi  r7,r0,0x0
201
        l.addi  r8,r0,0x0
202
        l.addi  r9,r0,0x0
203
        l.addi  r10,r0,0x0
204
        l.addi  r11,r0,0x0
205
        l.addi  r12,r0,0x0
206
        l.addi  r13,r0,0x0
207
        l.addi  r14,r0,0x0
208
        l.addi  r15,r0,0x0
209
        l.addi  r16,r0,0x0
210
        l.addi  r17,r0,0x0
211
        l.addi  r18,r0,0x0
212
        l.addi  r19,r0,0x0
213
        l.addi  r20,r0,0x0
214
        l.addi  r21,r0,0x0
215
        l.addi  r22,r0,0x0
216
        l.addi  r23,r0,0x0
217
        l.addi  r24,r0,0x0
218
        l.addi  r25,r0,0x0
219
        l.addi  r26,r0,0x0
220
        l.addi  r27,r0,0x0
221
        l.addi  r28,r0,0x0
222
        l.addi  r29,r0,0x0
223
        l.addi  r30,r0,0x0
224
        l.addi  r31,r0,0x0
225
 
226
        l.movhi r3,hi(start)
227
        l.ori   r3,r3,lo(start)
228
        l.jr    r3
229
        l.nop
230
start:
231
        l.jal   _init_mc
232
        l.nop
233
 
234
        l.movhi r1,hi(_stack)
235
        l.ori   r1,r1,lo(_stack)
236
 
237
        /* Setup exception wrappers */
238
        l.movhi r3,hi(_src_beg)
239
        l.ori   r3,r3,lo(_src_beg)
240
        l.addi  r7,r0,0x100
241
 
242
1:      l.addi  r7,r7,0x100
243
        l.sfeqi r7,0xf00
244
        l.bf    1f
245
        l.nop
246
        l.addi  r4,r7,0
247
        l.addi  r5,r0,0
248
2:
249
        l.lwz   r6,0(r3)
250
        l.sw    0(r4),r6
251
        l.addi  r3,r3,4
252
        l.addi  r4,r4,4
253
        l.addi  r5,r5,1
254
        l.sfeqi r5,9
255
        l.bf    1b
256
        l.nop
257
        l.j     2b
258
        l.nop
259
1:
260
        /* Copy data section */
261
        l.movhi r4,hi(_dst_beg)
262
        l.ori   r4,r4,lo(_dst_beg)
263
        l.movhi r5,hi(_dst_end)
264
        l.ori   r5,r5,lo(_dst_end)
265
        l.sub   r5,r5,r4
266
        l.sfeqi r5,0
267
        l.bf    2f
268
        l.nop
269
1:      l.lwz   r6,0(r3)
270
        l.sw    0(r4),r6
271
        l.addi  r3,r3,4
272
        l.addi  r4,r4,4
273
        l.addi  r5,r5,-4
274
        l.sfgtsi r5,0
275
        l.bf    1b
276
        l.nop
277
 
278
2:
279
 
280
        l.movhi r2,hi(reset)
281
        l.ori   r2,r2,lo(reset)
282
        l.jr    r2
283
        l.nop
284
 
285
_init_mc:
286
 
287
        l.movhi r3,hi(MC_BASE_ADDR)
288
        l.ori   r3,r3,lo(MC_BASE_ADDR)
289
 
290
        l.addi  r4,r3,MC_CSC(0)
291
        l.movhi r5,hi(FLASH_BASE_ADDR)
292
        l.srai  r5,r5,5
293
        l.ori   r5,r5,0x0025
294
        l.sw    0(r4),r5
295
 
296
        l.addi  r4,r3,MC_TMS(0)
297
        l.movhi r5,hi(FLASH_TMS_VAL)
298
        l.ori   r5,r5,lo(FLASH_TMS_VAL)
299
        l.sw    0(r4),r5
300
 
301
        l.addi  r4,r3,MC_BA_MASK
302
        l.addi  r5,r0,MC_MASK_VAL
303
        l.sw    0(r4),r5
304
 
305
        l.addi  r4,r3,MC_CSR
306
        l.movhi r5,hi(MC_CSR_VAL)
307
        l.ori   r5,r5,lo(MC_CSR_VAL)
308
        l.sw    0(r4),r5
309
 
310
        l.addi  r4,r3,MC_TMS(1)
311
        l.movhi r5,hi(SDRAM_TMS_VAL)
312
        l.ori   r5,r5,lo(SDRAM_TMS_VAL)
313
        l.sw    0(r4),r5
314
 
315
        l.addi  r4,r3,MC_CSC(1)
316
        l.movhi r5,hi(SDRAM_BASE_ADDR)
317
        l.srai  r5,r5,5
318
        l.ori   r5,r5,0x0411
319
        l.sw    0(r4),r5
320
 
321
        l.jr    r9
322
        l.nop
323
 
324 342 markom
store_regs:
325
        l.sw    0x00(r1),r3
326
        l.sw    0x04(r1),r4
327
        l.sw    0x08(r1),r5
328
        l.sw    0x0c(r1),r6
329
        l.sw    0x10(r1),r7
330
        l.sw    0x14(r1),r8
331
        l.sw    0x20(r1),r11
332
        l.sw    0x24(r1),r12
333
        l.sw    0x28(r1),r13
334
        l.sw    0x2c(r1),r14
335
        l.sw    0x30(r1),r15
336
        l.sw    0x34(r1),r16
337
        l.sw    0x38(r1),r17
338
        l.sw    0x3c(r1),r18
339
        l.sw    0x40(r1),r19
340
        l.sw    0x44(r1),r20
341
        l.sw    0x48(r1),r21
342
        l.sw    0x4c(r1),r22
343
        l.sw    0x50(r1),r23
344
        l.sw    0x54(r1),r24
345
        l.sw    0x58(r1),r25
346
        l.sw    0x5c(r1),r26
347
        l.sw    0x60(r1),r27
348
        l.sw    0x64(r1),r28
349
        l.sw    0x68(r1),r29
350
        l.sw    0x6c(r1),r30
351
        l.sw    0x70(r1),r31
352 957 simons
        l.movhi r9,hi(end_except)
353
        l.ori   r9,r9,lo(end_except)
354
        l.lwz   r10,0(r10)
355
        l.jr    r10
356 342 markom
        l.nop
357
 
358
end_except:
359
        l.lwz   r3,0x00(r1)
360
        l.lwz   r4,0x04(r1)
361
        l.lwz   r5,0x08(r1)
362
        l.lwz   r6,0x0c(r1)
363
        l.lwz   r7,0x10(r1)
364
        l.lwz   r8,0x14(r1)
365
        l.lwz   r9,0x18(r1)
366
        l.lwz   r10,0x1c(r1)
367
        l.lwz   r11,0x20(r1)
368
        l.lwz   r12,0x24(r1)
369
        l.lwz   r13,0x28(r1)
370
        l.lwz   r14,0x2c(r1)
371
        l.lwz   r15,0x30(r1)
372
        l.lwz   r16,0x34(r1)
373
        l.lwz   r17,0x38(r1)
374
        l.lwz   r18,0x3c(r1)
375
        l.lwz   r19,0x40(r1)
376
        l.lwz   r20,0x44(r1)
377
        l.lwz   r21,0x48(r1)
378
        l.lwz   r22,0x4c(r1)
379
        l.lwz   r23,0x50(r1)
380
        l.lwz   r24,0x54(r1)
381
        l.lwz   r25,0x58(r1)
382
        l.lwz   r26,0x5c(r1)
383
        l.lwz   r27,0x60(r1)
384
        l.lwz   r28,0x64(r1)
385
        l.lwz   r29,0x68(r1)
386
        l.lwz   r30,0x6c(r1)
387
        l.lwz   r31,0x70(r1)
388
        l.addi  r1,r1,116
389
        l.rfe
390 413 markom
        l.nop

powered by: WebSVN 2.1.0

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