Update
[gdb.git] / sim / testsuite / sim / v850 / testutils.inc
blobe4966984aa5e32a495173bd0dd9979e0584fc7d1
1 SYS_exit = 1
2 SYS_write = 4
4         .bss
5         .space 64
6 _stack:
8         .data
9 pass_text:
10         .string "pass\n"
11 fail_text:
12         .string "fail\n"
14         .text
15         .global _start
16 _start:
17         movhi   hi(_stack),     r0,     sp
18         movea   lo(_stack),     sp,     sp
19         jr      start_test
21         .macro  seti    val reg
22         movhi   hi(\val),r0,\reg
23         movea   lo(\val),\reg,\reg
24         .endm
26 _pass_1:
27         mov     SYS_write,r6
28         mov     1,r7
29         seti    pass_text,r8
30         mov     5,r9
31         trap    31
33         mov     0, r7
34         jr      _exit
36 _fail_1:
37         mov     SYS_write,r6
38         mov     1,r7
39         seti    fail_text,r8
40         mov     5,r9
41         trap    31
43         mov     1, r7
44         jr      _exit
46 _exit:
47         mov     SYS_exit, r6
48         mov     0, r8
49         mov     0, r9
50         trap    31
52 _pass:
53         jr      _pass_1
55 _fail:
56         jr      _fail_1
58         .macro  pass
59         jr      _pass
60         .endm
61         .macro  fail
62         jr      _fail
63         .endm
65         # These pass or fail if the given flag is set or not set
66         # Currently, it assumed that the code of any test is going to
67         # be less than 256 bytes.  Else, we'll have to use a
68         # branch-around-jump design instead.
70         .macro  pass_c
71         bc      _pass
72         .endm
73         .macro  fail_c
74         bc      _fail
75         .endm
76         .macro  pass_nc
77         bnc     _pass
78         .endm
79         .macro  fail_nc
80         bnc     _fail
81         .endm
83         .macro  pass_z
84         bz      _pass
85         .endm
86         .macro  fail_z
87         bz      _fail
88         .endm
89         .macro  pass_nz
90         bnz     _pass
91         .endm
92         .macro  fail_nz
93         bnz     _fail
94         .endm
96         .macro  pass_v
97         bv      _pass
98         .endm
99         .macro  fail_v
100         bv      _fail
101         .endm
102         .macro  pass_nv
103         bnv     _pass
104         .endm
105         .macro  fail_nv
106         bnv     _fail
107         .endm
109         .macro  pass_s
110         bn      _pass
111         .endm
112         .macro  fail_s
113         bn      _fail
114         .endm
115         .macro  pass_ns
116         bp      _pass
117         .endm
118         .macro  fail_ns
119         bp      _fail
120         .endm
122         .macro  pass_sat
123         bsa     _pass
124         .endm
125         .macro  fail_sat
126         bsa     _fail
127         .endm
128         .macro  pass_nsat
129         bsa     1f
130         br      _pass
132         .endm
133         .macro  fail_nsat
134         bsa     1f
135         br      _fail
137         .endm
139         # These pass/fail if the given register has/hasn't the specified value in it.
141         .macro  pass_req        reg val
142         seti    \val,r10
143         cmp     r10,\reg
144         be      _pass
145         .endm
147         .macro  pass_rne        reg val
148         seti    \val,r10
149         cmp     r10,\reg
150         bne     _pass
151         .endm
153         .macro  fail_req        reg val
154         seti    \val,r10
155         cmp     r10,\reg
156         be      _fail
157         .endm
159         .macro  fail_rne        reg val
160         seti    \val,r10
161         cmp     r10,\reg
162         bne     _fail
163         .endm
165 # convenience version
166         .macro  reg     reg val
167         seti    \val,r10
168         cmp     r10,\reg
169         bne     _fail
170         .endm
172 z    = 1
173 nz   = 0
174 s    = 2
175 ns   = 0
176 v    = 4
177 nv   = 0
178 c    = 8
179 nc   = 0
180 sat  = 16
181 nsat = 0
183 # sat c v s z
185         .macro  flags   fval
186         stsr    psw, r10
187         movea   +(\fval), r0, r9
188         andi    31, r10, r10
189         cmp     r9, r10
190         bne     _fail
191         .endm
193         .macro  noflags
194         stsr    psw, r10
195         andi    ~0x1f, r10, r10
196         ldsr    r10, psw
197         .endm
199         .macro  allflags
200         stsr    psw, r10
201         ori     0x1f, r10, r10
202         ldsr    r10, psw
203         .endm
205 start_test: