Commit 2d603d2216444a0654223fd80f51300f36e52076

Authored by bellard
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
... ...