Fix endianness bug for PowerPC stfiwx instruction.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3456 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
j_mayer 2007-10-27 17:18:49 +00:00
parent 05f778c8bd
commit 8378e71f13
1 changed files with 11 additions and 2 deletions

View File

@ -411,17 +411,26 @@ static always_inline void glue(stfs, MEMSUFFIX) (target_ulong EA, double d)
glue(stfl, MEMSUFFIX)(EA, float64_to_float32(d, &env->fp_status));
}
#if defined(WORDS_BIGENDIAN)
#define WORD0 0
#define WORD1 1
#else
#define WORD0 1
#define WORD1 0
#endif
static always_inline void glue(stfiwx, MEMSUFFIX) (target_ulong EA, double d)
{
union {
double d;
uint64_t u;
uint32_t u[2];
} u;
/* Store the low order 32 bits without any conversion */
u.d = d;
glue(stl, MEMSUFFIX)(EA, u.u);
glue(stl, MEMSUFFIX)(EA, u.u[WORD0]);
}
#undef WORD0
#undef WORD1
PPC_STF_OP(fd, stfq);
PPC_STF_OP(fs, stfs);