1 //Original:/proj/frio/dv/testcases/seq/se_stall_if2/se_stall_if2.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 ///////////////////////////////////////////////////////////////////////////// 126 //////////////////////// CPLB Setup ///////////////////////////////////// 127 ///////////////////////////////////////////////////////////////////////////// 128 129 // Setup CPLB for Data Memory starting at 0x00F0_0000; 130 WR_MMR(DCPLB_DATA0, 0x00031005, p0, r0); // Page Size = 4MB 131 // CPLB_L1_CHLB = 1 132 // CPLB_USER_RD = 1 133 // CPLB_VALID = 1 134 // 135 136 // Setup CPLB Address to point to 0x00F0_0000 137 WR_MMR(DCPLB_ADDR0, 0x00F00000, p0, r0); 138 139 // Enable CPLB's 140 WR_MMR(DMEM_CONTROL, 0x0000000f, p0, r0); // ENDM = 1 141 // ENDCPLB = 1 142 // DMC = 11 143 // Sync it! 144 CSYNC; 145 146 147 // Return to Supervisor Code 148 RAISE 15; 149 150 LD32_LABEL(r0, USER_CODE); 151 RETI = R0; 152 RTI; 153 154 .dw 0xFFFF 155 .dw 0xFFFF 156 .dw 0xFFFF 157 .dw 0xFFFF 158 .dw 0xFFFF 159 .dw 0xFFFF 160 .dw 0xFFFF 161 162 ///////////////////////////////////////////////////////////////////////////// 163 164 165 ///////////////////////////////////////////////////////////////////////////// 166 ///////////////////////// EMU ISR ///////////////////////////// 167 ///////////////////////////////////////////////////////////////////////////// 168 169 EMU_ISR : 170 171 RTE; 172 173 .dw 0xFFFF 174 .dw 0xFFFF 175 .dw 0xFFFF 176 .dw 0xFFFF 177 .dw 0xFFFF 178 .dw 0xFFFF 179 .dw 0xFFFF 180 181 ///////////////////////////////////////////////////////////////////////////// 182 ///////////////////////// NMI ISR ///////////////////////////// 183 ///////////////////////////////////////////////////////////////////////////// 184 185 NMI_ISR : 186 187 RTN; 188 189 .dw 0xFFFF 190 .dw 0xFFFF 191 .dw 0xFFFF 192 .dw 0xFFFF 193 .dw 0xFFFF 194 .dw 0xFFFF 195 .dw 0xFFFF 196 197 ///////////////////////////////////////////////////////////////////////////// 198 ///////////////////////// EXC ISR ///////////////////////////// 199 ///////////////////////////////////////////////////////////////////////////// 200 201 EXC_ISR : 202 203 RTX; 204 205 .dw 0xFFFF 206 .dw 0xFFFF 207 .dw 0xFFFF 208 .dw 0xFFFF 209 .dw 0xFFFF 210 .dw 0xFFFF 211 .dw 0xFFFF 212 213 ///////////////////////////////////////////////////////////////////////////// 214 ///////////////////////// HWE ISR ///////////////////////////// 215 ///////////////////////////////////////////////////////////////////////////// 216 217 HWE_ISR : 218 219 RTI; 220 221 .dw 0xFFFF 222 .dw 0xFFFF 223 .dw 0xFFFF 224 .dw 0xFFFF 225 .dw 0xFFFF 226 .dw 0xFFFF 227 .dw 0xFFFF 228 229 ///////////////////////////////////////////////////////////////////////////// 230 ///////////////////////// TMR ISR ///////////////////////////// 231 ///////////////////////////////////////////////////////////////////////////// 232 233 TMR_ISR : 234 235 RTI; 236 237 .dw 0xFFFF 238 .dw 0xFFFF 239 .dw 0xFFFF 240 .dw 0xFFFF 241 .dw 0xFFFF 242 .dw 0xFFFF 243 .dw 0xFFFF 244 245 ///////////////////////////////////////////////////////////////////////////// 246 ///////////////////////// IGV7 ISR ///////////////////////////// 247 ///////////////////////////////////////////////////////////////////////////// 248 249 IGV7_ISR : 250 251 RTI; 252 253 .dw 0xFFFF 254 .dw 0xFFFF 255 .dw 0xFFFF 256 .dw 0xFFFF 257 .dw 0xFFFF 258 .dw 0xFFFF 259 .dw 0xFFFF 260 261 ///////////////////////////////////////////////////////////////////////////// 262 ///////////////////////// IGV8 ISR ///////////////////////////// 263 ///////////////////////////////////////////////////////////////////////////// 264 265 IGV8_ISR : 266 267 RTI; 268 269 .dw 0xFFFF 270 .dw 0xFFFF 271 .dw 0xFFFF 272 .dw 0xFFFF 273 .dw 0xFFFF 274 .dw 0xFFFF 275 .dw 0xFFFF 276 277 ///////////////////////////////////////////////////////////////////////////// 278 ///////////////////////// IGV9 ISR ///////////////////////////// 279 ///////////////////////////////////////////////////////////////////////////// 280 281 IGV9_ISR : 282 283 RTI; 284 285 .dw 0xFFFF 286 .dw 0xFFFF 287 .dw 0xFFFF 288 .dw 0xFFFF 289 .dw 0xFFFF 290 .dw 0xFFFF 291 .dw 0xFFFF 292 293 ///////////////////////////////////////////////////////////////////////////// 294 ///////////////////////// IGV10 ISR ///////////////////////////// 295 ///////////////////////////////////////////////////////////////////////////// 296 297 IGV10_ISR : 298 299 RTI; 300 301 .dw 0xFFFF 302 .dw 0xFFFF 303 .dw 0xFFFF 304 .dw 0xFFFF 305 .dw 0xFFFF 306 .dw 0xFFFF 307 .dw 0xFFFF 308 309 ///////////////////////////////////////////////////////////////////////////// 310 ///////////////////////// IGV11 ISR ///////////////////////////// 311 ///////////////////////////////////////////////////////////////////////////// 312 313 IGV11_ISR : 314 315 RTI; 316 317 .dw 0xFFFF 318 .dw 0xFFFF 319 .dw 0xFFFF 320 .dw 0xFFFF 321 .dw 0xFFFF 322 .dw 0xFFFF 323 .dw 0xFFFF 324 325 ///////////////////////////////////////////////////////////////////////////// 326 ///////////////////////// IGV12 ISR ///////////////////////////// 327 ///////////////////////////////////////////////////////////////////////////// 328 329 IGV12_ISR : 330 331 RTI; 332 333 .dw 0xFFFF 334 .dw 0xFFFF 335 .dw 0xFFFF 336 .dw 0xFFFF 337 .dw 0xFFFF 338 .dw 0xFFFF 339 .dw 0xFFFF 340 341 ///////////////////////////////////////////////////////////////////////////// 342 ///////////////////////// IGV13 ISR ///////////////////////////// 343 ///////////////////////////////////////////////////////////////////////////// 344 345 IGV13_ISR : 346 347 RTI; 348 349 .dw 0xFFFF 350 .dw 0xFFFF 351 .dw 0xFFFF 352 .dw 0xFFFF 353 .dw 0xFFFF 354 .dw 0xFFFF 355 .dw 0xFFFF 356 357 ///////////////////////////////////////////////////////////////////////////// 358 ///////////////////////// IGV14 ISR ///////////////////////////// 359 ///////////////////////////////////////////////////////////////////////////// 360 361 IGV14_ISR : 362 363 RTI; 364 365 .dw 0xFFFF 366 .dw 0xFFFF 367 .dw 0xFFFF 368 .dw 0xFFFF 369 .dw 0xFFFF 370 .dw 0xFFFF 371 .dw 0xFFFF 372 373 ///////////////////////////////////////////////////////////////////////////// 374 ///////////////////////// IGV15 ISR ///////////////////////////// 375 ///////////////////////////////////////////////////////////////////////////// 376 377 IGV15_ISR : 378 379 NOP; 380 P0 = 0x0100 (Z); 381 P0.H = 0x00f0; 382 R0 = [ P0 ++ ]; 383 JUMP.S lab1; // Branch in EX1 384 385 386 NOP; 387 NOP; 388 NOP; 389 NOP; 390 NOP; 391 NOP; 392 NOP; 393 NOP; 394 NOP; 395 NOP; 396 NOP; 397 NOP; 398 NOP; 399 NOP; 400 NOP; 401 NOP; 402 403 lab1: 404 P0 = 0x0200 (Z); 405 P0.H = 0x00f0; 406 RTI; 407 R1 = [ P0 ++ ]; 408 JUMP.S 8; // Branch in EX1 409 NOP; 410 NOP; 411 NOP; 412 413 RTI; 414 415 .dw 0xFFFF 416 .dw 0xFFFF 417 .dw 0xFFFF 418 .dw 0xFFFF 419 .dw 0xFFFF 420 .dw 0xFFFF 421 .dw 0xFFFF 422 423 ///////////////////////////////////////////////////////////////////////////// 424 ///////////////////////// USER CODE ///////////////////////////// 425 ///////////////////////////////////////////////////////////////////////////// 426 427 428 USER_CODE : 429 430 NOP; 431 NOP; 432 NOP; 433 NOP; 434 dbg_pass; // Call Endtest Macro 435 436 ///////////////////////////////////////////////////////////////////////////// 437 ///////////////////////// DATA MEMRORY ///////////////////////////// 438 ///////////////////////////////////////////////////////////////////////////// 439 440 // Define Kernal Stack 441 .section MEM_0xE0000000,"aw" 442 .space (STACKSIZE); 443 KSTACK : 444 445 .space (STACKSIZE); 446 USTACK : 447 448 .section MEM_0x00F00100,"aw" 449 .dd 0xdeadbeef; 450 .section MEM_0x00F00200,"aw" 451 .dd 0x01010101; 452 .dd 0x02020202; 453 .dd 0x03030303; 454 .dd 0x04040404; 455 456 ///////////////////////////////////////////////////////////////////////////// 457 ///////////////////////// END OF TEST ///////////////////////////// 458 ///////////////////////////////////////////////////////////////////////////// 459