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,12 +51,20 @@ | ||
| 51 | 51 | ||
| 52 | #elif ACCESS_TYPE == 2 | 52 | #elif ACCESS_TYPE == 2 |
| 53 | 53 | ||
| 54 | +#ifdef TARGET_I386 | ||
| 54 | #define CPU_MEM_INDEX ((env->hflags & HF_CPL_MASK) == 3) | 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 | #define MMUSUFFIX _mmu | 59 | #define MMUSUFFIX _mmu |
| 56 | 60 | ||
| 57 | #elif ACCESS_TYPE == 3 | 61 | #elif ACCESS_TYPE == 3 |
| 58 | 62 | ||
| 63 | +#ifdef TARGET_I386 | ||
| 59 | #define CPU_MEM_INDEX ((env->hflags & HF_CPL_MASK) == 3) | 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 | #define MMUSUFFIX _cmmu | 68 | #define MMUSUFFIX _cmmu |
| 61 | 69 | ||
| 62 | #else | 70 | #else |
| @@ -283,6 +291,50 @@ static inline void glue(glue(st, SUFFIX), MEMSUFFIX)(void *ptr, RES_TYPE v) | @@ -283,6 +291,50 @@ static inline void glue(glue(st, SUFFIX), MEMSUFFIX)(void *ptr, RES_TYPE v) | ||
| 283 | 291 | ||
| 284 | #endif | 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 | #undef RES_TYPE | 338 | #undef RES_TYPE |
| 287 | #undef DATA_TYPE | 339 | #undef DATA_TYPE |
| 288 | #undef DATA_STYPE | 340 | #undef DATA_STYPE |