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