1//Original:/proj/frio/dv/testcases/seq/se_loop_mv2lc_stall/se_loop_mv2lc_stall.dsp 2# mach: bfin 3# sim: --environment operating 4 5#include "test.h" 6.include "testutils.inc" 7start 8 9///////////////////////////////////////////////////////////////////////////// 10///////////////////////// Include Files ///////////////////////////// 11///////////////////////////////////////////////////////////////////////////// 12 13include(std.inc) 14include(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 55INIT_R_REGS(0); 56 57 // Initialize Pregs 58INIT_P_REGS(0); 59 60 // Initialize ILBM Registers 61INIT_I_REGS(0); 62INIT_M_REGS(0); 63INIT_L_REGS(0); 64INIT_B_REGS(0); 65 66 // Initialize the Address of the Checkreg data segment 67 // **** THIS IS NEEDED WHENEVER CHECKREG IS USED **** 68CHECK_INIT(p5, 0x00BFFFFC); 69 70 // Setup User Stack 71LD32_LABEL(sp, USTACK); 72USP = SP; 73 74 // Setup Kernel Stack 75LD32_LABEL(sp, KSTACK); 76 77 // Setup Frame Pointer 78FP = SP; 79 80 // Setup Event Vector Table 81LD32(p0, EVT); 82 83LD32_LABEL(r0, EMU_ISR); // Emulation Handler (Int0) 84 [ P0 ++ ] = R0; 85LD32_LABEL(r0, RST_ISR); // Reset Handler (Int1) 86 [ P0 ++ ] = R0; 87LD32_LABEL(r0, NMI_ISR); // NMI Handler (Int2) 88 [ P0 ++ ] = R0; 89LD32_LABEL(r0, EXC_ISR); // Exception Handler (Int3) 90 [ P0 ++ ] = R0; 91 [ P0 ++ ] = R0; // IVT4 not used 92LD32_LABEL(r0, HWE_ISR); // HW Error Handler (Int5) 93 [ P0 ++ ] = R0; 94LD32_LABEL(r0, TMR_ISR); // Timer Handler (Int6) 95 [ P0 ++ ] = R0; 96LD32_LABEL(r0, IGV7_ISR); // IVG7 Handler 97 [ P0 ++ ] = R0; 98LD32_LABEL(r0, IGV8_ISR); // IVG8 Handler 99 [ P0 ++ ] = R0; 100LD32_LABEL(r0, IGV9_ISR); // IVG9 Handler 101 [ P0 ++ ] = R0; 102LD32_LABEL(r0, IGV10_ISR); // IVG10 Handler 103 [ P0 ++ ] = R0; 104LD32_LABEL(r0, IGV11_ISR); // IVG11 Handler 105 [ P0 ++ ] = R0; 106LD32_LABEL(r0, IGV12_ISR); // IVG12 Handler 107 [ P0 ++ ] = R0; 108LD32_LABEL(r0, IGV13_ISR); // IVG13 Handler 109 [ P0 ++ ] = R0; 110LD32_LABEL(r0, IGV14_ISR); // IVG14 Handler 111 [ P0 ++ ] = R0; 112LD32_LABEL(r0, IGV15_ISR); // IVG15 Handler 113 [ P0 ++ ] = R0; 114 115 // Setup the EVT_OVERRIDE MMR 116 R0 = 0; 117LD32(p0, EVT_OVERRIDE); 118 [ P0 ] = R0; 119 120 // Setup Interrupt Mask 121 R0 = -1; 122LD32(p0, IMASK); 123 [ P0 ] = R0; 124 125 // Return to Supervisor Code 126RAISE 15; 127NOP; 128 129LD32_LABEL(r0, USER_CODE); 130RETI = R0; 131RTI; 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 150RTE; 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 166RTN; 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 182RTX; 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 198RTI; 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 214RTI; 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 230RTI; 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 246RTI; 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 262RTI; 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 278RTI; 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 294RTI; 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 310RTI; 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 326RTI; 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 342RTI; 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 = 0x0100 (Z); 361 P2.H = 0x00f0; 362 363 // 2 pushes of P0 onto the Stack; 364 [ -- SP ] = P0; 365 [ -- SP ] = P0; 366 367 // Loop 0 368LD32_LABEL(r0, L0T); 369LD32_LABEL(r1, L0B); 370LT0 = r0; 371LB0 = r1; 372 R0 = [ P2 ++ ]; 373LC0 = p1; 374L0T:R3 += 4; 375 R2 += 3; 376 R4 += 5; 377 R5 += 6; 378 R6 += 7; 379L0B:R7 += 8; 380 381 // Loop 0 382LD32_LABEL(r0, L1T); 383LD32_LABEL(r1, L1B); 384LT0 = r0; 385LB0 = r1; 386 R0 = [ P2 ++ ]; 387NOP; 388LC0 = p1; 389L1T:R4 += 5; 390 R2 += 3; 391 R3 += 4; 392 R5 += 6; 393 R6 += 7; 394L1B:R7 += 8; 395 396 // Loop 0 397LD32_LABEL(r0, L2T); 398LD32_LABEL(r1, L2B); 399LT0 = r0; 400LB0 = r1; 401 R0 = [ P2 ++ ]; 402NOP; 403NOP; 404LC0 = p1; 405L2T:R5 += 6; 406 R2 += 3; 407 R3 += 4; 408 R4 += 5; 409 R6 += 7; 410L2B:R7 += 8; 411 412 // Loop 0 413LD32_LABEL(r0, L3T); 414LD32_LABEL(r1, L3B); 415LT0 = r0; 416LB0 = r1; 417 R0 = [ P2 ++ ]; 418NOP; 419NOP; 420NOP; 421LC0 = p1; 422L3T:R2 += 3; 423 R5 += 6; 424 R6 += 7; 425 R3 += 4; 426 R4 += 5; 427L3B:R7 += 8; 428 429 // Loop 0 430LD32_LABEL(r0, L4T); 431LD32_LABEL(r1, L4B); 432LT0 = r0; 433LB0 = r1; 434 R0 = [ P2 ++ ]; 435NOP; 436NOP; 437NOP; 438NOP; 439LC0 = p1; 440L4T:R2 += 3; 441 R3 += 4; 442 R5 += 6; 443 R6 += 7; 444 R4 += 5; 445L4B:R7 += 8; 446 447 // Loop 0 448LD32_LABEL(r0, L5T); 449LD32_LABEL(r1, L5B); 450LT0 = r0; 451LB0 = r1; 452 R0 = [ P2 ++ ]; 453LC0 = [sp++]; 454L5T:R2 += 3; 455 R3 += 4; 456 R5 += 6; 457 R6 += 7; 458 R4 += 5; 459L5B:R7 += 8; 460 461 462 // Loop 1 463LD32_LABEL(r0, M0T); 464LD32_LABEL(r1, M0B); 465LT1 = r0; 466LB1 = r1; 467 R0 = [ P2 ++ ]; 468LC1 = p1; 469M0T:R3 += 4; 470 R2 += 3; 471 R4 += 5; 472 R5 += 6; 473 R6 += 7; 474M0B:R7 += 8; 475 476 // Loop 1 477LD32_LABEL(r0, M1T); 478LD32_LABEL(r1, M1B); 479LT1 = r0; 480LB1 = r1; 481 R0 = [ P2 ++ ]; 482NOP; 483LC1 = p1; 484M1T:R4 += 5; 485 R2 += 3; 486 R3 += 4; 487 R5 += 6; 488 R6 += 7; 489M1B:R7 += 8; 490 491 // Loop 1 492LD32_LABEL(r0, M2T); 493LD32_LABEL(r1, M2B); 494LT1 = r0; 495LB1 = r1; 496 R0 = [ P2 ++ ]; 497NOP; 498NOP; 499LC1 = p1; 500M2T:R5 += 6; 501 R2 += 3; 502 R3 += 4; 503 R4 += 5; 504 R6 += 7; 505M2B:R7 += 8; 506 507 // Loop 1 508LD32_LABEL(r0, M3T); 509LD32_LABEL(r1, M3B); 510LT1 = r0; 511LB1 = r1; 512 R0 = [ P2 ++ ]; 513NOP; 514NOP; 515NOP; 516LC1 = p1; 517M3T:R2 += 3; 518 R5 += 6; 519 R6 += 7; 520 R3 += 4; 521 R4 += 5; 522M3B:R7 += 8; 523 524 // Loop 1 525LD32_LABEL(r0, M4T); 526LD32_LABEL(r1, M4B); 527LT1 = r0; 528LB1 = r1; 529 R0 = [ P2 ++ ]; 530NOP; 531NOP; 532NOP; 533NOP; 534LC1 = p1; 535M4T:R2 += 3; 536 R3 += 4; 537 R5 += 6; 538 R6 += 7; 539 R4 += 5; 540M4B:R7 += 8; 541 542 // Loop 1 543LD32_LABEL(r0, M5T); 544LD32_LABEL(r1, M5B); 545LT1 = r0; 546LB1 = r1; 547 R0 = [ P2 ++ ]; 548LC1 = [sp++]; 549M5T:R2 += 3; 550 R3 += 4; 551 R5 += 6; 552 R6 += 7; 553 R4 += 5; 554M5B:R7 += 8; 555 556NOP; 557NOP; 558RTI; 559 560.dw 0xFFFF 561.dw 0xFFFF 562.dw 0xFFFF 563.dw 0xFFFF 564.dw 0xFFFF 565.dw 0xFFFF 566.dw 0xFFFF 567 568///////////////////////////////////////////////////////////////////////////// 569///////////////////////// USER CODE ///////////////////////////// 570///////////////////////////////////////////////////////////////////////////// 571 572 573 USER_CODE : 574 575NOP; 576NOP; 577NOP; 578NOP; 579dbg_pass; // Call Endtest Macro 580 581///////////////////////////////////////////////////////////////////////////// 582///////////////////////// DATA MEMRORY ///////////////////////////// 583///////////////////////////////////////////////////////////////////////////// 584 585.section MEM_0x00F00100,"aw" 586.dd 0x01010101; 587.dd 0x02020202; 588.dd 0x03030303; 589.dd 0x04040404; 590.dd 0x05050505; 591.dd 0x06060606; 592.dd 0x07070707; 593.dd 0x08080808; 594.dd 0x09090909; 595.dd 0x0a0a0a0a; 596.dd 0x0b0b0b0b; 597.dd 0x0c0c0c0c; 598.dd 0x0d0d0d0d; 599.dd 0x0e0e0e0e; 600.dd 0x0f0f0f0f; 601 602// Define Kernal Stack 603.section MEM_0x00F00210,"aw" 604 .space (STACKSIZE); 605 KSTACK : 606 607 .space (STACKSIZE); 608 USTACK : 609 610///////////////////////////////////////////////////////////////////////////// 611///////////////////////// END OF TEST ///////////////////////////// 612///////////////////////////////////////////////////////////////////////////// 613