diff options
author | Chris Dearman <chris.dearman@imgtec.com> | 2014-02-05 18:51:43 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2014-02-06 16:22:20 -0800 |
commit | 645d0312c2d6b6492cc4b3891bc1a91908dc24b7 (patch) | |
tree | 4ec0e5c08e0c5a60dc7f9dfbb65e49aa8c57a138 /libm/mips | |
parent | 5036935c41d9193cfbba606df2121cd4c6973116 (diff) | |
download | bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.zip bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.tar.gz bionic-645d0312c2d6b6492cc4b3891bc1a91908dc24b7.tar.bz2 |
[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.h | 35 |
1 files changed, 31 insertions, 4 deletions
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 @@ 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 |