# Blackfin testcase for making sure RETX is the excepting insn # and not the target of the insn (like indirect jumps) # mach: bfin # sim: --environment operating #include "test.h" .include "testutils.inc" start # Set our handler imm32 P5, EVT3; loadsym R1, _evtx; [P5] = R1; # Lower ourselves below EVT3 loadsym R4, _i_rts; RETI = R4; RAISE 12; RTI; _i_rts: # Check unaligned RETS loadsym R6, 1f; loadsym R5, 2f; R0 = 1; RETS = R0; 1: RTS; 2: _i_jump: # Check unaligned indirect jump loadsym R6, 1f; loadsym R5, 2f; P0 = 1; 1: JUMP (P0); 2: _i_jump_off: # Check unaligned indirect jump (pc-relative) loadsym R6, 1f; loadsym R5, 2f; P0 = 1; 1: JUMP (PC + P0); 2: _i_call: # Check unaligned indirect call loadsym R6, 1f; loadsym R5, 2f; P0 = 1; 1: CALL (P0); 2: _pass_lvl: dbg_pass _evtx: # Make sure R6 matches RETX R7 = RETX; CC = R6 == R7; if !CC jump _fail_lvl; # Move on to next test RETX = R5; RTX; _fail_lvl: dbg_fail