|  | //Original:/proj/frio/dv/testcases/seq/se_loop_kill_01/se_loop_kill_01.dsp | 
|  | # mach: bfin | 
|  | # sim: --environment operating | 
|  |  | 
|  | #include "test.h" | 
|  | .include "testutils.inc" | 
|  | start | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// Include Files         ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | include(std.inc) | 
|  | include(selfcheck.inc) | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// Defines               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | #ifndef USER_CODE_SPACE | 
|  | #define USER_CODE_SPACE  0x00000500 | 
|  | #endif | 
|  | #ifndef STACKSIZE | 
|  | #define STACKSIZE        0x00000010 | 
|  | #endif | 
|  | #ifndef ITABLE | 
|  | #define ITABLE           0xF0000000 | 
|  | #endif | 
|  | #ifndef EVT | 
|  | #define EVT              0xFFE02000 | 
|  | #endif | 
|  | #ifndef EVT_OVERRIDE | 
|  | #define EVT_OVERRIDE     0xFFE02100 | 
|  | #endif | 
|  | #ifndef IMASK | 
|  | #define IMASK            0xFFE02104 | 
|  | #endif | 
|  | #ifndef DMEM_CONTROL | 
|  | #define DMEM_CONTROL     0xFFE00004 | 
|  | #endif | 
|  | #ifndef DCPLB_ADDR0 | 
|  | #define DCPLB_ADDR0      0xFFE00100 | 
|  | #endif | 
|  | #ifndef DCPLB_DATA0 | 
|  | #define DCPLB_DATA0      0xFFE00200 | 
|  | #endif | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// RESET ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | RST_ISR : | 
|  |  | 
|  | // Initialize Dregs | 
|  | INIT_R_REGS(0); | 
|  |  | 
|  | // Initialize Pregs | 
|  | INIT_P_REGS(0); | 
|  |  | 
|  | // Initialize ILBM Registers | 
|  | INIT_I_REGS(0); | 
|  | INIT_M_REGS(0); | 
|  | INIT_L_REGS(0); | 
|  | INIT_B_REGS(0); | 
|  |  | 
|  | // Initialize the Address of the Checkreg data segment | 
|  | // **** THIS IS NEEDED WHENEVER CHECKREG IS USED **** | 
|  | CHECK_INIT(p5,   0x00BFFFFC); | 
|  |  | 
|  | // Setup User Stack | 
|  | LD32_LABEL(sp, USTACK); | 
|  | USP = SP; | 
|  |  | 
|  | // Setup Kernel Stack | 
|  | LD32_LABEL(sp, KSTACK); | 
|  |  | 
|  | // Setup Frame Pointer | 
|  | FP = SP; | 
|  |  | 
|  | // Setup Event Vector Table | 
|  | LD32(p0, EVT); | 
|  |  | 
|  | LD32_LABEL(r0, EMU_ISR);    // Emulation Handler (Int0) | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, RST_ISR);    // Reset Handler (Int1) | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, NMI_ISR);    // NMI Handler (Int2) | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, EXC_ISR);    // Exception Handler (Int3) | 
|  | [ P0 ++ ] = R0; | 
|  | [ P0 ++ ] = R0;                // IVT4 not used | 
|  | LD32_LABEL(r0, HWE_ISR);    // HW Error Handler (Int5) | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, TMR_ISR);    // Timer Handler (Int6) | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV7_ISR);   // IVG7 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV8_ISR);   // IVG8 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV9_ISR);   // IVG9 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV10_ISR);  // IVG10 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV11_ISR);  // IVG11 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV12_ISR);  // IVG12 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV13_ISR);  // IVG13 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV14_ISR);  // IVG14 Handler | 
|  | [ P0 ++ ] = R0; | 
|  | LD32_LABEL(r0, IGV15_ISR);  // IVG15 Handler | 
|  | [ P0 ++ ] = R0; | 
|  |  | 
|  | // Setup the EVT_OVERRIDE MMR | 
|  | R0 = 0; | 
|  | LD32(p0, EVT_OVERRIDE); | 
|  | [ P0 ] = R0; | 
|  |  | 
|  | // Setup Interrupt Mask | 
|  | R0 = -1; | 
|  | LD32(p0, IMASK); | 
|  | [ P0 ] = R0; | 
|  |  | 
|  | // Return to Supervisor Code | 
|  | RAISE 15; | 
|  | NOP; | 
|  |  | 
|  | LD32_LABEL(r0, USER_CODE); | 
|  | RETI = R0; | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// EMU ISR               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | EMU_ISR : | 
|  |  | 
|  | RTE; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// NMI ISR               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | NMI_ISR : | 
|  |  | 
|  | RTN; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// EXC ISR               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | EXC_ISR : | 
|  |  | 
|  | RTX; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// HWE ISR               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | HWE_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// TMR ISR               ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | TMR_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV7 ISR              ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV7_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV8 ISR              ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV8_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV9 ISR              ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV9_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV10 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV10_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV11 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV11_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV12 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV12_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV13 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV13_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV14 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV14_ISR : | 
|  |  | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// IGV15 ISR             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | IGV15_ISR : | 
|  |  | 
|  | P0 = 0x5 (Z); | 
|  | P1 = 0x3 (Z); | 
|  | P2 = 0x0200 (Z); | 
|  | P2.H = 0x00F0; | 
|  | [ -- SP ] = P0; | 
|  | [ -- SP ] = P0; | 
|  | SSYNC; | 
|  |  | 
|  | LD32_LABEL(r0, l0t); | 
|  | LD32_LABEL(r1, l0b); | 
|  | [ -- SP ] = R0; | 
|  | [ -- SP ] = R1; | 
|  | SSYNC; | 
|  | LB0 = [sp++]; | 
|  | EXCPT 0x5;      // Will kill mv2lc in EX3 | 
|  | LC0 = P0; | 
|  | LT0 = [sp++]; | 
|  | l0t:R3 += 3; | 
|  | R1 += 1; | 
|  | R4 += 4; | 
|  | R5 += 5; | 
|  | R6 += 6; | 
|  | l0b:R2 += 2; | 
|  |  | 
|  | LD32_LABEL(r0, l2t); | 
|  | LD32_LABEL(r1, l2b); | 
|  | LT0 = r0; | 
|  | LB0 = r1; | 
|  | EXCPT 0x5;      // Will kill mv2lc in EX3 when stalled | 
|  | LC0 = [ SP ++ ]; | 
|  | l2t:R3 += 3; | 
|  | R1 += 1; | 
|  | R4 += 4; | 
|  | R5 += 5; | 
|  | R6 += 6; | 
|  | l2b:R2 += 2; | 
|  |  | 
|  | LD32_LABEL(r0, l1t); | 
|  | LD32_LABEL(r1, l1b); | 
|  | LT1 = r0; | 
|  | LB1 = r1; | 
|  | EXCPT 0x5;      // Will kill mv2lc in EX3 when stalled | 
|  | LC1 = [ SP ++ ]; | 
|  | l1t:R3 += 3; | 
|  | R1 += 1; | 
|  | R4 += 4; | 
|  | R5 += 5; | 
|  | R6 += 6; | 
|  | l1b:R2 += 2; | 
|  |  | 
|  | LD32_LABEL(r0, l3t); | 
|  | LD32_LABEL(r1, l3b); | 
|  | LT1 = r0; | 
|  | LB1 = r1; | 
|  | EXCPT 0x5;      // Will kill mv2lc in EX3 | 
|  | NOP; | 
|  | LC1 = P0; | 
|  | l3t:R3 += 3; | 
|  | R1 += 1; | 
|  | R4 += 4; | 
|  | R5 += 5; | 
|  | R6 += 6; | 
|  | l3b:R2 += 2; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX2 | 
|  | NOP; | 
|  | NOP; | 
|  | LSETUP ( l1e , l1e ) LC0 = P1; | 
|  | l1e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX2 | 
|  | NOP; | 
|  | NOP; | 
|  | LSETUP ( m1e , m1e ) LC1 = P1; | 
|  | m1e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX1 | 
|  | NOP; | 
|  | NOP; | 
|  | NOP; | 
|  | LSETUP ( l2e , l2e ) LC0 = P1; | 
|  | l2e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX1 | 
|  | NOP; | 
|  | NOP; | 
|  | NOP; | 
|  | LSETUP ( m2e , m2e ) LC1 = P1; | 
|  | m2e:R7 += 1; | 
|  |  | 
|  | NOP; | 
|  | NOP; | 
|  | NOP; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX2 when stalled | 
|  | R0 = [ P2 ++ ]; | 
|  | LSETUP ( l3e , l3e ) LC0 = P1; | 
|  | l3e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX2 when stalled | 
|  | R0 = [ P2 ++ ]; | 
|  | LSETUP ( m3e , m3e ) LC1 = P1; | 
|  | m3e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX1 when stalled | 
|  | R0 = [ P2 ++ ]; | 
|  | NOP; | 
|  | LSETUP ( l4e , l4e ) LC0 = P1; | 
|  | l4e:R7 += 1; | 
|  |  | 
|  | EXCPT 0x6;      // Will kill Lsetup in EX1 when stalled | 
|  | R0 = [ P2 ++ ]; | 
|  | NOP; | 
|  | LSETUP ( m4e , m4e ) LC1 = P1; | 
|  | m4e:R7 += 1; | 
|  |  | 
|  | NOP; | 
|  | NOP; | 
|  | RTI; | 
|  |  | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  | .dw 0xFFFF | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// USER CODE             ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  |  | 
|  | USER_CODE : | 
|  |  | 
|  | NOP; | 
|  | NOP; | 
|  | NOP; | 
|  | NOP; | 
|  | dbg_pass;        // Call Endtest Macro | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// DATA MEMRORY          ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | .section MEM_0x00F00100,"aw" | 
|  | .dd 0xdeadbeef; | 
|  | .section MEM_0x00F00200,"aw" | 
|  | .dd 0x01010101; | 
|  | .dd 0x02020202; | 
|  | .dd 0x03030303; | 
|  | .dd 0x04040404; | 
|  |  | 
|  | // Define Kernal Stack | 
|  | .section MEM_0x00F00210,"aw" | 
|  | .space (STACKSIZE); | 
|  | KSTACK : | 
|  |  | 
|  | .space (STACKSIZE); | 
|  | USTACK : | 
|  |  | 
|  | ///////////////////////////////////////////////////////////////////////////// | 
|  | ///////////////////////// END OF TEST           ///////////////////////////// | 
|  | ///////////////////////////////////////////////////////////////////////////// |