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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [testbench/] [except.S] - Blame information for rev 436

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 342 markom
 
4 410 simons
        .section .stack
5
        .space 0x1000
6
_stack:
7
 
8 342 markom
        .section .except
9
        .extern _reset_support
10
        .extern _c_reset
11
        .extern _excpt_buserr
12
        .extern _excpt_dpfault
13
        .extern _excpt_ipfault
14
        .extern _excpt_lpint
15
        .extern _excpt_align
16
        .extern _excpt_illinsn
17
        .extern _excpt_hpint
18
        .extern _excpt_dtlbmiss
19
        .extern _excpt_itlbmiss
20
        .extern _excpt_range
21
        .extern _excpt_syscall
22
        .extern _excpt_break
23
        .extern _excpt_trap
24
 
25
 
26
        .org    0x100
27
_reset_vector:
28
        l.nop
29
        l.nop
30 436 simons
        l.movhi r0, 0x0
31
        l.slli  r0,r0,16
32
        l.addi  r1,r0,0x0
33
        l.addi  r2,r0,0x0
34
        l.addi  r3,r0,0x0
35
        l.addi  r4,r0,0x0
36
        l.addi  r5,r0,0x0
37
        l.addi  r6,r0,0x0
38
        l.addi  r7,r0,0x0
39
        l.addi  r8,r0,0x0
40
        l.addi  r9,r0,0x0
41
        l.addi  r10,r0,0x0
42
        l.addi  r11,r0,0x0
43
        l.addi  r12,r0,0x0
44
        l.addi  r13,r0,0x0
45
        l.addi  r14,r0,0x0
46
        l.addi  r15,r0,0x0
47
        l.addi  r16,r0,0x0
48
        l.addi  r17,r0,0x0
49
        l.addi  r18,r0,0x0
50
        l.addi  r19,r0,0x0
51
        l.addi  r20,r0,0x0
52
        l.addi  r21,r0,0x0
53
        l.addi  r22,r0,0x0
54
        l.addi  r23,r0,0x0
55
        l.addi  r24,r0,0x0
56
        l.addi  r25,r0,0x0
57
        l.addi  r26,r0,0x0
58
        l.addi  r27,r0,0x0
59
        l.addi  r28,r0,0x0
60
        l.addi  r29,r0,0x0
61
        l.addi  r30,r0,0x0
62
        l.addi  r31,r0,0x0
63
 
64 410 simons
        l.movhi r1,hi(_stack)
65
        l.ori   r1,r1,lo(_stack)
66
 
67 436 simons
        /* Check if this is RTL version */
68
        l.lbz   r3,0(r0)
69
        l.sfeqi r3,0xff
70
        l.bf    2f
71
        l.nop
72 410 simons
        l.movhi r3,hi(_src_beg)
73
        l.ori   r3,r3,lo(_src_beg)
74
        l.movhi r4,hi(_dst_beg)
75
        l.ori   r4,r4,lo(_dst_beg)
76
        l.movhi r5,hi(_dst_end)
77
        l.ori   r5,r5,lo(_dst_end)
78
        l.sub   r5,r5,r4
79
        l.sfeqi r5,0
80
        l.bf    2f
81 342 markom
        l.nop
82 410 simons
1:      l.lwz   r6,0(r3)
83
        l.sw    0(r4),r6
84
        l.addi  r3,r3,4
85
        l.addi  r4,r4,4
86
        l.addi  r5,r5,-4
87
        l.sfgtsi r5,0
88
        l.bf    1b
89
        l.nop
90 342 markom
 
91 410 simons
2:
92
 
93
        l.movhi r2,hi(_reset)
94
        l.ori   r2,r2,lo(_reset)
95
        l.jr    r2
96
        l.nop
97
 
98 342 markom
        .org    0x200
99
_buserr_vector:
100
        l.addi  r1,r1,-116
101
        l.sw    0x18(r1),r9
102
        l.jal   store_regs
103
        l.nop
104
        l.movhi r9,hi(end_except)
105 410 simons
        l.ori   r9,r9,lo(end_except)
106 409 markom
        l.movhi r10,hi(_excpt_buserr)
107
        l.ori   r10,r10,lo(_excpt_buserr)
108
        l.lwz   r10,0x0(r10)
109 342 markom
        l.jr    r10
110
        l.nop
111
 
112
        .org    0x300
113
_dpfault_vector:
114
        l.addi  r1,r1,-116
115
        l.sw    0x18(r1),r9
116
        l.jal   store_regs
117
        l.nop
118 436 simons
 
119
        l.mfspr r3,r0,SPR_EPCR_BASE
120
        l.addi  r3,r3,-4
121
        l.mtspr r0,r3,SPR_EPCR_BASE
122
 
123 342 markom
        l.movhi r9,hi(end_except)
124 410 simons
        l.ori   r9,r9,lo(end_except)
