1//Original:/proj/frio/dv/testcases/seq/se_loop_lr/se_loop_lr.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)
15include(symtable.inc)
16include(mmrs.inc)
17
18/////////////////////////////////////////////////////////////////////////////
19///////////////////////// Defines               /////////////////////////////
20/////////////////////////////////////////////////////////////////////////////
21
22#ifndef USER_CODE_SPACE
23#define USER_CODE_SPACE  CODE_ADDR_1   //
24#endif
25#ifndef STACKSIZE
26#define STACKSIZE        0x00000010
27#endif
28#ifndef ITABLE
29#define ITABLE           CODE_ADDR_2   //
30#endif
31
32/////////////////////////////////////////////////////////////////////////////
33///////////////////////// RESET ISR             /////////////////////////////
34/////////////////////////////////////////////////////////////////////////////
35
36 RST_ISR :
37
38    // Initialize Dregs
39INIT_R_REGS(0);
40
41    // Initialize Pregs
42INIT_P_REGS(0);
43
44    // Initialize ILBM Registers
45INIT_I_REGS(0);
46INIT_M_REGS(0);
47INIT_L_REGS(0);
48INIT_B_REGS(0);
49
50    // Initialize the Address of the Checkreg data segment
51    // **** THIS IS NEEDED WHENEVER CHECKREG IS USED ****
52CHECK_INIT_DEF(p5); //CHECK_INIT(p5,   0x00BFFFFC);
53
54    // Setup User Stack
55LD32_LABEL(sp, USTACK);
56USP = SP;
57
58    // Setup Kernel Stack
59LD32_LABEL(sp, KSTACK);
60
61    // Setup Frame Pointer
62FP = SP;
63
64    // Setup Event Vector Table
65LD32(p0, EVT0);
66
67LD32_LABEL(r0, EMU_ISR);    // Emulation Handler (Int0)
68    [ P0 ++ ] = R0;
69LD32_LABEL(r0, RST_ISR);    // Reset Handler (Int1)
70    [ P0 ++ ] = R0;
71LD32_LABEL(r0, NMI_ISR);    // NMI Handler (Int2)
72    [ P0 ++ ] = R0;
73LD32_LABEL(r0, EXC_ISR);    // Exception Handler (Int3)
74    [ P0 ++ ] = R0;
75    [ P0 ++ ] = R0;                // IVT4 not used
76LD32_LABEL(r0, HWE_ISR);    // HW Error Handler (Int5)
77    [ P0 ++ ] = R0;
78LD32_LABEL(r0, TMR_ISR);    // Timer Handler (Int6)
79    [ P0 ++ ] = R0;
80LD32_LABEL(r0, IGV7_ISR);   // IVG7 Handler
81    [ P0 ++ ] = R0;
82LD32_LABEL(r0, IGV8_ISR);   // IVG8 Handler
83    [ P0 ++ ] = R0;
84LD32_LABEL(r0, IGV9_ISR);   // IVG9 Handler
85    [ P0 ++ ] = R0;
86LD32_LABEL(r0, IGV10_ISR);  // IVG10 Handler
87    [ P0 ++ ] = R0;
88LD32_LABEL(r0, IGV11_ISR);  // IVG11 Handler
89    [ P0 ++ ] = R0;
90LD32_LABEL(r0, IGV12_ISR);  // IVG12 Handler
91    [ P0 ++ ] = R0;
92LD32_LABEL(r0, IGV13_ISR);  // IVG13 Handler
93    [ P0 ++ ] = R0;
94LD32_LABEL(r0, IGV14_ISR);  // IVG14 Handler
95    [ P0 ++ ] = R0;
96LD32_LABEL(r0, IGV15_ISR);  // IVG15 Handler
97    [ P0 ++ ] = R0;
98
99    // Setup the EVT_OVERRIDE MMR
100    R0 = 0;
101LD32(p0, EVT_OVERRIDE);
102    [ P0 ] = R0;
103
104    // Setup Interrupt Mask
105    R0 = -1;
106LD32(p0, IMASK);
107    [ P0 ] = R0;
108
109    // Return to Supervisor Code
110RAISE 15;
111NOP;
112
113LD32_LABEL(r0, USER_CODE);
114RETI = R0;
115RTI;
116
117.dw 0xFFFF
118.dw 0xFFFF
119.dw 0xFFFF
120.dw 0xFFFF
121.dw 0xFFFF
122.dw 0xFFFF
123.dw 0xFFFF
124
125/////////////////////////////////////////////////////////////////////////////
126
127
128/////////////////////////////////////////////////////////////////////////////
129///////////////////////// EMU ISR               /////////////////////////////
130/////////////////////////////////////////////////////////////////////////////
131
132 EMU_ISR :
133
134RTE;
135
136.dw 0xFFFF
137.dw 0xFFFF
138.dw 0xFFFF
139.dw 0xFFFF
140.dw 0xFFFF
141.dw 0xFFFF
142.dw 0xFFFF
143
144/////////////////////////////////////////////////////////////////////////////
145///////////////////////// NMI ISR               /////////////////////////////
146/////////////////////////////////////////////////////////////////////////////
147
148 NMI_ISR :
149
150RTN;
151
152.dw 0xFFFF
153.dw 0xFFFF
154.dw 0xFFFF
155.dw 0xFFFF
156.dw 0xFFFF
157.dw 0xFFFF
158.dw 0xFFFF
159
160/////////////////////////////////////////////////////////////////////////////
161///////////////////////// EXC ISR               /////////////////////////////
162/////////////////////////////////////////////////////////////////////////////
163
164 EXC_ISR :
165
166RTX;
167
168.dw 0xFFFF
169.dw 0xFFFF
170.dw 0xFFFF
171.dw 0xFFFF
172.dw 0xFFFF
173.dw 0xFFFF
174.dw 0xFFFF
175
176/////////////////////////////////////////////////////////////////////////////
177///////////////////////// HWE ISR               /////////////////////////////
178/////////////////////////////////////////////////////////////////////////////
179
180 HWE_ISR :
181
182RTI;
183
184.dw 0xFFFF
185.dw 0xFFFF
186.dw 0xFFFF
187.dw 0xFFFF
188.dw 0xFFFF
189.dw 0xFFFF
190.dw 0xFFFF
191
192/////////////////////////////////////////////////////////////////////////////
193///////////////////////// TMR ISR               /////////////////////////////
194/////////////////////////////////////////////////////////////////////////////
195
196 TMR_ISR :
197
198RTI;
199
200.dw 0xFFFF
201.dw 0xFFFF
202.dw 0xFFFF
203.dw 0xFFFF
204.dw 0xFFFF
205.dw 0xFFFF
206.dw 0xFFFF
207
208/////////////////////////////////////////////////////////////////////////////
209///////////////////////// IGV7 ISR              /////////////////////////////
210/////////////////////////////////////////////////////////////////////////////
211
212 IGV7_ISR :
213
214RTI;
215
216.dw 0xFFFF
217.dw 0xFFFF
218.dw 0xFFFF
219.dw 0xFFFF
220.dw 0xFFFF
221.dw 0xFFFF
222.dw 0xFFFF
223
224/////////////////////////////////////////////////////////////////////////////
225///////////////////////// IGV8 ISR              /////////////////////////////
226/////////////////////////////////////////////////////////////////////////////
227
228 IGV8_ISR :
229
230RTI;
231
232.dw 0xFFFF
233.dw 0xFFFF
234.dw 0xFFFF
235.dw 0xFFFF
236.dw 0xFFFF
237.dw 0xFFFF
238.dw 0xFFFF
239
240/////////////////////////////////////////////////////////////////////////////
241///////////////////////// IGV9 ISR              /////////////////////////////
242/////////////////////////////////////////////////////////////////////////////
243
244 IGV9_ISR :
245
246RTI;
247
248.dw 0xFFFF
249.dw 0xFFFF
250.dw 0xFFFF
251.dw 0xFFFF
252.dw 0xFFFF
253.dw 0xFFFF
254.dw 0xFFFF
255
256/////////////////////////////////////////////////////////////////////////////
257///////////////////////// IGV10 ISR             /////////////////////////////
258/////////////////////////////////////////////////////////////////////////////
259
260 IGV10_ISR :
261
262RTI;
263
264.dw 0xFFFF
265.dw 0xFFFF
266.dw 0xFFFF
267.dw 0xFFFF
268.dw 0xFFFF
269.dw 0xFFFF
270.dw 0xFFFF
271
272/////////////////////////////////////////////////////////////////////////////
273///////////////////////// IGV11 ISR             /////////////////////////////
274/////////////////////////////////////////////////////////////////////////////
275
276 IGV11_ISR :
277
278RTI;
279
280.dw 0xFFFF
281.dw 0xFFFF
282.dw 0xFFFF
283.dw 0xFFFF
284.dw 0xFFFF
285.dw 0xFFFF
286.dw 0xFFFF
287
288/////////////////////////////////////////////////////////////////////////////
289///////////////////////// IGV12 ISR             /////////////////////////////
290/////////////////////////////////////////////////////////////////////////////
291
292 IGV12_ISR :
293
294RTI;
295
296.dw 0xFFFF
297.dw 0xFFFF
298.dw 0xFFFF
299.dw 0xFFFF
300.dw 0xFFFF
301.dw 0xFFFF
302.dw 0xFFFF
303
304/////////////////////////////////////////////////////////////////////////////
305///////////////////////// IGV13 ISR             /////////////////////////////
306/////////////////////////////////////////////////////////////////////////////
307
308 IGV13_ISR :
309
310RTI;
311
312.dw 0xFFFF
313.dw 0xFFFF
314.dw 0xFFFF
315.dw 0xFFFF
316.dw 0xFFFF
317.dw 0xFFFF
318.dw 0xFFFF
319
320/////////////////////////////////////////////////////////////////////////////
321///////////////////////// IGV14 ISR             /////////////////////////////
322/////////////////////////////////////////////////////////////////////////////
323
324 IGV14_ISR :
325
326RTI;
327
328.dw 0xFFFF
329.dw 0xFFFF
330.dw 0xFFFF
331.dw 0xFFFF
332.dw 0xFFFF
333.dw 0xFFFF
334.dw 0xFFFF
335
336/////////////////////////////////////////////////////////////////////////////
337///////////////////////// IGV15 ISR             /////////////////////////////
338/////////////////////////////////////////////////////////////////////////////
339
340 IGV15_ISR :
341
342    P0 = 0x5 (Z);
343    P1 = 0x3 (Z);
344
345
346LD32_LABEL(r0, l1e);
347LSETUP ( l1e , l1e ) LC0 = P1;
348l1s:LT0 = R0;
349l1e:[ -- SP ] = R7;
350
351
352LD32_LABEL(r0, ls1);
353LSETUP ( l2s , l2e ) LC0 = P0;
354l2s:LB0 = R0;
355ls1:R6 += 2;
356l2e:[ -- SP ] = ( R7:5 );
357
358
359LD32_LABEL(r0, ls2);
360LD32_LABEL(r1, ls3);
361LSETUP ( l3s , l3e ) LC0 = P0;
362l3s:LT0 = R0;
363ls2:LB0 = R1;
364ls3:R7 += 3;
365l3e:[ -- SP ] = ( R7:5 );
366
367
368LD32_LABEL(r0, ls4);
369LD32_LABEL(r1, ls5);
370LSETUP ( l4s , l4e ) LC0 = P0;
371l4s:LT0 = R0;
372LB0 = r1;
373ls4:R7 += 3;
374ls5:R4 += 4;
375l4e:[ -- SP ] = ( R7:4 );
376
377LD32_LABEL(r0, ls6);
378LD32_LABEL(r1, ls7);
379LSETUP ( l5s , l5e ) LC0 = P0;
380l5s:LB0 = R1;
381LT0 = r0;
382ls6:R7 += 3;
383    R4 += 4;
384    R5 += 3;
385ls7:R6 += 3;
386l5e:[ -- SP ] = ( R7:4 );
387
388LD32_LABEL(r0, ls8);
389LD32_LABEL(r1, ls9);
390LSETUP ( l6s , l6e ) LC0 = P0;
391l6s:R5 += 1;
392LB0 = r1;
393LT0 = r0;
394ls8:R7 += 3;
395    R4 += 4;
396    R5 += 3;
397    R7 += 5;
398ls9:R7 += 5;
399l6e:[ -- SP ] = ( R7:4 );
400
401
402NOP;
403NOP;
404
405LD32_LABEL(r0, m1e);
406LSETUP ( m1e , m1e ) LC1 = P1;
407m1s:LT0 = R0;
408m1e:[ -- SP ] = R7;
409
410
411LD32_LABEL(r0, ms1);
412LSETUP ( m2s , m2e ) LC1 = P0;
413m2s:LB0 = R0;
414ms1:R6 += 2;
415m2e:[ -- SP ] = ( R7:5 );
416
417
418LD32_LABEL(r0, ms2);
419LD32_LABEL(r1, ms3);
420LSETUP ( m3s , m3e ) LC1 = P0;
421m3s:LT0 = R0;
422ms2:LB0 = R1;
423ms3:R7 += 3;
424m3e:[ -- SP ] = ( R7:5 );
425
426
427LD32_LABEL(r0, ms4);
428LD32_LABEL(r1, ms5);
429LSETUP ( m4s , m4e ) LC1 = P0;
430m4s:LT0 = R0;
431LB0 = r1;
432ms4:R7 += 3;
433ms5:R4 += 4;
434m4e:[ -- SP ] = ( R7:4 );
435
436LD32_LABEL(r0, ms6);
437LD32_LABEL(r1, ms7);
438LSETUP ( m5s , m5e ) LC1 = P0;
439m5s:LB0 = R1;
440LT0 = r0;
441ms6:R7 += 3;
442    R4 += 4;
443    R5 += 3;
444ms7:R6 += 3;
445m5e:[ -- SP ] = ( R7:4 );
446
447LD32_LABEL(r0, ms8);
448LD32_LABEL(r1, ms9);
449LSETUP ( m6s , m6e ) LC1 = P0;
450m6s:R5 += 1;
451LB0 = r1;
452LT0 = r0;
453ms8:R7 += 3;
454    R4 += 4;
455    R5 += 3;
456    R7 += 5;
457ms9:R7 += 5;
458m6e:[ -- SP ] = ( R7:4 );
459
460NOP;
461NOP;
462RTI;
463
464.dw 0xFFFF
465.dw 0xFFFF
466.dw 0xFFFF
467.dw 0xFFFF
468.dw 0xFFFF
469.dw 0xFFFF
470.dw 0xFFFF
471
472/////////////////////////////////////////////////////////////////////////////
473///////////////////////// USER CODE             /////////////////////////////
474/////////////////////////////////////////////////////////////////////////////
475
476
477 USER_CODE :
478
479NOP;
480NOP;
481NOP;
482NOP;
483dbg_pass;        // Call Endtest Macro
484
485/////////////////////////////////////////////////////////////////////////////
486///////////////////////// DATA MEMORY          /////////////////////////////
487/////////////////////////////////////////////////////////////////////////////
488
489.section MEM_DATA_ADDR_1 //.data 0x00F00100,"aw"
490.dd 0xdeadbeef;
491.section MEM_(DATA_ADDR_1 + 0x100) //.data 0x00F00200,"aw"
492.dd 0x01010101; //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
493.dd 0x02020202;
494.dd 0x03030303;
495.dd 0x04040404;
496
497// Define Kernal Stack
498.data
499    .space (STACKSIZE); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
500     KSTACK :
501
502    .space (STACKSIZE);
503     USTACK :
504
505/////////////////////////////////////////////////////////////////////////////
506///////////////////////// END OF TEST           /////////////////////////////
507/////////////////////////////////////////////////////////////////////////////
508