Statistics
| Branch: | Revision:

root / target-alpha / op.c @ 3a3b925d

History | View | Annotate | Download (13.7 kB)

1 4c9649a9 j_mayer
/*
2 4c9649a9 j_mayer
 *  Alpha emulation cpu micro-operations for qemu.
3 5fafdf24 ths
 *
4 4c9649a9 j_mayer
 *  Copyright (c) 2007 Jocelyn Mayer
5 4c9649a9 j_mayer
 *
6 4c9649a9 j_mayer
 * This library is free software; you can redistribute it and/or
7 4c9649a9 j_mayer
 * modify it under the terms of the GNU Lesser General Public
8 4c9649a9 j_mayer
 * License as published by the Free Software Foundation; either
9 4c9649a9 j_mayer
 * version 2 of the License, or (at your option) any later version.
10 4c9649a9 j_mayer
 *
11 4c9649a9 j_mayer
 * This library is distributed in the hope that it will be useful,
12 4c9649a9 j_mayer
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 4c9649a9 j_mayer
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 4c9649a9 j_mayer
 * Lesser General Public License for more details.
15 4c9649a9 j_mayer
 *
16 4c9649a9 j_mayer
 * You should have received a copy of the GNU Lesser General Public
17 4c9649a9 j_mayer
 * License along with this library; if not, write to the Free Software
18 4c9649a9 j_mayer
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 4c9649a9 j_mayer
 */
