Statistics
| Branch: | Revision:

root / target-alpha / op.c @ 615e2dba

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