mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
1368b914e9
Now that all port tests live under testsuite/sim/*/, and none live in testsuite/ directly, flatten the structure by moving all of the dirs under testsuite/sim/ to testsuite/ directly. We need to stop passing --tool to dejagnu so that it searches all dirs and not just ones that start with "sim". Since we have no other dirs in this tree, and no plans to add any, should be fine.
206 lines
2.3 KiB
PHP
206 lines
2.3 KiB
PHP
SYS_exit = 1
|
|
SYS_write = 4
|
|
|
|
.bss
|
|
.space 64
|
|
_stack:
|
|
|
|
.data
|
|
pass_text:
|
|
.string "pass\n"
|
|
fail_text:
|
|
.string "fail\n"
|
|
|
|
.text
|
|
.global _start
|
|
_start:
|
|
movhi hi(_stack), r0, sp
|
|
movea lo(_stack), sp, sp
|
|
jr start_test
|
|
|
|
.macro seti val reg
|
|
movhi hi(\val),r0,\reg
|
|
movea lo(\val),\reg,\reg
|
|
.endm
|
|
|
|
_pass_1:
|
|
mov SYS_write,r6
|
|
mov 1,r7
|
|
seti pass_text,r8
|
|
mov 5,r9
|
|
trap 31
|
|
|
|
mov 0, r7
|
|
jr _exit
|
|
|
|
_fail_1:
|
|
mov SYS_write,r6
|
|
mov 1,r7
|
|
seti fail_text,r8
|
|
mov 5,r9
|
|
trap 31
|
|
|
|
mov 1, r7
|
|
jr _exit
|
|
|
|
_exit:
|
|
mov SYS_exit, r6
|
|
mov 0, r8
|
|
mov 0, r9
|
|
trap 31
|
|
|
|
_pass:
|
|
jr _pass_1
|
|
|
|
_fail:
|
|
jr _fail_1
|
|
|
|
.macro pass
|
|
jr _pass
|
|
.endm
|
|
.macro fail
|
|
jr _fail
|
|
.endm
|
|
|
|
# These pass or fail if the given flag is set or not set
|
|
# Currently, it assumed that the code of any test is going to
|
|
# be less than 256 bytes. Else, we'll have to use a
|
|
# branch-around-jump design instead.
|
|
|
|
.macro pass_c
|
|
bc _pass
|
|
.endm
|
|
.macro fail_c
|
|
bc _fail
|
|
.endm
|
|
.macro pass_nc
|
|
bnc _pass
|
|
.endm
|
|
.macro fail_nc
|
|
bnc _fail
|
|
.endm
|
|
|
|
.macro pass_z
|
|
bz _pass
|
|
.endm
|
|
.macro fail_z
|
|
bz _fail
|
|
.endm
|
|
.macro pass_nz
|
|
bnz _pass
|
|
.endm
|
|
.macro fail_nz
|
|
bnz _fail
|
|
.endm
|
|
|
|
.macro pass_v
|
|
bv _pass
|
|
.endm
|
|
.macro fail_v
|
|
bv _fail
|
|
.endm
|
|
.macro pass_nv
|
|
bnv _pass
|
|
.endm
|
|
.macro fail_nv
|
|
bnv _fail
|
|
.endm
|
|
|
|
.macro pass_s
|
|
bn _pass
|
|
.endm
|
|
.macro fail_s
|
|
bn _fail
|
|
.endm
|
|
.macro pass_ns
|
|
bp _pass
|
|
.endm
|
|
.macro fail_ns
|
|
bp _fail
|
|
.endm
|
|
|
|
.macro pass_sat
|
|
bsa _pass
|
|
.endm
|
|
.macro fail_sat
|
|
bsa _fail
|
|
.endm
|
|
.macro pass_nsat
|
|
bsa 1f
|
|
br _pass
|
|
1:
|
|
.endm
|
|
.macro fail_nsat
|
|
bsa 1f
|
|
br _fail
|
|
1:
|
|
.endm
|
|
|
|
# These pass/fail if the given register has/hasn't the specified value in it.
|
|
|
|
.macro pass_req reg val
|
|
seti \val,r10
|
|
cmp r10,\reg
|
|
be _pass
|
|
.endm
|
|
|
|
.macro pass_rne reg val
|
|
seti \val,r10
|
|
cmp r10,\reg
|
|
bne _pass
|
|
.endm
|
|
|
|
.macro fail_req reg val
|
|
seti \val,r10
|
|
cmp r10,\reg
|
|
be _fail
|
|
.endm
|
|
|
|
.macro fail_rne reg val
|
|
seti \val,r10
|
|
cmp r10,\reg
|
|
bne _fail
|
|
.endm
|
|
|
|
# convenience version
|
|
.macro reg reg val
|
|
seti \val,r10
|
|
cmp r10,\reg
|
|
bne _fail
|
|
.endm
|
|
|
|
z = 1
|
|
nz = 0
|
|
s = 2
|
|
ns = 0
|
|
v = 4
|
|
nv = 0
|
|
c = 8
|
|
nc = 0
|
|
sat = 16
|
|
nsat = 0
|
|
|
|
# sat c v s z
|
|
|
|
.macro flags fval
|
|
stsr psw, r10
|
|
movea +(\fval), r0, r9
|
|
andi 31, r10, r10
|
|
cmp r9, r10
|
|
bne _fail
|
|
.endm
|
|
|
|
.macro noflags
|
|
stsr psw, r10
|
|
andi ~0x1f, r10, r10
|
|
ldsr r10, psw
|
|
.endm
|
|
|
|
.macro allflags
|
|
stsr psw, r10
|
|
ori 0x1f, r10, r10
|
|
ldsr r10, psw
|
|
.endm
|
|
|
|
start_test:
|