1 //Original:/proj/frio/dv/testcases/debug/dbg_tr_tbuf0/dbg_tr_tbuf0.dsp 2 # mach: bfin 3 # sim: --environment operating 4 5 #include "test.h" 6 .include "testutils.inc" 7 start 8 9 include(std.inc) 10 include(mmrs.inc) 11 include(selfcheck.inc) 12 13 #ifndef ITABLE 14 #define ITABLE 0xF0000000 15 #endif 16 17 // This test embeds .text offsets, so pad our test so it lines up. 18 .space 0x64 19 20 // Boot code 21 22 BOOT : 23 INIT_R_REGS(0); // Initialize Dregs 24 INIT_P_REGS(0); // Initialize Pregs 25 26 CHECK_INIT(p5, 0x00BFFFFC); 27 28 29 LD32(p0, EVT0); // Setup Event Vectors and Handlers 30 31 LD32_LABEL(r0, EHANDLE); // Emulation Handler (Int0) 32 [ P0 ++ ] = R0; 33 34 LD32_LABEL(r0, RHANDLE); // Reset Handler (Int1) 35 [ P0 ++ ] = R0; 36 37 LD32_LABEL(r0, NHANDLE); // NMI Handler (Int2) 38 [ P0 ++ ] = R0; 39 40 LD32_LABEL(r0, XHANDLE); // Exception Handler (Int3) 41 [ P0 ++ ] = R0; 42 43 [ P0 ++ ] = R0; // IVT4 not used 44 45 LD32_LABEL(r0, HWHANDLE); // HW Error Handler (Int5) 46 [ P0 ++ ] = R0; 47 48 LD32_LABEL(r0, THANDLE); // Timer Handler (Int6) 49 [ P0 ++ ] = R0; 50 51 LD32_LABEL(r0, I7HANDLE); // IVG7 Handler 52 [ P0 ++ ] = R0; 53 54 LD32_LABEL(r0, I8HANDLE); // IVG8 Handler 55 [ P0 ++ ] = R0; 56 57 LD32_LABEL(r0, I9HANDLE); // IVG9 Handler 58 [ P0 ++ ] = R0; 59 60 LD32_LABEL(r0, I10HANDLE); // IVG10 Handler 61 [ P0 ++ ] = R0; 62 63 LD32_LABEL(r0, I11HANDLE); // IVG11 Handler 64 [ P0 ++ ] = R0; 65 66 LD32_LABEL(r0, I12HANDLE); // IVG12 Handler 67 [ P0 ++ ] = R0; 68 69 LD32_LABEL(r0, I13HANDLE); // IVG13 Handler 70 [ P0 ++ ] = R0; 71 72 LD32_LABEL(r0, I14HANDLE); // IVG14 Handler 73 [ P0 ++ ] = R0; 74 75 LD32_LABEL(r0, I15HANDLE); // IVG15 Handler 76 [ P0 ++ ] = R0; 77 78 LD32(p0, EVT_OVERRIDE); 79 R0 = 0; 80 [ P0 ++ ] = R0; 81 R0 = -1; // Change this to mask interrupts (*) 82 [ P0 ] = R0; // IMASK 83 84 LD32_LABEL(p1, START); 85 86 LD32(p0, EVT15); 87 [ P0 ] = P1; // IVG15 (General) handler (Int 15) load with start 88 89 LD32_LABEL(r7, DUMMY); 90 RETI = r7; 91 RAISE 15; // after we RTI, INT 15 should be taken 92 93 NOP; // Workaround for Bug 217 94 RTI; 95 NOP; 96 NOP; 97 NOP; 98 DUMMY: 99 NOP; 100 NOP; 101 NOP; 102 NOP; 103 104 105 106 START : 107 108 WR_MMR(TBUFCTL, 0x00000001, p0, r0); // Turn ON trace Buffer 109 WR_MMR(TBUFCTL, 0x0000000b, p0, r0); // Turn ON trace Buffer 110 // TBUFPWR = 1 111 // TBUFEN = 1 112 // TBUFOVF = 0 113 // CMPLP = 01 114 NOP; 115 NOP; 116 NOP; 117 NOP; 118 NOP; 119 R6 = 0; 120 R7 = 10; 121 122 JMP: 123 JUMP.S LABEL0; 124 NOP; 125 NOP; 126 127 LABEL0: 128 P1 = 0x0006; 129 JUMP (PC+P1); 130 131 LABEL1: 132 LD32(R3, 0xBADD); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >> 133 134 LABEL2: 135 CC = R7 == R6; 136 IF CC JUMP END; 137 R6 += 1; 138 JUMP LABEL2; 139 140 LABEL3: 141 NOP; 142 143 LABEL4: 144 LD32(R4, 0xBADD); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >> 145 146 147 148 149 END: 150 R0 = 1; 151 NOP; 152 NOP; 153 NOP; 154 155 CHECKREG(r3, 0x00000000); 156 CHECKREG(r4, 0x00000000); 157 // Read the contents of the Trace Buffer 158 159 RD_MMR(TBUFSTAT, p0, r0); 160 CHECKREG(r0, 0x00000004); 161 162 // Read last entry of the Trace Buffer 163 RD_MMR(TBUF, p0, r1); 164 CHECKREG(r1, 0x00000256); 165 166 RD_MMR(TBUF, p0, r2); 167 CHECKREG(r2, 0x00000246); 168 169 RD_MMR(TBUFSTAT, p0, r0); 170 CHECKREG(r0, 0x00000003); 171 172 // Read last entry of the Trace Buffer 173 RD_MMR(TBUF, p0, r1); 174 CHECKREG(r1, 0x00000245); 175 176 RD_MMR(TBUF, p0, r2); 177 CHECKREG(r2, 0x0000024a); 178 179 RD_MMR(TBUFSTAT, p0, r0); 180 CHECKREG(r0, 0x00000002); 181 182 // Read last entry of the Trace Buffer 183 RD_MMR(TBUF, p0, r1); 184 CHECKREG(r1, 0x00000240); 185 186 RD_MMR(TBUF, p0, r2); 187 CHECKREG(r2, 0x0000023a); 188 189 RD_MMR(TBUFSTAT, p0, r0); 190 CHECKREG(r0, 0x00000001); 191 192 // Read last entry of the Trace Buffer 193 RD_MMR(TBUF, p0, r1); 194 CHECKREG(r1, 0x00000238); 195 196 RD_MMR(TBUF, p0, r2); 197 CHECKREG(r2, 0x00000232); 198 199 200 201 NOP; 202 NOP; 203 NOP; 204 NOP; 205 NOP; 206 NOP; 207 dbg_pass; // Call Endtest Macro 208 209 210 211 //********************************************************************* 212 // 213 // Handlers for Events 214 // 215 216 EHANDLE: // Emulation Handler 0 217 RTE; 218 219 RHANDLE: // Reset Handler 1 220 RTI; 221 222 NHANDLE: // NMI Handler 2 223 RTN; 224 225 XHANDLE: // Exception Handler 3 226 227 RTX; 228 NOP;NOP;NOP;NOP;NOP; 229 NOP;NOP;NOP;NOP;NOP; 230 231 HWHANDLE: // HW Error Handler 5 232 RTI; 233 234 THANDLE: // Timer Handler 6 235 RTI; 236 237 I7HANDLE: // IVG 7 Handler 238 RTI; 239 240 I8HANDLE: // IVG 8 Handler 241 RTI; 242 243 I9HANDLE: // IVG 9 Handler 244 RTI; 245 246 I10HANDLE: // IVG 10 Handler 247 RTI; 248 249 I11HANDLE: // IVG 11 Handler 250 RTI; 251 252 I12HANDLE: // IVG 12 Handler 253 RTI; 254 255 I13HANDLE: // IVG 13 Handler 256 RTI; 257 258 I14HANDLE: // IVG 14 Handler 259 RTI; 260 261 I15HANDLE: // IVG 15 Handler 262 RTI; 263