diff options
author | 2004-11-28 07:23:41 +0000 | |
---|---|---|
committer | 2004-11-28 07:23:41 +0000 | |
commit | f6a3c9b1fa71b1a71957242d0da17e5e1f46240e (patch) | |
tree | 923ecdd7af5dbaae56d4af536e50c2c9c2c46dba /sys/lib/libkern/quad.h | |
parent | a tiny hppa64 bit (diff) | |
download | wireguard-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.h | 81 |
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); |