1 //Original:/proj/frio/dv/testcases/seq/se_loop_kill/se_loop_kill.dsp 2 # mach: bfin 3 # sim: --environment operating 4 5 #include "test.h" 6 .include "testutils.inc" 7 start 8 9 ///////////////////////////////////////////////////////////////////////////// 10 ///////////////////////// Include Files ///////////////////////////// 11 ///////////////////////////////////////////////////////////////////////////// 12 13 include(std.inc) 14 include(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 55 INIT_R_REGS(0); 56 57 // Initialize Pregs 58 INIT_P_REGS(0); 59 60 // Initialize ILBM Registers 61 INIT_I_REGS(0); 62 INIT_M_REGS(0); 63 INIT_L_REGS(0); 64 INIT_B_REGS(0); 65 66 // Initialize the Address of the Checkreg data segment 67 // **** THIS IS NEEDED WHENEVER CHECKREG IS USED **** 68 CHECK_INIT(p5, 0x00BFFFFC); 69 70 // Setup User Stack 71 LD32_LABEL(sp, USTACK); 72 USP = SP; 73 74 // Setup Kernel Stack 75 LD32_LABEL(sp, KSTACK); 76 77 // Setup Frame Pointer 78 FP = SP; 79 80 // Setup Event Vector Table 81 LD32(p0, EVT); 82 83 LD32_LABEL(r0, EMU_ISR); // Emulation Handler (Int0) 84 [ P0 ++ ] = R0; 85 LD32_LABEL(r0, RST_ISR); // Reset Handler (Int1) 86 [ P0 ++ ] = R0; 87 LD32_LABEL(r0, NMI_ISR); // NMI Handler (Int2) 88 [ P0 ++ ] = R0; 89 LD32_LABEL(r0, EXC_ISR); // Exception Handler (Int3) 90 [ P0 ++ ] = R0; 91 [ P0 ++ ] = R0; // IVT4 not used 92 LD32_LABEL(r0, HWE_ISR); // HW Error Handler (Int5) 93 [ P0 ++ ] = R0; 94 LD32_LABEL(r0, TMR_ISR); // Timer Handler (Int6) 95 [ P0 ++ ] = R0; 96 LD32_LABEL(r0, IGV7_ISR); // IVG7 Handler 97 [ P0 ++ ] = R0; 98 LD32_LABEL(r0, IGV8_ISR); // IVG8 Handler 99 [ P0 ++ ] = R0; 100 LD32_LABEL(r0, IGV9_ISR); // IVG9 Handler 101 [ P0 ++ ] = R0; 102 LD32_LABEL(r0, IGV10_ISR); // IVG10 Handler 103 [ P0 ++ ] = R0; 104 LD32_LABEL(r0, IGV11_ISR); // IVG11 Handler 105 [ P0 ++ ] = R0; 106 LD32_LABEL(r0, IGV12_ISR); // IVG12 Handler 107 [ P0 ++ ] = R0; 108 LD32_LABEL(r0, IGV13_ISR); // IVG13 Handler 109 [ P0 ++ ] = R0; 110 LD32_LABEL(r0, IGV14_ISR); // IVG14 Handler 111 [ P0 ++ ] = R0; 112 LD32_LABEL(r0, IGV15_ISR); // IVG15 Handler 113 [ P0 ++ ] = R0; 114 115 // Setup the EVT_OVERRIDE MMR 116 R0 = 0; 117 LD32(p0, EVT_OVERRIDE); 118 [ P0 ] = R0; 119 120 // Setup Interrupt Mask 121 R0 = -1; 122 LD32(p0, IMASK); 123 [ P0 ] = R0; 124 125 // Return to Supervisor Code 126 RAISE 15; 127 NOP; 128 129 LD32_LABEL(r0, USER_CODE); 130 RETI = R0; 131 RTI; 132 133 .dw 0xFFFF 134 .dw 0xFFFF 135 .dw 0xFFFF 136 .dw 0xFFFF 137 .dw 0xFFFF 138 .dw 0xFFFF 139 .dw 0xFFFF 140 141 ///////////////////////////////////////////////////////////////////////////// 142 143 144 ///////////////////////////////////////////////////////////////////////////// 145 ///////////////////////// EMU ISR ///////////////////////////// 146 ///////////////////////////////////////////////////////////////////////////// 147 148 EMU_ISR : 149 150 RTE; 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 ///////////////////////// NMI ISR ///////////////////////////// 162 ///////////////////////////////////////////////////////////////////////////// 163 164 NMI_ISR : 165 166 RTN; 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 ///////////////////////// EXC ISR ///////////////////////////// 178 ///////////////////////////////////////////////////////////////////////////// 179 180 EXC_ISR : 181 182 RTX; 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 ///////////////////////// HWE ISR ///////////////////////////// 194 ///////////////////////////////////////////////////////////////////////////// 195 196 HWE_ISR : 197 198 RTI; 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 ///////////////////////// TMR ISR ///////////////////////////// 210 ///////////////////////////////////////////////////////////////////////////// 211 212 TMR_ISR : 213 214 RTI; 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 ///////////////////////// IGV7 ISR ///////////////////////////// 226 ///////////////////////////////////////////////////////////////////////////// 227 228 IGV7_ISR : 229 230 RTI; 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 ///////////////////////// IGV8 ISR ///////////////////////////// 242 ///////////////////////////////////////////////////////////////////////////// 243 244 IGV8_ISR : 245 246 RTI; 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 ///////////////////////// IGV9 ISR ///////////////////////////// 258 ///////////////////////////////////////////////////////////////////////////// 259 260 IGV9_ISR : 261 262 RTI; 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 ///////////////////////// IGV10 ISR ///////////////////////////// 274 ///////////////////////////////////////////////////////////////////////////// 275 276 IGV10_ISR : 277 278 RTI; 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 ///////////////////////// IGV11 ISR ///////////////////////////// 290 ///////////////////////////////////////////////////////////////////////////// 291 292 IGV11_ISR : 293 294 RTI; 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 ///////////////////////// IGV12 ISR ///////////////////////////// 306 ///////////////////////////////////////////////////////////////////////////// 307 308 IGV12_ISR : 309 310 RTI; 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 ///////////////////////// IGV13 ISR ///////////////////////////// 322 ///////////////////////////////////////////////////////////////////////////// 323 324 IGV13_ISR : 325 326 RTI; 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 ///////////////////////// IGV14 ISR ///////////////////////////// 338 ///////////////////////////////////////////////////////////////////////////// 339 340 IGV14_ISR : 341 342 RTI; 343 344 .dw 0xFFFF 345 .dw 0xFFFF 346 .dw 0xFFFF 347 .dw 0xFFFF 348 .dw 0xFFFF 349 .dw 0xFFFF 350 .dw 0xFFFF 351 352 ///////////////////////////////////////////////////////////////////////////// 353 ///////////////////////// IGV15 ISR ///////////////////////////// 354 ///////////////////////////////////////////////////////////////////////////// 355 356 IGV15_ISR : 357 358 P0 = 0x5 (Z); 359 P1 = 0x3 (Z); 360 P2 = 0x0200 (Z); 361 P2.H = 0x00F0; 362 [ -- SP ] = P0; 363 [ -- SP ] = P0; 364 SSYNC; 365 366 LD32_LABEL(r0, l0t); 367 LD32_LABEL(r1, l0b); 368 LT0 = r0; 369 LB0 = r1; 370 EXCPT 0x5; // Will kill mv2lc in EX3 371 NOP; 372 LC0 = P0; 373 l0t:R3 += 3; 374 R1 += 1; 375 R4 += 4; 376 R5 += 5; 377 R6 += 6; 378 l0b:R2 += 2; 379 380 LD32_LABEL(r0, l2t); 381 LD32_LABEL(r1, l2b); 382 LT0 = r0; 383 LB0 = r1; 384 EXCPT 0x5; // Will kill mv2lc in EX3 when stalled 385 LC0 = [ SP ++ ]; 386 l2t:R3 += 3; 387 R1 += 1; 388 R4 += 4; 389 R5 += 5; 390 R6 += 6; 391 l2b:R2 += 2; 392 393 LD32_LABEL(r0, l1t); 394 LD32_LABEL(r1, l1b); 395 LT1 = r0; 396 LB1 = r1; 397 EXCPT 0x5; // Will kill mv2lc in EX3 when stalled 398 LC1 = [ SP ++ ]; 399 l1t:R3 += 3; 400 R1 += 1; 401 R4 += 4; 402 R5 += 5; 403 R6 += 6; 404 l1b:R2 += 2; 405 406 LD32_LABEL(r0, l3t); 407 LD32_LABEL(r1, l3b); 408 LT1 = r0; 409 LB1 = r1; 410 EXCPT 0x5; // Will kill mv2lc in EX3 411 NOP; 412 LC1 = P0; 413 l3t:R3 += 3; 414 R1 += 1; 415 R4 += 4; 416 R5 += 5; 417 R6 += 6; 418 l3b:R2 += 2; 419 420 EXCPT 0x6; // Will kill Lsetup in EX2 421 NOP; 422 NOP; 423 LSETUP ( l1e , l1e ) LC0 = P1; 424 l1e:R7 += 1; 425 426 EXCPT 0x6; // Will kill Lsetup in EX2 427 NOP; 428 NOP; 429 LSETUP ( m1e , m1e ) LC1 = P1; 430 m1e:R7 += 1; 431 432 EXCPT 0x6; // Will kill Lsetup in EX1 433 NOP; 434 NOP; 435 NOP; 436 LSETUP ( l2e , l2e ) LC0 = P1; 437 l2e:R7 += 1; 438 439 EXCPT 0x6; // Will kill Lsetup in EX1 440 NOP; 441 NOP; 442 NOP; 443 LSETUP ( m2e , m2e ) LC1 = P1; 444 m2e:R7 += 1; 445 446 NOP; 447 NOP; 448 NOP; 449 450 EXCPT 0x6; // Will kill Lsetup in EX2 when stalled 451 R0 = [ P2 ++ ]; 452 LSETUP ( l3e , l3e ) LC0 = P1; 453 l3e:R7 += 1; 454 455 EXCPT 0x6; // Will kill Lsetup in EX2 when stalled 456 R0 = [ P2 ++ ]; 457 LSETUP ( m3e , m3e ) LC1 = P1; 458 m3e:R7 += 1; 459 460 EXCPT 0x6; // Will kill Lsetup in EX1 when stalled 461 R0 = [ P2 ++ ]; 462 NOP; 463 LSETUP ( l4e , l4e ) LC0 = P1; 464 l4e:R7 += 1; 465 466 EXCPT 0x6; // Will kill Lsetup in EX1 when stalled 467 R0 = [ P2 ++ ]; 468 NOP; 469 LSETUP ( m4e , m4e ) LC1 = P1; 470 m4e:R7 += 1; 471 472 NOP; 473 NOP; 474 RTI; 475 476 .dw 0xFFFF 477 .dw 0xFFFF 478 .dw 0xFFFF 479 .dw 0xFFFF 480 .dw 0xFFFF 481 .dw 0xFFFF 482 .dw 0xFFFF 483 484 ///////////////////////////////////////////////////////////////////////////// 485 ///////////////////////// USER CODE ///////////////////////////// 486 ///////////////////////////////////////////////////////////////////////////// 487 488 489 USER_CODE : 490 491 NOP; 492 NOP; 493 NOP; 494 NOP; 495 dbg_pass; // Call Endtest Macro 496 497 ///////////////////////////////////////////////////////////////////////////// 498 ///////////////////////// DATA MEMRORY ///////////////////////////// 499 ///////////////////////////////////////////////////////////////////////////// 500 501 .section MEM_0x00F00100,"aw" 502 .dd 0xdeadbeef; 503 .section MEM_0x00F00200,"aw" 504 .dd 0x01010101; 505 .dd 0x02020202; 506 .dd 0x03030303; 507 .dd 0x04040404; 508 509 // Define Kernal Stack 510 .section MEM_0x00F00210,"aw" 511 .space (STACKSIZE); 512 KSTACK : 513 514 .space (STACKSIZE); 515 USTACK : 516 517 ///////////////////////////////////////////////////////////////////////////// 518 ///////////////////////// END OF TEST ///////////////////////////// 519 ///////////////////////////////////////////////////////////////////////////// 520