# Blackfin testcase for link/unlink instructions # mach: bfin .include "testutils.inc" start /* give FP/RETS known/different values */ R7.H = 0xdead; R7.L = 0x1234; RETS = R7; R6 = R7; R6 += 0x23; FP = R6; /* SP should have moved by -8 bytes (to push FP/RETS) */ R0 = SP; LINK 0; R1 = SP; R1 += 8; CC = R0 == R1; IF !CC JUMP 1f; /* FP should now have the same value as SP */ R1 = SP; R2 = FP; CC = R1 == R2; IF !CC JUMP 1f; /* make sure FP/RETS on the stack have our known values */ R1 = [SP]; CC = R1 == R6; IF !CC JUMP 1f; R1 = [SP + 4]; CC = R1 == R7; IF !CC JUMP 1f; /* UNLINK should: * assign SP to current FP * adjust SP by -8 bytes * restore RETS/FP from the stack */ R4 = 0; RETS = R4; R0 = SP; UNLINK; /* Check new SP */ R1 = SP; R1 += -0x8; CC = R1 == R0; IF !CC JUMP 1f; /* Check restored RETS */ R1 = RETS; CC = R1 == R7; IF !CC JUMP 1f; /* Check restored FP */ R1 = FP; CC = R1 == R6; IF !CC JUMP 1f; pass 1: fail |