123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612 |
- //Original:/proj/frio/dv/testcases/seq/se_loop_mv2lc_stall/se_loop_mv2lc_stall.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 = 0x0100 (Z);
- P2.H = 0x00f0;
- // 2 pushes of P0 onto the Stack;
- [ -- SP ] = P0;
- [ -- SP ] = P0;
- // Loop 0
- LD32_LABEL(r0, L0T);
- LD32_LABEL(r1, L0B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- LC0 = p1;
- L0T:R3 += 4;
- R2 += 3;
- R4 += 5;
- R5 += 6;
- R6 += 7;
- L0B:R7 += 8;
- // Loop 0
- LD32_LABEL(r0, L1T);
- LD32_LABEL(r1, L1B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- NOP;
- LC0 = p1;
- L1T:R4 += 5;
- R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- L1B:R7 += 8;
- // Loop 0
- LD32_LABEL(r0, L2T);
- LD32_LABEL(r1, L2B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- LC0 = p1;
- L2T:R5 += 6;
- R2 += 3;
- R3 += 4;
- R4 += 5;
- R6 += 7;
- L2B:R7 += 8;
- // Loop 0
- LD32_LABEL(r0, L3T);
- LD32_LABEL(r1, L3B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- NOP;
- LC0 = p1;
- L3T:R2 += 3;
- R5 += 6;
- R6 += 7;
- R3 += 4;
- R4 += 5;
- L3B:R7 += 8;
- // Loop 0
- LD32_LABEL(r0, L4T);
- LD32_LABEL(r1, L4B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- NOP;
- NOP;
- LC0 = p1;
- L4T:R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- R4 += 5;
- L4B:R7 += 8;
- // Loop 0
- LD32_LABEL(r0, L5T);
- LD32_LABEL(r1, L5B);
- LT0 = r0;
- LB0 = r1;
- R0 = [ P2 ++ ];
- LC0 = [sp++];
- L5T:R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- R4 += 5;
- L5B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M0T);
- LD32_LABEL(r1, M0B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- LC1 = p1;
- M0T:R3 += 4;
- R2 += 3;
- R4 += 5;
- R5 += 6;
- R6 += 7;
- M0B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M1T);
- LD32_LABEL(r1, M1B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- NOP;
- LC1 = p1;
- M1T:R4 += 5;
- R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- M1B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M2T);
- LD32_LABEL(r1, M2B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- LC1 = p1;
- M2T:R5 += 6;
- R2 += 3;
- R3 += 4;
- R4 += 5;
- R6 += 7;
- M2B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M3T);
- LD32_LABEL(r1, M3B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- NOP;
- LC1 = p1;
- M3T:R2 += 3;
- R5 += 6;
- R6 += 7;
- R3 += 4;
- R4 += 5;
- M3B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M4T);
- LD32_LABEL(r1, M4B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- NOP;
- NOP;
- NOP;
- NOP;
- LC1 = p1;
- M4T:R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- R4 += 5;
- M4B:R7 += 8;
- // Loop 1
- LD32_LABEL(r0, M5T);
- LD32_LABEL(r1, M5B);
- LT1 = r0;
- LB1 = r1;
- R0 = [ P2 ++ ];
- LC1 = [sp++];
- M5T:R2 += 3;
- R3 += 4;
- R5 += 6;
- R6 += 7;
- R4 += 5;
- M5B:R7 += 8;
- 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 0x01010101;
- .dd 0x02020202;
- .dd 0x03030303;
- .dd 0x04040404;
- .dd 0x05050505;
- .dd 0x06060606;
- .dd 0x07070707;
- .dd 0x08080808;
- .dd 0x09090909;
- .dd 0x0a0a0a0a;
- .dd 0x0b0b0b0b;
- .dd 0x0c0c0c0c;
- .dd 0x0d0d0d0d;
- .dd 0x0e0e0e0e;
- .dd 0x0f0f0f0f;
- // Define Kernal Stack
- .section MEM_0x00F00210,"aw"
- .space (STACKSIZE);
- KSTACK :
- .space (STACKSIZE);
- USTACK :
- /////////////////////////////////////////////////////////////////////////////
- ///////////////////////// END OF TEST /////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
|