1 //Original:/proj/frio/dv/testcases/debug/dbg_tr_basic/dbg_tr_basic.dsp
2 // Description: Verify the basic functionality of TBUFPWR and TBUFEN in
5 # sim: --environment operating
8 .include "testutils.inc"
13 include(selfcheck.inc)
16 #define ITABLE 0xF0000000
19 // This test embeds .text offsets, so pad our test so it lines up.
25 INIT_R_REGS(0); // Initialize Dregs
26 INIT_P_REGS(0); // Initialize Pregs
28 CHECK_INIT(p5, 0x00BFFFFC);
30 LD32(p0, EVT0); // Setup Event Vectors and Handlers
32 LD32_LABEL(r0, EHANDLE); // Emulation Handler (Int0)
35 LD32_LABEL(r0, RHANDLE); // Reset Handler (Int1)
38 LD32_LABEL(r0, NHANDLE); // NMI Handler (Int2)
41 LD32_LABEL(r0, XHANDLE); // Exception Handler (Int3)
44 [ P0 ++ ] = R0; // IVT4 not used
46 LD32_LABEL(r0, HWHANDLE); // HW Error Handler (Int5)
49 LD32_LABEL(r0, THANDLE); // Timer Handler (Int6)
52 LD32_LABEL(r0, I7HANDLE); // IVG7 Handler
55 LD32_LABEL(r0, I8HANDLE); // IVG8 Handler
58 LD32_LABEL(r0, I9HANDLE); // IVG9 Handler
61 LD32_LABEL(r0, I10HANDLE); // IVG10 Handler
64 LD32_LABEL(r0, I11HANDLE); // IVG11 Handler
67 LD32_LABEL(r0, I12HANDLE); // IVG12 Handler
70 LD32_LABEL(r0, I13HANDLE); // IVG13 Handler
73 LD32_LABEL(r0, I14HANDLE); // IVG14 Handler
76 LD32_LABEL(r0, I15HANDLE); // IVG15 Handler
79 LD32(p0, EVT_OVERRIDE);
82 R0 = -1; // Change this to mask interrupts (*)
85 LD32_LABEL(p1, START);
88 [ P0 ] = P1; // IVG15 (General) handler (Int 15) load with start
90 LD32_LABEL(r7, DUMMY);
92 RAISE 15; // after we RTI, INT 15 should be taken
94 NOP; // Workaround for Bug 217
108 WR_MMR(TBUFCTL, 0x00000000, p0, r0); // Turn ON trace Buffer
121 R4.L = 0x1111; // Will be killed
122 R4.H = 0x1111; // Will be killed
126 label2: R5.H = 0x7777; //
129 R6.L = 0x1111; // Will be killed
130 R6.H = 0x1111; // Will be killed
136 label1: R4.H = 0x5555; //
139 WR_MMR(TBUFCTL, 0x00000002, p0, r0); //
149 R5.L = 0x1111; // Will be killed
150 R5.H = 0x1111; // Will be killed
155 label3: R6.H = 0x7999; //
159 WR_MMR(TBUFCTL, 0x00000001, p0, r0);
163 WR_MMR(TBUFCTL, 0x00000003, p0, r0); // Turn ON trace Buffer
173 R5.L = 0x1111; // Will be killed
174 R5.H = 0x1111; // Will be killed
180 label4: R6.H = 0x1aaa; //
187 WR_MMR(TBUFCTL, 0x00000001, p0, r0); // Turn OFF trace Buffer
193 // Read the contents of the Trace Buffer
195 RD_MMR(TBUFSTAT, p0, r2);
196 CHECKREG(r2, 0x00000001);
198 // Read 3rd Entry of the Trace Buffer
199 RD_MMR(TBUF, p0, r0);
200 CHECKREG(r0, 0x000002d2);
202 RD_MMR(TBUFSTAT, p0, r2);
203 CHECKREG(r2, 0x00000001);
205 RD_MMR(TBUF, p0, r1);
206 CHECKREG(r1, 0x000002c0);
208 RD_MMR(TBUFSTAT, p0, r2);
209 CHECKREG(r2, 0x00000000);
212 WR_MMR(TBUFCTL, 0x00000000, p0, r0); // Turn OFF trace Buffer Power
220 dbg_pass; // Call Endtest Macro
224 //*********************************************************************
226 // Handlers for Events
229 EHANDLE: // Emulation Handler 0
232 RHANDLE: // Reset Handler 1
235 NHANDLE: // NMI Handler 2
238 XHANDLE: // Exception Handler 3
241 HWHANDLE: // HW Error Handler 5
244 THANDLE: // Timer Handler 6
247 I7HANDLE: // IVG 7 Handler
250 I8HANDLE: // IVG 8 Handler
253 I9HANDLE: // IVG 9 Handler
256 I10HANDLE: // IVG 10 Handler
259 I11HANDLE: // IVG 11 Handler
262 I12HANDLE: // IVG 12 Handler
265 I13HANDLE: // IVG 13 Handler
268 I14HANDLE: // IVG 14 Handler
271 I15HANDLE: // IVG 15 Handler