1//Original:/proj/frio/dv/testcases/core/c_except_illopcode/c_except_illopcode.dsp 2// Spec Reference: c_exception illegal opcode 3# mach: bfin 4# sim: --environment operating 5 6#include "test.h" 7.include "testutils.inc" 8start 9 10include(std.inc) 11include(selfcheck.inc) 12INIT_R_REGS(0); 13INIT_P_REGS(0); 14//CHECK_INIT(p5, 0xe0000000); 15include(symtable.inc) 16CHECK_INIT_DEF(p5); 17 18// load address of exception handler 19 20P0 = 0x200C (Z); // 0xFFE0200C EVT3 EXCEPTION 21P0.H = 0xFFE0; 22R0 = exception_handler (Z); // wr address of exception handler to MMR EVT3 23R0.H = exception_handler; 24[ P0 ] = R0; 25 26// Jump to User mode and enable exceptions 27 28R0 = MidUserCode (Z); 29R0.H = MidUserCode; 30RETI = R0; 31RTI; // cause it to go to Midusercode, .dd cause exception 32 33BeginUserCode: 34P1 = 1; 35P2 = 2; 36P3 = 3; 37P4 = 4; 38 39CHECKREG(r0, 0x00000000); 40CHECKREG(r1, 0x00000001); 41CHECKREG(r2, 0x00000002); 42CHECKREG(r3, 0x00000003); 43// CHECKREG(r4, 0x00000098); 44CHECKREG(r5, 0x00000005); 45CHECKREG(r6, 0x00000006); 46CHECKREG(r7, 0x00000007); 47CHECKREG(p1, 0x00000001); 48CHECKREG(p2, 0x00000002); 49CHECKREG(p3, 0x00000003); 50CHECKREG(p4, 0x00000004); 51 52dbg_pass; 53//jump 2; 54//jump -2; 55.dd 0xFFFFFFFF 56.dd 0xFFFFFFFF 57.dd 0xFFFFFFFF 58.dd 0xFFFFFFFF 59.dd 0xFFFFFFFF 60.dd 0xFFFFFFFF 61.dd 0xFFFFFFFF 62.dd 0xFFFFFFFF 63 64//dbg_pass; 65 66MidUserCode: 67.dd 0xFFFFFFFF 68R0 = 0; 69R1 = 1; 70R2 = 2; 71R3 = 3; 72CC = R0; 73IF !CC JUMP BeginUserCode; 74 75.dd 0xFFFFFFFF 76.dd 0xFFFFFFFF 77.dd 0xFFFFFFFF 78.dd 0xFFFFFFFF 79.dd 0xFFFFFFFF 80.dd 0xFFFFFFFF 81.dd 0xFFFFFFFF 82.dd 0xFFFFFFFF 83 84//.code 0x800 85 86exception_handler: 87R4 = RETX; // error handler: RETX has the address of the same Illegal instr 88R5 = 5; 89R6 = 6; 90R7 = 7; 91R4 += 4; // we have to add 4 to point to next instr after return 92RETX = R4; 93 94RTX; // return from exception 95 //nop; 96 97.section MEM_DATA_ADDR_1,"aw" 98.dd 0xDEADBEEF 99.dd 0xBAD00BAD 100