Statistics
| Branch: | Revision:

root / target-alpha / op.c @ f8ed7070

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