aboutsummaryrefslogtreecommitdiffstats
path: root/libc/upstream-openbsd/gd_qnan.h
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-04-10 17:48:14 -0700
committerElliott Hughes <enh@google.com>2014-04-16 15:15:52 -0700
commit4bd97cee28dd815fff54fc97560be60d566c1fa5 (patch)
treef337de53e57aee78ad4e574c652fdeee679630b6 /libc/upstream-openbsd/gd_qnan.h
parent26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d (diff)
downloadandroid_bionic-4bd97cee28dd815fff54fc97560be60d566c1fa5.tar.gz
android_bionic-4bd97cee28dd815fff54fc97560be60d566c1fa5.tar.bz2
android_bionic-4bd97cee28dd815fff54fc97560be60d566c1fa5.zip
Switch to gdtoa.
This gives us a real strtold for LP64 and fixes various LP64 bugs. Bug: 13563801 Change-Id: I277858d718ee746e136b6b6308a495ba50dfa488
Diffstat (limited to 'libc/upstream-openbsd/gd_qnan.h')
-rw-r--r--libc/upstream-openbsd/gd_qnan.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/libc/upstream-openbsd/gd_qnan.h b/libc/upstream-openbsd/gd_qnan.h
new file mode 100644
index 000000000..e8e907b01
--- /dev/null
+++ b/libc/upstream-openbsd/gd_qnan.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if __arm__
+
+#define f_QNAN 0xffffffff
+
+#define d_QNAN0 0xffffffff
+#define d_QNAN1 0xffffffff
+
+#elif __mips__
+
+#define f_QNAN 0x7fbfffff
+
+#define d_QNAN0 0x7ff7ffff
+#define d_QNAN1 0xffffffff
+
+#else
+
+#define f_QNAN 0xffc00000
+
+#define d_QNAN0 0x00000000
+#define d_QNAN1 0xfff80000
+
+#endif
+
+/* long double. */
+#if __LP64__
+#define ld_QNAN0 0x7fff8000
+#define ld_QNAN1 0x00000000
+#define ld_QNAN2 0x00000000
+#define ld_QNAN3 0x00000000
+#else
+/* sizeof(long double) == sizeof(double), so we shouldn't be trying to use these constants. */
+#endif