From: j_mayer Date: Sat, 27 Oct 2007 17:18:49 +0000 (+0000) Subject: Fix endianness bug for PowerPC stfiwx instruction. X-Git-Tag: xen-3.3.0-rc1~903 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8378e71f136a021e795d41ceae64eedadcff291c;p=qemu-xen-3.3-testing.git Fix endianness bug for PowerPC stfiwx instruction. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3456 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/target-ppc/op_mem.h b/target-ppc/op_mem.h index ca48f5de..b1daf848 100644 --- a/target-ppc/op_mem.h +++ b/target-ppc/op_mem.h @@ -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);