1//Original:/proj/frio/dv/testcases/seq/se_stall_if2/se_stall_if2.dsp
2# mach: bfin
3# sim: --environment operating
4
5#include "test.h"
6.include "testutils.inc"
7start
8
9/////////////////////////////////////////////////////////////////////////////
10///////////////////////// Include Files         /////////////////////////////
11/////////////////////////////////////////////////////////////////////////////
12
13include(std.inc)
14include(selfcheck.inc)
15
16/////////////////////////////////////////////////////////////////////////////
17///////////////////////// Defines               /////////////////////////////
18/////////////////////////////////////////////////////////////////////////////
19
20#ifndef USER_CODE_SPACE
21#define USER_CODE_SPACE  0x00000500
22#endif
23#ifndef STACKSIZE
24#define STACKSIZE        0x00000010
25#endif
26#ifndef ITABLE
27#define ITABLE           0xF0000000
28#endif
29#ifndef EVT
30#define EVT              0xFFE02000
31#endif
32#ifndef EVT_OVERRIDE
33#define EVT_OVERRIDE     0xFFE02100
34#endif
35#ifndef IMASK
36#define IMASK            0xFFE02104
37#endif
38#ifndef DMEM_CONTROL
39#define DMEM_CONTROL     0xFFE00004
40#endif
41#ifndef DCPLB_ADDR0
42#define DCPLB_ADDR0      0xFFE00100
43#endif
44#ifndef DCPLB_DATA0
45#define DCPLB_DATA0      0xFFE00200
46#endif
47
48/////////////////////////////////////////////////////////////////////////////
49///////////////////////// RESET ISR             /////////////////////////////
50/////////////////////////////////////////////////////////////////////////////
51
52 RST_ISR :
53
54    // Initialize Dregs
55INIT_R_REGS(0);
56
57    // Initialize Pregs
58INIT_P_REGS(0);
59
60    // Initialize ILBM Registers
61INIT_I_REGS(0);
62INIT_M_REGS(0);
63INIT_L_REGS(0);
64INIT_B_REGS(0);
65
66    // Initialize the Address of the Checkreg data segment
67    // **** THIS IS NEEDED WHENEVER CHECKREG IS USED ****
68CHECK_INIT(p5,   0x00BFFFFC);
69
70    // Setup User Stack
71LD32_LABEL(sp, USTACK);
72USP = SP;
73
74    // Setup Kernel Stack
75LD32_LABEL(sp, KSTACK);
76
77    // Setup Frame Pointer
78FP = SP;
79
80    // Setup Event Vector Table
81LD32(p0, EVT);
82
83LD32_LABEL(r0, EMU_ISR);    // Emulation Handler (Int0)
84    [ P0 ++ ] = R0;
85LD32_LABEL(r0, RST_ISR);    // Reset Handler (Int1)
86    [ P0 ++ ] = R0;
87LD32_LABEL(r0, NMI_ISR);    // NMI Handler (Int2)
88    [ P0 ++ ] = R0;
89LD32_LABEL(r0, EXC_ISR);    // Exception Handler (Int3)
90    [ P0 ++ ] = R0;
91    [ P0 ++ ] = R0;                // IVT4 not used
92LD32_LABEL(r0, HWE_ISR);    // HW Error Handler (Int5)
93    [ P0 ++ ] = R0;
94LD32_LABEL(r0, TMR_ISR);    // Timer Handler (Int6)
95    [ P0 ++ ] = R0;
96LD32_LABEL(r0, IGV7_ISR);   // IVG7 Handler
97    [ P0 ++ ] = R0;
98LD32_LABEL(r0, IGV8_ISR);   // IVG8 Handler
99    [ P0 ++ ] = R0;
100LD32_LABEL(r0, IGV9_ISR);   // IVG9 Handler
101    [ P0 ++ ] = R0;
102LD32_LABEL(r0, IGV10_ISR);  // IVG10 Handler
103    [ P0 ++ ] = R0;
104LD32_LABEL(r0, IGV11_ISR);  // IVG11 Handler
105    [ P0 ++ ] = R0;
106LD32_LABEL(r0, IGV12_ISR);  // IVG12 Handler
107    [ P0 ++ ] = R0;
108LD32_LABEL(r0, IGV13_ISR);  // IVG13 Handler
109    [ P0 ++ ] = R0;
110LD32_LABEL(r0, IGV14_ISR);  // IVG14 Handler
111    [ P0 ++ ] = R0;
112LD32_LABEL(r0, IGV15_ISR);  // IVG15 Handler
113    [ P0 ++ ] = R0;
114
115    // Setup the EVT_OVERRIDE MMR
116    R0 = 0;
117LD32(p0, EVT_OVERRIDE);
118    [ P0 ] = R0;
119
120    // Setup Interrupt Mask
121    R0 = -1;
122LD32(p0, IMASK);
123    [ P0 ] = R0;
124
125/////////////////////////////////////////////////////////////////////////////
126//////////////////////// CPLB Setup     /////////////////////////////////////
127/////////////////////////////////////////////////////////////////////////////
128
129    // Setup CPLB for Data Memory starting at 0x00F0_0000;
130WR_MMR(DCPLB_DATA0,     0x00031005, p0, r0);    // Page Size    = 4MB
131                                                    // CPLB_L1_CHLB = 1
132                                                    // CPLB_USER_RD = 1
133                                                    // CPLB_VALID   = 1
134                                                    //
135
136    // Setup CPLB Address to point to 0x00F0_0000
137WR_MMR(DCPLB_ADDR0,     0x00F00000, p0, r0);
138
139    // Enable CPLB's
140WR_MMR(DMEM_CONTROL,    0x0000000f, p0, r0);    // ENDM    = 1
141                                                    // ENDCPLB = 1
142                                                    // DMC     = 11
143    // Sync it!
144CSYNC;
145
146
147    // Return to Supervisor Code
148RAISE 15;
149
150LD32_LABEL(r0, USER_CODE);
151RETI = R0;
152RTI;
153
154.dw 0xFFFF
155.dw 0xFFFF
156.dw 0xFFFF
157.dw 0xFFFF
158.dw 0xFFFF
159.dw 0xFFFF
160.dw 0xFFFF
161
162/////////////////////////////////////////////////////////////////////////////
163
164
165/////////////////////////////////////////////////////////////////////////////
166///////////////////////// EMU ISR               /////////////////////////////
167/////////////////////////////////////////////////////////////////////////////
168
169 EMU_ISR :
170
171RTE;
172
173.dw 0xFFFF
174.dw 0xFFFF
175.dw 0xFFFF
176.dw 0xFFFF
177.dw 0xFFFF
178.dw 0xFFFF
179.dw 0xFFFF
180
181/////////////////////////////////////////////////////////////////////////////
182///////////////////////// NMI ISR               /////////////////////////////
183/////////////////////////////////////////////////////////////////////////////
184
185 NMI_ISR :
186
187RTN;
188
189.dw 0xFFFF
190.dw 0xFFFF
191.dw 0xFFFF
192.dw 0xFFFF
193.dw 0xFFFF
194.dw 0xFFFF
195.dw 0xFFFF
196
197/////////////////////////////////////////////////////////////////////////////
198///////////////////////// EXC ISR               /////////////////////////////
199/////////////////////////////////////////////////////////////////////////////
200
201 EXC_ISR :
202
203RTX;
204
205.dw 0xFFFF
206.dw 0xFFFF
207.dw 0xFFFF
208.dw 0xFFFF
209.dw 0xFFFF
210.dw 0xFFFF
211.dw 0xFFFF
212
213/////////////////////////////////////////////////////////////////////////////
214///////////////////////// HWE ISR               /////////////////////////////
215/////////////////////////////////////////////////////////////////////////////
216
217 HWE_ISR :
218
219RTI;
220
221.dw 0xFFFF
222.dw 0xFFFF
223.dw 0xFFFF
224.dw 0xFFFF
225.dw 0xFFFF
226.dw 0xFFFF
227.dw 0xFFFF
228
229/////////////////////////////////////////////////////////////////////////////
230///////////////////////// TMR ISR               /////////////////////////////
231/////////////////////////////////////////////////////////////////////////////
232
233 TMR_ISR :
234
235RTI;
236
237.dw 0xFFFF
238.dw 0xFFFF
239.dw 0xFFFF
240.dw 0xFFFF
241.dw 0xFFFF
242.dw 0xFFFF
243.dw 0xFFFF
244
245/////////////////////////////////////////////////////////////////////////////
246///////////////////////// IGV7 ISR              /////////////////////////////
247/////////////////////////////////////////////////////////////////////////////
248
249 IGV7_ISR :
250
251RTI;
252
253.dw 0xFFFF
254.dw 0xFFFF
255.dw 0xFFFF
256.dw 0xFFFF
257.dw 0xFFFF
258.dw 0xFFFF
259.dw 0xFFFF
260
261/////////////////////////////////////////////////////////////////////////////
262///////////////////////// IGV8 ISR              /////////////////////////////
263/////////////////////////////////////////////////////////////////////////////
264
265 IGV8_ISR :
266
267RTI;
268
269.dw 0xFFFF
270.dw 0xFFFF
271.dw 0xFFFF
272.dw 0xFFFF
273.dw 0xFFFF
274.dw 0xFFFF
275.dw 0xFFFF
276
277/////////////////////////////////////////////////////////////////////////////
278///////////////////////// IGV9 ISR              /////////////////////////////
279/////////////////////////////////////////////////////////////////////////////
280
281 IGV9_ISR :
282
283RTI;
284
285.dw 0xFFFF
286.dw 0xFFFF
287.dw 0xFFFF
288.dw 0xFFFF
289.dw 0xFFFF
290.dw 0xFFFF
291.dw 0xFFFF
292
293/////////////////////////////////////////////////////////////////////////////
294///////////////////////// IGV10 ISR             /////////////////////////////
295/////////////////////////////////////////////////////////////////////////////
296
297 IGV10_ISR :
298
299RTI;
300
301.dw 0xFFFF
302.dw 0xFFFF
303.dw 0xFFFF
304.dw 0xFFFF
305.dw 0xFFFF
306.dw 0xFFFF
307.dw 0xFFFF
308
309/////////////////////////////////////////////////////////////////////////////
310///////////////////////// IGV11 ISR             /////////////////////////////
311/////////////////////////////////////////////////////////////////////////////
312
313 IGV11_ISR :
314
315RTI;
316
317.dw 0xFFFF
318.dw 0xFFFF
319.dw 0xFFFF
320.dw 0xFFFF
321.dw 0xFFFF
322.dw 0xFFFF
323.dw 0xFFFF
324
325/////////////////////////////////////////////////////////////////////////////
326///////////////////////// IGV12 ISR             /////////////////////////////
327/////////////////////////////////////////////////////////////////////////////
328
329 IGV12_ISR :
330
331RTI;
332
333.dw 0xFFFF
334.dw 0xFFFF
335.dw 0xFFFF
336.dw 0xFFFF
337.dw 0xFFFF
338.dw 0xFFFF
339.dw 0xFFFF
340
341/////////////////////////////////////////////////////////////////////////////
342///////////////////////// IGV13 ISR             /////////////////////////////
343/////////////////////////////////////////////////////////////////////////////
344
345 IGV13_ISR :
346
347RTI;
348
349.dw 0xFFFF
350.dw 0xFFFF
351.dw 0xFFFF
352.dw 0xFFFF
353.dw 0xFFFF
354.dw 0xFFFF
355.dw 0xFFFF
356
357/////////////////////////////////////////////////////////////////////////////
358///////////////////////// IGV14 ISR             /////////////////////////////
359/////////////////////////////////////////////////////////////////////////////
360
361 IGV14_ISR :
362
363RTI;
364
365.dw 0xFFFF
366.dw 0xFFFF
367.dw 0xFFFF
368.dw 0xFFFF
369.dw 0xFFFF
370.dw 0xFFFF
371.dw 0xFFFF
372
373/////////////////////////////////////////////////////////////////////////////
374///////////////////////// IGV15 ISR             /////////////////////////////
375/////////////////////////////////////////////////////////////////////////////
376
377 IGV15_ISR :
378
379NOP;
380    P0 = 0x0100 (Z);
381    P0.H = 0x00f0;
382    R0 = [ P0 ++ ];
383JUMP.S lab1; // Branch in EX1
384
385
386NOP;
387NOP;
388NOP;
389NOP;
390NOP;
391NOP;
392NOP;
393NOP;
394NOP;
395NOP;
396NOP;
397NOP;
398NOP;
399NOP;
400NOP;
401NOP;
402
403lab1:
404    P0 = 0x0200 (Z);
405    P0.H = 0x00f0;
406RTI;
407    R1 = [ P0 ++ ];
408JUMP.S 8; // Branch in EX1
409NOP;
410NOP;
411NOP;
412
413RTI;
414
415.dw 0xFFFF
416.dw 0xFFFF
417.dw 0xFFFF
418.dw 0xFFFF
419.dw 0xFFFF
420.dw 0xFFFF
421.dw 0xFFFF
422
423/////////////////////////////////////////////////////////////////////////////
424///////////////////////// USER CODE             /////////////////////////////
425/////////////////////////////////////////////////////////////////////////////
426
427
428 USER_CODE :
429
430NOP;
431NOP;
432NOP;
433NOP;
434dbg_pass;        // Call Endtest Macro
435
436/////////////////////////////////////////////////////////////////////////////
437///////////////////////// DATA MEMRORY          /////////////////////////////
438/////////////////////////////////////////////////////////////////////////////
439
440// Define Kernal Stack
441.section MEM_0xE0000000,"aw"
442    .space (STACKSIZE);
443     KSTACK :
444
445    .space (STACKSIZE);
446     USTACK :
447
448.section MEM_0x00F00100,"aw"
449.dd 0xdeadbeef;
450.section MEM_0x00F00200,"aw"
451.dd 0x01010101;
452.dd 0x02020202;
453.dd 0x03030303;
454.dd 0x04040404;
455
456/////////////////////////////////////////////////////////////////////////////
457///////////////////////// END OF TEST           /////////////////////////////
458/////////////////////////////////////////////////////////////////////////////
459