268 lines
4 KiB
ArmAsm
268 lines
4 KiB
ArmAsm
# sh testcase for ldbank stbank resbank
|
|
# mach: all
|
|
# as(sh): -defsym sim_cpu=0
|
|
# as(shdsp): -defsym sim_cpu=1 -dsp
|
|
|
|
.include "testutils.inc"
|
|
|
|
.macro SEND reg bankno regno
|
|
set_greg ((\bankno << 7) + (\regno << 2)), \reg
|
|
.endm
|
|
|
|
start
|
|
|
|
stbank_1:
|
|
set_grs_a5a5
|
|
mov #0, r0
|
|
SEND r1, 0, 0
|
|
stbank r0, @r1
|
|
mov #1, r0
|
|
SEND r1, 0, 1
|
|
stbank r0, @r1
|
|
mov #2, r0
|
|
SEND r1, 0, 2
|
|
stbank r0, @r1
|
|
mov #3, r0
|
|
SEND r1, 0, 3
|
|
stbank r0, @r1
|
|
mov #4, r0
|
|
SEND r1, 0, 4
|
|
stbank r0, @r1
|
|
mov #5, r0
|
|
SEND r1, 0, 5
|
|
stbank r0, @r1
|
|
mov #6, r0
|
|
SEND r1, 0, 6
|
|
stbank r0, @r1
|
|
mov #7, r0
|
|
SEND r1, 0, 7
|
|
stbank r0, @r1
|
|
mov #8, r0
|
|
SEND r1, 0, 8
|
|
stbank r0, @r1
|
|
mov #9, r0
|
|
SEND r1, 0, 9
|
|
stbank r0, @r1
|
|
mov #10, r0
|
|
SEND r1, 0, 10
|
|
stbank r0, @r1
|
|
mov #11, r0
|
|
SEND r1, 0, 11
|
|
stbank r0, @r1
|
|
mov #12, r0
|
|
SEND r1, 0, 12
|
|
stbank r0, @r1
|
|
mov #13, r0
|
|
SEND r1, 0, 13
|
|
stbank r0, @r1
|
|
mov #14, r0
|
|
SEND r1, 0, 14
|
|
stbank r0, @r1
|
|
mov #15, r0
|
|
SEND r1, 0, 15
|
|
stbank r0, @r1
|
|
mov #16, r0
|
|
SEND r1, 0, 16
|
|
stbank r0, @r1
|
|
mov #17, r0
|
|
SEND r1, 0, 17
|
|
stbank r0, @r1
|
|
mov #18, r0
|
|
SEND r1, 0, 18
|
|
stbank r0, @r1
|
|
mov #19, r0
|
|
SEND r1, 0, 19
|
|
stbank r0, @r1
|
|
|
|
assertreg0 19
|
|
assertreg 19 << 2, r1
|
|
test_gr_a5a5 r2
|
|
test_gr_a5a5 r3
|
|
test_gr_a5a5 r4
|
|
test_gr_a5a5 r5
|
|
test_gr_a5a5 r6
|
|
test_gr_a5a5 r7
|
|
test_gr_a5a5 r8
|
|
test_gr_a5a5 r9
|
|
test_gr_a5a5 r10
|
|
test_gr_a5a5 r11
|
|
test_gr_a5a5 r12
|
|
test_gr_a5a5 r13
|
|
test_gr_a5a5 r14
|
|
|
|
ldbank_1:
|
|
set_grs_a5a5
|
|
SEND r1, 0, 0
|
|
ldbank @r1, r0
|
|
assertreg0 0
|
|
SEND r1, 0, 1
|
|
ldbank @r1, r0
|
|
assertreg0 1
|
|
SEND r1, 0, 2
|
|
ldbank @r1, r0
|
|
assertreg0 2
|
|
SEND r1, 0, 3
|
|
ldbank @r1, r0
|
|
assertreg0 3
|
|
SEND r1, 0, 4
|
|
ldbank @r1, r0
|
|
assertreg0 4
|
|
SEND r1, 0, 5
|
|
ldbank @r1, r0
|
|
assertreg0 5
|
|
SEND r1, 0, 6
|
|
ldbank @r1, r0
|
|
assertreg0 6
|
|
SEND r1, 0, 7
|
|
ldbank @r1, r0
|
|
assertreg0 7
|
|
SEND r1, 0, 8
|
|
ldbank @r1, r0
|
|
assertreg0 8
|
|
SEND r1, 0, 9
|
|
ldbank @r1, r0
|
|
assertreg0 9
|
|
SEND r1, 0, 10
|
|
ldbank @r1, r0
|
|
assertreg0 10
|
|
SEND r1, 0, 11
|
|
ldbank @r1, r0
|
|
assertreg0 11
|
|
SEND r1, 0, 12
|
|
ldbank @r1, r0
|
|
assertreg0 12
|
|
SEND r1, 0, 13
|
|
ldbank @r1, r0
|
|
assertreg0 13
|
|
SEND r1, 0, 14
|
|
ldbank @r1, r0
|
|
assertreg0 14
|
|
SEND r1, 0, 15
|
|
ldbank @r1, r0
|
|
assertreg0 15
|
|
SEND r1, 0, 16
|
|
ldbank @r1, r0
|
|
assertreg0 16
|
|
SEND r1, 0, 17
|
|
ldbank @r1, r0
|
|
assertreg0 17
|
|
SEND r1, 0, 18
|
|
ldbank @r1, r0
|
|
assertreg0 18
|
|
SEND r1, 0, 19
|
|
ldbank @r1, r0
|
|
assertreg0 19
|
|
|
|
assertreg (19 << 2), r1
|
|
test_gr_a5a5 r2
|
|
test_gr_a5a5 r3
|
|
test_gr_a5a5 r4
|
|
test_gr_a5a5 r5
|
|
test_gr_a5a5 r6
|
|
test_gr_a5a5 r7
|
|
test_gr_a5a5 r8
|
|
test_gr_a5a5 r9
|
|
test_gr_a5a5 r10
|
|
test_gr_a5a5 r11
|
|
test_gr_a5a5 r12
|
|
test_gr_a5a5 r13
|
|
test_gr_a5a5 r14
|
|
|
|
resbank_1:
|
|
set_grs_a5a5
|
|
mov #1, r0
|
|
trapa #13 ! magic trap, sets ibnr
|
|
|
|
resbank
|
|
|
|
assertreg0 0
|
|
assertreg 1, r1
|
|
assertreg 2, r2
|
|
assertreg 3, r3
|
|
assertreg 4, r4
|
|
assertreg 5, r5
|
|
assertreg 6, r6
|
|
assertreg 7, r7
|
|
assertreg 8, r8
|
|
assertreg 9, r9
|
|
assertreg 10, r10
|
|
assertreg 11, r11
|
|
assertreg 12, r12
|
|
assertreg 13, r13
|
|
assertreg 14, r14
|
|
assert_sreg 15, mach
|
|
assert_sreg 17, pr
|
|
assert_creg 18, gbr
|
|
assert_sreg 19, macl
|
|
|
|
resbank_2:
|
|
set_grs_a5a5
|
|
movi20 #555, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
add #-1, r0
|
|
mov.l r0, @-r15
|
|
|
|
set_sr_bit (1 << 14) ! set BO
|
|
|
|
resbank
|
|
|
|
assert_sreg 555, macl
|
|
assert_sreg 554, mach
|
|
assert_creg 553, gbr
|
|
assert_sreg 552, pr
|
|
assertreg 551, r14
|
|
assertreg 550, r13
|
|
assertreg 549, r12
|
|
assertreg 548, r11
|
|
assertreg 547, r10
|
|
assertreg 546, r9
|
|
assertreg 545, r8
|
|
assertreg 544, r7
|
|
assertreg 543, r6
|
|
assertreg 542, r5
|
|
assertreg 541, r4
|
|
assertreg 540, r3
|
|
assertreg 539, r2
|
|
assertreg 538, r1
|
|
assertreg0 537
|
|
|
|
mov r15, r0
|
|
assertreg0 stackt
|
|
|
|
pass
|
|
|
|
exit 0
|