125 409 markom
        l.movhi r10,hi(_excpt_dpfault)
126
        l.ori   r10,r10,lo(_excpt_dpfault)
127
        l.lwz   r10,0(r10)
128 342 markom
        l.jr    r10
129
        l.nop
130
 
131
        .org    0x400
132
_ipfault_vector:
133
        l.addi  r1,r1,-116
134
        l.sw    0x18(r1),r9
135
        l.jal   store_regs
136
        l.nop
137
        l.movhi r9,hi(end_except)
138 410 simons
        l.ori   r9,r9,lo(end_except)
139 409 markom
        l.movhi r10,hi(_excpt_ipfault)
140
        l.ori   r10,r10,lo(_excpt_ipfault)
141
        l.lwz   r10,0(r10)
142 342 markom
        l.jr    r10
143
        l.nop
144
 
145
        .org    0x500
146
_lpint_vector:
147
        l.addi  r1,r1,-116
148
        l.sw    0x18(r1),r9
149
        l.jal   store_regs
150
        l.nop
151
        l.movhi r9,hi(end_except)
152 409 markom
        l.ori   r9,r9,lo(end_except)
153
        l.movhi r10,hi(_excpt_lpint)
154
        l.ori   r10,r10,lo(_excpt_lpint)
155
        l.lwz   r10,0(r10)
156 342 markom
        l.jr    r10
157
        l.nop
158
 
159
        .org    0x600
160
_align_vector:
161
        l.addi  r1,r1,-116
162
        l.sw    0x18(r1),r9
163
        l.jal   store_regs
164
        l.nop
165
        l.movhi r9,hi(end_except)
166 409 markom
        l.ori   r9,r9,lo(end_except)
167
        l.movhi r10,hi(_excpt_align)
168
        l.ori   r10,r10,lo(_excpt_align)
169
        l.lwz   r10,0(r10)
170 342 markom
        l.jr    r10
171
        l.nop
172
 
173
        .org    0x700
174
_illinsn_vector:
175
        l.addi  r1,r1,-116
176
        l.sw    0x18(r1),r9
177
        l.jal   store_regs
178
        l.nop
179
        l.movhi r9,hi(end_except)
180 409 markom
        l.ori   r9,r9,lo(end_except)
181
        l.movhi r10,hi(_excpt_illinsn)
182
        l.ori   r10,r10,lo(_excpt_illinsn)
183
        l.lwz   r10,0(r10)
184 342 markom
        l.jr    r10
185
        l.nop
186
 
187
        .org    0x800
188
_hpint_vector:
189
        l.addi  r1,r1,-116
190
        l.sw    0x18(r1),r9
191
        l.jal   store_regs
192
        l.nop
193
        l.movhi r9,hi(end_except)
194 409 markom
        l.ori   r9,r9,lo(end_except)
195
        l.movhi r10,hi(_excpt_hpint)
196
        l.ori   r10,r10,lo(_excpt_hpint)
197
        l.lwz   r10,0(r10)
198 342 markom
        l.jr    r10
199
        l.nop
200
 
201
        .org    0x900
202
_dtlbmiss_vector:
203
        l.addi  r1,r1,-116
204
        l.sw    0x18(r1),r9
205
        l.jal   store_regs
206
        l.nop
207 410 simons
 
208
        l.mfspr r3,r0,SPR_EPCR_BASE
209
        l.addi  r3,r3,-4
210
        l.mtspr r0,r3,SPR_EPCR_BASE
211
 
212 342 markom
        l.movhi r9,hi(end_except)
213 409 markom
        l.ori   r9,r9,lo(end_except)
214
        l.movhi r10,hi(_excpt_dtlbmiss)
215
        l.ori   r10,r10,lo(_excpt_dtlbmiss)
216
        l.lwz   r10,0(r10)
217 342 markom
        l.jr    r10
218
        l.nop
219
 
220
        .org    0xa00
221
_itlbmiss_vector:
222
        l.addi  r1,r1,-116
223
        l.sw    0x18(r1),r9
224
        l.jal   store_regs
225
        l.nop
226
        l.movhi r9,hi(end_except)
227 409 markom
        l.ori   r9,r9,lo(end_except)
228
        l.movhi r10,hi(_excpt_itlbmiss)
229
        l.ori   r10,r10,lo(_excpt_itlbmiss)
230
        l.lwz   r10,0(r10)
231 342 markom
        l.jr    r10
232
        l.nop
233
 
234
        .org    0xb00
235
_range_vector:
236
        l.addi  r1,r1,-116
237
        l.sw    0x18(r1),r9
238
        l.jal   store_regs
239
        l.nop
240
        l.movhi r9,hi(end_except)
241 409 markom
        l.ori   r9,r9,lo(end_except)
242
        l.movhi r10,hi(_excpt_range)
