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