20 4c9649a9 j_mayer
21 4c9649a9 j_mayer
#define DEBUG_OP
22 4c9649a9 j_mayer
23 4c9649a9 j_mayer
#include "config.h"
24 4c9649a9 j_mayer
#include "exec.h"
25 7a51ad82 j_mayer
#include "host-utils.h"
26 4c9649a9 j_mayer
27 4c9649a9 j_mayer
#include "op_helper.h"
28 4c9649a9 j_mayer
29 4c9649a9 j_mayer
#define REG 0
30 4c9649a9 j_mayer
#include "op_template.h"
31 4c9649a9 j_mayer
32 4c9649a9 j_mayer
#define REG 1
33 4c9649a9 j_mayer
#include "op_template.h"
34 4c9649a9 j_mayer
35 4c9649a9 j_mayer
#define REG 2
36 4c9649a9 j_mayer
#include "op_template.h"
37 4c9649a9 j_mayer
38 4c9649a9 j_mayer
#define REG 3
39 4c9649a9 j_mayer
#include "op_template.h"
40 4c9649a9 j_mayer
41 4c9649a9 j_mayer
#define REG 4
42 4c9649a9 j_mayer
#include "op_template.h"
43 4c9649a9 j_mayer
44 4c9649a9 j_mayer
#define REG 5
45 4c9649a9 j_mayer
#include "op_template.h"
46 4c9649a9 j_mayer
47 4c9649a9 j_mayer
#define REG 6
48 4c9649a9 j_mayer
#include "op_template.h"
49 4c9649a9 j_mayer
50 4c9649a9 j_mayer
#define REG 7
51 4c9649a9 j_mayer
#include "op_template.h"
52 4c9649a9 j_mayer
53 4c9649a9 j_mayer
#define REG 8
54 4c9649a9 j_mayer
#include "op_template.h"
55 4c9649a9 j_mayer
56 4c9649a9 j_mayer
#define REG 9
57 4c9649a9 j_mayer
#include "op_template.h"
58 4c9649a9 j_mayer
59 4c9649a9 j_mayer
#define REG 10
60 4c9649a9 j_mayer
#include "op_template.h"
61 4c9649a9 j_mayer
62 4c9649a9 j_mayer
#define REG 11
63 4c9649a9 j_mayer
#include "op_template.h"
64 4c9649a9 j_mayer
65 4c9649a9 j_mayer
#define REG 12
66 4c9649a9 j_mayer
#include "op_template.h"
67 4c9649a9 j_mayer
68 4c9649a9 j_mayer
#define REG 13
69 4c9649a9 j_mayer
#include "op_template.h"
70 4c9649a9 j_mayer
71 4c9649a9 j_mayer
#define REG 14
72 4c9649a9 j_mayer
#include "op_template.h"
73 4c9649a9 j_mayer
74 4c9649a9 j_mayer
#define REG 15
75 4c9649a9 j_mayer
#include "op_template.h"
76 4c9649a9 j_mayer
77 4c9649a9 j_mayer
#define REG 16
78 4c9649a9 j_mayer
#include "op_template.h"
79 4c9649a9 j_mayer
80 4c9649a9 j_mayer
#define REG 17
81 4c9649a9 j_mayer
#include "op_template.h"
82 4c9649a9 j_mayer
83 4c9649a9 j_mayer
#define REG 18
84 4c9649a9 j_mayer
#include "op_template.h"
85 4c9649a9 j_mayer
86 4c9649a9 j_mayer
#define REG 19
87 4c9649a9 j_mayer
#include "op_template.h"
88 4c9649a9 j_mayer
89 4c9649a9 j_mayer
#define REG 20
90 4c9649a9 j_mayer
#include "op_template.h"
91 4c9649a9 j_mayer
92 4c9649a9 j_mayer
#define REG 21
93 4c9649a9 j_mayer
#include "op_template.h"
94 4c9649a9 j_mayer
95 4c9649a9 j_mayer
#define REG 22
96 4c9649a9 j_mayer
#include "op_template.h"
97 4c9649a9 j_mayer
98 4c9649a9 j_mayer
#define REG 23
99 4c9649a9 j_mayer
#include "op_template.h"
100 4c9649a9 j_mayer
101 4c9649a9 j_mayer
#define REG 24
102 4c9649a9 j_mayer
#include "op_template.h"
103 4c9649a9 j_mayer
104 4c9649a9 j_mayer
#define REG 25
105 4c9649a9 j_mayer
#include "op_template.h"
106 4c9649a9 j_mayer
107 4c9649a9 j_mayer
#define REG 26
108 4c9649a9 j_mayer
#include "op_template.h"
109 4c9649a9 j_mayer
110 4c9649a9 j_mayer
#define REG 27
111 4c9649a9 j_mayer
#include "op_template.h"
112 4c9649a9 j_mayer
113 4c9649a9 j_mayer
#define REG 28
114 4c9649a9 j_mayer
#include "op_template.h"
115 4c9649a9 j_mayer
116 4c9649a9 j_mayer
#define REG 29
117 4c9649a9 j_mayer
#include "op_template.h"
118 4c9649a9 j_mayer
119 4c9649a9 j_mayer
#define REG 30
120 4c9649a9 j_mayer
#include "op_template.h"
121 4c9649a9 j_mayer
122 4c9649a9 j_mayer
#define REG 31
123 4c9649a9 j_mayer
#include "op_template.h"
124 4c9649a9 j_mayer
125 4c9649a9 j_mayer
/* Debug stuff */
126 4c9649a9 j_mayer
void OPPROTO op_no_op (void)
127 4c9649a9 j_mayer
{
128 4c9649a9 j_mayer
#if !defined (DEBUG_OP)
129 4c9649a9 j_mayer
    __asm__ __volatile__("nop" : : : "memory");
130 4c9649a9 j_mayer
#endif
131 4c9649a9 j_mayer
    RETURN();
132 4c9649a9 j_mayer
}
133 4c9649a9 j_mayer
134 4c9649a9 j_mayer
/* Load and stores */
135 4c9649a9 j_mayer
#define MEMSUFFIX _raw
136 4c9649a9 j_mayer
#include "op_mem.h"
137 4c9649a9 j_mayer
#if !defined(CONFIG_USER_ONLY)
138 4c9649a9 j_mayer
#define MEMSUFFIX _kernel
139 4c9649a9 j_mayer
#include "op_mem.h"
140 b1806c9e j_mayer
#define MEMSUFFIX _executive
141 b1806c9e j_mayer
#include "op_mem.h"
142 b1806c9e j_mayer
#define MEMSUFFIX _supervisor
143 b1806c9e j_mayer
#include "op_mem.h"
144 b1806c9e j_mayer
#define MEMSUFFIX _user
145 b1806c9e j_mayer
#include "op_mem.h"
146 b1806c9e j_mayer
/* This is used for pal modes */
147 4c9649a9 j_mayer
#define MEMSUFFIX _data
148 4c9649a9 j_mayer
#include "op_mem.h"
149 4c9649a9 j_mayer
#endif
150 4c9649a9 j_mayer
151 4c9649a9 j_mayer
/* Misc */
152 4c9649a9 j_mayer
void OPPROTO op_excp (void)
153 4c9649a9 j_mayer
{
154 4c9649a9 j_mayer
    helper_excp(PARAM(1), PARAM(2));
155 4c9649a9 j_mayer
    RETURN();
156 4c9649a9 j_mayer
}
157 4c9649a9 j_mayer
158 4c9649a9 j_mayer
void OPPROTO op_load_amask (void)
159 4c9649a9 j_mayer
{
160 4c9649a9 j_mayer
    helper_amask();
161 4c9649a9 j_mayer
    RETURN();
162 4c9649a9 j_mayer
}
163 4c9649a9 j_mayer
164 4c9649a9 j_mayer
void OPPROTO op_load_pcc (void)
165 4c9649a9 j_mayer
{
166 4c9649a9 j_mayer
    helper_load_pcc();
167 4c9649a9 j_mayer
    RETURN();
168 4c9649a9 j_mayer
}
169 4c9649a9 j_mayer
170 4c9649a9 j_mayer
void OPPROTO op_load_implver (void)
171 4c9649a9 j_mayer
{
172 4c9649a9 j_mayer
    helper_load_implver();
173 4c9649a9 j_mayer
    RETURN();
174 4c9649a9 j_mayer
}
175 4c9649a9 j_mayer
176 4c9649a9 j_mayer
void OPPROTO op_load_fpcr (void)
177 4c9649a9 j_mayer
{
178 4c9649a9 j_mayer
    helper_load_fpcr();
179 4c9649a9 j_mayer
    RETURN();
180 4c9649a9 j_mayer
}
181 4c9649a9 j_mayer
182 4c9649a9 j_mayer
void OPPROTO op_store_fpcr (void)
183 4c9649a9 j_mayer
{
184 4c9649a9 j_mayer
    helper_store_fpcr();
185 4c9649a9 j_mayer
    RETURN();
186 4c9649a9 j_mayer
}
187 4c9649a9 j_mayer
188 4c9649a9 j_mayer
void OPPROTO op_load_irf (void)
189 4c9649a9 j_mayer
{
190 4c9649a9 j_mayer
    helper_load_irf();
191 4c9649a9 j_mayer
    RETURN();
192 4c9649a9 j_mayer
}
193 4c9649a9 j_mayer
194 4c9649a9 j_mayer
void OPPROTO op_set_irf (void)
195 4c9649a9 j_mayer
{
196 4c9649a9 j_mayer
    helper_set_irf();
197 4c9649a9 j_mayer
    RETURN();
198 4c9649a9 j_mayer
}
199 4c9649a9 j_mayer
200 4c9649a9 j_mayer
void OPPROTO op_clear_irf (void)
201 4c9649a9 j_mayer
{
202 4c9649a9 j_mayer
    helper_clear_irf();
203 4c9649a9 j_mayer
    RETURN();
204 4c9649a9 j_mayer
}
205 4c9649a9 j_mayer
206 4c9649a9 j_mayer
/* Arithmetic */
207 4c9649a9 j_mayer
void OPPROTO op_addq (void)
208 4c9649a9 j_mayer
{
209 4c9649a9 j_mayer
    T0 += T1;
210 4c9649a9 j_mayer
    RETURN();
211 4c9649a9 j_mayer
}
212 4c9649a9 j_mayer
213 4c9649a9 j_mayer
void OPPROTO op_addqv (void)
214 4c9649a9 j_mayer
{
215 4c9649a9 j_mayer
    helper_addqv();
216 4c9649a9 j_mayer
    RETURN();
217 4c9649a9 j_mayer
}
218 4c9649a9 j_mayer
219 4c9649a9 j_mayer
void OPPROTO op_addl (void)
220 4c9649a9 j_mayer
{
221 4c9649a9 j_mayer
    T0 = (int64_t)((int32_t)(T0 + T1));
222 4c9649a9 j_mayer
    RETURN();
223 4c9649a9 j_mayer
}
224 4c9649a9 j_mayer
225 4c9649a9 j_mayer
void OPPROTO op_addlv (void)
226 4c9649a9 j_mayer
{
227 4c9649a9 j_mayer
    helper_addlv();
228 4c9649a9 j_mayer
    RETURN();
229 4c9649a9 j_mayer
}
230 4c9649a9 j_mayer
231 4c9649a9 j_mayer
void OPPROTO op_subq (void)
232 4c9649a9 j_mayer
{
233 4c9649a9 j_mayer
    T0 -= T1;
234 4c9649a9 j_mayer
    RETURN();
235 4c9649a9 j_mayer
}
236 4c9649a9 j_mayer
237 4c9649a9 j_mayer
void OPPROTO op_subqv (void)
238 4c9649a9 j_mayer
{
239 4c9649a9 j_mayer
    helper_subqv();
240 4c9649a9 j_mayer
    RETURN();
241 4c9649a9 j_mayer
}
242 4c9649a9 j_mayer
243 4c9649a9 j_mayer
void OPPROTO op_subl (void)
244 4c9649a9 j_mayer
{
245 4c9649a9 j_mayer
    T0 = (int64_t)((int32_t)(T0 - T1));
246 4c9649a9 j_mayer
    RETURN();
247 4c9649a9 j_mayer
}
248 4c9649a9 j_mayer
249 4c9649a9 j_mayer
void OPPROTO op_sublv (void)
250 4c9649a9 j_mayer
{
251 4c9649a9 j_mayer
    helper_sublv();
252 4c9649a9 j_mayer
    RETURN();
253 4c9649a9 j_mayer
}
254 4c9649a9 j_mayer
255 4c9649a9 j_mayer
void OPPROTO op_mull (void)
256 4c9649a9 j_mayer
{
257 4c9649a9 j_mayer
    T0 = (int64_t)((int32_t)T0 * (int32_t)T1);
258 4c9649a9 j_mayer
    RETURN();
259 4c9649a9 j_mayer
}
260 4c9649a9 j_mayer
261 4c9649a9 j_mayer
void OPPROTO op_mullv (void)
262 4c9649a9 j_mayer
{
263 4c9649a9 j_mayer
    helper_mullv();
264 4c9649a9 j_mayer
    RETURN();
265 4c9649a9 j_mayer
}
266 4c9649a9 j_mayer
267 4c9649a9 j_mayer
void OPPROTO op_mulq (void)
268 4c9649a9 j_mayer
{
269 e14fe0a9 j_mayer
    T0 = (int64_t)T0 * (int64_t)T1;
270 4c9649a9 j_mayer
    RETURN();
271 4c9649a9 j_mayer
}
272 4c9649a9 j_mayer
273 4c9649a9 j_mayer
void OPPROTO op_mulqv (void)
274 4c9649a9 j_mayer
{
275 4c9649a9 j_mayer
    helper_mulqv();
276 4c9649a9 j_mayer
    RETURN();
277 4c9649a9 j_mayer
}
278 4c9649a9 j_mayer
279 4c9649a9 j_mayer
void OPPROTO op_umulh (void)
280 4c9649a9 j_mayer
{
281 e14fe0a9 j_mayer
    uint64_t tl, th;
282 e14fe0a9 j_mayer
283 e14fe0a9 j_mayer
    mulu64(&tl, &th, T0, T1);
284 e14fe0a9 j_mayer
    T0 = th;
285 4c9649a9 j_mayer
    RETURN();
286 4c9649a9 j_mayer
}
287 4c9649a9 j_mayer
288 4c9649a9 j_mayer
/* Logical */
289 4c9649a9 j_mayer
void OPPROTO op_and (void)
290 4c9649a9 j_mayer
{
291 4c9649a9 j_mayer
    T0 &= T1;
292 4c9649a9 j_mayer
    RETURN();
293 4c9649a9 j_mayer
}
294 4c9649a9 j_mayer
295 4c9649a9 j_mayer
void OPPROTO op_bic (void)
296 4c9649a9 j_mayer
{
297 4c9649a9 j_mayer
    T0 &= ~T1;
298 4c9649a9 j_mayer
    RETURN();
299 4c9649a9 j_mayer
}
300 4c9649a9 j_mayer
301 4c9649a9 j_mayer
void OPPROTO op_bis (void)
302 4c9649a9 j_mayer
{
303 4c9649a9 j_mayer
    T0 |= T1;
304 4c9649a9 j_mayer
    RETURN();
305 4c9649a9 j_mayer
}
306 4c9649a9 j_mayer
307 4c9649a9 j_mayer
void OPPROTO op_eqv (void)
308 4c9649a9 j_mayer
{
309 4c9649a9 j_mayer
    T0 ^= ~T1;
310 4c9649a9 j_mayer
    RETURN();
311 4c9649a9 j_mayer
}
312 4c9649a9 j_mayer
313 4c9649a9 j_mayer
void OPPROTO op_ornot (void)
314 4c9649a9 j_mayer
{
315 4c9649a9 j_mayer
    T0 |= ~T1;
316 4c9649a9 j_mayer
    RETURN();
317 4c9649a9 j_mayer
}
318 4c9649a9 j_mayer
319 4c9649a9 j_mayer
void OPPROTO op_xor (void)
320 4c9649a9 j_mayer
{
321 4c9649a9 j_mayer
    T0 ^= T1;
322 4c9649a9 j_mayer
    RETURN();
323 4c9649a9 j_mayer
}
324 4c9649a9 j_mayer
325 4c9649a9 j_mayer
void OPPROTO op_sll (void)
326 4c9649a9 j_mayer
{
327 4c9649a9 j_mayer
    T0 <<= T1;
328 4c9649a9 j_mayer
    RETURN();
329 4c9649a9 j_mayer
}
330 4c9649a9 j_mayer
331 4c9649a9 j_mayer
void OPPROTO op_srl (void)
332 4c9649a9 j_mayer
{
333 4c9649a9 j_mayer
    T0 >>= T1;
334 4c9649a9 j_mayer
    RETURN();
335 4c9649a9 j_mayer
}
336 4c9649a9 j_mayer
337 4c9649a9 j_mayer
void OPPROTO op_sra (void)
338 4c9649a9 j_mayer
{
339 4c9649a9 j_mayer
    T0 = (int64_t)T0 >> T1;
340 4c9649a9 j_mayer
    RETURN();
341 4c9649a9 j_mayer
}
342 4c9649a9 j_mayer
343 4c9649a9 j_mayer
void OPPROTO op_sextb (void)
344 4c9649a9 j_mayer
{
345 4c9649a9 j_mayer
    T0 = (int64_t)((int8_t)T0);
346 4c9649a9 j_mayer
    RETURN();
347 4c9649a9 j_mayer
}
348 4c9649a9 j_mayer
349 4c9649a9 j_mayer
void OPPROTO op_sextw (void)
350 4c9649a9 j_mayer
{
351 4c9649a9 j_mayer
    T0 = (int64_t)((int16_t)T0);
352 4c9649a9 j_mayer
    RETURN();
353 4c9649a9 j_mayer
354 4c9649a9 j_mayer
}
355 4c9649a9 j_mayer
356 4c9649a9 j_mayer
void OPPROTO op_ctpop (void)
357 4c9649a9 j_mayer
{
358 4c9649a9 j_mayer
    helper_ctpop();
359 4c9649a9 j_mayer
    RETURN();
360 4c9649a9 j_mayer
}
361 4c9649a9 j_mayer
362 4c9649a9 j_mayer
void OPPROTO op_ctlz (void)
363 4c9649a9 j_mayer
{
364 4c9649a9 j_mayer
    helper_ctlz();
365 4c9649a9 j_mayer
    RETURN();
366 4c9649a9 j_mayer
}
367 4c9649a9 j_mayer
368 4c9649a9 j_mayer
void OPPROTO op_cttz (void)
369 4c9649a9 j_mayer
{
370 4c9649a9 j_mayer
    helper_cttz();
371 4c9649a9 j_mayer
    RETURN();
372 4c9649a9 j_mayer
}
373 4c9649a9 j_mayer
374 4c9649a9 j_mayer
void OPPROTO op_mskbl (void)
375 4c9649a9 j_mayer
{
376 4c9649a9 j_mayer
    helper_mskbl();
377 4c9649a9 j_mayer
    RETURN();
378 4c9649a9 j_mayer
}
379 4c9649a9 j_mayer
380 4c9649a9 j_mayer
void OPPROTO op_extbl (void)
381 4c9649a9 j_mayer
{
382 4c9649a9 j_mayer
    helper_extbl();
383 4c9649a9 j_mayer
    RETURN();
384 4c9649a9 j_mayer
}
385 4c9649a9 j_mayer
386 4c9649a9 j_mayer
void OPPROTO op_insbl (void)
387 4c9649a9 j_mayer
{
388 4c9649a9 j_mayer
    helper_insbl();
389 4c9649a9 j_mayer
    RETURN();
390 4c9649a9 j_mayer
}
391 4c9649a9 j_mayer
392 4c9649a9 j_mayer
void OPPROTO op_mskwl (void)
393 4c9649a9 j_mayer
{
394 4c9649a9 j_mayer
    helper_mskwl();
395 4c9649a9 j_mayer
    RETURN();
396 4c9649a9 j_mayer
}
397 4c9649a9 j_mayer
398 4c9649a9 j_mayer
void OPPROTO op_extwl (void)
399 4c9649a9 j_mayer
{
400 4c9649a9 j_mayer
    helper_extwl();
401 4c9649a9 j_mayer
    RETURN();
402 4c9649a9 j_mayer
}
403 4c9649a9 j_mayer
404 4c9649a9 j_mayer
void OPPROTO op_inswl (void)
405 4c9649a9 j_mayer
{
406 4c9649a9 j_mayer
    helper_inswl();
407 4c9649a9 j_mayer
    RETURN();
408 4c9649a9 j_mayer
}
409 4c9649a9 j_mayer
410 4c9649a9 j_mayer
void OPPROTO op_mskll (void)
411 4c9649a9 j_mayer
{
412 4c9649a9 j_mayer
    helper_mskll();
413 4c9649a9 j_mayer
    RETURN();
414 4c9649a9 j_mayer
}
415 4c9649a9 j_mayer
416 4c9649a9 j_mayer
void OPPROTO op_extll (void)
417 4c9649a9 j_mayer
{
418 4c9649a9 j_mayer
    helper_extll();
419 4c9649a9 j_mayer
    RETURN();
420 4c9649a9 j_mayer
}
421 4c9649a9 j_mayer
422 4c9649a9 j_mayer
void OPPROTO op_insll (void)
423 4c9649a9 j_mayer
{
424 4c9649a9 j_mayer
    helper_insll();
425 4c9649a9 j_mayer
    RETURN();
426 4c9649a9 j_mayer
}
427 4c9649a9 j_mayer
428 4c9649a9 j_mayer
void OPPROTO op_zap (void)
429 4c9649a9 j_mayer
{
430 4c9649a9 j_mayer
    helper_zap();
431 4c9649a9 j_mayer
    RETURN();
432 4c9649a9 j_mayer
}
433 4c9649a9 j_mayer
434 4c9649a9 j_mayer
void OPPROTO op_zapnot (void)
435 4c9649a9 j_mayer
{
436 4c9649a9 j_mayer
    helper_zapnot();
437 4c9649a9 j_mayer
    RETURN();
438 4c9649a9 j_mayer
}
439 4c9649a9 j_mayer
440 4c9649a9 j_mayer
void OPPROTO op_mskql (void)
441 4c9649a9 j_mayer
{
442 4c9649a9 j_mayer
    helper_mskql();
443 4c9649a9 j_mayer
    RETURN();
444 4c9649a9 j_mayer
}
445 4c9649a9 j_mayer
446 4c9649a9 j_mayer
void OPPROTO op_extql (void)
447 4c9649a9 j_mayer
{
448 4c9649a9 j_mayer
    helper_extql();
449 4c9649a9 j_mayer
    RETURN();
450 4c9649a9 j_mayer
}
451 4c9649a9 j_mayer
452 4c9649a9 j_mayer
void OPPROTO op_insql (void)
453 4c9649a9 j_mayer
{
454 4c9649a9 j_mayer
    helper_insql();
455 4c9649a9 j_mayer
    RETURN();
456 4c9649a9 j_mayer
}
457 4c9649a9 j_mayer
458 4c9649a9 j_mayer
void OPPROTO op_mskwh (void)
459 4c9649a9 j_mayer
{
460 4c9649a9 j_mayer
    helper_mskwh();
461 4c9649a9 j_mayer
    RETURN();
462 4c9649a9 j_mayer
}
463 4c9649a9 j_mayer
464 4c9649a9 j_mayer
void OPPROTO op_inswh (void)
465 4c9649a9 j_mayer
{
466 4c9649a9 j_mayer
    helper_inswh();
467 4c9649a9 j_mayer
    RETURN();
468 4c9649a9 j_mayer
}
469 4c9649a9 j_mayer
470 4c9649a9 j_mayer
void OPPROTO op_extwh (void)
471 4c9649a9 j_mayer
{
472 4c9649a9 j_mayer
    helper_extwh();
473 4c9649a9 j_mayer
    RETURN();
474 4c9649a9 j_mayer
}
475 4c9649a9 j_mayer
476 4c9649a9 j_mayer
void OPPROTO op_msklh (void)
477 4c9649a9 j_mayer
{
478 4c9649a9 j_mayer
    helper_msklh();
479 4c9649a9 j_mayer
    RETURN();
480 4c9649a9 j_mayer
}
481 4c9649a9 j_mayer
482 4c9649a9 j_mayer
void OPPROTO op_inslh (void)
483 4c9649a9 j_mayer
{
484 4c9649a9 j_mayer
    helper_inslh();
485 4c9649a9 j_mayer
    RETURN();
486 4c9649a9 j_mayer
}
487 4c9649a9 j_mayer
488 4c9649a9 j_mayer
void OPPROTO op_extlh (void)
489 4c9649a9 j_mayer
{
490 4c9649a9 j_mayer
    helper_extlh();
491 4c9649a9 j_mayer
    RETURN();
492 4c9649a9 j_mayer
}
493 4c9649a9 j_mayer
494 4c9649a9 j_mayer
void OPPROTO op_mskqh (void)
495 4c9649a9 j_mayer
{
496 4c9649a9 j_mayer
    helper_mskqh();
497 4c9649a9 j_mayer
    RETURN();
498 4c9649a9 j_mayer
}
499 4c9649a9 j_mayer
500 4c9649a9 j_mayer
void OPPROTO op_insqh (void)
501 4c9649a9 j_mayer
{
502 4c9649a9 j_mayer
    helper_insqh();
503 4c9649a9 j_mayer
    RETURN();
504 4c9649a9 j_mayer
}
505 4c9649a9 j_mayer
506 4c9649a9 j_mayer
void OPPROTO op_extqh (void)
507 4c9649a9 j_mayer
{
508 4c9649a9 j_mayer
    helper_extqh();
509 4c9649a9 j_mayer
    RETURN();
510 4c9649a9 j_mayer
}
511 4c9649a9 j_mayer
512 4c9649a9 j_mayer
/* Tests */
513 4c9649a9 j_mayer
void OPPROTO op_cmpult (void)
514 4c9649a9 j_mayer
{
515 4c9649a9 j_mayer
    if (T0 < T1)
516 4c9649a9 j_mayer
        T0 = 1;
517 4c9649a9 j_mayer
    else
518 4c9649a9 j_mayer
        T0 = 0;
519 4c9649a9 j_mayer
    RETURN();
520 4c9649a9 j_mayer
}
521 4c9649a9 j_mayer
522 4c9649a9 j_mayer
void OPPROTO op_cmpule (void)
523 4c9649a9 j_mayer
{
524 4c9649a9 j_mayer
    if (T0 <= T1)
525 4c9649a9 j_mayer
        T0 = 1;
526 4c9649a9 j_mayer
    else
527 4c9649a9 j_mayer
        T0 = 0;
528 4c9649a9 j_mayer
    RETURN();
529 4c9649a9 j_mayer
}
530 4c9649a9 j_mayer
531 4c9649a9 j_mayer
void OPPROTO op_cmpeq (void)
532 4c9649a9 j_mayer
{
533 4c9649a9 j_mayer
    if (T0 == T1)
534 4c9649a9 j_mayer
        T0 = 1;
535 4c9649a9 j_mayer
    else
536 4c9649a9 j_mayer
        T0 = 0;
537 4c9649a9 j_mayer
    RETURN();
538 4c9649a9 j_mayer
}
539 4c9649a9 j_mayer
540 4c9649a9 j_mayer
void OPPROTO op_cmplt (void)
541 4c9649a9 j_mayer
{
542 4c9649a9 j_mayer
    if ((int64_t)T0 < (int64_t)T1)
543 4c9649a9 j_mayer
        T0 = 1;
544 4c9649a9 j_mayer
    else
545 4c9649a9 j_mayer
        T0 = 0;
546 4c9649a9 j_mayer
    RETURN();
547 4c9649a9 j_mayer
}
548 4c9649a9 j_mayer
549 4c9649a9 j_mayer
void OPPROTO op_cmple (void)
550 4c9649a9 j_mayer
{
551 4c9649a9 j_mayer
    if ((int64_t)T0 <= (int64_t)T1)
552 4c9649a9 j_mayer
        T0 = 1;
553 4c9649a9 j_mayer
    else
554 4c9649a9 j_mayer
        T0 = 0;
555 4c9649a9 j_mayer
    RETURN();
556 4c9649a9 j_mayer
}
557 4c9649a9 j_mayer
558 4c9649a9 j_mayer
void OPPROTO op_cmpbge (void)
559 4c9649a9 j_mayer
{
560 4c9649a9 j_mayer
    helper_cmpbge();
561 4c9649a9 j_mayer
    RETURN();
562 4c9649a9 j_mayer
}
563 4c9649a9 j_mayer
564 4c9649a9 j_mayer
void OPPROTO op_cmpeqz (void)
565 4c9649a9 j_mayer
{
566 4c9649a9 j_mayer
    if (T0 == 0)
567 4c9649a9 j_mayer
        T0 = 1;
568 4c9649a9 j_mayer
    else
569 4c9649a9 j_mayer
        T0 = 0;
570 4c9649a9 j_mayer
    RETURN();
571 4c9649a9 j_mayer
}
572 4c9649a9 j_mayer
573 4c9649a9 j_mayer
void OPPROTO op_cmpnez (void)
574 4c9649a9 j_mayer
{
575 4c9649a9 j_mayer
    if (T0 != 0)
576 4c9649a9 j_mayer
        T0 = 1;
577 4c9649a9 j_mayer
    else
578 4c9649a9 j_mayer
        T0 = 0;
579 4c9649a9 j_mayer
    RETURN();
580 4c9649a9 j_mayer
}
581 4c9649a9 j_mayer
582 4c9649a9 j_mayer
void OPPROTO op_cmpltz (void)
583 4c9649a9 j_mayer
{
584 4c9649a9 j_mayer
    if ((int64_t)T0 < 0)
585 4c9649a9 j_mayer
        T0 = 1;
586 4c9649a9 j_mayer
    else
587 4c9649a9 j_mayer
        T0 = 0;
588 4c9649a9 j_mayer
    RETURN();
589 4c9649a9 j_mayer
}
590 4c9649a9 j_mayer
591 4c9649a9 j_mayer
void OPPROTO op_cmplez (void)
592 4c9649a9 j_mayer
{
593 4c9649a9 j_mayer
    if ((int64_t)T0 <= 0)
594 4c9649a9 j_mayer
        T0 = 1;
595 4c9649a9 j_mayer
    else
596 4c9649a9 j_mayer
        T0 = 0;
597 4c9649a9 j_mayer
    RETURN();
598 4c9649a9 j_mayer
}
599 4c9649a9 j_mayer
600 4c9649a9 j_mayer
void OPPROTO op_cmpgtz (void)
601 4c9649a9 j_mayer
{
602 4c9649a9 j_mayer
    if ((int64_t)T0 > 0)
603 4c9649a9 j_mayer
        T0 = 1;
604 4c9649a9 j_mayer
    else
605 4c9649a9 j_mayer
        T0 = 0;
606 4c9649a9 j_mayer
    RETURN();
607 4c9649a9 j_mayer
}
608 4c9649a9 j_mayer
609 4c9649a9 j_mayer
void OPPROTO op_cmpgez (void)
610 4c9649a9 j_mayer
{
611 4c9649a9 j_mayer
    if ((int64_t)T0 >= 0)
612 4c9649a9 j_mayer
        T0 = 1;
613 4c9649a9 j_mayer
    else
614 4c9649a9 j_mayer
        T0 = 0;
615 4c9649a9 j_mayer
    RETURN();
616 4c9649a9 j_mayer
}
617 4c9649a9 j_mayer
618 4c9649a9 j_mayer
void OPPROTO op_cmplbs (void)
619 4c9649a9 j_mayer
{
620 4c9649a9 j_mayer
    T0 &= 1;
621 4c9649a9 j_mayer
    RETURN();
622 4c9649a9 j_mayer
}
623 4c9649a9 j_mayer
624 4c9649a9 j_mayer
void OPPROTO op_cmplbc (void)
625 4c9649a9 j_mayer
{
626 4c9649a9 j_mayer
    T0 = (~T0) & 1;
627 4c9649a9 j_mayer
    RETURN();
628 4c9649a9 j_mayer
}
629 4c9649a9 j_mayer
630 4c9649a9 j_mayer
#if 0 // Qemu does not know how to do this...
631 4c9649a9 j_mayer
void OPPROTO op_bcond (void)
632 4c9649a9 j_mayer
{
633 4c9649a9 j_mayer
    if (T0)
634 4c9649a9 j_mayer
        env->pc = T1 & ~3;
635 4c9649a9 j_mayer
    else
636 4c9649a9 j_mayer
        env->pc = PARAM(1);
637 4c9649a9 j_mayer
    RETURN();
638 4c9649a9 j_mayer
}
639 4c9649a9 j_mayer
#else
640 4c9649a9 j_mayer
void OPPROTO op_bcond (void)
641 4c9649a9 j_mayer
{
642 4c9649a9 j_mayer
    if (T0)
643 4c9649a9 j_mayer
        env->pc = T1 & ~3;
644 4c9649a9 j_mayer
    else
645 4c9649a9 j_mayer
        env->pc = ((uint64_t)PARAM(1) << 32) | (uint64_t)PARAM(2);
646 4c9649a9 j_mayer
    RETURN();
647 4c9649a9 j_mayer
}
648 4c9649a9 j_mayer
#endif
649 4c9649a9 j_mayer
650 4c9649a9 j_mayer
/* IEEE floating point arithmetic */
651 4c9649a9 j_mayer
/* S floating (single) */
652 4c9649a9 j_mayer
void OPPROTO op_adds (void)
653 4c9649a9 j_mayer
{
654 4c9649a9 j_mayer
    FT0 = float32_add(FT0, FT1, &FP_STATUS);
655 4c9649a9 j_mayer
    RETURN();
656 4c9649a9 j_mayer
}
657 4c9649a9 j_mayer
658 4c9649a9 j_mayer
void OPPROTO op_subs (void)
659 4c9649a9 j_mayer
{
660 4c9649a9 j_mayer
    FT0 = float32_sub(FT0, FT1, &FP_STATUS);
661 4c9649a9 j_mayer
    RETURN();
662 4c9649a9 j_mayer
}
663 4c9649a9 j_mayer
664 4c9649a9 j_mayer
void OPPROTO op_muls (void)
665 4c9649a9 j_mayer
{
666 4c9649a9 j_mayer
    FT0 = float32_mul(FT0, FT1, &FP_STATUS);
667 4c9649a9 j_mayer
    RETURN();
668 4c9649a9 j_mayer
}
669 4c9649a9 j_mayer
670 4c9649a9 j_mayer
void OPPROTO op_divs (void)
671 4c9649a9 j_mayer
{
672 4c9649a9 j_mayer
    FT0 = float32_div(FT0, FT1, &FP_STATUS);
673 4c9649a9 j_mayer
    RETURN();
674 4c9649a9 j_mayer
}
675 4c9649a9 j_mayer
676 4c9649a9 j_mayer
void OPPROTO op_sqrts (void)
677 4c9649a9 j_mayer
{
678 4c9649a9 j_mayer
    helper_sqrts();
679 4c9649a9 j_mayer
    RETURN();
680 4c9649a9 j_mayer
}
681 4c9649a9 j_mayer
682 4c9649a9 j_mayer
void OPPROTO op_cpys (void)
683 4c9649a9 j_mayer
{
684 4c9649a9 j_mayer
    helper_cpys();
685 4c9649a9 j_mayer
    RETURN();
686 4c9649a9 j_mayer
}
687 4c9649a9 j_mayer
688 4c9649a9 j_mayer
void OPPROTO op_cpysn (void)
689 4c9649a9 j_mayer
{
690 4c9649a9 j_mayer
    helper_cpysn();
691 4c9649a9 j_mayer
    RETURN();
692 4c9649a9 j_mayer
}
693 4c9649a9 j_mayer
694 4c9649a9 j_mayer
void OPPROTO op_cpyse (void)
695 4c9649a9 j_mayer
{
696 4c9649a9 j_mayer
    helper_cpyse();
697 4c9649a9 j_mayer
    RETURN();
698 4c9649a9 j_mayer
}
699 4c9649a9 j_mayer
700 4c9649a9 j_mayer
void OPPROTO op_itofs (void)
701 4c9649a9 j_mayer
{
702 4c9649a9 j_mayer
    helper_itofs();
703 4c9649a9 j_mayer
    RETURN();
704 4c9649a9 j_mayer
}
705 4c9649a9 j_mayer
706 4c9649a9 j_mayer
void OPPROTO op_ftois (void)
707 4c9649a9 j_mayer
{
708 4c9649a9 j_mayer
    helper_ftois();
709 4c9649a9 j_mayer
    RETURN();
710 4c9649a9 j_mayer
}
711 4c9649a9 j_mayer
712 4c9649a9 j_mayer
/* T floating (double) */
713 4c9649a9 j_mayer
void OPPROTO op_addt (void)
714 4c9649a9 j_mayer
{
715 4c9649a9 j_mayer
    FT0 = float64_add(FT0, FT1, &FP_STATUS);
716 4c9649a9 j_mayer
    RETURN();
717 4c9649a9 j_mayer
}
718 4c9649a9 j_mayer
719 4c9649a9 j_mayer
void OPPROTO op_subt (void)
720 4c9649a9 j_mayer
{
721 4c9649a9 j_mayer
    FT0 = float64_sub(FT0, FT1, &FP_STATUS);
722 4c9649a9 j_mayer
    RETURN();
723 4c9649a9 j_mayer
}
724 4c9649a9 j_mayer
725 4c9649a9 j_mayer
void OPPROTO op_mult (void)
726 4c9649a9 j_mayer
{
727 4c9649a9 j_mayer
    FT0 = float64_mul(FT0, FT1, &FP_STATUS);
728 4c9649a9 j_mayer
    RETURN();
729 4c9649a9 j_mayer
}
730 4c9649a9 j_mayer
731 4c9649a9 j_mayer
void OPPROTO op_divt (void)
732 4c9649a9 j_mayer
{
733 4c9649a9 j_mayer
    FT0 = float64_div(FT0, FT1, &FP_STATUS);
734 4c9649a9 j_mayer
    RETURN();
735 4c9649a9 j_mayer
}
736 4c9649a9 j_mayer
737 4c9649a9 j_mayer
void OPPROTO op_sqrtt (void)
738 4c9649a9 j_mayer
{
739 4c9649a9 j_mayer
    helper_sqrtt();
740 4c9649a9 j_mayer
    RETURN();
741 4c9649a9 j_mayer
}
742 4c9649a9 j_mayer
743 4c9649a9 j_mayer
void OPPROTO op_cmptun (void)
744 4c9649a9 j_mayer
{
745 4c9649a9 j_mayer
    helper_cmptun();
746 4c9649a9 j_mayer
    RETURN();
747 4c9649a9 j_mayer
}
748 4c9649a9 j_mayer
749 4c9649a9 j_mayer
void OPPROTO op_cmpteq (void)
750 4c9649a9 j_mayer
{
751 4c9649a9 j_mayer
    helper_cmpteq();
752 4c9649a9 j_mayer
    RETURN();
753 4c9649a9 j_mayer
}
754 4c9649a9 j_mayer
755 4c9649a9 j_mayer
void OPPROTO op_cmptle (void)
756 4c9649a9 j_mayer
{
757 4c9649a9 j_mayer
    helper_cmptle();
758 4c9649a9 j_mayer
    RETURN();
759 4c9649a9 j_mayer
}
760 4c9649a9 j_mayer
761 4c9649a9 j_mayer
void OPPROTO op_cmptlt (void)
762 4c9649a9 j_mayer
{
763 4c9649a9 j_mayer
    helper_cmptlt();
764 4c9649a9 j_mayer
    RETURN();
765 4c9649a9 j_mayer
}
766 4c9649a9 j_mayer
767 4c9649a9 j_mayer
void OPPROTO op_itoft (void)
768 4c9649a9 j_mayer
{
769 4c9649a9 j_mayer
    helper_itoft();
770 4c9649a9 j_mayer
    RETURN();
771 4c9649a9 j_mayer
}
772 4c9649a9 j_mayer
773 4c9649a9 j_mayer
void OPPROTO op_ftoit (void)
774 4c9649a9 j_mayer
{
775 4c9649a9 j_mayer
    helper_ftoit();
776 4c9649a9 j_mayer
    RETURN();
777 4c9649a9 j_mayer
}
778 4c9649a9 j_mayer
779 4c9649a9 j_mayer
/* VAX floating point arithmetic */
780 4c9649a9 j_mayer
/* F floating */
781 4c9649a9 j_mayer
void OPPROTO op_addf (void)
782 4c9649a9 j_mayer
{
783 4c9649a9 j_mayer
    helper_addf();
784 4c9649a9 j_mayer
    RETURN();
785 4c9649a9 j_mayer
}
786 4c9649a9 j_mayer
787 4c9649a9 j_mayer
void OPPROTO op_subf (void)
788 4c9649a9 j_mayer
{
789 4c9649a9 j_mayer
    helper_subf();
790 4c9649a9 j_mayer
    RETURN();
791 4c9649a9 j_mayer
}
792 4c9649a9 j_mayer
793 4c9649a9 j_mayer
void OPPROTO op_mulf (void)
794 4c9649a9 j_mayer
{
795 4c9649a9 j_mayer
    helper_mulf();
796 4c9649a9 j_mayer
    RETURN();
797 4c9649a9 j_mayer
}
798 4c9649a9 j_mayer
799 4c9649a9 j_mayer
void OPPROTO op_divf (void)
800 4c9649a9 j_mayer
{
801 4c9649a9 j_mayer
    helper_divf();
802 4c9649a9 j_mayer
    RETURN();
803 4c9649a9 j_mayer
}
804 4c9649a9 j_mayer
805 4c9649a9 j_mayer
void OPPROTO op_sqrtf (void)
806 4c9649a9 j_mayer
{
807 4c9649a9 j_mayer
    helper_sqrtf();
808 4c9649a9 j_mayer
    RETURN();
809 4c9649a9 j_mayer
}
810 4c9649a9 j_mayer
811 4c9649a9 j_mayer
void OPPROTO op_cmpfeq (void)
812 4c9649a9 j_mayer
{
813 4c9649a9 j_mayer
    helper_cmpfeq();
814 4c9649a9 j_mayer
    RETURN();
815 4c9649a9 j_mayer
}
816 4c9649a9 j_mayer
817 4c9649a9 j_mayer
void OPPROTO op_cmpfne (void)
818 4c9649a9 j_mayer
{
819 4c9649a9 j_mayer
    helper_cmpfne();
820 4c9649a9 j_mayer
    RETURN();
821 4c9649a9 j_mayer
}
822 4c9649a9 j_mayer
823 4c9649a9 j_mayer
void OPPROTO op_cmpflt (void)
824 4c9649a9 j_mayer
{
825 4c9649a9 j_mayer
    helper_cmpflt();
826 4c9649a9 j_mayer
    RETURN();
827 4c9649a9 j_mayer
}
828 4c9649a9 j_mayer
829 4c9649a9 j_mayer
void OPPROTO op_cmpfle (void)
830 4c9649a9 j_mayer
{
831 4c9649a9 j_mayer
    helper_cmpfle();
832 4c9649a9 j_mayer
    RETURN();
833 4c9649a9 j_mayer
}
834 4c9649a9 j_mayer
835 4c9649a9 j_mayer
void OPPROTO op_cmpfgt (void)
836 4c9649a9 j_mayer
{
837 4c9649a9 j_mayer
    helper_cmpfgt();
838 4c9649a9 j_mayer
    RETURN();
839 4c9649a9 j_mayer
}
840 4c9649a9 j_mayer
841 4c9649a9 j_mayer
void OPPROTO op_cmpfge (void)
842 4c9649a9 j_mayer
{
843 4c9649a9 j_mayer
    helper_cmpfge();
844 4c9649a9 j_mayer
    RETURN();
845 4c9649a9 j_mayer
}
846 4c9649a9 j_mayer
847 4c9649a9 j_mayer
void OPPROTO op_itoff (void)
848 4c9649a9 j_mayer
{
849 4c9649a9 j_mayer
    helper_itoff();
850 4c9649a9 j_mayer
    RETURN();
851 4c9649a9 j_mayer
}
852 4c9649a9 j_mayer
853 4c9649a9 j_mayer
/* G floating */
854 4c9649a9 j_mayer
void OPPROTO op_addg (void)
855 4c9649a9 j_mayer
{
856 4c9649a9 j_mayer
    helper_addg();
857 4c9649a9 j_mayer
    RETURN();
858 4c9649a9 j_mayer
}
859 4c9649a9 j_mayer
860 4c9649a9 j_mayer
void OPPROTO op_subg (void)
861 4c9649a9 j_mayer
{
862 4c9649a9 j_mayer
    helper_subg();
863 4c9649a9 j_mayer
    RETURN();
864 4c9649a9 j_mayer
}
865 4c9649a9 j_mayer
866 4c9649a9 j_mayer
void OPPROTO op_mulg (void)
867 4c9649a9 j_mayer
{
868 4c9649a9 j_mayer
    helper_mulg();
869 4c9649a9 j_mayer
    RETURN();
870 4c9649a9 j_mayer
}
871 4c9649a9 j_mayer
872 4c9649a9 j_mayer
void OPPROTO op_divg (void)
873 4c9649a9 j_mayer
{
874 4c9649a9 j_mayer
    helper_divg();
875 4c9649a9 j_mayer
    RETURN();
876 4c9649a9 j_mayer
}
877 4c9649a9 j_mayer
878 4c9649a9 j_mayer
void OPPROTO op_sqrtg (void)
879 4c9649a9 j_mayer
{
880 4c9649a9 j_mayer
    helper_sqrtg();
881 4c9649a9 j_mayer
    RETURN();
882 4c9649a9 j_mayer
}
883 4c9649a9 j_mayer
884 4c9649a9 j_mayer
void OPPROTO op_cmpgeq (void)
885 4c9649a9 j_mayer
{
886 4c9649a9 j_mayer
    helper_cmpgeq();
887 4c9649a9 j_mayer
    RETURN();
888 4c9649a9 j_mayer
}
889 4c9649a9 j_mayer
890 4c9649a9 j_mayer
void OPPROTO op_cmpglt (void)
891 4c9649a9 j_mayer
{
892 4c9649a9 j_mayer
    helper_cmpglt();
893 4c9649a9 j_mayer
    RETURN();
894 4c9649a9 j_mayer
}
895 4c9649a9 j_mayer
896 4c9649a9 j_mayer
void OPPROTO op_cmpgle (void)
897 4c9649a9 j_mayer
{
898 4c9649a9 j_mayer
    helper_cmpgle();
899 4c9649a9 j_mayer
    RETURN();
900 4c9649a9 j_mayer
}
901 4c9649a9 j_mayer
902 4c9649a9 j_mayer
/* Floating point format conversion */
903 4c9649a9 j_mayer
void OPPROTO op_cvtst (void)
904 4c9649a9 j_mayer
{
905 4c9649a9 j_mayer
    FT0 = (float)FT0;
906 4c9649a9 j_mayer
    RETURN();
907 4c9649a9 j_mayer
}
908 4c9649a9 j_mayer
909 4c9649a9 j_mayer
void OPPROTO op_cvtqs (void)
910 4c9649a9 j_mayer
{
911 4c9649a9 j_mayer
    helper_cvtqs();
912 4c9649a9 j_mayer
    RETURN();
913 4c9649a9 j_mayer
}
914 4c9649a9 j_mayer
915 4c9649a9 j_mayer
void OPPROTO op_cvtts (void)
916 4c9649a9 j_mayer
{
917 4c9649a9 j_mayer
    FT0 = (float)FT0;
918 4c9649a9 j_mayer
    RETURN();
919 4c9649a9 j_mayer
}
920 4c9649a9 j_mayer
921 4c9649a9 j_mayer
void OPPROTO op_cvttq (void)
922 4c9649a9 j_mayer
{
923 4c9649a9 j_mayer
    helper_cvttq();
924 4c9649a9 j_mayer
    RETURN();
925 4c9649a9 j_mayer
}
926 4c9649a9 j_mayer
927 4c9649a9 j_mayer
void OPPROTO op_cvtqt (void)
928 4c9649a9 j_mayer
{
929 4c9649a9 j_mayer
    helper_cvtqt();
930 4c9649a9 j_mayer
    RETURN();
931 4c9649a9 j_mayer
}
932 4c9649a9 j_mayer
933 4c9649a9 j_mayer
void OPPROTO op_cvtqf (void)
934 4c9649a9 j_mayer
{
935 4c9649a9 j_mayer
    helper_cvtqf();
936 4c9649a9 j_mayer
    RETURN();
937 4c9649a9 j_mayer
}
938 4c9649a9 j_mayer
939 4c9649a9 j_mayer
void OPPROTO op_cvtgf (void)
940 4c9649a9 j_mayer
{
941 4c9649a9 j_mayer
    helper_cvtgf();
942 4c9649a9 j_mayer
    RETURN();
943 4c9649a9 j_mayer
}
944 4c9649a9 j_mayer
945 4c9649a9 j_mayer
void OPPROTO op_cvtgd (void)
946 4c9649a9 j_mayer
{
947 4c9649a9 j_mayer
    helper_cvtgd();
948 4c9649a9 j_mayer
    RETURN();
949 4c9649a9 j_mayer
}
950 4c9649a9 j_mayer
951 4c9649a9 j_mayer
void OPPROTO op_cvtgq (void)
952 4c9649a9 j_mayer
{
953 4c9649a9 j_mayer
    helper_cvtgq();
954 4c9649a9 j_mayer
    RETURN();
955 4c9649a9 j_mayer
}
956 4c9649a9 j_mayer
957 4c9649a9 j_mayer
void OPPROTO op_cvtqg (void)
958 4c9649a9 j_mayer
{
959 4c9649a9 j_mayer
    helper_cvtqg();
960 4c9649a9 j_mayer
    RETURN();
961 4c9649a9 j_mayer
}
962 4c9649a9 j_mayer
963 4c9649a9 j_mayer
void OPPROTO op_cvtdg (void)
964 4c9649a9 j_mayer
{
965 4c9649a9 j_mayer
    helper_cvtdg();
966 4c9649a9 j_mayer
    RETURN();
967 4c9649a9 j_mayer
}
968 4c9649a9 j_mayer
969 4c9649a9 j_mayer
void OPPROTO op_cvtlq (void)
970 4c9649a9 j_mayer
{
971 4c9649a9 j_mayer
    helper_cvtlq();
972 4c9649a9 j_mayer
    RETURN();
973 4c9649a9 j_mayer
}
974 4c9649a9 j_mayer
975 4c9649a9 j_mayer
void OPPROTO op_cvtql (void)
976 4c9649a9 j_mayer
{
977 4c9649a9 j_mayer
    helper_cvtql();
978 4c9649a9 j_mayer
    RETURN();
979 4c9649a9 j_mayer
}
980 4c9649a9 j_mayer
981 4c9649a9 j_mayer
void OPPROTO op_cvtqlv (void)
982 4c9649a9 j_mayer
{
983 4c9649a9 j_mayer
    helper_cvtqlv();
984 4c9649a9 j_mayer
    RETURN();
985 4c9649a9 j_mayer
}
986 4c9649a9 j_mayer
987 4c9649a9 j_mayer
void OPPROTO op_cvtqlsv (void)
988 4c9649a9 j_mayer
{
989 4c9649a9 j_mayer
    helper_cvtqlsv();
990 4c9649a9 j_mayer
    RETURN();
991 4c9649a9 j_mayer
}
992 4c9649a9 j_mayer
993 4c9649a9 j_mayer
/* PALcode support special instructions */
994 4c9649a9 j_mayer
#if !defined (CONFIG_USER_ONLY)
995 4c9649a9 j_mayer
void OPPROTO op_hw_rei (void)
996 4c9649a9 j_mayer
{
997 4c9649a9 j_mayer
    env->pc = env->ipr[IPR_EXC_ADDR] & ~3;
998 4c9649a9 j_mayer
    env->ipr[IPR_EXC_ADDR] = env->ipr[IPR_EXC_ADDR] & 1;
999 4c9649a9 j_mayer
    /* XXX: re-enable interrupts and memory mapping */
1000 4c9649a9 j_mayer
    RETURN();
1001 4c9649a9 j_mayer
}
1002 4c9649a9 j_mayer
1003 4c9649a9 j_mayer
void OPPROTO op_hw_ret (void)
1004 4c9649a9 j_mayer
{
1005 4c9649a9 j_mayer
    env->pc = T0 & ~3;
1006 4c9649a9 j_mayer
    env->ipr[IPR_EXC_ADDR] = T0 & 1;
1007 4c9649a9 j_mayer
    /* XXX: re-enable interrupts and memory mapping */
1008 4c9649a9 j_mayer
    RETURN();
1009 4c9649a9 j_mayer
}
1010 4c9649a9 j_mayer
1011 4c9649a9 j_mayer
void OPPROTO op_mfpr (void)
1012 4c9649a9 j_mayer
{
1013 4c9649a9 j_mayer
    helper_mfpr(PARAM(1));
1014 4c9649a9 j_mayer
    RETURN();
1015 4c9649a9 j_mayer
}
1016 4c9649a9 j_mayer
1017 4c9649a9 j_mayer
void OPPROTO op_mtpr (void)
1018 4c9649a9 j_mayer
{
1019 4c9649a9 j_mayer
    helper_mtpr(PARAM(1));
1020 4c9649a9 j_mayer
    RETURN();
1021 4c9649a9 j_mayer
}
1022 4c9649a9 j_mayer
1023 4c9649a9 j_mayer
void OPPROTO op_set_alt_mode (void)
1024 4c9649a9 j_mayer
{
1025 4c9649a9 j_mayer
    env->saved_mode = env->ps & 0xC;
1026 4c9649a9 j_mayer
    env->ps = (env->ps & ~0xC) | (env->ipr[IPR_ALT_MODE] & 0xC);
1027 4c9649a9 j_mayer
    RETURN();
1028 4c9649a9 j_mayer
}
1029 4c9649a9 j_mayer
1030 4c9649a9 j_mayer
void OPPROTO op_restore_mode (void)
1031 4c9649a9 j_mayer
{
1032 4c9649a9 j_mayer
    env->ps = (env->ps & ~0xC) | env->saved_mode;
1033 4c9649a9 j_mayer
    RETURN();
1034 4c9649a9 j_mayer
}
1035 4c9649a9 j_mayer
1036 4c9649a9 j_mayer
void OPPROTO op_ld_phys_to_virt (void)
1037 4c9649a9 j_mayer
{
1038 4c9649a9 j_mayer
    helper_ld_phys_to_virt();
1039 4c9649a9 j_mayer
    RETURN();
1040 4c9649a9 j_mayer
}
1041 4c9649a9 j_mayer
1042 4c9649a9 j_mayer
void OPPROTO op_st_phys_to_virt (void)
1043 4c9649a9 j_mayer
{
1044 4c9649a9 j_mayer
    helper_st_phys_to_virt();
1045 4c9649a9 j_mayer
    RETURN();
1046 4c9649a9 j_mayer
}
1047 4c9649a9 j_mayer
#endif /* !defined (CONFIG_USER_ONLY) */