52 lines
801 B
ArmAsm
52 lines
801 B
ArmAsm
// assert that we can issue a software exception
|
|
// and that the expt number is passed correctly through
|
|
// SEQSTAT.
|
|
# mach: bfin
|
|
# sim: --environment operating
|
|
|
|
.include "testutils.inc"
|
|
|
|
start
|
|
.ifndef BFIN_HOST
|
|
imm32 p0, 0xFFE02000; /* EVT0 */
|
|
P1 = re (Z); // load a pointer to ihandler interrupt 1
|
|
P1.H = re;
|
|
[ P0 + (4*3) ] = P1;
|
|
|
|
R0 = -1; /* unmask all interrupts */
|
|
imm32 p1, 0xFFE02104;
|
|
[P1] = R0;
|
|
|
|
R0 = start_uspace (Z);
|
|
R0.H = start_uspace;
|
|
RETI = R0;
|
|
RTI;
|
|
start_uspace:
|
|
EXCPT 10;
|
|
|
|
DBGA ( R1.L , 0x1238 );
|
|
|
|
dbg_pass;
|
|
|
|
// ihandler
|
|
re:
|
|
R0 = SEQSTAT;
|
|
R0 <<= (32-6);
|
|
R0 >>= (32-6);
|
|
R2 = 0x20;
|
|
CC = R0 < R2;
|
|
IF !CC JUMP _error;
|
|
DBGA ( R0.L , 0xa );
|
|
R1 = 0x1234 (X);
|
|
R1 += 1;
|
|
R1 += 1;
|
|
R1 += 1;
|
|
R1 += 1;
|
|
RTX;
|
|
|
|
_error:
|
|
DBGA ( R0.L , EXCPT_PROTVIOL );
|
|
dbg_fail;
|
|
|
|
.endif
|