243
        l.ori   r10,r10,lo(_excpt_range)
244
        l.lwz   r10,0(r10)
245 342 markom
        l.jr    r10
246
        l.nop
247
 
248
        .org    0xc00
249
_syscall_vector:
250
        l.addi  r1,r1,-116
251
        l.sw    0x18(r1),r9
252
        l.jal   store_regs
253
        l.nop
254
        l.movhi r9,hi(end_except)
255 409 markom
        l.ori   r9,r9,lo(end_except)
256
        l.movhi r10,hi(_excpt_syscall)
257
        l.ori   r10,r10,lo(_excpt_syscall)
258
        l.lwz   r10,0(r10)
259 342 markom
        l.jr    r10
260
        l.nop
261
 
262
        .org    0xd00
263
_break_vector:
264
        l.addi  r1,r1,-116
265
        l.sw    0x18(r1),r9
266
        l.jal   store_regs
267
        l.nop
268
        l.movhi r9,hi(end_except)
269 409 markom
        l.ori   r9,r9,lo(end_except)
270
        l.movhi r10,hi(_excpt_break)
271
        l.ori   r10,r10,lo(_excpt_break)
272
        l.lwz   r10,0(r10)
273 342 markom
        l.jr    r10
274
        l.nop
275
 
276
        .org    0xe00
277
_trap_vector:
278
        l.addi  r1,r1,-116
279
        l.sw    0x18(r1),r9
280
        l.jal   store_regs
281
        l.nop
282
        l.movhi r9,hi(end_except)
283 409 markom
        l.ori   r9,r9,lo(end_except)
284
        l.movhi r10,hi(_excpt_trap)
285
        l.ori   r10,r10,lo(_excpt_trap)
286
        l.lwz   r10,0(r10)
287 342 markom
        l.jr    r10
288
        l.nop
289
 
290
store_regs:
291
        l.sw    0x00(r1),r3
292
        l.sw    0x04(r1),r4
293
        l.sw    0x08(r1),r5
294
        l.sw    0x0c(r1),r6
295
        l.sw    0x10(r1),r7
296
        l.sw    0x14(r1),r8
297
        l.sw    0x1c(r1),r10
298
        l.sw    0x20(r1),r11
299
        l.sw    0x24(r1),r12
300
        l.sw    0x28(r1),r13
301
        l.sw    0x2c(r1),r14
302
        l.sw    0x30(r1),r15
303
        l.sw    0x34(r1),r16
304
        l.sw    0x38(r1),r17
305
        l.sw    0x3c(r1),r18
306
        l.sw    0x40(r1),r19
307
        l.sw    0x44(r1),r20
308
        l.sw    0x48(r1),r21
309
        l.sw    0x4c(r1),r22
310
        l.sw    0x50(r1),r23
311
        l.sw    0x54(r1),r24
312
        l.sw    0x58(r1),r25
313
        l.sw    0x5c(r1),r26
314
        l.sw    0x60(r1),r27
315
        l.sw    0x64(r1),r28
316
        l.sw    0x68(r1),r29
317
        l.sw    0x6c(r1),r30
318
        l.sw    0x70(r1),r31
319
        l.jalr  r9
320
        l.nop
321
 
322
end_except:
323
        l.lwz   r3,0x00(r1)
324
        l.lwz   r4,0x04(r1)
325
        l.lwz   r5,0x08(r1)
326
        l.lwz   r6,0x0c(r1)
327
        l.lwz   r7,0x10(r1)
328
        l.lwz   r8,0x14(r1)
329
        l.lwz   r9,0x18(r1)
330
        l.lwz   r10,0x1c(r1)
331
        l.lwz   r11,0x20(r1)
332
        l.lwz   r12,0x24(r1)
333
        l.lwz   r13,0x28(r1)
334
        l.lwz   r14,0x2c(r1)
335
        l.lwz   r15,0x30(r1)
336
        l.lwz   r16,0x34(r1)
337
        l.lwz   r17,0x38(r1)
338
        l.lwz   r18,0x3c(r1)
339
        l.lwz   r19,0x40(r1)
340
        l.lwz   r20,0x44(r1)
341
        l.lwz   r21,0x48(r1)
342
        l.lwz   r22,0x4c(r1)
343
        l.lwz   r23,0x50(r1)
344
        l.lwz   r24,0x54(r1)
345
        l.lwz   r25,0x58(r1)
346
        l.lwz   r26,0x5c(r1)
347
        l.lwz   r27,0x60(r1)
348
        l.lwz   r28,0x64(r1)
349
        l.lwz   r29,0x68(r1)
350
        l.lwz   r30,0x6c(r1)
351
        l.lwz   r31,0x70(r1)
352
        l.addi  r1,r1,116
353
        l.rfe
354 413 markom
        l.nop

powered by: WebSVN 2.1.0

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