# Test macro | |
.macro assert reg,value | |
cmpeq f0,\reg,\value | |
bra/fx fail | |
.endm | |
# PR 18230 | |
add r62,r0,0xffffffff || nop | |
add r1,r0,24 || nop | |
djsr r1,test_end | |
add r2,r0,r62 | |
test_end: nop | |
assert r2, 0x00000030 | |
assert r62, 0x00000030 | |
# check return address correctly set by a djsr insn | |
add r3, r0, last | |
sub r3, r3, start | |
start: | |
djsr r3, dest | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
last: | |
add r2, r2, 1 || nop | |
nexti: | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
add r2, r2, 1 || nop | |
.align 4 | |
dest: | |
assert r62,nexti | |
# all okay | |
bra ok | |
ok: | |
add r2, r0, 0 | |
.long 0x0e000004 | |
nop | |
fail: | |
add r2, r0, 47 | |
.long 0x0e000004 | |
nop |