mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
918 lines
17 KiB
ArmAsm
918 lines
17 KiB
ArmAsm
|
//Original:/proj/frio/dv/testcases/seq/se_loop_kill_dcr_01/se_loop_kill_dcr_01.dsp
|
||
|
# mach: bfin
|
||
|
# sim: --environment operating
|
||
|
|
||
|
#include "test.h"
|
||
|
.include "testutils.inc"
|
||
|
start
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// Include Files /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
include(std.inc)
|
||
|
include(selfcheck.inc)
|
||
|
include(symtable.inc)
|
||
|
include(mmrs.inc)
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// Defines /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef USER_CODE_SPACE
|
||
|
#define USER_CODE_SPACE CODE_ADDR_1 //
|
||
|
#endif
|
||
|
#ifndef STACKSIZE
|
||
|
#define STACKSIZE 0x00000010
|
||
|
#endif
|
||
|
#ifndef ITABLE
|
||
|
#define ITABLE CODE_ADDR_2 //
|
||
|
#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_DEF(p5); //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, EVT0);
|
||
|
|
||
|
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 = 0x1 (Z);
|
||
|
P1 = 0x2 (Z);
|
||
|
P2 = 0x3 (Z);
|
||
|
P3 = 0x4 (Z);
|
||
|
P4 = 0x5 (Z);
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 0 (with Kill WB)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Kill Valid Dcr in WB
|
||
|
LSETUP ( L0T , L0T ) LC0 = P0;
|
||
|
EXCPT 0x5;
|
||
|
L0T:R0 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3
|
||
|
LSETUP ( L1T , L1B ) LC0 = P0;
|
||
|
EXCPT 0x5;
|
||
|
L1T:R0 += 5;
|
||
|
L1B:R1 += 4;
|
||
|
|
||
|
// Kill Valid Dcr in EX2
|
||
|
LSETUP ( L2T , L2B ) LC0 = P0;
|
||
|
EXCPT 0x5;
|
||
|
L2T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
L2B:R2 += 3;
|
||
|
|
||
|
// Kill Valid Dcr in EX1
|
||
|
LSETUP ( L3T , L3B ) LC0 = P0;
|
||
|
EXCPT 0x5;
|
||
|
L3T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
R2 += 3;
|
||
|
L3B:R3 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( L4T , L4B ) LC0 = P0;
|
||
|
EXCPT 0x5;
|
||
|
L4T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
R2 += 3;
|
||
|
R3 += 2;
|
||
|
L4B:R4 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3
|
||
|
LSETUP ( L5T , L5T ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
L5T:R1 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2
|
||
|
LSETUP ( L6T , L6T ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
L6T:R2 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1
|
||
|
LSETUP ( L7T , L7T ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
L7T:R3 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX1, AC
|
||
|
LSETUP ( L8T , L8T ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
L8T:R4 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2
|
||
|
LSETUP ( L9T , L9T ) LC0 = P2;
|
||
|
EXCPT 0x5;
|
||
|
L9T:R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1
|
||
|
LSETUP ( LAT , LAT ) LC0 = P2;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
LAT:
|
||
|
R6 += 6;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1, AC
|
||
|
LSETUP ( LBT , LBT ) LC0 = P2;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
LBT:
|
||
|
R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2, EX1
|
||
|
LSETUP ( LCT , LCT ) LC0 = P3;
|
||
|
EXCPT 0x5;
|
||
|
LCT:
|
||
|
R7 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1, AC
|
||
|
LSETUP ( LDT , LDT ) LC0 = P3;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
LDT:
|
||
|
R0 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2, EX1, AC
|
||
|
LSETUP ( LET , LET ) LC0 = P4;
|
||
|
EXCPT 0x5;
|
||
|
LET:
|
||
|
R1 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX2
|
||
|
LSETUP ( LFT , LFB ) LC0 = P1;
|
||
|
LFT:
|
||
|
EXCPT 0x5;
|
||
|
LFB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX1
|
||
|
LSETUP ( LGT , LGB ) LC0 = P1;
|
||
|
LGT:
|
||
|
R2 += 3;
|
||
|
EXCPT 0x5;
|
||
|
LGB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, AC
|
||
|
LSETUP ( LHT , LHB ) LC0 = P1;
|
||
|
LHT:
|
||
|
R2 += 3;
|
||
|
R3 += 4;
|
||
|
EXCPT 0x5;
|
||
|
LHB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX1
|
||
|
LSETUP ( LIT , LIB ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
LIT:
|
||
|
R2 += 1;
|
||
|
LIB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, AC
|
||
|
LSETUP ( LJT , LJB ) LC0 = P1;
|
||
|
LJT:
|
||
|
EXCPT 0x5;
|
||
|
R2 += 1;
|
||
|
LJB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, AC
|
||
|
LSETUP ( LKT , LKB ) LC0 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
LKT:
|
||
|
R2 += 1;
|
||
|
LKB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX2, AC
|
||
|
LSETUP ( LLT , LLB ) LC0 = P2;
|
||
|
LLT:
|
||
|
EXCPT 0x5;
|
||
|
LLB:
|
||
|
R2 += 2;
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 1 (with Kill WB)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Kill Valid Dcr in WB
|
||
|
LSETUP ( M0T , M0T ) LC1 = P0;
|
||
|
EXCPT 0x5;
|
||
|
M0T:R0 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3
|
||
|
LSETUP ( M1T , M1B ) LC1 = P0;
|
||
|
EXCPT 0x5;
|
||
|
M1T:R0 += 5;
|
||
|
M1B:R1 += 4;
|
||
|
|
||
|
// Kill Valid Dcr in EX2
|
||
|
LSETUP ( M2T , M2B ) LC1 = P0;
|
||
|
EXCPT 0x5;
|
||
|
M2T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
M2B:R2 += 3;
|
||
|
|
||
|
// Kill Valid Dcr in EX1
|
||
|
LSETUP ( M3T , M3B ) LC1 = P0;
|
||
|
EXCPT 0x5;
|
||
|
M3T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
R2 += 3;
|
||
|
M3B:R3 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( M4T , M4B ) LC1 = P0;
|
||
|
EXCPT 0x5;
|
||
|
M4T:R0 += 5;
|
||
|
R1 += 4;
|
||
|
R2 += 3;
|
||
|
R3 += 2;
|
||
|
M4B:R4 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3
|
||
|
LSETUP ( M5T , M5T ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
M5T:R1 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2
|
||
|
LSETUP ( M6T , M6T ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
M6T:R2 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1
|
||
|
LSETUP ( M7T , M7T ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
M7T:R3 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX1, AC
|
||
|
LSETUP ( M8T , M8T ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
M8T:R4 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2
|
||
|
LSETUP ( M9T , M9T ) LC1 = P2;
|
||
|
EXCPT 0x5;
|
||
|
M9T:R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1
|
||
|
LSETUP ( MAT , MAT ) LC1 = P2;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
MAT:
|
||
|
R6 += 6;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1, AC
|
||
|
LSETUP ( MBT , MBT ) LC1 = P2;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
MBT:
|
||
|
R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2, EX1
|
||
|
LSETUP ( MCT , MCT ) LC1 = P3;
|
||
|
EXCPT 0x5;
|
||
|
MCT:
|
||
|
R7 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1, AC
|
||
|
LSETUP ( MDT , MDT ) LC1 = P3;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
MDT:
|
||
|
R0 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX3, EX2, EX1, AC
|
||
|
LSETUP ( MET , MET ) LC1 = P4;
|
||
|
EXCPT 0x5;
|
||
|
MET:
|
||
|
R1 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX2
|
||
|
LSETUP ( MFT , MFB ) LC1 = P1;
|
||
|
MFT:
|
||
|
EXCPT 0x5;
|
||
|
MFB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX1
|
||
|
LSETUP ( MGT , MGB ) LC1 = P1;
|
||
|
MGT:
|
||
|
R2 += 3;
|
||
|
EXCPT 0x5;
|
||
|
MGB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, AC
|
||
|
LSETUP ( MHT , MHB ) LC1 = P1;
|
||
|
MHT:
|
||
|
R2 += 3;
|
||
|
R3 += 4;
|
||
|
EXCPT 0x5;
|
||
|
MHB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX1
|
||
|
LSETUP ( MIT , MIB ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
MIT:
|
||
|
R2 += 1;
|
||
|
MIB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, AC
|
||
|
LSETUP ( MJT , MJB ) LC1 = P1;
|
||
|
MJT:
|
||
|
EXCPT 0x5;
|
||
|
R2 += 1;
|
||
|
MJB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, AC
|
||
|
LSETUP ( MKT , MKB ) LC1 = P1;
|
||
|
EXCPT 0x5;
|
||
|
NOP;
|
||
|
MKT:
|
||
|
R2 += 1;
|
||
|
MKB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in WB, EX2, AC
|
||
|
LSETUP ( MLT , MLB ) LC1 = P2;
|
||
|
MLT:
|
||
|
EXCPT 0x5;
|
||
|
MLB:
|
||
|
R2 += 2;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 0 (with Kill EX3)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
R0 = 1;
|
||
|
CC = R0;
|
||
|
|
||
|
// Kill %Valid Dcr in EX3
|
||
|
LSETUP ( N1T , N1T ) LC0 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
N1T:R0 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2
|
||
|
LSETUP ( N2T , N2B ) LC0 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
N2T:R0 += 5;
|
||
|
N2B:R2 += 3;
|
||
|
|
||
|
// Kill Valid Dcr in EX1
|
||
|
LSETUP ( N3T , N3B ) LC0 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
N3T:R0 += 5;
|
||
|
R2 += 3;
|
||
|
N3B:R3 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( N4T , N4B ) LC0 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
N4T:R0 += 5;
|
||
|
R2 += 3;
|
||
|
R3 += 2;
|
||
|
N4B:R4 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2
|
||
|
LSETUP ( N6T , N6T ) LC0 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
N6T:R2 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1
|
||
|
LSETUP ( N7T , N7T ) LC0 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
N7T:R3 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX1, AC
|
||
|
LSETUP ( N8T , N8T ) LC0 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
N8T:R4 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1
|
||
|
LSETUP ( NAT , NAT ) LC0 = P2;
|
||
|
IF CC JUMP 2;
|
||
|
NAT:
|
||
|
R6 += 6;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1, AC
|
||
|
LSETUP ( NBT , NBT ) LC0 = P2;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
NBT:
|
||
|
R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1, AC
|
||
|
LSETUP ( NDT , NDT ) LC0 = P3;
|
||
|
IF CC JUMP 2;
|
||
|
NDT:
|
||
|
R0 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX1
|
||
|
LSETUP ( NIT , NIB ) LC0 = P1;
|
||
|
NIT:
|
||
|
IF CC JUMP 2;
|
||
|
NIB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, AC
|
||
|
LSETUP ( NJT , NJB ) LC0 = P1;
|
||
|
NJT:
|
||
|
R2 += 1;
|
||
|
IF CC JUMP 2;
|
||
|
NJB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, AC
|
||
|
LSETUP ( NKT , NKB ) LC0 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
NKT:
|
||
|
R2 += 1;
|
||
|
NKB:
|
||
|
R1 += 2;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 1 (with Kill EX3)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Kill %Valid Dcr in EX3
|
||
|
LSETUP ( O1T , O1T ) LC1 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
O1T:R0 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2
|
||
|
LSETUP ( O2T , O2B ) LC1 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
O2T:R0 += 5;
|
||
|
O2B:R2 += 3;
|
||
|
|
||
|
// Kill Valid Dcr in EX1
|
||
|
LSETUP ( O3T , O3B ) LC1 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
O3T:R0 += 5;
|
||
|
R2 += 3;
|
||
|
O3B:R3 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( O4T , O4B ) LC1 = P0;
|
||
|
IF CC JUMP 2;
|
||
|
O4T:R0 += 5;
|
||
|
R2 += 3;
|
||
|
R3 += 2;
|
||
|
O4B:R4 += 1;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2
|
||
|
LSETUP ( O6T , O6T ) LC1 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
O6T:R2 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1
|
||
|
LSETUP ( O7T , O7T ) LC1 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
O7T:R3 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX1, AC
|
||
|
LSETUP ( O8T , O8T ) LC1 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
O8T:R4 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1
|
||
|
LSETUP ( OAT , OAT ) LC1 = P2;
|
||
|
IF CC JUMP 2;
|
||
|
OAT:
|
||
|
R6 += 6;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, EX1, AC
|
||
|
LSETUP ( OBT , OBT ) LC1 = P2;
|
||
|
IF CC JUMP 2;
|
||
|
NOP;
|
||
|
OBT:
|
||
|
R5 += 5;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX2, EX1, AC
|
||
|
LSETUP ( ODT , ODT ) LC1 = P3;
|
||
|
IF CC JUMP 2;
|
||
|
ODT:
|
||
|
R0 += 7;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, EX1
|
||
|
LSETUP ( OIT , OIB ) LC1 = P1;
|
||
|
OIT:
|
||
|
IF CC JUMP 2;
|
||
|
OIB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX3, AC
|
||
|
LSETUP ( OJT , OJB ) LC1 = P1;
|
||
|
OJT:
|
||
|
R2 += 1;
|
||
|
IF CC JUMP 2;
|
||
|
OJB:
|
||
|
R1 += 2;
|
||
|
|
||
|
// Kill Valid Dcr in EX2, AC
|
||
|
LSETUP ( OKT , OKB ) LC1 = P1;
|
||
|
IF CC JUMP 2;
|
||
|
OKT:
|
||
|
R2 += 1;
|
||
|
OKB:
|
||
|
R1 += 2;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 0 (with Kill AC)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( P4T , P4T ) LC0 = P0;
|
||
|
JUMP.S 2;
|
||
|
P4T:R0 += 5;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Loop 1 (with Kill AC)
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Kill Valid Dcr in AC
|
||
|
LSETUP ( Q4T , Q4T ) LC1 = P0;
|
||
|
JUMP.S 2;
|
||
|
Q4T:R0 += 5;
|
||
|
|
||
|
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_DATA_ADDR_1 //.data 0x00F00100,"aw"
|
||
|
.dd 0xdeadbeef;
|
||
|
.section MEM_(DATA_ADDR_1 + 0x100) //.data 0x00F00200,"aw"
|
||
|
.dd 0x01010101; //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
|
||
|
.dd 0x02020202;
|
||
|
.dd 0x03030303;
|
||
|
.dd 0x04040404;
|
||
|
|
||
|
// Define Kernal Stack
|
||
|
.data
|
||
|
.space (STACKSIZE); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
|
||
|
KSTACK :
|
||
|
|
||
|
.space (STACKSIZE);
|
||
|
USTACK :
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// END OF TEST /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|