1 //Original:/proj/frio/dv/testcases/seq/se_loop_lr/se_loop_lr.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 include(symtable.inc) 16 include(mmrs.inc) 17 18 ///////////////////////////////////////////////////////////////////////////// 19 ///////////////////////// Defines ///////////////////////////// 20 ///////////////////////////////////////////////////////////////////////////// 21 22 #ifndef USER_CODE_SPACE 23 #define USER_CODE_SPACE CODE_ADDR_1 // 24 #endif 25 #ifndef STACKSIZE 26 #define STACKSIZE 0x00000010 27 #endif 28 #ifndef ITABLE 29 #define ITABLE CODE_ADDR_2 // 30 #endif 31 32 ///////////////////////////////////////////////////////////////////////////// 33 ///////////////////////// RESET ISR ///////////////////////////// 34 ///////////////////////////////////////////////////////////////////////////// 35 36 RST_ISR : 37 38 // Initialize Dregs 39 INIT_R_REGS(0); 40 41 // Initialize Pregs 42 INIT_P_REGS(0); 43 44 // Initialize ILBM Registers 45 INIT_I_REGS(0); 46 INIT_M_REGS(0); 47 INIT_L_REGS(0); 48 INIT_B_REGS(0); 49 50 // Initialize the Address of the Checkreg data segment 51 // **** THIS IS NEEDED WHENEVER CHECKREG IS USED **** 52 CHECK_INIT_DEF(p5); //CHECK_INIT(p5, 0x00BFFFFC); 53 54 // Setup User Stack 55 LD32_LABEL(sp, USTACK); 56 USP = SP; 57 58 // Setup Kernel Stack 59 LD32_LABEL(sp, KSTACK); 60 61 // Setup Frame Pointer 62 FP = SP; 63 64 // Setup Event Vector Table 65 LD32(p0, EVT0); 66 67 LD32_LABEL(r0, EMU_ISR); // Emulation Handler (Int0) 68 [ P0 ++ ] = R0; 69 LD32_LABEL(r0, RST_ISR); // Reset Handler (Int1) 70 [ P0 ++ ] = R0; 71 LD32_LABEL(r0, NMI_ISR); // NMI Handler (Int2) 72 [ P0 ++ ] = R0; 73 LD32_LABEL(r0, EXC_ISR); // Exception Handler (Int3) 74 [ P0 ++ ] = R0; 75 [ P0 ++ ] = R0; // IVT4 not used 76 LD32_LABEL(r0, HWE_ISR); // HW Error Handler (Int5) 77 [ P0 ++ ] = R0; 78 LD32_LABEL(r0, TMR_ISR); // Timer Handler (Int6) 79 [ P0 ++ ] = R0; 80 LD32_LABEL(r0, IGV7_ISR); // IVG7 Handler 81 [ P0 ++ ] = R0; 82 LD32_LABEL(r0, IGV8_ISR); // IVG8 Handler 83 [ P0 ++ ] = R0; 84 LD32_LABEL(r0, IGV9_ISR); // IVG9 Handler 85 [ P0 ++ ] = R0; 86 LD32_LABEL(r0, IGV10_ISR); // IVG10 Handler 87 [ P0 ++ ] = R0; 88 LD32_LABEL(r0, IGV11_ISR); // IVG11 Handler 89 [ P0 ++ ] = R0; 90 LD32_LABEL(r0, IGV12_ISR); // IVG12 Handler 91 [ P0 ++ ] = R0; 92 LD32_LABEL(r0, IGV13_ISR); // IVG13 Handler 93 [ P0 ++ ] = R0; 94 LD32_LABEL(r0, IGV14_ISR); // IVG14 Handler 95 [ P0 ++ ] = R0; 96 LD32_LABEL(r0, IGV15_ISR); // IVG15 Handler 97 [ P0 ++ ] = R0; 98 99 // Setup the EVT_OVERRIDE MMR 100 R0 = 0; 101 LD32(p0, EVT_OVERRIDE); 102 [ P0 ] = R0; 103 104 // Setup Interrupt Mask 105 R0 = -1; 106 LD32(p0, IMASK); 107 [ P0 ] = R0; 108 109 // Return to Supervisor Code 110 RAISE 15; 111 NOP; 112 113 LD32_LABEL(r0, USER_CODE); 114 RETI = R0; 115 RTI; 116 117 .dw 0xFFFF 118 .dw 0xFFFF 119 .dw 0xFFFF 120 .dw 0xFFFF 121 .dw 0xFFFF 122 .dw 0xFFFF 123 .dw 0xFFFF 124 125 ///////////////////////////////////////////////////////////////////////////// 126 127 128 ///////////////////////////////////////////////////////////////////////////// 129 ///////////////////////// EMU ISR ///////////////////////////// 130 ///////////////////////////////////////////////////////////////////////////// 131 132 EMU_ISR : 133 134 RTE; 135 136 .dw 0xFFFF 137 .dw 0xFFFF 138 .dw 0xFFFF 139 .dw 0xFFFF 140 .dw 0xFFFF 141 .dw 0xFFFF 142 .dw 0xFFFF 143 144 ///////////////////////////////////////////////////////////////////////////// 145 ///////////////////////// NMI ISR ///////////////////////////// 146 ///////////////////////////////////////////////////////////////////////////// 147 148 NMI_ISR : 149 150 RTN; 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 ///////////////////////// EXC ISR ///////////////////////////// 162 ///////////////////////////////////////////////////////////////////////////// 163 164 EXC_ISR : 165 166 RTX; 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 ///////////////////////// HWE ISR ///////////////////////////// 178 ///////////////////////////////////////////////////////////////////////////// 179 180 HWE_ISR : 181 182 RTI; 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 ///////////////////////// TMR ISR ///////////////////////////// 194 ///////////////////////////////////////////////////////////////////////////// 195 196 TMR_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 ///////////////////////// IGV7 ISR ///////////////////////////// 210 ///////////////////////////////////////////////////////////////////////////// 211 212 IGV7_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 ///////////////////////// IGV8 ISR ///////////////////////////// 226 ///////////////////////////////////////////////////////////////////////////// 227 228 IGV8_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 ///////////////////////// IGV9 ISR ///////////////////////////// 242 ///////////////////////////////////////////////////////////////////////////// 243 244 IGV9_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 ///////////////////////// IGV10 ISR ///////////////////////////// 258 ///////////////////////////////////////////////////////////////////////////// 259 260 IGV10_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 ///////////////////////// IGV11 ISR ///////////////////////////// 274 ///////////////////////////////////////////////////////////////////////////// 275 276 IGV11_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 ///////////////////////// IGV12 ISR ///////////////////////////// 290 ///////////////////////////////////////////////////////////////////////////// 291 292 IGV12_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 ///////////////////////// IGV13 ISR ///////////////////////////// 306 ///////////////////////////////////////////////////////////////////////////// 307 308 IGV13_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 ///////////////////////// IGV14 ISR ///////////////////////////// 322 ///////////////////////////////////////////////////////////////////////////// 323 324 IGV14_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 ///////////////////////// IGV15 ISR ///////////////////////////// 338 ///////////////////////////////////////////////////////////////////////////// 339 340 IGV15_ISR : 341 342 P0 = 0x5 (Z); 343 P1 = 0x3 (Z); 344 345 346 LD32_LABEL(r0, l1e); 347 LSETUP ( l1e , l1e ) LC0 = P1; 348 l1s:LT0 = R0; 349 l1e:[ -- SP ] = R7; 350 351 352 LD32_LABEL(r0, ls1); 353 LSETUP ( l2s , l2e ) LC0 = P0; 354 l2s:LB0 = R0; 355 ls1:R6 += 2; 356 l2e:[ -- SP ] = ( R7:5 ); 357 358 359 LD32_LABEL(r0, ls2); 360 LD32_LABEL(r1, ls3); 361 LSETUP ( l3s , l3e ) LC0 = P0; 362 l3s:LT0 = R0; 363 ls2:LB0 = R1; 364 ls3:R7 += 3; 365 l3e:[ -- SP ] = ( R7:5 ); 366 367 368 LD32_LABEL(r0, ls4); 369 LD32_LABEL(r1, ls5); 370 LSETUP ( l4s , l4e ) LC0 = P0; 371 l4s:LT0 = R0; 372 LB0 = r1; 373 ls4:R7 += 3; 374 ls5:R4 += 4; 375 l4e:[ -- SP ] = ( R7:4 ); 376 377 LD32_LABEL(r0, ls6); 378 LD32_LABEL(r1, ls7); 379 LSETUP ( l5s , l5e ) LC0 = P0; 380 l5s:LB0 = R1; 381 LT0 = r0; 382 ls6:R7 += 3; 383 R4 += 4; 384 R5 += 3; 385 ls7:R6 += 3; 386 l5e:[ -- SP ] = ( R7:4 ); 387 388 LD32_LABEL(r0, ls8); 389 LD32_LABEL(r1, ls9); 390 LSETUP ( l6s , l6e ) LC0 = P0; 391 l6s:R5 += 1; 392 LB0 = r1; 393 LT0 = r0; 394 ls8:R7 += 3; 395 R4 += 4; 396 R5 += 3; 397 R7 += 5; 398 ls9:R7 += 5; 399 l6e:[ -- SP ] = ( R7:4 ); 400 401 402 NOP; 403 NOP; 404 405 LD32_LABEL(r0, m1e); 406 LSETUP ( m1e , m1e ) LC1 = P1; 407 m1s:LT0 = R0; 408 m1e:[ -- SP ] = R7; 409 410 411 LD32_LABEL(r0, ms1); 412 LSETUP ( m2s , m2e ) LC1 = P0; 413 m2s:LB0 = R0; 414 ms1:R6 += 2; 415 m2e:[ -- SP ] = ( R7:5 ); 416 417 418 LD32_LABEL(r0, ms2); 419 LD32_LABEL(r1, ms3); 420 LSETUP ( m3s , m3e ) LC1 = P0; 421 m3s:LT0 = R0; 422 ms2:LB0 = R1; 423 ms3:R7 += 3; 424 m3e:[ -- SP ] = ( R7:5 ); 425 426 427 LD32_LABEL(r0, ms4); 428 LD32_LABEL(r1, ms5); 429 LSETUP ( m4s , m4e ) LC1 = P0; 430 m4s:LT0 = R0; 431 LB0 = r1; 432 ms4:R7 += 3; 433 ms5:R4 += 4; 434 m4e:[ -- SP ] = ( R7:4 ); 435 436 LD32_LABEL(r0, ms6); 437 LD32_LABEL(r1, ms7); 438 LSETUP ( m5s , m5e ) LC1 = P0; 439 m5s:LB0 = R1; 440 LT0 = r0; 441 ms6:R7 += 3; 442 R4 += 4; 443 R5 += 3; 444 ms7:R6 += 3; 445 m5e:[ -- SP ] = ( R7:4 ); 446 447 LD32_LABEL(r0, ms8); 448 LD32_LABEL(r1, ms9); 449 LSETUP ( m6s , m6e ) LC1 = P0; 450 m6s:R5 += 1; 451 LB0 = r1; 452 LT0 = r0; 453 ms8:R7 += 3; 454 R4 += 4; 455 R5 += 3; 456 R7 += 5; 457 ms9:R7 += 5; 458 m6e:[ -- SP ] = ( R7:4 ); 459 460 NOP; 461 NOP; 462 RTI; 463 464 .dw 0xFFFF 465 .dw 0xFFFF 466 .dw 0xFFFF 467 .dw 0xFFFF 468 .dw 0xFFFF 469 .dw 0xFFFF 470 .dw 0xFFFF 471 472 ///////////////////////////////////////////////////////////////////////////// 473 ///////////////////////// USER CODE ///////////////////////////// 474 ///////////////////////////////////////////////////////////////////////////// 475 476 477 USER_CODE : 478 479 NOP; 480 NOP; 481 NOP; 482 NOP; 483 dbg_pass; // Call Endtest Macro 484 485 ///////////////////////////////////////////////////////////////////////////// 486 ///////////////////////// DATA MEMORY ///////////////////////////// 487 ///////////////////////////////////////////////////////////////////////////// 488 489 .section MEM_DATA_ADDR_1 //.data 0x00F00100,"aw" 490 .dd 0xdeadbeef; 491 .section MEM_(DATA_ADDR_1 + 0x100) //.data 0x00F00200,"aw" 492 .dd 0x01010101; //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >> 493 .dd 0x02020202; 494 .dd 0x03030303; 495 .dd 0x04040404; 496 497 // Define Kernal Stack 498 .data 499 .space (STACKSIZE); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >> 500 KSTACK : 501 502 .space (STACKSIZE); 503 USTACK : 504 505 ///////////////////////////////////////////////////////////////////////////// 506 ///////////////////////// END OF TEST ///////////////////////////// 507 ///////////////////////////////////////////////////////////////////////////// 508