# Blackfin testcase for hardware single stepping # mach: bfin # sim: --environment operating #include "test.h" .include "testutils.inc" start # Set up exception handler imm32 P4, EVT3; loadsym R1, _evx; [P4] = R1; # Enable single stepping R0 = 1; SYSCFG = R0; # Lower to the code we want to single step through R1 = 1; imm32 R5, 0xffff R6 = 0; R7 = 0; loadsym R1, _usr; RETI = R1; RTI; _usr: # Single step and set a new bit every time BITSET (R7, 0); BITSET (R7, 1); BITSET (R7, 2); BITSET (R7, 3); BITSET (R7, 4); BITSET (R7, 5); BITSET (R7, 6); BITSET (R7, 7); BITSET (R7, 8); BITSET (R7, 9); BITSET (R7, 10); BITSET (R7, 11); BITSET (R7, 12); BITSET (R7, 13); BITSET (R7, 14); BITSET (R7, 15); JUMP fail_lvl; _evx: # Make sure exception reason is single step R3 = SEQSTAT; R4 = 0x3f; R3 = R3 & R4; R4 = 0x10; CC = R3 == R4; IF !CC JUMP fail_lvl; # Set a new bit in R6 every single step to match R7 CC = R1; R6 = ROT R6 BY 1; CC = R6 == R7; IF !CC JUMP fail_lvl; # Do it through each bit CC = R5 == R6; IF CC JUMP pass_lvl; RTX; pass_lvl: dbg_pass; fail_lvl: dbg_fail;