Commit 2d603d2216444a0654223fd80f51300f36e52076
1 parent
61190b14
PowerPC support - float macros
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@537 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
52 additions
and
0 deletions
softmmu_header.h
... | ... | @@ -51,12 +51,20 @@ |
51 | 51 | |
52 | 52 | #elif ACCESS_TYPE == 2 |
53 | 53 | |
54 | +#ifdef TARGET_I386 | |
54 | 55 | #define CPU_MEM_INDEX ((env->hflags & HF_CPL_MASK) == 3) |
56 | +#elif defined (TARGET_PPC) | |
57 | +#define CPU_MEM_INDEX (msr_pr) | |
58 | +#endif | |
55 | 59 | #define MMUSUFFIX _mmu |
56 | 60 | |
57 | 61 | #elif ACCESS_TYPE == 3 |
58 | 62 | |
63 | +#ifdef TARGET_I386 | |
59 | 64 | #define CPU_MEM_INDEX ((env->hflags & HF_CPL_MASK) == 3) |
65 | +#elif defined (TARGET_PPC) | |
66 | +#define CPU_MEM_INDEX (msr_pr) | |
67 | +#endif | |
60 | 68 | #define MMUSUFFIX _cmmu |
61 | 69 | |
62 | 70 | #else |
... | ... | @@ -283,6 +291,50 @@ static inline void glue(glue(st, SUFFIX), MEMSUFFIX)(void *ptr, RES_TYPE v) |
283 | 291 | |
284 | 292 | #endif |
285 | 293 | |
294 | +#if DATA_SIZE == 8 | |
295 | +static inline double glue(ldfq, MEMSUFFIX)(void *ptr) | |
296 | +{ | |
297 | + union { | |
298 | + double d; | |
299 | + uint64_t i; | |
300 | + } u; | |
301 | + u.i = glue(ldq, MEMSUFFIX)(ptr); | |
302 | + return u.d; | |
303 | +} | |
304 | + | |
305 | +static inline void glue(stfq, MEMSUFFIX)(void *ptr, double v) | |
306 | +{ | |
307 | + union { | |
308 | + double d; | |
309 | + uint64_t i; | |
310 | + } u; | |
311 | + u.d = v; | |
312 | + glue(stq, MEMSUFFIX)(ptr, u.i); | |
313 | +} | |
314 | +#endif /* DATA_SIZE == 8 */ | |
315 | + | |
316 | +#if DATA_SIZE == 4 | |
317 | +static inline float glue(ldfl, MEMSUFFIX)(void *ptr) | |
318 | +{ | |
319 | + union { | |
320 | + float f; | |
321 | + uint32_t i; | |
322 | + } u; | |
323 | + u.i = glue(ldl, MEMSUFFIX)(ptr); | |
324 | + return u.f; | |
325 | +} | |
326 | + | |
327 | +static inline void glue(stfl, MEMSUFFIX)(void *ptr, float v) | |
328 | +{ | |
329 | + union { | |
330 | + float f; | |
331 | + uint32_t i; | |
332 | + } u; | |
333 | + u.f = v; | |
334 | + glue(stl, MEMSUFFIX)(ptr, u.i); | |
335 | +} | |
336 | +#endif /* DATA_SIZE == 4 */ | |
337 | + | |
286 | 338 | #undef RES_TYPE |
287 | 339 | #undef DATA_TYPE |
288 | 340 | #undef DATA_STYPE | ... | ... |