mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
567 lines
11 KiB
ArmAsm
567 lines
11 KiB
ArmAsm
|
//Original:/proj/frio/dv/testcases/seq/se_popkill/se_popkill.dsp
|
||
|
// Description: Kill pops to sysregs in WB
|
||
|
# mach: bfin
|
||
|
# sim: --environment operating
|
||
|
|
||
|
#include "test.h"
|
||
|
.include "testutils.inc"
|
||
|
start
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// Include Files /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
include(std.inc)
|
||
|
include(selfcheck.inc)
|
||
|
include(symtable.inc)
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// Defines /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef USER_CODE_SPACE
|
||
|
#define USER_CODE_SPACE CODE_ADDR_RST_1 //
|
||
|
#endif
|
||
|
#ifndef STACKSIZE
|
||
|
#define STACKSIZE 0x00000010
|
||
|
#endif
|
||
|
#ifndef ITABLE
|
||
|
#define ITABLE CODE_ADDR_RST_2 //
|
||
|
#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_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, 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;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////// CPLB Setup /////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Setup CPLB for Data Memory starting at 0x00F0_0000;
|
||
|
WR_MMR(DCPLB_DATA0, DATA_ADDR_1, p0, r0);
|
||
|
//WR_MMR(DCPLB_DATA0, 0x00031005, p0, r0); // Page Size = 4MB
|
||
|
// CPLB_L1_CHLB = 1
|
||
|
// CPLB_USER_RD = 1
|
||
|
// CPLB_VALID = 1
|
||
|
//
|
||
|
|
||
|
// Setup CPLB Address to point to 0x00F0_0000
|
||
|
WR_MMR(DCPLB_ADDR0, DATA_ADDR_2, p0, r0);
|
||
|
//WR_MMR(DCPLB_ADDR0, 0x00F00000, p0, r0);
|
||
|
|
||
|
// Enable CPLB's
|
||
|
WR_MMR(DMEM_CONTROL, DATA_ADDR_3, p0, r0);
|
||
|
//WR_MMR(DMEM_CONTROL, 0x0000000f, p0, r0); // ENDM = 1
|
||
|
// ENDCPLB = 1
|
||
|
// DMC = 11
|
||
|
// Sync it!
|
||
|
CSYNC;
|
||
|
|
||
|
|
||
|
// Return to Supervisor Code
|
||
|
RAISE 15;
|
||
|
|
||
|
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 :
|
||
|
|
||
|
R3 = SEQSTAT;
|
||
|
R4 = RETX;
|
||
|
R4 += 8;
|
||
|
RETX = R4;
|
||
|
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 :
|
||
|
|
||
|
NOP;
|
||
|
ASTAT = R7;
|
||
|
RETS = R7;
|
||
|
LC0 = R7;
|
||
|
LB0 = R7;
|
||
|
LT0 = R7;
|
||
|
LC1 = R7;
|
||
|
LB1 = R7;
|
||
|
LT1 = R7;
|
||
|
CYCLES = R7;
|
||
|
CYCLES2 = R7;
|
||
|
SYSCFG = R7;
|
||
|
RETN = R7;
|
||
|
RETX = R7;
|
||
|
RETE = R7;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 1;
|
||
|
ASTAT = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 2;
|
||
|
RETS = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 3;
|
||
|
LC0 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 4;
|
||
|
LT0 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 5;
|
||
|
LB0 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 6;
|
||
|
LC1 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 7;
|
||
|
LB1 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 8;
|
||
|
LT1 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 9;
|
||
|
CYCLES = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 10;
|
||
|
CYCLES2 = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 11;
|
||
|
SYSCFG = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 12;
|
||
|
RETI = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 13;
|
||
|
RETX = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 14;
|
||
|
RETN = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
EXCPT 15;
|
||
|
RETE = [ SP ++ ];
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
NOP;
|
||
|
|
||
|
NOP;
|
||
|
NOP;
|
||
|
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 /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Define Kernal Stack
|
||
|
.section MEM_DATA_ADDR_1 //.data 0x00F00100,"aw"
|
||
|
.space (STACKSIZE);
|
||
|
KSTACK :
|
||
|
|
||
|
.space (STACKSIZE);
|
||
|
USTACK :
|
||
|
|
||
|
.section MEM_DATA_ADDR_2 //.data 0x00F00100,"aw"
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
.dd 0xdeadbeef;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
///////////////////////// END OF TEST /////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|