[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>
diff --git a/libm/Android.mk b/libm/Android.mk
index 64a40e4..d06088b 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -254,6 +254,10 @@
LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/mips
LOCAL_SRC_FILES_mips := mips/fenv.c
+LOCAL_CFLAGS_mips64 := -fno-builtin-rintf -fno-builtin-rint
+LOCAL_C_INCLUDES_mips64 := $(LOCAL_PATH)/mips
+LOCAL_SRC_FILES_mips64 := mips/fenv.c
+
include $(BUILD_STATIC_LIBRARY)
#
diff --git a/libm/mips/_fpmath.h b/libm/mips/_fpmath.h
index f006a58..f759639 100644
--- a/libm/mips/_fpmath.h
+++ b/libm/mips/_fpmath.h
@@ -30,23 +30,49 @@
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
- unsigned int sign :1;
- unsigned int exp :11;
- unsigned int manh :20;
- unsigned int manl :32;
+#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;
+#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 @@
(a)[0] = (uint32_t)(u).bits.manl; \
(a)[1] = (uint32_t)(u).bits.manh; \
} while(0)
+#endif