diff options
author | DJ Delorie <dj@redhat.com> | 2008-06-11 01:17:34 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2008-06-11 01:17:34 +0000 |
commit | 5f5dfcbe1be67ac8e69cbbcc7c99786551d6cbbf (patch) | |
tree | b0a468317c8bb66c8ce38a23aa0efd93c88d60db /libdecnumber/bid | |
parent | 06c74433a779d34858f8cd54473a9076925dc400 (diff) | |
download | gdb-5f5dfcbe1be67ac8e69cbbcc7c99786551d6cbbf.zip gdb-5f5dfcbe1be67ac8e69cbbcc7c99786551d6cbbf.tar.gz gdb-5f5dfcbe1be67ac8e69cbbcc7c99786551d6cbbf.tar.bz2 |
merge from gcc
Diffstat (limited to 'libdecnumber/bid')
-rw-r--r-- | libdecnumber/bid/host-ieee128.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libdecnumber/bid/host-ieee128.c b/libdecnumber/bid/host-ieee128.c index 6d493e5..12632c8 100644 --- a/libdecnumber/bid/host-ieee128.c +++ b/libdecnumber/bid/host-ieee128.c @@ -29,20 +29,35 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include <string.h> +#include "dconfig.h" #include "bid-dpd.h" #include "decimal128.h" void __host_to_ieee_128 (_Decimal128 in, decimal128 *out); void __ieee_to_host_128 (decimal128 in, _Decimal128 *out); +/* The code for converting 128-bit values between DPD and BID presumes + that the 64-bit halves of the 128-bit value are in little-endian + order, so they need swapping on big-endian hosts. */ + void __host_to_ieee_128 (_Decimal128 in, decimal128 *out) { +#if WORDS_BIGENDIAN + memcpy ((char *) out, (char *) &in + 8, 8); + memcpy ((char *) out + 8, (char *) &in, 8); +#else memcpy ((char *) out, (char *) &in, 16); +#endif } void __ieee_to_host_128 (decimal128 in, _Decimal128 *out) { +#if WORDS_BIGENDIAN + memcpy ((char *) out, (char *) &in + 8, 8); + memcpy ((char *) out + 8, (char *) &in, 8); +#else memcpy ((char *) out, (char *) &in, 16); +#endif } |