summaryrefslogtreecommitdiffstats
path: root/sys/lib/libkern/quad.h
diff options
context:
space:
mode:
authormickey <mickey@openbsd.org>2004-11-28 07:23:41 +0000
committermickey <mickey@openbsd.org>2004-11-28 07:23:41 +0000
commitf6a3c9b1fa71b1a71957242d0da17e5e1f46240e (patch)
tree923ecdd7af5dbaae56d4af536e50c2c9c2c46dba /sys/lib/libkern/quad.h
parenta tiny hppa64 bit (diff)
downloadwireguard-openbsd-f6a3c9b1fa71b1a71957242d0da17e5e1f46240e.tar.xz
wireguard-openbsd-f6a3c9b1fa71b1a71957242d0da17e5e1f46240e.zip
sync from libc
Diffstat (limited to 'sys/lib/libkern/quad.h')
-rw-r--r--sys/lib/libkern/quad.h81
1 files changed, 41 insertions, 40 deletions
diff --git a/sys/lib/libkern/quad.h b/sys/lib/libkern/quad.h
index 486b614e614..913024e489f 100644
--- a/sys/lib/libkern/quad.h
+++ b/sys/lib/libkern/quad.h
@@ -1,6 +1,3 @@
-/* $OpenBSD: quad.h,v 1.8 2003/06/02 23:28:08 millert Exp $ */
-/* $NetBSD: quad.h,v 1.7 1996/04/18 02:20:04 cgd Exp $ */
-
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
@@ -33,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)quad.h 8.1 (Berkeley) 6/4/93
+ * $OpenBSD: quad.h,v 1.9 2004/11/28 07:23:41 mickey Exp $
*/
/*
@@ -43,13 +40,13 @@
*
* - The type long long (aka quad_t) exists.
*
- * - A quad variable is exactly twice as long as `long'.
+ * - A quad variable is exactly twice as long as `int'.
*
* - The machine's arithmetic is two's complement.
*
* This library can provide 128-bit arithmetic on a machine with 128-bit
- * quads and 64-bit longs, for instance, or 96-bit arithmetic on machines
- * with 48-bit longs.
+ * quads and 64-bit ints, for instance, or 96-bit arithmetic on machines
+ * with 48-bit ints.
*/
#include <sys/types.h>
@@ -66,12 +63,12 @@
union uu {
quad_t q; /* as a (signed) quad */
u_quad_t uq; /* as an unsigned quad */
- long sl[2]; /* as two signed longs */
- u_long ul[2]; /* as two unsigned longs */
+ int sl[2]; /* as two signed ints */
+ u_int ul[2]; /* as two unsigned ints */
};
/*
- * Define high and low longwords.
+ * Define high and low parts of a quad_t.
*/
#define H _QUAD_HIGHWORD
#define L _QUAD_LOWWORD
@@ -82,23 +79,21 @@ union uu {
* and assembly.
*/
#define QUAD_BITS (sizeof(quad_t) * CHAR_BIT)
-#define LONG_BITS (sizeof(long) * CHAR_BIT)
-#define HALF_BITS (sizeof(long) * CHAR_BIT / 2)
+#define INT_BITS (sizeof(int) * CHAR_BIT)
+#define HALF_BITS (sizeof(int) * CHAR_BIT / 2)
/*
* Extract high and low shortwords from longword, and move low shortword of
* longword to upper half of long, i.e., produce the upper longword of
- * ((quad_t)(x) << (number_of_bits_in_long/2)). (`x' must actually be u_long.)
+ * ((quad_t)(x) << (number_of_bits_in_int/2)). (`x' must actually be u_int.)
*
* These are used in the multiply code, to split a longword into upper
* and lower halves, and to reassemble a product as a quad_t, shifted left
- * (sizeof(long)*CHAR_BIT/2).
+ * (sizeof(int)*CHAR_BIT/2).
*/
-#define HHALF(x) ((u_long)(x) >> HALF_BITS)
-#define LHALF(x) ((u_long)(x) & (((long)1 << HALF_BITS) - 1))
-#define LHUP(x) ((u_long)(x) << HALF_BITS)
-
-extern u_quad_t __qdivrem(u_quad_t u, u_quad_t v, u_quad_t *rem);
+#define HHALF(x) ((u_int)(x) >> HALF_BITS)
+#define LHALF(x) ((u_int)(x) & (((int)1 << HALF_BITS) - 1))
+#define LHUP(x) ((u_int)(x) << HALF_BITS)
/*
* XXX
@@ -106,29 +101,35 @@ extern u_quad_t __qdivrem(u_quad_t u, u_quad_t v, u_quad_t *rem);
* as u_quad_t, while gcc 2 correctly uses int. Unfortunately, we still use
* both compilers.
*/
-#if __GNUC__ >= 2
+#if __GNUC_PREREQ__(2, 0) || defined(lint)
typedef unsigned int qshift_t;
#else
typedef u_quad_t qshift_t;
#endif
-__BEGIN_DECLS
-quad_t __adddi3(quad_t, quad_t);
-quad_t __anddi3(quad_t, quad_t);
-quad_t __ashldi3(quad_t, qshift_t);
-quad_t __ashrdi3(quad_t, qshift_t);
-int __cmpdi2(quad_t, quad_t);
-quad_t __divdi3(quad_t, quad_t);
-quad_t __iordi3(quad_t, quad_t);
-quad_t __lshldi3(quad_t, qshift_t);
-quad_t __lshrdi3(quad_t, qshift_t);
-quad_t __moddi3(quad_t, quad_t);
-quad_t __muldi3(quad_t, quad_t);
-quad_t __negdi2(quad_t);
-quad_t __one_cmpldi2(quad_t);
-quad_t __subdi3(quad_t, quad_t);
-int __ucmpdi2(u_quad_t, u_quad_t);
-u_quad_t __udivdi3(u_quad_t, u_quad_t);
-u_quad_t __umoddi3(u_quad_t, u_quad_t);
-quad_t __xordi3(quad_t, quad_t);
-__END_DECLS
+quad_t __adddi3(quad_t, quad_t);
+quad_t __anddi3(quad_t, quad_t);
+quad_t __ashldi3(quad_t, qshift_t);
+quad_t __ashrdi3(quad_t, qshift_t);
+int __cmpdi2(quad_t, quad_t);
+quad_t __divdi3(quad_t, quad_t);
+quad_t __fixdfdi(double);
+quad_t __fixsfdi(float);
+u_quad_t __fixunsdfdi(double);
+u_quad_t __fixunssfdi(float);
+double __floatdidf(quad_t);
+float __floatdisf(quad_t);
+double __floatunsdidf(u_quad_t);
+quad_t __iordi3(quad_t, quad_t);
+quad_t __lshldi3(quad_t, qshift_t);
+quad_t __lshrdi3(quad_t, qshift_t);
+quad_t __moddi3(quad_t, quad_t);
+quad_t __muldi3(quad_t, quad_t);
+quad_t __negdi2(quad_t);
+quad_t __one_cmpldi2(quad_t);
+u_quad_t __qdivrem(u_quad_t, u_quad_t, u_quad_t *);
+quad_t __subdi3(quad_t, quad_t);
+int __ucmpdi2(u_quad_t, u_quad_t);
+u_quad_t __udivdi3(u_quad_t, u_quad_t );
+u_quad_t __umoddi3(u_quad_t, u_quad_t );
+quad_t __xordi3(quad_t, quad_t);