1 //Original:/proj/frio/dv/testcases/debug/dbg_jmp_src_kill/dbg_jmp_src_kill.dsp
2 // Description: This test checks that the trace buffer keeps track of a JUMP
3 // source instruction getting killed at each stage in the pipe. The test
4 // consists of 8 instances of an EXCPT instruction followed by 0 to 7 NOPs
5 // and a JUMP, with the trace buffer enabled.
7 # sim: --environment operating
10 .include "testutils.inc"
13 /////////////////////////////////////////////////////////////////////////////
14 ///////////////////////// Include Files /////////////////////////////
15 /////////////////////////////////////////////////////////////////////////////
18 include(selfcheck.inc)
22 /////////////////////////////////////////////////////////////////////////////
23 ///////////////////////// Defines /////////////////////////////
24 /////////////////////////////////////////////////////////////////////////////
26 #ifndef USER_CODE_SPACE
27 #define USER_CODE_SPACE CODE_ADDR_1 //
30 #define STACKSIZE 0x00000020
33 #define ITABLE CODE_ADDR_2 //
36 /////////////////////////////////////////////////////////////////////////////
37 ///////////////////////// RESET ISR /////////////////////////////
38 /////////////////////////////////////////////////////////////////////////////
48 // Initialize ILBM Registers
54 // Initialize the Address of the Checkreg data segment
55 // **** THIS IS NEEDED WHENEVER CHECKREG IS USED ****
56 CHECK_INIT_DEF(p5); //CHECK_INIT(p5, 0x00BFFFFC);
59 LD32_LABEL(sp, USTACK);
63 LD32_LABEL(sp, KSTACK);
65 // Setup Frame Pointer
68 // Setup Event Vector Table
71 LD32_LABEL(r0, EMU_ISR); // Emulation Handler (Int0)
73 LD32_LABEL(r0, RST_ISR); // Reset Handler (Int1)
75 LD32_LABEL(r0, NMI_ISR); // NMI Handler (Int2)
77 LD32_LABEL(r0, EXC_ISR); // Exception Handler (Int3)
79 [ P0 ++ ] = R0; // IVT4 not used
80 LD32_LABEL(r0, HWE_ISR); // HW Error Handler (Int5)
82 LD32_LABEL(r0, TMR_ISR); // Timer Handler (Int6)
84 LD32_LABEL(r0, IGV7_ISR); // IVG7 Handler
86 LD32_LABEL(r0, IGV8_ISR); // IVG8 Handler
88 LD32_LABEL(r0, IGV9_ISR); // IVG9 Handler
90 LD32_LABEL(r0, IGV10_ISR); // IVG10 Handler
92 LD32_LABEL(r0, IGV11_ISR); // IVG11 Handler
94 LD32_LABEL(r0, IGV12_ISR); // IVG12 Handler
96 LD32_LABEL(r0, IGV13_ISR); // IVG13 Handler
98 LD32_LABEL(r0, IGV14_ISR); // IVG14 Handler
100 LD32_LABEL(r0, IGV15_ISR); // IVG15 Handler
103 // Setup the EVT_OVERRIDE MMR
105 LD32(p0, EVT_OVERRIDE);
108 // Setup Interrupt Mask
113 // Return to Supervisor Code
117 LD32_LABEL(r0, USER_CODE);
129 /////////////////////////////////////////////////////////////////////////////
132 /////////////////////////////////////////////////////////////////////////////
133 ///////////////////////// EMU ISR /////////////////////////////
134 /////////////////////////////////////////////////////////////////////////////
148 /////////////////////////////////////////////////////////////////////////////
149 ///////////////////////// NMI ISR /////////////////////////////
150 /////////////////////////////////////////////////////////////////////////////
164 /////////////////////////////////////////////////////////////////////////////
165 ///////////////////////// EXC ISR /////////////////////////////
166 /////////////////////////////////////////////////////////////////////////////
170 // Save all the registers used in the ISR
180 // Get EXCAUSE bits out of SEQSTAT
185 // Check for Trace Exception
186 // Load r1 with EXCAUSE for Trace Exception
188 // Check for Trace Exception
190 // Branch to OUT if the EXCAUSE is not TRACE.
193 // Read out the Trace Buffer.
198 // if p1 is zero skip the loop.
202 // Read out the Entire Trace Buffer.
204 LSETUP ( l0s , l0e ) LC0 = P1;
209 // Check for other exception, if any.
211 // Restore all saved registers.
232 /////////////////////////////////////////////////////////////////////////////
233 ///////////////////////// HWE ISR /////////////////////////////
234 /////////////////////////////////////////////////////////////////////////////
248 /////////////////////////////////////////////////////////////////////////////
249 ///////////////////////// TMR ISR /////////////////////////////
250 /////////////////////////////////////////////////////////////////////////////
264 /////////////////////////////////////////////////////////////////////////////
265 ///////////////////////// IGV7 ISR /////////////////////////////
266 /////////////////////////////////////////////////////////////////////////////
280 /////////////////////////////////////////////////////////////////////////////
281 ///////////////////////// IGV8 ISR /////////////////////////////
282 /////////////////////////////////////////////////////////////////////////////
296 /////////////////////////////////////////////////////////////////////////////
297 ///////////////////////// IGV9 ISR /////////////////////////////
298 /////////////////////////////////////////////////////////////////////////////
312 /////////////////////////////////////////////////////////////////////////////
313 ///////////////////////// IGV10 ISR /////////////////////////////
314 /////////////////////////////////////////////////////////////////////////////
328 /////////////////////////////////////////////////////////////////////////////
329 ///////////////////////// IGV11 ISR /////////////////////////////
330 /////////////////////////////////////////////////////////////////////////////
344 /////////////////////////////////////////////////////////////////////////////
345 ///////////////////////// IGV12 ISR /////////////////////////////
346 /////////////////////////////////////////////////////////////////////////////
360 /////////////////////////////////////////////////////////////////////////////
361 ///////////////////////// IGV13 ISR /////////////////////////////
362 /////////////////////////////////////////////////////////////////////////////
376 /////////////////////////////////////////////////////////////////////////////
377 ///////////////////////// IGV14 ISR /////////////////////////////
378 /////////////////////////////////////////////////////////////////////////////
392 /////////////////////////////////////////////////////////////////////////////
393 ///////////////////////// IGV15 ISR /////////////////////////////
394 /////////////////////////////////////////////////////////////////////////////
398 WR_MMR(TBUFCTL, 0x7, p0, r0); // Enable trace buffer & overflow
400 CSYNC; // Wait for MMR write to complete
403 JUMP 4; // Jump gets killed in WB stage
409 JUMP 4; // Jump gets killed in EX3 stage
416 JUMP 4; // Jump gets killed in EX2 stage
424 JUMP 4; // Jump gets killed in EX1 stage
433 JUMP 4; // Jump gets killed in AC stage
443 JUMP 4; // Jump gets killed in DEC stage
454 JUMP 4; // Jump gets killed in IF2 stage
466 JUMP 4; // Jump gets killed in IF1 stage
470 // Read out the Rest of the Trace Buffer.
475 // if p1 is zero skip the loop.
479 // Read out the Entire Trace Buffer.
481 LSETUP ( l1s , l1e ) LC0 = P1;
485 // Don't RTI if you never wish to go to User Mode
486 // use END_TEST instead.
501 /////////////////////////////////////////////////////////////////////////////
502 ///////////////////////// USER CODE /////////////////////////////
503 /////////////////////////////////////////////////////////////////////////////
508 // YOUR USER CODE GOES HERE.
510 dbg_pass; // Call Endtest Macro
512 /////////////////////////////////////////////////////////////////////////////
513 ///////////////////////// DATA MEMRORY /////////////////////////////
514 /////////////////////////////////////////////////////////////////////////////
516 .section MEM_DATA_ADDR_1 //.data 0x00F00100,"aw"
533 // Define Kernal Stack
534 .section MEM_DATA_ADDR_2 //.data 0x00F00210,"aw"
541 /////////////////////////////////////////////////////////////////////////////
542 ///////////////////////// END OF TEST /////////////////////////////
543 /////////////////////////////////////////////////////////////////////////////