// 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