aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-02-07 12:35:16 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-02-07 12:35:16 +0000
commit832ed0fa340cedb948a63abd472c7ba4bfd911c8 (patch)
tree33313bec4fcc8f239002808fe248b8a4e62435f0
parent78573df6b28bf1419aeb98a8951bde30a0030fba (diff)
ARM FPU endianness fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1265 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--cpu-all.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/cpu-all.h b/cpu-all.h
index 1361cf1be0..86430791d3 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -114,18 +114,19 @@ static inline void tswap64s(uint64_t *s)
#define tswapls(s) tswap64s((uint64_t *)(s))
#endif
-/* NOTE: arm is horrible as double 32 bit words are stored in big endian ! */
+/* NOTE: arm FPA is horrible as double 32 bit words are stored in big
+ endian ! */
typedef union {
double d;
-#if !defined(WORDS_BIGENDIAN) && !defined(__arm__)
+#if defined(WORDS_BIGENDIAN) || (defined(__arm__) && !defined(__VFP_FP__))
struct {
- uint32_t lower;
uint32_t upper;
+ uint32_t lower;
} l;
#else
struct {
- uint32_t upper;
uint32_t lower;
+ uint32_t upper;
} l;
#endif
uint64_t ll;