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 | ... | ... |