aboutsummaryrefslogtreecommitdiffstats
path: root/libm/mips
diff options
context:
space:
mode:
authorChris Dearman <chris.dearman@imgtec.com>2014-02-05 18:51:43 -0800
committerElliott Hughes <enh@google.com>2014-02-06 16:22:20 -0800
commit645d0312c2d6b6492cc4b3891bc1a91908dc24b7 (patch)
tree4ec0e5c08e0c5a60dc7f9dfbb65e49aa8c57a138 /libm/mips
parent5036935c41d9193cfbba606df2121cd4c6973116 (diff)
downloadandroid_bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.tar.gz
android_bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.tar.bz2
android_bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.zip
[MIPS64] libc/libm support
libc/libm support for MIPS64 targets Change-Id: I8271941d418612a286be55495f0e95822f90004f Signed-off-by: Chris Dearman <chris.dearman@imgtec.com> Signed-off-by: Raghu Gandham <raghu.gandham@imgtec.com>
Diffstat (limited to 'libm/mips')
-rw-r--r--libm/mips/_fpmath.h35
1 files changed, 31 insertions, 4 deletions
diff --git a/libm/mips/_fpmath.h b/libm/mips/_fpmath.h
index f006a583b..f759639eb 100644
--- a/libm/mips/_fpmath.h
+++ b/libm/mips/_fpmath.h
@@ -30,23 +30,49 @@ union IEEEl2bits {
long double e;
struct {
#ifndef __MIPSEB__
+#if (_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)
+ unsigned long manl :64;
+ unsigned long manh :48;
+ unsigned int exp :15;
+ unsigned int sign :1;
+#else
unsigned int manl :32;
unsigned int manh :20;
unsigned int exp :11;
unsigned int sign :1;
+#endif
+#else
+#if (_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)
+ unsigned int sign :1;
+ unsigned int exp :15;
+ unsigned long manh :48;
+ unsigned long manl :64;
#else
- unsigned int sign :1;
- unsigned int exp :11;
- unsigned int manh :20;
- unsigned int manl :32;
+ unsigned int sign :1;
+ unsigned int exp :11;
+ unsigned int manh :20;
+ unsigned int manl :32;
+#endif
#endif
} bits;
+
};
#define LDBL_NBIT 0
#define mask_nbit_l(u) ((void)0)
#define LDBL_IMPLICIT_NBIT
+#if (_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)
+#define LDBL_MANH_SIZE 48
+#define LDBL_MANL_SIZE 64
+
+#define LDBL_TO_ARRAY32(u, a) do { \
+ (a)[0] = (uint32_t)(u).bits.manl; \
+ (a)[1] = (uint32_t)((u).bits.manl >> 32); \
+ (a)[2] = (uint32_t)(u).bits.manh; \
+ (a)[3] = (uint32_t)((u).bits.manh >> 32); \
+} while(0)
+#else
#define LDBL_MANH_SIZE 20
#define LDBL_MANL_SIZE 32
@@ -54,3 +80,4 @@ union IEEEl2bits {
(a)[0] = (uint32_t)(u).bits.manl; \
(a)[1] = (uint32_t)(u).bits.manh; \
} while(0)
+#endif