]> Zhao Yanbai Git Server - minix.git/commitdiff
Libc update to simplify merge.
authorLionel Sambuc <lionel@minix3.org>
Mon, 17 Sep 2012 09:09:12 +0000 (11:09 +0200)
committerLionel Sambuc <lionel@minix3.org>
Thu, 15 Nov 2012 15:07:29 +0000 (16:07 +0100)
Bumping libc files for unsupported architectures, to simplify merging.
A bunch of small fixes:
 * in libutil update
 * the macro in endian.h
 * some undefined types due to clear separation from host.
 * Fix a warning for cdbr.c

Some modification which were required for the new build system:
 * inclusion path for const.h in sconst, still hacky
 * Removed default malloc.c which conflicts on some occasions.

183 files changed:
etc/mtree/mtree.sh [moved from etc/mtree.sh with 100% similarity]
include/sys/endian.h
kernel/arch/i386/sconst.h
lib/libc/arch/alpha/gen/__setjmp14.S
lib/libc/arch/alpha/gen/_lwp.c
lib/libc/arch/alpha/gen/flt_rounds.c
lib/libc/arch/alpha/gen/fpgetround.c
lib/libc/arch/alpha/gen/fpsetround.c
lib/libc/arch/alpha/gen/makecontext.c
lib/libc/arch/alpha/gen/resumecontext.c
lib/libc/arch/hppa/gen/__longjmp14.c
lib/libc/arch/hppa/gen/_lwp.c
lib/libc/arch/hppa/gen/flt_rounds.c
lib/libc/arch/hppa/gen/fpgetmask.c
lib/libc/arch/hppa/gen/fpgetround.c
lib/libc/arch/hppa/gen/fpgetsticky.c
lib/libc/arch/hppa/gen/fpsetmask.c
lib/libc/arch/hppa/gen/fpsetround.c
lib/libc/arch/hppa/gen/fpsetsticky.c
lib/libc/arch/hppa/gen/makecontext.c
lib/libc/arch/hppa/gen/resumecontext.c
lib/libc/arch/hppa/gen/swapcontext.S
lib/libc/arch/hppa/sys/brk.S
lib/libc/arch/hppa/sys/sbrk.S
lib/libc/arch/m68k/Makefile.inc
lib/libc/arch/m68k/gen/Makefile.inc
lib/libc/arch/m68k/gen/_lwp.c
lib/libc/arch/m68k/gen/fpfake.c
lib/libc/arch/m68k/softfloat/softfloat.h
lib/libc/arch/m68k/sys/__m68k_read_tp.S [new file with mode: 0644]
lib/libc/arch/mips/Makefile.inc
lib/libc/arch/mips/gen/Makefile.inc
lib/libc/arch/mips/gen/_lwp.c
lib/libc/arch/mips/gen/_resumecontext.S
lib/libc/arch/mips/gen/_setjmp.S
lib/libc/arch/mips/gen/cacheflush.c
lib/libc/arch/mips/gen/flt_rounds.c
lib/libc/arch/mips/gen/fpgetmask.c
lib/libc/arch/mips/gen/fpgetround.c
lib/libc/arch/mips/gen/fpgetsticky.c
lib/libc/arch/mips/gen/fpsetmask.c
lib/libc/arch/mips/gen/fpsetround.c
lib/libc/arch/mips/gen/fpsetsticky.c
lib/libc/arch/mips/gen/longjmp.c
lib/libc/arch/mips/gen/makecontext.c
lib/libc/arch/mips/gen/resumecontext.c
lib/libc/arch/mips/gen/swapcontext.S
lib/libc/arch/mips/softfloat/mips-gcc.h
lib/libc/arch/mips/softfloat/softfloat.h
lib/libc/arch/mips/sys/cerror.S
lib/libc/arch/powerpc/gen/Makefile.inc
lib/libc/arch/powerpc/gen/_lwp.c
lib/libc/arch/powerpc/gen/flt_rounds.c
lib/libc/arch/powerpc/gen/fpgetmask.c
lib/libc/arch/powerpc/gen/fpgetround.c
lib/libc/arch/powerpc/gen/fpgetsticky.c
lib/libc/arch/powerpc/gen/fpsetmask.c
lib/libc/arch/powerpc/gen/fpsetround.c
lib/libc/arch/powerpc/gen/fpsetsticky.c
lib/libc/arch/powerpc/gen/resumecontext.c
lib/libc/arch/powerpc/softfloat/softfloat.h
lib/libc/arch/powerpc/string/bzero.S
lib/libc/arch/powerpc/sys/cerror.S
lib/libc/arch/powerpc64/gen/resumecontext.c
lib/libc/arch/powerpc64/gen/swapcontext.S
lib/libc/arch/powerpc64/sys/brk.S
lib/libc/arch/powerpc64/sys/cerror.S
lib/libc/arch/powerpc64/sys/getcontext.S
lib/libc/arch/sh3/SYS.h
lib/libc/arch/sh3/gen/_lwp.c
lib/libc/arch/sh3/gen/flt_rounds.c
lib/libc/arch/sh3/gen/resumecontext.c
lib/libc/arch/sh3/softfloat/softfloat.h
lib/libc/arch/sparc/Makefile.inc
lib/libc/arch/sparc/SYS.h
lib/libc/arch/sparc/gen/_lwp.c
lib/libc/arch/sparc/gen/_setjmp.S
lib/libc/arch/sparc/gen/divrem.m4
lib/libc/arch/sparc/gen/flt_rounds.c
lib/libc/arch/sparc/gen/fpgetmask.c
lib/libc/arch/sparc/gen/fpgetround.c
lib/libc/arch/sparc/gen/fpgetsticky.c
lib/libc/arch/sparc/gen/fpsetmask.c
lib/libc/arch/sparc/gen/fpsetround.c
lib/libc/arch/sparc/gen/longjmp.c
lib/libc/arch/sparc/gen/resumecontext.c
lib/libc/arch/sparc/gen/setjmp.S
lib/libc/arch/sparc/gen/swapcontext.S
lib/libc/arch/sparc64/Makefile.inc
lib/libc/arch/sparc64/SYS.h
lib/libc/arch/sparc64/gen/_lwp.c
lib/libc/arch/sparc64/gen/_setjmp.S
lib/libc/arch/sparc64/gen/divrem.m4 [deleted file]
lib/libc/arch/sparc64/gen/flt_rounds.c
lib/libc/arch/sparc64/gen/fpgetmask.c
lib/libc/arch/sparc64/gen/fpgetround.c
lib/libc/arch/sparc64/gen/fpgetsticky.c
lib/libc/arch/sparc64/gen/fpsetmask.c
lib/libc/arch/sparc64/gen/fpsetround.c
lib/libc/arch/sparc64/gen/fpsetsticky.c
lib/libc/arch/sparc64/gen/longjmp.c
lib/libc/arch/sparc64/gen/makecontext.c
lib/libc/arch/sparc64/gen/resumecontext.c
lib/libc/arch/sparc64/gen/setjmp.S
lib/libc/arch/sparc64/gen/sigsetjmp.S
lib/libc/arch/sparc64/gen/swapcontext.S
lib/libc/arch/sparc64/softfloat/qp.c
lib/libc/arch/sparc64/softfloat/softfloat.h
lib/libc/arch/sparc64/string/memcpy.S
lib/libc/arch/vax/SYS.h
lib/libc/arch/vax/gen/__setjmp14.S
lib/libc/arch/vax/gen/__sigsetjmp14.S
lib/libc/arch/vax/gen/_lwp.c
lib/libc/arch/vax/gen/_setjmp.S
lib/libc/arch/vax/gen/alloca.S
lib/libc/arch/vax/gen/byte_swap_2.S
lib/libc/arch/vax/gen/byte_swap_4.S
lib/libc/arch/vax/gen/fabs.S
lib/libc/arch/vax/gen/frexp.c
lib/libc/arch/vax/gen/ldexp.S
lib/libc/arch/vax/gen/makecontext.c
lib/libc/arch/vax/gen/modf.S
lib/libc/arch/vax/gen/resumecontext.c
lib/libc/arch/vax/gen/swapcontext.S
lib/libc/arch/vax/genassym.cf
lib/libc/arch/vax/string/bcmp.S
lib/libc/arch/vax/string/bcopy.S
lib/libc/arch/vax/string/bzero.S
lib/libc/arch/vax/string/ffs.S
lib/libc/arch/vax/string/index.S
lib/libc/arch/vax/string/memcmp.S
lib/libc/arch/vax/sys/__clone.S
lib/libc/arch/vax/sys/__sigtramp3.S
lib/libc/arch/vax/sys/__syscall.S
lib/libc/arch/vax/sys/__vfork14.S
lib/libc/arch/vax/sys/brk.S
lib/libc/arch/vax/sys/cerror.S
lib/libc/arch/vax/sys/execl.S
lib/libc/arch/vax/sys/execle.S
lib/libc/arch/vax/sys/execlp.S
lib/libc/arch/vax/sys/exect.S
lib/libc/arch/vax/sys/fork.S
lib/libc/arch/vax/sys/getcontext.S
lib/libc/arch/vax/sys/pipe.S
lib/libc/arch/vax/sys/ptrace.S
lib/libc/arch/vax/sys/sbrk.S
lib/libc/arch/vax/sys/syscall.S
lib/libc/cdb/cdbr.c
lib/libc/compat/arch/alpha/sys/Makefile.inc
lib/libc/compat/arch/alpha/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/hppa/sys/Makefile.inc
lib/libc/compat/arch/hppa/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/ia64/sys/Makefile.inc
lib/libc/compat/arch/ia64/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/m68k/sys/Makefile.inc
lib/libc/compat/arch/m68k/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/mips/sys/Makefile.inc
lib/libc/compat/arch/mips/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/powerpc/sys/Makefile.inc
lib/libc/compat/arch/powerpc/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/powerpc64/sys/Makefile.inc
lib/libc/compat/arch/powerpc64/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/sh3/sys/Makefile.inc
lib/libc/compat/arch/sh3/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/sparc/sys/Makefile.inc
lib/libc/compat/arch/sparc/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/sparc64/sys/Makefile.inc
lib/libc/compat/arch/sparc64/sys/compat___sigtramp1.S
lib/libc/compat/arch/sparc64/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/vax/sys/Makefile.inc
lib/libc/compat/arch/vax/sys/compat_Ovfork.S
lib/libc/compat/arch/vax/sys/compat___sigreturn14.S
lib/libc/compat/arch/vax/sys/compat___sigtramp2.S
lib/libc/compat/arch/vax/sys/compat_quotactl.S [new file with mode: 0644]
lib/libc/compat/arch/vax/sys/compat_sigpending13.S
lib/libc/compat/arch/vax/sys/compat_sigprocmask13.S
lib/libc/compat/arch/vax/sys/compat_sigreturn13.S
lib/libc/compat/arch/vax/sys/compat_sigsuspend13.S
lib/libc/stdlib/malloc.c [deleted file]
lib/libmthread/global.h
lib/libutil/pty.c
lib/libvtreefs/inc.h
share/mk/bsd.README [new file with mode: 0644]

similarity index 100%
rename from etc/mtree.sh
rename to etc/mtree/mtree.sh
index ac5418c156920912b0c97dd71bade891c13b7115..13083193eaa16050c9e136a60333ac67d195cbf6 100644 (file)
@@ -127,10 +127,10 @@ __END_DECLS
 #define        htonl(x)        bswap32(__CAST(uint32_t, (x)))
 #define        htons(x)        bswap16(__CAST(uint16_t, (x)))
 
-#define        NTOHL(x)        (x) = ntohl(__CAST(uint32_t, (x)))
-#define        NTOHS(x)        (x) = ntohs(__CAST(uint16_t, (x)))
-#define        HTONL(x)        (x) = htonl(__CAST(uint32_t, (x)))
-#define        HTONS(x)        (x) = htons(__CAST(uint16_t, (x)))
+#define        NTOHL(x)        ntohl(__CAST(uint32_t, (x)))
+#define        NTOHS(x)        ntohs(__CAST(uint16_t, (x)))
+#define        HTONL(x)        htonl(__CAST(uint32_t, (x)))
+#define        HTONS(x)        htons(__CAST(uint16_t, (x)))
 #endif /* LITTLE_ENDIAN || !defined(__lint__) */
 
 /*
index 6138e4402313c9638c3042dd1547069a7a4eda74..3732a353ce393473a9fae1892373d21bfd8c9a8d 100644 (file)
@@ -1,8 +1,13 @@
 #ifndef __SCONST_H__
 #define __SCONST_H__
 
+/*
+ * LSC Weirdness going on with the const.h header: FIXME
 #include "kernel/const.h"
 #include "kernel/procoffsets.h"
+ */
+#include "const.h"
+#include "procoffsets.h"
 
 /*
  * offset to current process pointer right after trap, we assume we always have
index 4e59a7b64e59657eee47aa7c967b4995a9b5a988..062935de702e2bef8c9f24afced445075d60870c 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: __setjmp14.S,v 1.4 2004/03/21 18:04:27 matt Exp $ */
+/* $NetBSD: __setjmp14.S,v 1.5 2011/06/12 05:44:36 matt Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -96,7 +96,9 @@ LEAF(__setjmp14, 1)
        stt     fs5, (7*8 + SC_FPREGS)(a0)
        stt     fs6, (8*8 + SC_FPREGS)(a0)
        stt     fs7, (9*8 + SC_FPREGS)(a0)
+       excb                                    /* required 4.7.8.1 Alpha ARM */
        mf_fpcr ft0                             /* get FP control reg */
+       excb                                    /* required 4.7.8.1 Alpha ARM */
        stt     ft0, SC_FPCR(a0)                /* and store it in sc_fpcr */
        stq     zero, SC_FP_CONTROL(a0)         /* FP software control XXX */
        stq     zero, (SC_RESERVED + 0*8)(a0)   /* sc_reserved[0] */
index 21213682b19be35caede4f5d1c4edc0a6b6916ad..c2a7ce412c98678577f35a636d6ad3d39c14e159 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:55 martin Exp $  */
+/*     $NetBSD: _lwp.c,v 1.7 2012/09/12 14:13:43 manu Exp $    */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:55 martin Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.7 2012/09/12 14:13:43 manu Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -60,4 +60,7 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        gr[_REG_A0] = (unsigned long) arg;
        gr[_REG_SP] = ((unsigned long) (stack_base + stack_size)) & ~0x7;
        gr[_REG_S6] = 0;
+       gr[_REG_UNIQUE] = (unsigned long)private;
+
+       u->uc_flags |= _UC_TLSBASE;
 }
index ef06c6c360d650b12c6d6d1fe7399e016254edd0..3f28b3ecc9662f196a61ee21ee85c823e5138ca2 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: flt_rounds.c,v 1.8 2005/12/24 23:10:08 perry Exp $ */
+/* $NetBSD: flt_rounds.c,v 1.9 2011/06/12 05:44:36 matt Exp $ */
 
 /*
  * Copyright (c) 1995 Christopher G. Demetriou
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.8 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.9 2011/06/12 05:44:36 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
+#include <machine/ieeefp.h>
 #include <machine/float.h>
 
-static const int map[] = {
-       0,      /* round to zero */
-       3,      /* round to negative infinity */
-       1,      /* round to nearest */
-       2       /* round to positive infinity */
-};
+/*
+ * These come from <float.h> defintion
+ */
+#define        FLT_ROUND_MAP \
+       ( (0 << (FP_RZ*2))      /* round to zero */                     \
+       | (1 << (FP_RN*2))      /* round to nearest */                  \
+       | (3 << (FP_RM*2))      /* round to negative infinity */        \
+       | (2 << (FP_RP*2)))     /* round to positive infinity */
 
 int
-__flt_rounds()
+__flt_rounds(void)
 {
-       double fpcrval;
-       u_int64_t old;
+       union {
+               double d;
+               uint64_t u64;
+       } fpcrval;
+       uint64_t old;
 
-       __asm("trapb");
-       __asm("mf_fpcr %0" : "=f" (fpcrval));
-       __asm("trapb");
-       old = *(u_int64_t *)(void *)&fpcrval;
+       __asm("excb; mf_fpcr %0; excb" : "=f" (fpcrval.d));
+       old = (fpcrval.u64 >> 58) & 3;
 
-       return map[(old >> 58) & 0x3];
+       return (FLT_ROUND_MAP >> (old << 1)) & 3;
 }
index 1bee9b690fab960c9014ae4c9c8efea5099c2745..263b195f713edaf6b4137ded78251889cb600da8 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: fpgetround.c,v 1.9 2005/12/24 23:10:08 perry Exp $ */
+/* $NetBSD: fpgetround.c,v 1.11 2012/03/21 20:07:52 he Exp $ */
 
 /*
  * Copyright (c) 1995 Christopher G. Demetriou
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.9 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.11 2012/03/21 20:07:52 he Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -49,13 +49,14 @@ __weak_alias(fpgetround,_fpgetround)
 #endif
 
 fp_rnd
-fpgetround()
+fpgetround(void)
 {
-       double fpcrval;
-       u_int64_t old;
+       union {
+               double d;
+               uint64_t u64;
+       } fpcrval;
 
-       __asm("mf_fpcr %0" : "=f" (fpcrval));
-       old = *(u_int64_t *)(void *)&fpcrval;
+       __asm("excb; mf_fpcr %0; excb" : "=f" (fpcrval.d));
 
-       return ((old >> 58) & 0x3);
+       return ((fp_rnd)(fpcrval.u64 >> 58) & 0x3);
 }
index b3cb5a5a3baa11cdc0e15a69fea1013081f065bd..ec9b11e989d840d8649f91e38b1d1b96b37c8fb5 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: fpsetround.c,v 1.10 2005/12/24 23:10:08 perry Exp $ */
+/* $NetBSD: fpsetround.c,v 1.12 2012/03/21 20:07:52 he Exp $ */
 
 /*
  * Copyright (c) 1995 Christopher G. Demetriou
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.10 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.12 2012/03/21 20:07:52 he Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -49,22 +49,22 @@ __weak_alias(fpsetround,_fpsetround)
 #endif
 
 fp_rnd
-fpsetround(rnd_dir)
-       fp_rnd rnd_dir;
+fpsetround(fp_rnd rnd_dir)
 {
-       double fpcrval;
-       u_int64_t old, new;
+       union {
+               double d;
+               uint64_t u64;
+       } fpcrval;
+       fp_rnd old;
 
-       __asm("excb");
-       __asm("mf_fpcr %0" : "=f" (fpcrval));
-       old = *(u_int64_t *)(void *)&fpcrval;
+       __asm("excb; mf_fpcr %0; excb" : "=f" (fpcrval.d));
+       old = (fp_rnd)(fpcrval.u64 >> 58) & 0x3;
 
-       new = old & ~(long)0x0c00000000000000;
-       new = (long)rnd_dir << 58;
-       *(u_int64_t *)(void *)&fpcrval = new;
+       rnd_dir ^= old;
 
-       __asm("mt_fpcr %0" : : "f" (fpcrval));
-       __asm("excb");
+       fpcrval.u64 ^= (long)rnd_dir << 58;
 
-       return ((old >> 58) & 0x3);
+       __asm("excb; mt_fpcr %0; excb" : : "f" (fpcrval.d));
+
+       return old;
 }
index 3554eb3a7535cf2da91065c40723a5db9dcd8f36..aeabddf266637ed2eb3776b9bc95f2c826c9332d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: makecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $   */
+/*     $NetBSD: makecontext.c,v 1.6 2011/09/20 08:42:29 joerg Exp $    */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: makecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $");
+__RCSID("$NetBSD: makecontext.c,v 1.6 2011/09/20 08:42:29 joerg Exp $");
 #endif
 
 #include <stddef.h>
@@ -41,6 +41,8 @@ __RCSID("$NetBSD: makecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $");
 
 #include <stdarg.h>
 
+void __resumecontext(void) __dead;
+
 void
 makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
 {
@@ -49,8 +51,6 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        unsigned long *sp;
        va_list ap;
 
-       void __resumecontext(void);
-
        /* Compute and align stack pointer. */
        sp = (unsigned long *)
            (((uintptr_t)ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) & ~0x7);
index cd1795b592882fbcbb973be0b4057822f1df3644..d5b745c998f5b3960a8d8ee6e68cdaac7c975e0a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:57 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:57 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:55 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index bb14fd6278917b3d87585044938374468cdd4074..04ab4ee73c94bcc352874a029e0b33b06523fdae 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: __longjmp14.c,v 1.4 2008/04/28 20:22:55 martin Exp $   */
+/*     $NetBSD: __longjmp14.c,v 1.5 2012/03/22 12:31:32 skrll Exp $    */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -81,6 +81,7 @@ __longjmp14(jmp_buf env, int val)
        uc.uc_mcontext.__gregs[18] = regs[18];
 
        /* Preserve the current value of DP */
+       /* LINTED dp is r27, so is "initialized" */
        uc.uc_mcontext.__gregs[27] = dp;
 
        /* Set the desired return value. */
index 4e8cc16b015023a530a28c3a5e538096055cbc7c..631ce8b6668e2b57be0e85d8f918c0eae74dd74c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.4 2010/01/07 12:31:10 skrll Exp $   */
+/*     $NetBSD: _lwp.c,v 1.5 2011/02/24 04:28:42 joerg Exp $   */
 
 /*
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.4 2010/01/07 12:31:10 skrll Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.5 2011/02/24 04:28:42 joerg Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -69,4 +69,5 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        gr[_REG_RP] = (__greg_t) _lwp_exit;
        gr[_REG_ARG0] = (__greg_t) arg;
        gr[_REG_SP] = (__greg_t) sp;
+       gr[_REG_CR27] = (__greg_t) private;
 }
index e043d2b77c3ac3baf69970edd6ae75dd95b6a066..179fb60b0af849effe0f5fe4436bb3cdcf3466fb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.4 2005/12/24 21:42:32 perry Exp $     */
+/*     $NetBSD: flt_rounds.c,v 1.5 2012/03/23 09:34:09 skrll Exp $     */
 
 /*     $OpenBSD: flt_rounds.c,v 1.3 2002/10/21 18:41:05 mickey Exp $   */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.4 2005/12/24 21:42:32 perry Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.5 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -27,5 +27,5 @@ __flt_rounds(void)
        uint64_t fpsr;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
-       return map[(fpsr >> 41) & 0x03];
+       return map[(unsigned int)(fpsr >> 41) & 0x03];
 }
index 4ef451c6508415b79272d4db5bb61cb87a6a2d00..cedf4797aa70f6ae72c09f3cf149b1fd96f2ce09 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetmask.c,v 1.4 2005/12/24 21:42:32 perry Exp $      */
+/*     $NetBSD: fpgetmask.c,v 1.5 2012/03/23 09:34:09 skrll Exp $      */
 
 /*     $OpenBSD: fpgetmask.c,v 1.3 2002/10/21 18:41:05 mickey Exp $    */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetmask.c,v 1.4 2005/12/24 21:42:32 perry Exp $");
+__RCSID("$NetBSD: fpgetmask.c,v 1.5 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -20,5 +20,5 @@ fpgetmask(void)
        uint64_t fpsr;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
-       return ((fpsr >> 32) & 0x1f);
+       return ((fp_except)(fpsr >> 32) & 0x1f);
 }
index 1629b6498804c17854ae65af43df9e68d05c2c09..f0feb3167396158953bff61a355f9a71c760e7bb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetround.c,v 1.4 2005/12/24 21:42:32 perry Exp $     */
+/*     $NetBSD: fpgetround.c,v 1.5 2012/03/23 09:34:09 skrll Exp $     */
 
 /*     $OpenBSD: fpgetround.c,v 1.3 2002/10/21 18:41:05 mickey Exp $   */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.4 2005/12/24 21:42:32 perry Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.5 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -20,5 +20,5 @@ fpgetround(void)
        uint64_t fpsr;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
-       return ((fpsr >> 41) & 0x3);
+       return ((fp_rnd)(fpsr >> 41) & 0x3);
 }
index 29ea34aa27f2916d5c58c7da78f40d5a2a9e0511..9e424abeb03b072bd57effcc8f64c8d4b7dd105d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetsticky.c,v 1.4 2005/12/24 21:42:32 perry Exp $    */
+/*     $NetBSD: fpgetsticky.c,v 1.5 2012/03/23 09:34:09 skrll Exp $    */
 
 /*     $OpenBSD: fpgetsticky.c,v 1.3 2002/10/21 18:41:05 mickey Exp $  */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetsticky.c,v 1.4 2005/12/24 21:42:32 perry Exp $");
+__RCSID("$NetBSD: fpgetsticky.c,v 1.5 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -20,5 +20,5 @@ fpgetsticky(void)
        uint64_t fpsr;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
-       return ((fpsr >> 59) & 0x1f);
+       return ((fp_except)(fpsr >> 59) & 0x1f);
 }
index 1633f61e4ff1de8e2140e64a2b562863b378894e..b1761b07e21988757bfe9d8f5b40af86ec53a350 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetmask.c,v 1.5 2009/01/25 16:44:41 skrll Exp $      */
+/*     $NetBSD: fpsetmask.c,v 1.6 2012/03/23 09:34:09 skrll Exp $      */
 
 /*     $OpenBSD: fpsetmask.c,v 1.4 2004/01/05 06:06:16 otto Exp $      */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetmask.c,v 1.5 2009/01/25 16:44:41 skrll Exp $");
+__RCSID("$NetBSD: fpsetmask.c,v 1.6 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -21,7 +21,7 @@ fpsetmask(fp_except mask)
        fp_except old;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m"(fpsr) : "r"(&fpsr) : "memory");
-       old = (fpsr >> 32) & 0x1f;
+       old = (fp_except)(fpsr >> 32) & 0x1f;
        fpsr = (fpsr & 0xffffffe000000000LL) | ((uint64_t)(mask & 0x1f) << 32);
        __asm volatile("fldd 0(%0),%%fr0" : : "r"(&fpsr) : "memory");
        return (old);
index d9474625c7bda6d8e27b0058bf146a0fc1525f78..f9f631666d6a6087c1a7f4927324a69bb9d5a24e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetround.c,v 1.5 2009/01/25 16:44:41 skrll Exp $     */
+/*     $NetBSD: fpsetround.c,v 1.6 2012/03/23 09:34:09 skrll Exp $     */
 
 /*     $OpenBSD: fpsetround.c,v 1.3 2002/10/21 18:41:05 mickey Exp $   */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.5 2009/01/25 16:44:41 skrll Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.6 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -21,7 +21,7 @@ fpsetround(fp_rnd rnd_dir)
        fp_rnd old;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr) : "memory");
-       old = (fpsr >> 41) & 0x03;
+       old = (fp_rnd)(fpsr >> 41) & 0x03;
        fpsr = (fpsr & 0xfffff9ff00000000LL) |
            ((uint64_t)(rnd_dir & 0x03) << 41);
        __asm volatile("fldd 0(%0),%%fr0" : : "r" (&fpsr) : "memory");
index 47216090044ddfcbb267646e012eb939ec9127b0..c9dce7a734b8715e5a6582b25d412cb8c511f760 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetsticky.c,v 1.5 2009/01/25 16:44:41 skrll Exp $    */
+/*     $NetBSD: fpsetsticky.c,v 1.6 2012/03/23 09:34:09 skrll Exp $    */
 
 /*     $OpenBSD: fpsetsticky.c,v 1.4 2004/01/05 06:06:16 otto Exp $    */
 
@@ -8,7 +8,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetsticky.c,v 1.5 2009/01/25 16:44:41 skrll Exp $");
+__RCSID("$NetBSD: fpsetsticky.c,v 1.6 2012/03/23 09:34:09 skrll Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -21,7 +21,7 @@ fpsetsticky(fp_except mask)
        fp_except old;
 
        __asm volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr) : "memory");
-       old = (fpsr >> 59) & 0x1f;
+       old = (fp_except)(fpsr >> 59) & 0x1f;
        fpsr = (fpsr & 0x07ffffff00000000LL) | ((uint64_t)(mask & 0x1f) << 59);
        __asm volatile("fldd 0(%0),%%fr0" : : "r" (&fpsr) : "memory");
 
index c7cb50d7ac5b61437465174b714d2042f957a48e..5a03f238886da3b915dd49f09779571454eeae70 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $   */
+/*     $NetBSD: makecontext.c,v 1.6 2012/03/22 12:31:32 skrll Exp $    */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: makecontext.c,v 1.6 2012/03/22 12:31:32 skrll Exp $");
 #endif
 
 #include <inttypes.h>
@@ -44,6 +44,8 @@ __RCSID("$NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $");
 #include <sys/types.h>
 #include <machine/frame.h>
 
+void __resumecontext(void) __dead;
+
 void
 makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
 {
@@ -54,8 +56,6 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        int i;
        va_list ap;
 
-       void __resumecontext(void);
-
        /* LINTED uintptr_t is safe */
        sp  = (uintptr_t *)ucp->uc_stack.ss_sp;
        /* LINTED uintptr_t is safe */
@@ -81,6 +81,7 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        }
        gr[_REG_PCOQH] = fp | HPPA_PC_PRIV_USER;
        gr[_REG_PCOQT] = (fp + 4) | HPPA_PC_PRIV_USER;
+       /* LINTED dp is reg27, ref. above, so initialized */
        gr[_REG_DP] = dp;
 
        /* Construct argument list. */
index 03443a32d319f5cc341f2af602c022cdc78e428d..9bdeb4ac73f7b5b4420d055cb781115705a46520 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:57 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:57 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:56 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index 7e5601c1e386d8c03eceea86afbeac90e15d5563..4ba6cddeafdb1e4706702edde55057a35cc74d97 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.4 2008/04/28 20:22:56 martin Exp $   */
+/*     $NetBSD: swapcontext.S,v 1.5 2012/09/12 02:00:52 manu Exp $     */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 #include <machine/mcontext.h>
 
 #if defined(SYSLIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: swapcontext.S,v 1.4 2008/04/28 20:22:56 martin Exp $")
+       RCSID("$NetBSD: swapcontext.S,v 1.5 2012/09/12 02:00:52 manu Exp $")
 #endif /* SYSLIBC_SCCS && !lint */
 
 LEAF_ENTRY(swapcontext)
@@ -44,10 +44,15 @@ LEAF_ENTRY(swapcontext)
 
        ldw     HPPA_FRAME_ARG(0)(%sp), %arg1
        ldw     HPPA_FRAME_ARG(1)(%sp), %arg0
-       stw     %r0, (_OFFSETOF_UC_GREGS + _REG_RET0 * SZREG)(%arg1)
+
+       ldw     HPPA_FRAME_CRP(%sp), %rp
        ldo     4(%rp), %r1
        stw     %r1, (_OFFSETOF_UC_GREGS + _REG_PCOQT * SZREG)(%arg1)
        stw     %rp, (_OFFSETOF_UC_GREGS + _REG_PCOQH * SZREG)(%arg1)
-       SYSCALL(setcontext)
+       bl      setcontext, %rp
+       stw     %r0, (_OFFSETOF_UC_GREGS + _REG_RET0 * SZREG)(%arg1)
+
+       ldw     HPPA_FRAME_CRP(%sp), %rp
+       bv,n    %r0(%rp)
 EXIT(swapcontext)
        .end
index 61ce62527b6a048ef6e10219177db1ec0ddd5c08..e25b84e30f1cd66ad14959e5c47a0ff50b2fca61 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: brk.S,v 1.4 2009/11/03 05:07:25 snj Exp $      */
+/*     $NetBSD: brk.S,v 1.5 2012/03/14 14:18:10 skrll Exp $    */
 
 /*     $OpenBSD: brk.S,v 1.7 2001/06/04 23:14:04 mickey Exp $  */
 
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: brk.S,v 1.4 2009/11/03 05:07:25 snj Exp $")
+       RCSID("$NetBSD: brk.S,v 1.5 2012/03/14 14:18:10 skrll Exp $")
 #endif /* LIBC_SCCS and not lint */
 
        .import curbrk, data
-       .import end, data
+       .global _end
 
 #ifdef WEAK_ALIAS
        WEAK_ALIAS(brk, _brk) 
@@ -44,7 +44,7 @@
        .data
        .export __minbrk, data
 __minbrk:
-       .long   end
+       .long   _end
 
 ENTRY(_brk,0)
 #ifdef PIC
index 963d2519ac711eb81eacd4b6c3eff627c5d2a297..b5821d5f8c90eb2993ad7f35a84301acd8d098c1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: sbrk.S,v 1.4 2009/11/03 05:07:25 snj Exp $     */
+/*     $NetBSD: sbrk.S,v 1.5 2012/03/14 14:18:10 skrll Exp $   */
 
 /*     $OpenBSD: sbrk.S,v 1.7 2001/06/04 23:14:04 mickey Exp $ */
 
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: sbrk.S,v 1.4 2009/11/03 05:07:25 snj Exp $")
+       RCSID("$NetBSD: sbrk.S,v 1.5 2012/03/14 14:18:10 skrll Exp $")
 #endif /* LIBC_SCCS and not lint */
 
-       .import end, data
+       .global _end
 
 #ifdef WEAK_ALIAS
        WEAK_ALIAS(sbrk, _sbrk)
@@ -43,7 +43,7 @@
        .data
        .export curbrk, data
 curbrk:
-       .long   end
+       .long   _end
 
 ENTRY(_sbrk,0)
 #ifdef PIC
index abe01f49ac31edae5ba500c881035b73eda04a0e..13a17bdbd846ddb551716e5cefc87bd86250e65e 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.13 2008/02/09 02:41:06 mrg Exp $
+#      $NetBSD: Makefile.inc,v 1.14 2011/11/22 15:25:28 joerg Exp $
 
-SRCS+= __sigaction14_sigtramp.c __sigtramp2.S __mmap.S
+SRCS+= __sigaction14_sigtramp.c __sigtramp2.S __m68k_read_tp.S __mmap.S
 
 ASM+=  _lwp_getprivate.S mremap.S
 
index f1ed0466fb3f6199404070aeb5c5dd5888034d97..bef14d0f263f2c8e535afeaa40e4e57578b5aad1 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.30 2009/12/06 07:12:17 uebayasi Exp $
+#      $NetBSD: Makefile.inc,v 1.31 2011/11/22 15:25:28 joerg Exp $
 
 SRCS+= alloca.S fabs.S
 
@@ -26,6 +26,7 @@ SRCS+=        ashlsi3.S ashrsi3.S \
        negdf2.S negsf2.S
 SRCS+= bswap16.S bswap32.S bswap64.S
 SRCS+= _lwp.c
+CPPFLAGS._lwp.c        += -D_LIBC_SOURCE
 
 # 68000-based machines build with a libgcc that includes
 # much of the (soft)float and integer support that would 
index 6d6e09331fe53d993968518121f6f9f128cfb243..ce0e16d47b039f88c41b7c51620b571b6aa04293 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:56 martin Exp $  */
+/*     $NetBSD: _lwp.c,v 1.8 2012/03/18 16:26:34 christos Exp $        */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.8 2012/03/18 16:26:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 #include <sys/types.h>
+#include <sys/tls.h>
 #include <ucontext.h>
 #include <lwp.h>
 #include <stdlib.h>
 
 void
 _lwp_makecontext(ucontext_t *u, void (*start)(void *),
-    void *arg, void *private, caddr_t stack_base, size_t stack_size)
+    void *arg, void *tcb, caddr_t stack_base, size_t stack_size)
 {
        void **sp;
 
@@ -54,10 +55,13 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
 
        u->uc_mcontext.__gregs[_REG_PC] = (int)start;
        
-       sp = (void **) (stack_base + stack_size);
+       sp = (void **)(void *)(stack_base + stack_size);
        
        *--sp = arg;
        *--sp = (void *) _lwp_exit;
 
        u->uc_mcontext.__gregs[_REG_A7] = (int) sp;
+       u->uc_mcontext._mc_tlsbase = (uintptr_t)tcb + TLS_TP_OFFSET +
+           sizeof(struct tls_tcb);
+       u->uc_flags |= _UC_TLSBASE;
 }
index b2835d4add496181256a57b09f8cb4f914957550..6911f0173b231819b97cb887bdedc6fd26abd2da 100644 (file)
@@ -18,18 +18,21 @@ fpgetsticky(void)
        return 0;
 }
 
+/* ARGSUSED */
 fp_except
 fpsetmask(fp_except mask)
 {
        return 0;
 }
 
+/* ARGSUSED */
 fp_rnd
 fpsetround(fp_rnd rnd_dir)
 {
        return 0;
 }
 
+/* ARGSUSED */
 fp_except
 fpsetsticky(fp_except sticky)
 {
index 1c4c1533de6bddbf3dfd9a95ad96678a5773fe87..b45238d272813309df9113cad6387766091659b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: softfloat.h,v 1.2 2006/05/16 20:55:51 mrg Exp $        */
+/*     $NetBSD: softfloat.h,v 1.4 2011/07/07 07:14:57 matt Exp $       */
 
 /* This is a derivative work. */
 
@@ -84,12 +84,10 @@ Software IEC/IEEE floating-point rounding mode.
 -------------------------------------------------------------------------------
 */
 extern fp_rnd float_rounding_mode;
-enum {
-    float_round_nearest_even = FP_RN,
-    float_round_to_zero      = FP_RZ,
-    float_round_down         = FP_RM,
-    float_round_up           = FP_RP
-};
+#define float_round_nearest_even FP_RN
+#define float_round_to_zero      FP_RZ
+#define float_round_down         FP_RM
+#define float_round_up           FP_RP
 
 /*
 -------------------------------------------------------------------------------
@@ -119,13 +117,17 @@ void float_raise( fp_except );
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );
diff --git a/lib/libc/arch/m68k/sys/__m68k_read_tp.S b/lib/libc/arch/m68k/sys/__m68k_read_tp.S
new file mode 100644 (file)
index 0000000..0daae95
--- /dev/null
@@ -0,0 +1,7 @@
+#include "SYS.h"
+
+ENTRY(__m68k_read_tp)
+       SYSTRAP(_lwp_getprivate)
+       movl    %d0,%a0
+       rts
+       .size   __m68k_read_tp, .-__m68k_read_tp
index 032d3d9e4d6e3f496908c5e6015e81b8b18f9108..6f5cede925761975032b7cb81f550e626518b6d0 100644 (file)
@@ -1,4 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.9 2009/12/14 01:07:41 matt Exp $
+#      $NetBSD: Makefile.inc,v 1.12 2011/07/09 04:12:01 matt Exp $
+
+.include <bsd.own.mk>
 
 SRCS+= __sigaction14_sigtramp.c __sigtramp2.S
 
@@ -7,5 +9,17 @@ CPPFLAGS.assym.h+=-D__LIBC12_SOURCE__
 
 .if ${MKSOFTFLOAT} != "no"
 .include <softfloat/Makefile.inc>
-CPPFLAGS+= -DSOFTFLOAT_NEED_FIXUNS
+CPPFLAGS+= -DSOFTFLOAT
+
+SRCS+= fixunsgen_ieee754.c fixunssfsi_ieee754.c fixunsdfsi_ieee754.c
+SRCS+= fixunsgen64_ieee754.c #fixunssfdi.c fixunsdfdi.c
+.if (${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el") \
+    && (!defined(CPUFLAGS) || empty(CPUFLAGS:M-mabi=32))
+SRCS+= fixunstfsi_ieee754.c fixunstfdi_ieee754.c
+.endif
+.endif
+
+.if (${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el") \
+    && (!defined(CPUFLAGS) || empty(CPUFLAGS:M-mabi=32))
+SRCS+= floatunditf_ieee754.c
 .endif
index 08d2e37835f7ede8afc84596a55aff6318028e18..acaccca82e8b354e4b5369913ced60a2cc038bd0 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.32 2011/01/17 23:53:03 matt Exp $
+#      $NetBSD: Makefile.inc,v 1.33 2011/03/15 07:40:18 matt Exp $
 
 .if ${MKSOFTFLOAT} == "no"
 SRCS+= fabs.S ldexp.S modf.S
@@ -32,6 +32,8 @@ SRCS+=        makecontext.c resumecontext.c _resumecontext.S swapcontext.S _lwp.c
 # mips abi builtin extensions (used by GCC for lexical-closure trampoline)
 SRCS+= cacheflush.c
 
+CPPFLAGS._lwp.c        += -D_LIBC_SOURCE
+
 LSRCS.mips.gen=        Lint__setjmp.c Lint_bswap16.c Lint_bswap32.c Lint_swapcontext.c
 LSRCS+=                ${LSRCS.mips.gen}
 DPSRCS+=       ${LSRCS.mips.gen}
index 408240229ab2e448b4c8ac5fc371a6f44d789dd0..f987f4a1aa2de63fe66ee7a886936d1149db24ea 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:56 martin Exp $  */
+/*     $NetBSD: _lwp.c,v 1.8 2011/04/29 08:05:22 matt Exp $    */
 
 /*
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.8 2011/04/29 08:05:22 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -40,10 +40,15 @@ __RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:56 martin Exp $");
 #include <lwp.h>
 #include <stdlib.h>
 
-#define CALLFRAME_SIZ  24
+#if defined(__mips_o32) || defined(__mips_o64)
+#define CALLFRAME_SIZ  (6 * sizeof(void *))
+#else
+#define CALLFRAME_SIZ  (4 * sizeof(uint64_t))
+#endif
 
-void _lwp_makecontext(ucontext_t *u, void (*start)(void *),
-       void *arg, void *private, caddr_t stack_base, size_t stack_size)
+void
+_lwp_makecontext(ucontext_t *u, void (*start)(void *),
+       void *arg, void *tcb, caddr_t stack_base, size_t stack_size)
 {
        caddr_t sp;
        __greg_t *gr;
@@ -56,9 +61,12 @@ void _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        u->uc_stack.ss_size = stack_size;
        sp = stack_base + stack_size - CALLFRAME_SIZ;
 
-       gr[_REG_EPC] = (unsigned long) start;
-       gr[_REG_T9] = (unsigned long) start; /* required for .abicalls */
-       gr[_REG_RA] = (unsigned long) _lwp_exit;
-       gr[_REG_A0] = (unsigned long) arg;
-       gr[_REG_SP] = (unsigned long) sp;
+       gr[_REG_EPC] = (uintptr_t) start;
+       gr[_REG_T9] = (uintptr_t) start; /* required for .abicalls */
+       gr[_REG_RA] = (uintptr_t) _lwp_exit;
+       gr[_REG_A0] = (uintptr_t) arg;
+       gr[_REG_SP] = (uintptr_t) sp;
+       u->uc_mcontext._mc_tlsbase =
+           (uintptr_t)tcb + TLS_TP_OFFSET + sizeof(struct tls_tcb);
+       u->uc_flags |= _UC_TLSBASE;
 }
index 2631070f9bd6b10c71848abd9a86bc1c3bfd4d5e..a8b3e2c40227a08091e21d4e802479e855bfd420 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _resumecontext.S,v 1.6 2009/12/14 01:07:42 matt Exp $  */
+/*     $NetBSD: _resumecontext.S,v 1.7 2012/09/12 02:00:52 manu Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 #include "assym.h"
 
 #if defined(SYSLIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: _resumecontext.S,v 1.6 2009/12/14 01:07:42 matt Exp $")
+       RCSID("$NetBSD: _resumecontext.S,v 1.7 2012/09/12 02:00:52 manu Exp $")
 #endif /* SYSLIBC_SCCS && !lint */
 
        .set    reorder
@@ -53,7 +53,7 @@ LEAF_NOPROFILE(__resumecontext)
        PTR_L           a0, _OFFSETOF_UC_LINK(a0)       # linked context?
        beq             a0, zero, 1f                    #   nope, exit process
        nop
-       SYSTRAP(setcontext)                             #   yes, become it.
+       PIC_TAILCALL(setcontext)                        #   yes, become it.
        /* NOTREACHED (in theory) */
        li              a0, -1                          # failure, 
 1:
index 3d2f91fdf4d1ea083eadf96162c6e1f4e1375580..9e91ce26bd16de7b8cf1b7cbe1fb2d7d94beb5c7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _setjmp.S,v 1.22 2010/09/03 17:22:51 matt Exp $        */
+/*     $NetBSD: _setjmp.S,v 1.24 2012/07/08 00:59:34 matt Exp $        */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -46,7 +46,7 @@
 #if 0
        RCSID("from: @(#)_setjmp.s      8.1 (Berkeley) 6/4/93")
 #else
-       RCSID("$NetBSD: _setjmp.S,v 1.22 2010/09/03 17:22:51 matt Exp $")
+       RCSID("$NetBSD: _setjmp.S,v 1.24 2012/07/08 00:59:34 matt Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -88,7 +88,6 @@ LEAF(_setjmp)
         */
 #ifndef SOFTFLOAT_FOR_GCC
        cfc1    v0, $31                         # too bad cant check if FP used
-       INT_S   v0, _OFFSETOF_SC_FPREGS_FCSR(a0)
 #if defined(__mips_n64) || defined(__mips_n32)
        FP_S    $f30, _OFFSETOF_SC_FPREGS_F30(a0)
        FP_S    $f28, _OFFSETOF_SC_FPREGS_F28(a0)
@@ -109,11 +108,12 @@ LEAF(_setjmp)
        FP_S    $f29, _OFFSETOF_SC_FPREGS_F29(a0)
        FP_S    $f31, _OFFSETOF_SC_FPREGS_F31(a0)
 #endif
+       INT_S   v0, _OFFSETOF_SC_FPREGS_FCSR(a0)
 #endif /* SOFTFLOAT_FOR_GCC */
        REG_EPILOGUE
 
        j       ra
-       move    v0, zero
+        move   v0, zero
 END(_setjmp)
 
 LEAF(_longjmp)
@@ -139,11 +139,13 @@ LEAF(_longjmp)
 #if defined(__mips_n32) || defined(__mips_n64)
        REG_L           gp, _OFFSETOF_SC_REGS_GP(a0)
 #endif
+#ifndef SOFTFLOAT_FOR_GCC
        # get fpu status
+       INT_L           v0, _OFFSETOF_SC_FPREGS_FCSR(a0)
+#endif
        REG_L           sp, _OFFSETOF_SC_REGS_SP(a0)
        REG_L           s8, _OFFSETOF_SC_REGS_S8(a0)
 #ifndef SOFTFLOAT_FOR_GCC
-       INT_L           v0, _OFFSETOF_SC_FPREGS_FCSR(a0)
        ctc1            v0, $31
        /*
         * In N32, FP registers F20, F22, F24, F26, F28, F30 are callee-saved.
@@ -173,9 +175,8 @@ LEAF(_longjmp)
 #endif /* SOFTFLOAT_FOR_GCC */
 
        REG_EPILOGUE
-       move    v0, a1                  # get return value in 1st arg
        j       ra
-       nop
+        move   v0, a1                  # get return value in 1st arg
 
 botch:
        /*
@@ -183,6 +184,8 @@ botch:
         * our caller's GP.
         */
        jal     _C_LABEL(longjmperror)
+        nop
        
        PIC_TAILCALL(abort)
+        nop
 END(_longjmp)
index 45a9aefbef5cd1d454381246f31044aa03532bb2..b63b4b647600fe9793489b2810c8249276b3650a 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: cacheflush.c,v 1.4 2008/04/28 20:22:56 martin Exp $ */
+/* $NetBSD: cacheflush.c,v 1.6 2012/03/29 21:21:04 christos Exp $ */
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
 #include <mips/sysarch.h>
 
 int
-_cacheflush(addr, nbytes, whichcache)
-       void * addr;
-       int nbytes, whichcache;
+_cacheflush(void *addr, size_t nbytes, int whichcache)
 {
        struct mips_cacheflush_args cfa;
 
-       cfa.va = (vaddr_t) addr;
+       cfa.va = (vaddr_t)(intptr_t)addr;
        cfa.nbytes = nbytes;
        cfa.whichcache = whichcache;
-       return (sysarch(MIPS_CACHEFLUSH, (void *)&cfa));
+       return sysarch(MIPS_CACHEFLUSH, (void *)&cfa);
 }
index ab8a5cdcc61467df968756a0ada77d19f04884ef..0f5ac1465daf79fd40feace817a0c39b2983b36a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.6 2010/09/03 17:22:51 matt Exp $      */
+/*     $NetBSD: flt_rounds.c,v 1.7 2012/06/24 15:26:02 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.6 2010/09/03 17:22:51 matt Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.7 2012/06/24 15:26:02 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <machine/float.h>
@@ -21,7 +21,7 @@ static const int map[] = {
 };
 
 int
-__flt_rounds()
+__flt_rounds(void)
 {
 #ifdef SOFTFLOAT_FOR_GCC
        return map[fpgetround()];
index 1e62810daf254c2496928ad5caeac395c6a48553..4e950a740bcb8a7ed6c1a064454b2e223a9b4208 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpgetmask.c,v 1.8 2012/03/20 16:19:56 matt Exp $       */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetmask.c,v 1.8 2012/03/20 16:19:56 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetmask,_fpgetmask)
 #endif
 
 fp_except
-fpgetmask()
+fpgetmask(void)
 {
-       int x;
+       fp_except x;
 
        __asm("cfc1 %0,$31" : "=r" (x));
        return (x >> 7) & 0x1f;
index e05bdc82f0a0c30ee6d1700d0120ebdd12c6617f..c29e0627002cac12820c94ca20acf4a3be083114 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpgetround.c,v 1.6 2012/03/19 22:23:10 matt Exp $      */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.6 2012/03/19 22:23:10 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetround,_fpgetround)
 #endif
 
 fp_rnd
-fpgetround()
+fpgetround(void)
 {
-       int x;
+       fp_rnd x;
 
        __asm("cfc1 %0,$31" : "=r" (x));
        return x & 0x03;
index d72d234a67bd107a0ae732d59cfb37c58f740a66..408ea88e79ab52963574e2f74c65d8ec729ecd44 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: fpgetsticky.c,v 1.8 2012/03/20 16:19:56 matt Exp $     */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetsticky.c,v 1.8 2012/03/20 16:19:56 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetsticky,_fpgetsticky)
 #endif
 
 fp_except
-fpgetsticky()
+fpgetsticky(void)
 {
-       int x;
+       fp_except x;
 
        __asm("cfc1 %0,$31" : "=r" (x));
        return (x >> 2) & 0x1f;
index f3710abc75e1a5767065ed9579c47782de76c115..e1083de15ee0ee3b86ef4ec137f4f62332d8e8aa 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpsetmask.c,v 1.8 2012/03/20 16:19:56 matt Exp $       */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetmask.c,v 1.8 2012/03/20 16:19:56 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,16 +19,14 @@ __weak_alias(fpsetmask,_fpsetmask)
 #endif
 
 fp_except
-fpsetmask(mask)
-       fp_except mask;
+fpsetmask(fp_except mask)
 {
        fp_except old;
        fp_except new;
 
        __asm("cfc1 %0,$31" : "=r" (old));
 
-       new = old;
-       new &= ~(0x1f << 7); 
+       new = old & ~(0x1f << 7); 
        new |= ((mask & 0x1f) << 7);
 
        __asm("ctc1 %0,$31" : : "r" (new));
index 7741b8401fcfaed15243bc3374cfb0c0b34729a2..43c5dd013f5324dbf71243471c90bc07437b01fc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpsetround.c,v 1.6 2012/03/19 22:23:10 matt Exp $      */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.6 2012/03/19 22:23:10 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,17 +19,15 @@ __weak_alias(fpsetround,_fpsetround)
 #endif
 
 fp_rnd
-fpsetround(rnd_dir)
-       fp_rnd rnd_dir;
+fpsetround(fp_rnd rnd_dir)
 {
        fp_rnd old;
        fp_rnd new;
 
        __asm("cfc1 %0,$31" : "=r" (old));
 
-       new = old;
-       new &= ~0x03;
-       new |= (rnd_dir & 0x03);
+       new = old & ~0x03;
+       new |= rnd_dir & 0x03;
 
        __asm("ctc1 %0,$31" : : "r" (new));
 
index c86f59511021eb4aa8c77b303d96e9869ebe9c2c..823e4880bca49a78039fea99e6dec74841951ce3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: fpsetsticky.c,v 1.8 2012/03/20 16:19:56 matt Exp $     */
 
 /*
  * Written by J.T. Conklin, Apr 11, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetsticky.c,v 1.8 2012/03/20 16:19:56 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,17 +19,15 @@ __weak_alias(fpsetsticky,_fpsetsticky)
 #endif
 
 fp_except
-fpsetsticky(sticky)
-       fp_except sticky;
+fpsetsticky(fp_except sticky)
 {
        fp_except old;
        fp_except new;
 
        __asm("cfc1 %0,$31" : "=r" (old));
 
-       new = old;
-       new &= ~(0x1f << 2); 
-       new |= ((sticky & 0x1f) << 2);
+       new = old & ~(0x1f << 2); 
+       new |= (sticky & 0x1f) << 2;
 
        __asm("ctc1 %0,$31" : : "r" (new));
 
index 8a7072137de3374c3b0c927eb01510ca4ad99d88..547fd399f69325b02b8726cb828e5c1daa20b04f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: longjmp.c,v 1.4 2010/09/03 17:22:51 matt Exp $ */
+/*     $NetBSD: longjmp.c,v 1.5 2012/03/29 19:27:05 christos Exp $     */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -49,7 +49,7 @@ __longjmp14(jmp_buf env, int val)
        ucontext_t uc;
 
        /* Ensure non-zero SP and sigcontext magic number is present */
-       if (sc->sc_regs[_R_SP] == 0 || sc->sc_regs[_R_ZERO] != (mips_reg_t)0xACEDBADE)
+       if (sc->sc_regs[_R_SP] == 0 || sc->sc_regs[_R_ZERO] != (mips_reg_t)0xACEDBADEU)
                goto err;
 
        /* Ensure non-zero return value */
index 7aa42984f2c4562df2b7e108d1a5569b48ef0a0e..932f071d563356d92220504232564614be1ad306 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: makecontext.c,v 1.5 2009/12/14 01:07:42 matt Exp $     */
+/*     $NetBSD: makecontext.c,v 1.7 2011/09/20 08:42:29 joerg Exp $    */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: makecontext.c,v 1.5 2009/12/14 01:07:42 matt Exp $");
+__RCSID("$NetBSD: makecontext.c,v 1.7 2011/09/20 08:42:29 joerg Exp $");
 #endif
 
 #include <inttypes.h>
@@ -41,6 +41,8 @@ __RCSID("$NetBSD: makecontext.c,v 1.5 2009/12/14 01:07:42 matt Exp $");
 
 #include <stdarg.h>
 
+void __resumecontext(void) __dead;
+
 void
 makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
 {
@@ -49,8 +51,6 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        int i;
        va_list ap;
 
-       void __resumecontext(void);
-
        /* LINTED uintptr_t is safe */
        sp  = (__greg_t *)
            ((uintptr_t)ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
index 08362ec2e49d9b5eb5b79b520e9e4874873046d4..66781b68fbf276e735dc84d7d707303697d5fa3b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:56 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:57 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:57 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:56 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index 9f19534e7aa9e58567fe0c1487912da3ec1d013a..e2aff9d395c691ea6630f342e0657e2137feada4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.4 2009/12/14 01:07:42 matt Exp $     */
+/*     $NetBSD: swapcontext.S,v 1.5 2012/09/12 02:00:52 manu Exp $     */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 #include "assym.h"
 
 #if defined(SYSLIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: swapcontext.S,v 1.4 2009/12/14 01:07:42 matt Exp $")
+       RCSID("$NetBSD: swapcontext.S,v 1.5 2012/09/12 02:00:52 manu Exp $")
 #endif /* SYSLIBC_SCCS && !lint */
 
        .set    reorder
@@ -57,7 +57,7 @@ NESTED(swapcontext, CALLFRAME_SIZ, ra)
        REG_S           v0, _OFFSETOF_UC_GREGS_SP(v1)
        REG_EPILOGUE
 
-       SYSTRAP(setcontext)
+       PIC_TAILCALL(setcontext)
        /* NOTREACHED */
 1:
        PTR_ADDU        sp, sp, CALLFRAME_SIZ
index 6ed3c22ebe0419de22e45d25b3e2e0fc04796f57..3649246146993eaa59ece7a8ef45cb5c4a4d2469 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: mips-gcc.h,v 1.2 2009/12/14 01:07:42 matt Exp $ */
+/* $NetBSD: mips-gcc.h,v 1.5 2011/06/27 06:40:26 matt Exp $ */
 
 /*
 -------------------------------------------------------------------------------
@@ -85,7 +85,7 @@ to be `static'.
 
 /*
 -------------------------------------------------------------------------------
-The ARM FPA is odd in that it stores doubles high-order word first, no matter
+The MIPS FPA is odd in that it stores doubles high-order word first, no matter
 what the endianness of the CPU.  VFP is sane.
 -------------------------------------------------------------------------------
 */
index ab2ae0569b17f8b9274689b2e6f547fd5ecc4902..c731604e747a498bae1ca54f60f3728dcb61f3aa 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: softfloat.h,v 1.3 2011/01/17 23:53:04 matt Exp $       */
+/*     $NetBSD: softfloat.h,v 1.5 2011/07/07 07:14:57 matt Exp $       */
 
 /* This is a derivative work. */
 
@@ -86,12 +86,10 @@ Software IEC/IEEE floating-point rounding mode.
 -------------------------------------------------------------------------------
 */
 extern fp_rnd float_rounding_mode;
-enum {
-    float_round_nearest_even = FP_RN,
-    float_round_to_zero      = FP_RZ,
-    float_round_down         = FP_RM,
-    float_round_up           = FP_RP
-};
+#define float_round_nearest_even       FP_RN
+#define float_round_to_zero            FP_RZ
+#define float_round_down               FP_RM
+#define float_round_up                 FP_RP
 
 /*
 -------------------------------------------------------------------------------
@@ -121,13 +119,17 @@ void float_raise( fp_except );
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */
 float32 int64_to_float32( long long );
index 059c3d31345094c48a0501d3e945a5399e11e7db..e3bd675eddfe3496319297f5546f8e77e8c52967 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: cerror.S,v 1.16 2011/01/17 23:34:44 matt Exp $ */
+/*     $NetBSD: cerror.S,v 1.18 2012/02/27 14:48:34 tsutsui Exp $      */
 
 /*-
  * Copyright (c) 1991, 1993
 #if 0
        RCSID("from: @(#)cerror.s       8.1 (Berkeley) 6/16/93")
 #else
-       RCSID("$NetBSD: cerror.S,v 1.16 2011/01/17 23:34:44 matt Exp $")
+       RCSID("$NetBSD: cerror.S,v 1.18 2012/02/27 14:48:34 tsutsui Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
 #ifdef PIC
-       .hidden __cerror
+       .protected      __cerror
 #endif
 
 #ifdef _REENTRANT
index a0d17995ea1eba8f8f0e4fc2fe080ee05388bc1d..01b8533aaa1b712f0c76a97b34ab8f0697c367c9 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.24 2009/12/06 07:12:17 uebayasi Exp $
+#      $NetBSD: Makefile.inc,v 1.25 2011/03/12 07:55:09 matt Exp $
 
 SRCS+= __setjmp14.S __sigsetjmp14.S _setjmp.S
 SRCS+= bswap16.c bswap32.c bswap64.c
@@ -21,6 +21,8 @@ SRCS+=        fpgetround.c fpsetround.c fpgetmask.c fpsetmask.c
 SRCS+= fpgetsticky.c fpsetsticky.c
 .endif
 
+CPPFLAGS._lwp.c        += -D_LIBC_SOURCE
+
 LSRCS.powerpc.gen=Lint_swapcontext.c
 LSRCS+=                ${LSRCS.powerpc.gen}
 DPSRCS+=       ${LSRCS.powerpc.gen}
index 4a55970376641994aa836862b134dfb77be83c07..f2e914e4e1f149652876e479e29740da387004a9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.4 2005/06/12 05:21:26 lukem Exp $   */
+/*     $NetBSD: _lwp.c,v 1.7 2012/03/22 05:36:50 matt Exp $    */
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.4 2005/06/12 05:21:26 lukem Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.7 2012/03/22 05:36:50 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
+#include <sys/param.h>
 #include <sys/types.h>
 #include <ucontext.h>
 #include <lwp.h>
@@ -48,9 +49,9 @@ __RCSID("$NetBSD: _lwp.c,v 1.4 2005/06/12 05:21:26 lukem Exp $");
 
 void
 _lwp_makecontext(ucontext_t *u, void (*start)(void *), void *arg,
-       void *private, caddr_t stack_base, size_t stack_size)
+       void *tcb, caddr_t stack_base, size_t stack_size)
 {
-       void    **sp;
+       uintptr_t sp;
 
        getcontext(u);
        u->uc_link = NULL;
@@ -58,10 +59,14 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *), void *arg,
        u->uc_stack.ss_sp = stack_base;
        u->uc_stack.ss_size = stack_size;
 
-       sp = (void **) (stack_base + stack_size);
+       sp = (uintptr_t)stack_base + stack_size;
+       sp -= STACK_ALIGNBYTES + 1;
+       sp &= ~STACK_ALIGNBYTES;
 
-       u->uc_mcontext.__gregs[3] = (int) arg;          /* arg1 */
-       u->uc_mcontext.__gregs[1] = ((int) sp) - 12;    /* stack */
-       u->uc_mcontext.__gregs[33] = (int) _lwp_exit;   /* LR */
-       u->uc_mcontext.__gregs[34] = (int) start;       /* PC */
+       u->uc_mcontext.__gregs[3] = (uintptr_t) arg;            /* arg1 */
+       u->uc_mcontext.__gregs[1] = sp;                         /* stack */
+       u->uc_mcontext.__gregs[33] = (uintptr_t) _lwp_exit;     /* LR */
+       u->uc_mcontext.__gregs[34] = (uintptr_t) start;         /* PC */
+       u->uc_mcontext.__gregs[_REG_R2] =
+           (uintptr_t)tcb + TLS_TP_OFFSET + sizeof(struct tls_tcb);
 }
index d0b14f40d682b1a3a080fb784e315ec8b8d917d1..4a03e7cecb08dad3f8c6c0ddce4240d9b0ee0506 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.10 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: flt_rounds.c,v 1.11 2011/07/10 21:18:47 matt Exp $     */
 
 /*
  * Copyright (c) 1996 Mark Brinicombe
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.10 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.11 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <ieeefp.h>
@@ -54,9 +54,12 @@ __flt_rounds(void)
 #ifdef _SOFT_FLOAT
        return map[fpgetround()];
 #else
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       return map[((uint32_t)fpscr & FPSCR_RN)];
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       return map[((uint32_t)ud.u_fpscr & FPSCR_RN)];
 #endif
 }
index 278411b49a7625b4b505410e53032e0a2d4393c0..6bc3f91cf1ca8f03f1ed9b59a1a22c6a098571ca 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetmask.c,v 1.9 2008/04/28 20:22:56 martin Exp $     */
+/*     $NetBSD: fpgetmask.c,v 1.10 2011/07/10 21:18:47 matt Exp $      */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetmask.c,v 1.9 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: fpgetmask.c,v 1.10 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -50,8 +50,11 @@ __weak_alias(fpgetmask,_fpgetmask)
 fp_except
 fpgetmask(void)
 {
-       uint64_t fpscr;
+       union {
+               double  u_d;
+               uint64_t u_fpscr;
+       } ud;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       return (((uint32_t)fpscr & MASKBITS) >> MASKSHFT);
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       return (((uint32_t)ud.u_fpscr & MASKBITS) >> MASKSHFT);
 }
index 65c19eb80eddbb06d42e78af97e4faaebd03dcae..58cfe030ffa2f16054123228e30214d9f1b97ef5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetround.c,v 1.9 2008/04/28 20:22:56 martin Exp $    */
+/*     $NetBSD: fpgetround.c,v 1.10 2011/07/10 21:18:47 matt Exp $     */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.9 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.10 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -50,8 +50,11 @@ __weak_alias(fpgetround,_fpgetround)
 fp_rnd
 fpgetround(void)
 {
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       return (((uint32_t)fpscr & ROUNDBITS) >> ROUNDSHFT);
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       return (((uint32_t)ud.u_fpscr & ROUNDBITS) >> ROUNDSHFT);
 }
index 7fba344c9897ecadc8fc450e211717955000e645..079acc0c0963081978cb50f625c8b4a62feeab85 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetsticky.c,v 1.9 2008/04/28 20:22:56 martin Exp $   */
+/*     $NetBSD: fpgetsticky.c,v 1.10 2011/07/10 21:18:47 matt Exp $    */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetsticky.c,v 1.9 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: fpgetsticky.c,v 1.10 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -50,8 +50,11 @@ __weak_alias(fpgetsticky,_fpgetsticky)
 fp_except
 fpgetsticky(void)
 {
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       return (((uint32_t)fpscr & STICKYBITS) >> STICKYSHFT);
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       return (((uint32_t)ud.u_fpscr & STICKYBITS) >> STICKYSHFT);
 }
index 8e6f07939e5560250ab65d803102aaef3f1824c3..ef298c5913bbc38427445c420bfea5fc5f879671 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetmask.c,v 1.9 2008/04/28 20:22:56 martin Exp $     */
+/*     $NetBSD: fpsetmask.c,v 1.10 2011/07/10 21:18:47 matt Exp $      */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetmask.c,v 1.9 2008/04/28 20:22:56 martin Exp $");
+__RCSID("$NetBSD: fpsetmask.c,v 1.10 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -50,13 +50,16 @@ __weak_alias(fpsetmask,_fpsetmask)
 fp_except
 fpsetmask(fp_except mask)
 {
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
        fp_except old;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       old = ((uint32_t)fpscr & MASKBITS) >> MASKSHFT;
-       fpscr &= ~MASKBITS;
-       fpscr |= ((uint32_t)mask << MASKSHFT) & MASKBITS;
-       __asm volatile("mtfsf 0xff,%0" :: "f"(fpscr));
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       old = ((uint32_t)ud.u_fpscr & MASKBITS) >> MASKSHFT;
+       ud.u_fpscr &= ~MASKBITS;
+       ud.u_fpscr |= ((uint32_t)mask << MASKSHFT) & MASKBITS;
+       __asm volatile("mtfsf 0xff,%0" :: "f"(ud.u_d));
        return (old);
 }
index d451241046f4eb963c7707f49c8603351d2e3da4..c2ed35eaa6712c156fff51bfbc10e690b0f329ab 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetround.c,v 1.9 2008/04/28 20:22:57 martin Exp $    */
+/*     $NetBSD: fpsetround.c,v 1.10 2011/07/10 21:18:47 matt Exp $     */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.9 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.10 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -49,13 +49,16 @@ __weak_alias(fpsetround,_fpsetround)
 fp_rnd
 fpsetround(fp_rnd rnd_dir)
 {
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
        fp_rnd old;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       old = (uint32_t)fpscr & ROUNDBITS;
-       fpscr &= ~ROUNDBITS;
-       fpscr |= rnd_dir & ROUNDBITS;
-       __asm volatile("mtfsf 0xff,%0" :: "f"(fpscr));
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       old = (uint32_t)ud.u_fpscr & ROUNDBITS;
+       ud.u_fpscr &= ~ROUNDBITS;
+       ud.u_fpscr |= rnd_dir & ROUNDBITS;
+       __asm volatile("mtfsf 0xff,%0" :: "f"(ud.u_d));
        return (old);
 }
index 2ce3f7d4580a74da9b1dc68b0a2f33a3e5404826..71df9c058dc507c76c6650c7d33549e5856b4c5c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetsticky.c,v 1.10 2008/04/28 20:22:57 martin Exp $  */
+/*     $NetBSD: fpsetsticky.c,v 1.11 2011/07/10 21:18:47 matt Exp $    */
 
 /*
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetsticky.c,v 1.10 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: fpsetsticky.c,v 1.11 2011/07/10 21:18:47 matt Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -53,32 +53,35 @@ __weak_alias(fpsetsticky,_fpsetsticky)
 fp_except
 fpsetsticky(fp_except mask)
 {
-       uint64_t fpscr;
+       union {
+               double u_d;
+               uint64_t u_fpscr;
+       } ud;
        fp_except old;
 
-       __asm volatile("mffs %0" : "=f"(fpscr));
-       old = ((uint32_t)fpscr & STICKYBITS) >> STICKYSHFT;
+       __asm volatile("mffs %0" : "=f"(ud.u_d));
+       old = ((uint32_t)ud.u_fpscr & STICKYBITS) >> STICKYSHFT;
        /*
         * FPSCR_VX (aka FP_X_INV) is not a sticky bit but a summary of the
         * all the FPSCR_VX* sticky bits.  So when FP_X_INV is cleared then
         * clear all of those bits, likewise when it's set, set them all.
         */
        if ((mask & FP_X_INV) == 0)
-               fpscr &= ~INVBITS;
+               ud.u_fpscr &= ~INVBITS;
        else 
-               fpscr |= INVBITS;
-       fpscr &= ~STICKYBITS;
-       fpscr |= ((uint32_t)mask << STICKYSHFT) & STICKYBITS;
+               ud.u_fpscr |= INVBITS;
+       ud.u_fpscr &= ~STICKYBITS;
+       ud.u_fpscr |= ((uint32_t)mask << STICKYSHFT) & STICKYBITS;
        /*
         * Make FPSCR_FX reflect the presence of a set sticky bit (or not).
         */
-       if (fpscr & (STICKYBITS|INVBITS))
-               fpscr |= FPSCR_FX;
+       if (ud.u_fpscr & (STICKYBITS|INVBITS))
+               ud.u_fpscr |= FPSCR_FX;
        else
-               fpscr &= ~FPSCR_FX;
+               ud.u_fpscr &= ~FPSCR_FX;
        /*
         * Write back the fpscr.
         */
-       __asm volatile("mtfsf 0xff,%0" :: "f"(fpscr));
+       __asm volatile("mtfsf 0xff,%0" :: "f"(ud.u_d));
        return (old);
 }
index 1a7c4c55f4097d4a86a246b159d416bebc8f8fee..57d68fdf8eb3f5b445e75f831f059de8ebb281b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index d9c095b2c86ddf51ea18fa19dc0507ca743ec8fe..dfb038ab8788762170d264f5fcae037bf4f988eb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: softfloat.h,v 1.5 2006/05/16 20:55:51 mrg Exp $        */
+/*     $NetBSD: softfloat.h,v 1.7 2011/07/07 07:14:57 matt Exp $       */
 
 /* This is a derivative work. */
 
@@ -84,12 +84,10 @@ Software IEC/IEEE floating-point rounding mode.
 -------------------------------------------------------------------------------
 */
 extern fp_rnd float_rounding_mode;
-enum {
-    float_round_nearest_even = FP_RN,
-    float_round_to_zero      = FP_RZ,
-    float_round_down         = FP_RM,
-    float_round_up           = FP_RP
-};
+#define float_round_nearest_even       FP_RN
+#define float_round_to_zero            FP_RZ
+#define float_round_down               FP_RM
+#define float_round_up                 FP_RP
 
 /*
 -------------------------------------------------------------------------------
@@ -119,13 +117,17 @@ void float_raise( fp_except );
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );
index 3e441e1bd9265c41f9ba43ab1dfa5ba6df6045d6..d04d4a130d8db3532db47c13ac7df8c6b738d62c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bzero.S,v 1.10 2011/01/19 02:47:01 matt Exp $ */
+/*     $NetBSD: bzero.S,v 1.11 2011/01/29 02:21:20 matt Exp $ */
 
 /*-
  * Copyright (C) 2001  Martin J. Laubach <mjl@NetBSD.org>
@@ -32,7 +32,7 @@
 
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: bzero.S,v 1.10 2011/01/19 02:47:01 matt Exp $")
+__RCSID("$NetBSD: bzero.S,v 1.11 2011/01/29 02:21:20 matt Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 #ifdef _KERNEL
@@ -60,10 +60,10 @@ ENTRY(bzero)
 END(bzero)
 
 ENTRY(memset)
-               cmplwi  cr1, %r5, 0
+               cmplwi  %cr1, %r5, 0
                mr.     %r0, %r4
                mr      %r8, %r3
-               beqlr-  cr1                     /* Nothing to do */
+               beqlr-  %cr1                    /* Nothing to do */
 
                rlwimi  %r0, %r4, 8, 16, 23     /* word extend fill value */
                rlwimi  %r0, %r0, 16, 0, 15
@@ -167,8 +167,8 @@ cb_memset:
                lwz     %r30, R30_SAVE(%r1)
 #endif
                addi    %r1, %r1, STKFRAME_SZ
-               lwz     %r0, 4(%r1)
-               mtlr    %r0
+               lwz     %r7, 4(%r1)
+               mtlr    %r7
 
                cntlzw  %r6, %r9                        /* compute shift value */
                li      %r5, 31
@@ -213,10 +213,10 @@ cb_cacheline_known:
 #endif /* _KERNEL */
                /* Back in memory filling business */
                
-               cmplwi  cr1, r_len, 0           /* Nothing to do? */
+               cmplwi  %cr1, r_len, 0          /* Nothing to do? */
                add     %r5, %r9, %r9
                cmplw   r_len, %r5              /* <= 2*CL bytes to move? */
-               beqlr-  cr1                     /* then do nothing */
+               beqlr-  %cr1                    /* then do nothing */
 
                blt+    simple_fill             /* a trivial fill routine */
 
@@ -277,9 +277,9 @@ cb_aligned_cb:      /* no need to check r_len, see above */
                bdnz    1b
 
 cblocks_done:  /* still CL aligned, but less than CL bytes left */
-               cmplwi  cr1, r_len, 0
+               cmplwi  %cr1, r_len, 0
                cmplwi  r_len, 8
-               beq-    cr1, sf_return
+               beq-    %cr1, sf_return
 
                blt-    sf_bytewise             /* <8 remaining? */
                b       sf_aligned_w
@@ -292,12 +292,12 @@ wbzero:           li      r_val, 0
 
 simple_fill:
 #if USE_STSWX
-               cmplwi  cr1, r_len, 12          /* < 12 bytes to move? */
+               cmplwi  %cr1, r_len, 12         /* < 12 bytes to move? */
 #else
-               cmplwi  cr1, r_len, 8           /* < 8 bytes to move? */
+               cmplwi  %cr1, r_len, 8          /* < 8 bytes to move? */
 #endif
                andi.   %r5, r_dst, 0x03                /* bytes to fill to align4 */
-               blt     cr1, sf_bytewise        /* trivial byte mover */
+               blt     %cr1, sf_bytewise       /* trivial byte mover */
 
                li      %r6, 4
                subf    %r5, %r5, %r6
index 9e86f75ed83c13c6a06426b1aec4e552a541c2d7..e273e996b03e5fff6af35c1e132ff3ee9f300eb4 100644 (file)
@@ -1,17 +1,17 @@
-/*     $NetBSD: cerror.S,v 1.8 2011/01/16 02:43:10 matt Exp $  */
+/*     $NetBSD: cerror.S,v 1.10 2012/02/27 15:47:11 matt Exp $ */
 
 #include "SYS.h"
 #include "assym.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: cerror.S,v 1.8 2011/01/16 02:43:10 matt Exp $")
+__RCSID("$NetBSD: cerror.S,v 1.10 2012/02/27 15:47:11 matt Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 #ifndef _REENTRANT
        .globl  _C_LABEL(errno)
 #endif
 #ifdef PIC
-       .hidden _C_LABEL(__cerror)
+       .protected _C_LABEL(__cerror)
 #endif
 
 ENTRY(__cerror)
index 7baafea1e828c93477a5c229e556b2864e15b73e..f604739da1099ec557fc7b1636da3851329a896d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index a3d7b9c77fc8f359bf35459d994aa8a403fee4c3..d170b0f67bb007843c2fcce2ca718ab2c6fe0fa4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $   */
+/*     $NetBSD: swapcontext.S,v 1.4 2012/09/12 02:00:52 manu Exp $     */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 
 #if defined(LIBC_SCCS) && !defined(lint)
        .text
-       .asciz "$NetBSD: swapcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $"
+       .asciz "$NetBSD: swapcontext.S,v 1.4 2012/09/12 02:00:52 manu Exp $"
 #endif /* LIBC_SCCS && !lint */
 
 ENTRY(swapcontext)
@@ -52,8 +52,8 @@ ENTRY(swapcontext)
        std     %r0,mc_off+34*8(%r11)   #       pc <- lr
        la      %r0,16(%r1)
        std     %r0,mc_off+1*8(%r11)            # adjust sp
-       ld      %r3,SF_PARAM+8(%r1)                     # load ucp
-       bl      .setcontext                     # setcontext(ucp)
+       ld      %r3,SF_PARAM+8(%r1)             # load ucp
+       bl      PIC_PLT(_C_LABEL(setcontext))   # setcontext(ucp)
        nop
 1:
        ld      %r0,SF_SZ+SF_LR(%r1)
index 6eb574d1bb5256062da4615d7923af60f2b3cbb2..81d8868dd44fc822fb1f520d0784662a70f62de5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: brk.S,v 1.3 2006/07/07 06:50:06 ross Exp $     */
+/*     $NetBSD: brk.S,v 1.4 2011/10/29 16:03:33 christos Exp $ */
 
 #include "SYS.h"
 
@@ -37,4 +37,5 @@ ENTRY(_brk)
        blr                             # return 0
 
 1:
-       b       .__cerror
+       b       PIC_PLT(_C_LABEL(__cerror))
+
index e360b691dfd9ebeb854a776a35c9644d2dac1e55..24ca1355980ad717128309d213e85ce109c0549e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: cerror.S,v 1.1 2006/07/01 16:37:20 ross Exp $  */
+/*     $NetBSD: cerror.S,v 1.4 2012/02/27 15:47:11 matt Exp $  */
 
 #include <machine/asm.h>
 #include "SYS.h"
@@ -6,6 +6,9 @@
 #ifndef _REENTRANT
        .globl  _C_LABEL(errno)
 #endif
+#ifdef PIC
+       .protected _C_LABEL(__cerror)
+#endif
 
 ENTRY(__cerror)
 #ifdef _REENTRANT
index a718dc529022045e473e1fd907b0226fbd559b2a..e5729ba00a09e63395484e3b2399bf170eeea764 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: getcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $    */
+/*     $NetBSD: getcontext.S,v 1.4 2011/10/29 16:03:33 christos Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        .text
-       .asciz "$NetBSD: getcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $"
+       .asciz "$NetBSD: getcontext.S,v 1.4 2011/10/29 16:03:33 christos Exp $"
 #endif /* SYSLIBC_SCCS && !lint */
 
 #ifdef WEAK_ALIAS
@@ -50,4 +50,4 @@ ENTRY(_getcontext)
        stw     %r3,(48 +  3 * 4)(%r5)          # arrange for return value 0
        blr
 1:
-       b       .__cerror
+       b       PIC_PLT(_C_LABEL(__cerror))
index 91e856cc109011a69d3066839fa986216df574ce..c38fcfe33e2558e8dacac51d6f7896520728708f 100644 (file)
  * SUCH DAMAGE.
  *
  *     from: @(#)SYS.h 5.5 (Berkeley) 5/7/91
- *     $NetBSD: SYS.h,v 1.9 2006/01/06 06:19:20 uwe Exp $
+ *     $NetBSD: SYS.h,v 1.10 2011/01/23 14:08:53 joerg Exp $
  */
 
 #include <machine/asm.h>
 #include <sys/syscall.h>
 
 #ifdef __STDC__
+#define        IMMEDIATE       #
 #define SYSTRAP(x)                                     \
                mov.l   903f, r0;                       \
-               .long   0xc380; /* trapa #0x80 */       \
+               trapa   IMMEDIATE 0x80;                 \
                bra     904f;                           \
                 nop;                                   \
                .align  2;                              \
index 84d16472c13a847734020370a7423b4fd29543ae..3f40e331deff3c56ec9ec3e485a5dce9d6be1cd4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.4 2005/06/12 05:21:26 lukem Exp $   */
+/*     $NetBSD: _lwp.c,v 1.6 2012/03/22 09:32:04 he Exp $      */
 
 /*
  * Copyright (c) 2002 Wasabi Systems, Inc.
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.4 2005/06/12 05:21:26 lukem Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.6 2012/03/22 09:32:04 he Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -50,7 +50,7 @@ void
 _lwp_makecontext(ucontext_t *u, void (*start)(void *),
     void *arg, void *private, caddr_t stack_base, size_t stack_size)
 {
-       void **sp;
+       uintptr_t sp;
 
        getcontext(u);
        u->uc_link = NULL;
@@ -58,10 +58,11 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        u->uc_stack.ss_sp = stack_base;
        u->uc_stack.ss_size = stack_size;
 
-       sp = (void **) (stack_base + stack_size);
+       sp = (uintptr_t)stack_base + stack_size;
 
        u->uc_mcontext.__gregs[_REG_R4] = (__greg_t) arg;
        u->uc_mcontext.__gregs[_REG_SP] = ((__greg_t) sp) & ~3;
        u->uc_mcontext.__gregs[_REG_PR] = (__greg_t) _lwp_exit;
        u->uc_mcontext.__gregs[_REG_PC] = (__greg_t) start;
+       u->uc_mcontext.__gregs[_REG_GBR] = (__greg_t) private;
 }
index 936d8f4c48dba69fea24045e2088b4b2b86b9073..41caa5455922e22decb3f635dbfd8eb831523d94 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.4 2007/01/17 23:24:22 hubertf Exp $   */
+/*     $NetBSD: flt_rounds.c,v 1.5 2012/03/22 08:58:39 he Exp $        */
 
 /*
  * Copyright (c) 1996 Mark Brinicombe
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.4 2007/01/17 23:24:22 hubertf Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.5 2012/03/22 08:58:39 he Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -75,7 +75,7 @@ static const int map[] = {
 extern int __flt_rounds __P((void));
 
 int
-__flt_rounds()
+__flt_rounds(void)
 {
        return(map[fpgetround()]);
 }
index 1a7c4c55f4097d4a86a246b159d416bebc8f8fee..57d68fdf8eb3f5b445e75f831f059de8ebb281b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index a1f9b1ab8320bc7fdbc1d02adcff7eedad8dd0db..b6d3936e4a7c59263e5a436e0886cb99edb207f2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: softfloat.h,v 1.9 2006/05/16 20:55:51 mrg Exp $        */
+/*     $NetBSD: softfloat.h,v 1.11 2011/07/07 07:14:57 matt Exp $      */
 
 /* This is a derivative work. */
 
@@ -84,12 +84,10 @@ Software IEC/IEEE floating-point rounding mode.
 -------------------------------------------------------------------------------
 */
 extern fp_rnd float_rounding_mode;
-enum {
-    float_round_nearest_even = FP_RN,
-    float_round_to_zero      = FP_RZ,
-    float_round_down         = FP_RM,
-    float_round_up           = FP_RP
-};
+#define float_round_nearest_even FP_RN
+#define float_round_to_zero      FP_RZ
+#define float_round_down         FP_RM
+#define float_round_up           FP_RP
 
 /*
 -------------------------------------------------------------------------------
@@ -119,13 +117,17 @@ void float_raise( fp_except );
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 #ifndef SOFTFLOAT_FOR_GCC /* __floatdi?f is in libgcc2.c */
 float32 int64_to_float32( long long );
index cc99fbeb28fce55bbf3c3450ee9a5359d833718c..cf8f58094e7371a7dfbf7fbadb6d2ad1da756028 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.inc,v 1.13 2008/10/26 07:43:07 mrg Exp $
+#      $NetBSD: Makefile.inc,v 1.14 2011/04/12 03:35:47 mrg Exp $
 
 SRCS+= __sigaction14_sigtramp.c __sigtramp2.S
 
@@ -9,24 +9,28 @@ CLEANFILES+=rem.S sdiv.S udiv.S urem.S
 
 sdiv.S: ${LIBCDIR}/arch/sparc/gen/divrem.m4
        @echo 'building ${.TARGET} from ${.ALLSRC}'
+       @rm -f ${.TARGET}
        @(echo "define(NAME,\`.div')define(OP,\`div')define(S,\`true')"; \
         cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
        @chmod 444 ${.TARGET}
 
 udiv.S: ${LIBCDIR}/arch/sparc/gen/divrem.m4
        @echo 'building ${.TARGET} from ${.ALLSRC}'
+       @rm -f ${.TARGET}
        @(echo "define(NAME,\`.udiv')define(OP,\`div')define(S,\`false')"; \
         cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
        @chmod 444 ${.TARGET}
 
 rem.S: ${LIBCDIR}/arch/sparc/gen/divrem.m4
        @echo 'building ${.TARGET} from ${.ALLSRC}'
+       @rm -f ${.TARGET}
        @(echo "define(NAME,\`.rem')define(OP,\`rem')define(S,\`true')"; \
         cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
        @chmod 444 ${.TARGET}
 
 urem.S: ${LIBCDIR}/arch/sparc/gen/divrem.m4
        @echo 'building ${.TARGET} from ${.ALLSRC}'
+       @rm -f ${.TARGET}
        @(echo "define(NAME,\`.urem')define(OP,\`rem')define(S,\`false')"; \
         cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
        @chmod 444 ${.TARGET}
index 5f8f3a46910c3b60648d544945683ea196708527..12bc4f807875dbc6af2313d394aa8b567c722e57 100644 (file)
@@ -33,7 +33,7 @@
  *     @(#)SYS.h       8.1 (Berkeley) 6/4/93
  *
  *     from: Header: SYS.h,v 1.2 92/07/03 18:57:00 torek Exp
- *     $NetBSD: SYS.h,v 1.17 2007/10/08 13:06:00 uwe Exp $
+ *     $NetBSD: SYS.h,v 1.18 2011/03/28 11:19:12 martin Exp $
  */
 
 #include <machine/asm.h>
  */
 #ifdef PIC
 #define CALL(name)                             \
-       PIC_PROLOGUE(%g1, %g2);                 \
-       set     name, %g2;                      \
-       ld      [%g1 + %g2], %g2;               \
-       jmp     %g2;                            \
+       PIC_PROLOGUE(%g1, %g5);                 \
+       set     name, %g5;                      \
+       ld      [%g1 + %g5], %g5;               \
+       jmp     %g5;                            \
         nop
 #else
 #define        CALL(name)                              \
@@ -91,15 +91,15 @@ ENTRY(x);                                   \
 
 /*
  * RSYSCALL is used when the system call should just return.  Here we
- * use the SYSCALL_G2RFLAG to put the `success' return address in %g2
+ * use the SYSCALL_G5RFLAG to put the `success' return address in %g5
  * and avoid a branch.
  *
  * PSEUDO(x,y) is like RSYSCALL(y), except that the name is x.
  */
 #define        _RSYSCALL(x,y)                                  \
 ENTRY(x);                                              \
-       mov     (_CAT(SYS_,y)) | SYSCALL_G2RFLAG, %g1;  \
-       add     %o7, 8, %g2;                            \
+       mov     (_CAT(SYS_,y)) | SYSCALL_G5RFLAG, %g1;  \
+       add     %o7, 8, %g5;                            \
        t       ST_SYSCALL;                             \
        ERROR()
 
@@ -141,8 +141,8 @@ ENTRY(x);                                   \
  */
 #define _RSYSCALL_NOERROR(x,y)                         \
 ENTRY(x);                                              \
-       mov     (_CAT(SYS_,y)) | SYSCALL_G2RFLAG, %g1;  \
-       add     %o7, 8, %g2;                            \
+       mov     (_CAT(SYS_,y)) | SYSCALL_G5RFLAG, %g1;  \
+       add     %o7, 8, %g5;                            \
        t       ST_SYSCALL
 
 #define RSYSCALL_NOERROR(x)    _RSYSCALL_NOERROR(x,x)
index a8a91e8d65e6366591bb42d35de90e49948eda03..90450bd0d8fa2c93bab95b995073da06bf4d8598 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:57 martin Exp $  */
+/*     $NetBSD: _lwp.c,v 1.7 2012/03/21 00:34:04 christos Exp $        */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.7 2012/03/21 00:34:04 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -53,7 +53,7 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *), void *arg,
        u->uc_stack.ss_size = stack_size;
 
 
-       sp = (ulong *)(stack_base + stack_size);
+       sp = (void *)(stack_base + stack_size);
        sp = (ulong *)((ulong)sp & ~0x07);
 
        /* Make room for the fake caller stack frame (CCFSZ, only in words) */
@@ -65,6 +65,7 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *), void *arg,
        gr[_REG_O0] = (ulong)arg;
        gr[_REG_O6] = (ulong)sp;
        gr[_REG_O7] = (ulong)_lwp_exit - 8;
+       gr[_REG_G7] = (ulong)private;
 
        /* XXX: uwe: why do we need this? */
        /* create loopback in the window save area on the stack? */
index 3c593f40e3b33641f39a632c3f73d6821f5c4b7d..f2a31418f72b160e3126bafb0995b79ad3225138 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _setjmp.S,v 1.8 2008/04/28 20:22:57 martin Exp $       */
+/*     $NetBSD: _setjmp.S,v 1.9 2011/04/30 23:41:12 martin Exp $       */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 #include <machine/trap.h>
 
 #if defined(LIBC_SCCS) && !defined(lint)
-RCSID("$NetBSD: _setjmp.S,v 1.8 2008/04/28 20:22:57 martin Exp $")
+RCSID("$NetBSD: _setjmp.S,v 1.9 2011/04/30 23:41:12 martin Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -47,6 +47,12 @@ RCSID("$NetBSD: _setjmp.S,v 1.8 2008/04/28 20:22:57 martin Exp $")
  */
 
 ENTRY(_setjmp)
+       /* store important globals, sigsetjmp compatible */
+       st      %g3, [%o0 + 16]
+       st      %g2, [%o0 + 24]
+       st      %g4, [%o0 + 48]
+       st      %g7, [%o0 + 52]
+
        st      %sp, [%o0+0]    /* store caller's stack pointer */
        st      %o7, [%o0+4]    /* and the return pc */
        retl
@@ -60,6 +66,12 @@ ENTRY(_longjmp)
 0:
        t       ST_FLUSHWIN     ! flush register windows out to the stack
 
+       /* restore globals */
+       ld      [%o0 + 16], %g3
+       ld      [%o0 + 24], %g2
+       ld      [%o0 + 48], %g4
+       ld      [%o0 + 52], %g7
+
        /*
         * We restore the saved stack pointer to %fp, then issue
         * a `restore' instruction which will reload the register
index 601fd9c9ad85f0526d69978e5709939b29dbb9c4..151ca06234753e36eead88be7bc817590efbc858 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * from: Header: divrem.m4,v 1.4 92/06/25 13:23:57 torek Exp
- * $NetBSD: divrem.m4,v 1.5 2003/08/07 16:42:23 agc Exp $
+ * $NetBSD: divrem.m4,v 1.6 2011/03/23 20:54:35 martin Exp $
  */
 
 /*
@@ -89,7 +89,7 @@ define(V, `%o5')
 
 /* m4 reminder: ifelse(a,b,c,d) => if a is b, then c, else d */
 define(T, `%g1')
-define(SC, `%g7')
+define(SC, `%g5')
 ifelse(S, `true', `define(SIGN, `%g6')')
 
 /*
index 7f674836e61869f406c6ff904321b2b4e1c3ce4f..c64b1ff8627234c58b63f427a744b100fd138ac1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.6 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: flt_rounds.c,v 1.7 2012/03/21 00:38:34 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.6 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.7 2012/03/21 00:38:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -21,9 +21,9 @@ static const int map[] = {
 };
 
 int
-__flt_rounds()
+__flt_rounds(void)
 {
-       int x;
+       unsigned int x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return map[(x >> 30) & 0x03];
index 0639cb887e8ac08d1ce8304280730424ef2b6477..281e2474bab93b24ce7bbbd711facb911de9a288 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpgetmask.c,v 1.6 2012/03/21 00:38:34 christos Exp $   */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetmask.c,v 1.6 2012/03/21 00:38:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetmask,_fpgetmask)
 #endif
 
 fp_except
-fpgetmask()
+fpgetmask(void)
 {
-       int x;
+       unsigned int x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return (x >> 23) & 0x1f;
index 2dffecfec8b54cebc20ce49c9d552b7beb9196f3..eafd21a248e940e16b55d2fcf10c4ebda2cb0242 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpgetround.c,v 1.6 2012/03/21 00:38:34 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.6 2012/03/21 00:38:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetround,_fpgetround)
 #endif
 
 fp_rnd
-fpgetround()
+fpgetround(void)
 {
-       int x;
+       unsigned int x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return (x >> 30) & 0x03;
index ebff93ff42ad175d4d63563c1a2dfa16f8fcdc42..3184ee1bc66c58ab7c9f7efeeebf691603e2dff9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: fpgetsticky.c,v 1.6 2012/03/21 00:38:34 christos Exp $ */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetsticky.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetsticky.c,v 1.6 2012/03/21 00:38:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,9 +19,9 @@ __weak_alias(fpgetsticky,_fpgetsticky)
 #endif
 
 fp_except
-fpgetsticky()
+fpgetsticky(void)
 {
-       int x;
+       unsigned int x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return (x >> 5) & 0x1f;
index 99ca472c1840e162258109fe7ea8afe46f1a7569..250761e48d92bd625b8048e5342a9d75a8115495 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpsetmask.c,v 1.6 2012/03/21 00:38:34 christos Exp $   */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetmask.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetmask.c,v 1.6 2012/03/21 00:38:34 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,8 +19,7 @@ __weak_alias(fpsetmask,_fpsetmask)
 #endif
 
 fp_except
-fpsetmask(mask)
-       fp_except mask;
+fpsetmask(fp_except mask)
 {
        fp_except old;
        fp_except new;
index 122feb266c43f5810a2d282e2917829268e3d7f7..4a0700ffafd9931260dc5e2a23be09ae3848d29d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpsetround.c,v 1.6 2012/03/21 00:38:35 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.5 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.6 2012/03/21 00:38:35 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -19,8 +19,7 @@ __weak_alias(fpsetround,_fpsetround)
 #endif
 
 fp_rnd
-fpsetround(rnd_dir)
-       fp_rnd rnd_dir;
+fpsetround(fp_rnd rnd_dir)
 {
        fp_rnd old;
        fp_rnd new;
@@ -33,5 +32,5 @@ fpsetround(rnd_dir)
 
        __asm("ld %0,%%fsr" : : "m" (*&new));
 
-       return (old >> 30) & 0x03;
+       return ((unsigned int)old >> 30) & 0x03;
 }
index 825e023780dcbc410ccbd11d37394c718a9805c8..fe46e50a85dd1f25784a2da9f0d76d047ee28300 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: longjmp.c,v 1.2 2008/04/28 20:22:57 martin Exp $       */
+/*     $NetBSD: longjmp.c,v 1.3 2011/04/30 23:41:12 martin Exp $       */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
 #include <signal.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stddef.h>
 
 #define __LIBC12_SOURCE__
 #include <setjmp.h>
 #include <compat/include/setjmp.h>
 
+struct __jmp_buf_regs_t {
+       __greg_t        g4;
+       __greg_t        g7;
+       __greg_t        save_mask;
+};
+
+/*
+ * setjmp.S uses hard coded offsets into the jump_buf,
+ * make sure any changes cause a compile failure here
+ */
+__CTASSERT(56 == offsetof(struct __jmp_buf_regs_t,save_mask) +
+       sizeof(struct sigcontext));
+__CTASSERT(sizeof(sigjmp_buf) >= sizeof(struct __jmp_buf_regs_t) +
+       sizeof(struct sigcontext));
+
 /*
  * Use setcontext to reload the stack pointer, program counter <pc,npc>, and
  * set the return value in %o0.  The %i and %l registers will be reloaded
@@ -49,14 +65,15 @@ void
 __longjmp14(jmp_buf env, int val)
 {
        struct sigcontext *sc = (void *)env;
+       struct __jmp_buf_regs_t *r = (void*)&sc[1];
        ucontext_t uc;
 
        /* Ensure non-zero SP */
        if (sc->sc_sp == 0)
                goto err;
 
-       /* Initialise the fields we're going to use */
-       uc.uc_link = 0;
+       /* Initialise the context */
+       memset(&uc, 0, sizeof(uc));
 
        /*
         * Set _UC_{SET,CLR}STACK according to SS_ONSTACK.
@@ -71,8 +88,12 @@ __longjmp14(jmp_buf env, int val)
        /* Extract PSR, PC, NPC and SP from jmp_buf */
        uc.uc_mcontext.__gregs[_REG_PSR] = sc->sc_psr;
        uc.uc_mcontext.__gregs[_REG_PC] = sc->sc_pc;
-       uc.uc_mcontext.__gregs[_REG_nPC] = sc->sc_npc;
+       uc.uc_mcontext.__gregs[_REG_nPC] = sc->sc_pc+4;
        uc.uc_mcontext.__gregs[_REG_O6] = sc->sc_sp;
+       uc.uc_mcontext.__gregs[_REG_G2] = sc->sc_g1;
+       uc.uc_mcontext.__gregs[_REG_G3] = sc->sc_npc;
+       uc.uc_mcontext.__gregs[_REG_G4] = r->g4;
+       uc.uc_mcontext.__gregs[_REG_G7] = r->g7;
 
        /* Set the return value; make sure it's non-zero */
        uc.uc_mcontext.__gregs[_REG_O0] = (val != 0 ? val : 1);
index 1a7c4c55f4097d4a86a246b159d416bebc8f8fee..57d68fdf8eb3f5b445e75f831f059de8ebb281b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index 993b92761b75e4628d7d13b927f452576aa0ada0..451f3c70f4f4a7222d942a965f76b89a67ddc77c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: setjmp.S,v 1.11 2007/10/08 13:06:00 uwe Exp $  */
+/*     $NetBSD: setjmp.S,v 1.12 2011/04/30 23:41:13 martin Exp $       */
 
 /*
  * Copyright (c) 1992, 1993
@@ -40,7 +40,7 @@
 #if 0
        .asciz "@(#)setjmp.s    8.1 (Berkeley) 6/4/93"
 #else
-       RCSID("$NetBSD: setjmp.S,v 1.11 2007/10/08 13:06:00 uwe Exp $")
+       RCSID("$NetBSD: setjmp.S,v 1.12 2011/04/30 23:41:13 martin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -78,9 +78,11 @@ ENTRY(__setjmp14)
        st      %fp, [%i0 + 8]  /* sc.sc_sp = (caller's) sp */
        add     %i7, 8, %o0
        st      %o0, [%i0 + 12] /* sc.sc_pc = return_pc */
-       add     %i7, 12, %o0
-       st      %o0, [%i0 + 16] /* sc.sc_npc = return_pc + 4 */
+       st      %g3, [%i0 + 16] /* sc.sc_npc */
        st      %g0, [%i0 + 20] /* sc.sc_psr = (clean psr) */
+       st      %g2, [%i0 + 24]
+       st      %g4, [%i0 + 48]
+       st      %g7, [%i0 + 52]
        ret                     /* return 0 */
         restore        %g0, %g0, %o0
 
index 8b88d296aea3c661339c416f92cc8fbc3ca6fb08..b98e9b3d11607213abafaaef49d1986bbf5cb832 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $   */
+/*     $NetBSD: swapcontext.S,v 1.4 2012/09/12 02:00:53 manu Exp $     */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: swapcontext.S,v 1.3 2008/04/28 20:22:57 martin Exp $")
+       RCSID("$NetBSD: swapcontext.S,v 1.4 2012/09/12 02:00:53 manu Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 ENTRY(swapcontext)
@@ -49,8 +49,13 @@ ENTRY(swapcontext)
        add     %o7, 8, %o1
        st      %o1, [%o2 + 40 + 1 * 4]         ! gr[_REG_PC] = retaddr
 
-       mov     %o3, %o0
-       mov     %o1, %g2                        ! optimize `return'
-       mov     SYS_setcontext|SYSCALL_G2RFLAG, %g1
-       t       ST_SYSCALL
-       ERROR()
+#ifdef PIC
+       PIC_PROLOGUE(%g1, %g2)                  ! %g1 = _GLOBAL_OFFSET_TABLE
+       set     _C_LABEL(setcontext), %g2
+       ld      [%g1 + %g2], %g1
+       jmp     %g1
+        mov    %o3, %o0
+#else
+       jmp     _C_LABEL(setcontext)
+        mov    %o3, %o0
+#endif
index a3a651be421be78ce86f59fb6f1d28b8cbc2ccb0..8d6704e76f9ed41e96c09fce595f50a33e12917d 100644 (file)
@@ -1,42 +1,14 @@
-#      $NetBSD: Makefile.inc,v 1.13 2009/12/06 07:05:50 uebayasi Exp $
+#      $NetBSD: Makefile.inc,v 1.19 2012/03/21 14:10:47 christos Exp $
 
 SRCS+= __sigaction14_sigtramp.c __sigtramp2.S
 
 # Some assembler files use v9a extensions.
 AFLAGS+= -Wa,-Av9a
 
-# `source' files built from m4 source
-# the name `div.o' is taken for the ANSI C `div' function, hence sdiv here
-SRCS+= rem.S sdiv.S udiv.S urem.S
-CLEANFILES+=rem.S sdiv.S udiv.S urem.S
-
-sdiv.S: ${LIBCDIR}/arch/sparc64/gen/divrem.m4
-       @echo 'building ${.TARGET} from ${.ALLSRC}'
-       @(echo "define(NAME,\`.div')define(OP,\`div')define(S,\`true')"; \
-        cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
-       @chmod 444 ${.TARGET}
-
-udiv.S: ${LIBCDIR}/arch/sparc64/gen/divrem.m4
-       @echo 'building ${.TARGET} from ${.ALLSRC}'
-       @(echo "define(NAME,\`.udiv')define(OP,\`div')define(S,\`false')"; \
-        cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
-       @chmod 444 ${.TARGET}
-
-rem.S: ${LIBCDIR}/arch/sparc64/gen/divrem.m4
-       @echo 'building ${.TARGET} from ${.ALLSRC}'
-       @(echo "define(NAME,\`.rem')define(OP,\`rem')define(S,\`true')"; \
-        cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
-       @chmod 444 ${.TARGET}
-
-urem.S: ${LIBCDIR}/arch/sparc64/gen/divrem.m4
-       @echo 'building ${.TARGET} from ${.ALLSRC}'
-       @(echo "define(NAME,\`.urem')define(OP,\`rem')define(S,\`false')"; \
-        cat ${.ALLSRC}) | ${TOOL_M4} > ${.TARGET}
-       @chmod 444 ${.TARGET}
-
 .PATH: ${ARCHDIR}/softfloat
 SRCS+= qp.c
-CPPFLAGS+=     -DSOFTFLOATSPARC64_FOR_GCC
+CPPFLAGS+=     -DSOFTFLOATSPARC64_FOR_GCC -DEXCEPTIONS_WITH_SOFTFLOAT
+CPPFLAGS+=     -DSOFTFLOAT_NEED_FIXUNS
 .if ${MKSOFTFLOAT} != "no"
 .include <softfloat/Makefile.inc>
 .else
@@ -47,4 +19,9 @@ SRCS.softfloat= softfloat-wrapper.c
 SRCS+= ${SRCS.softfloat}
 CPPFLAGS+=      -I${ARCHDIR}/softfloat -I${.CURDIR}/softfloat \
                -I${.CURDIR}/softfloat/bits64
+
+.if ${HAVE_GCC} == 45
+COPTS.softfloat-wrapper.c+=    -Wno-enum-compare
+.endif
+
 .endif
index ede6a3e960a31e37ca0d0e289a5d4aaf9ce38d7b..dea1fa11ecf3e34337c4f4471ad4ed01a581a443 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: SYS.h,v 1.13 2003/08/07 16:42:26 agc Exp $     */
+/*     $NetBSD: SYS.h,v 1.14 2011/03/28 11:19:13 martin Exp $  */
 
 /*-
  * Copyright (c) 1992, 1993
 
 /*
  * RSYSCALL is used when the system call should just return.  Here
- * we use the SYSCALL_G7RFLAG to put the `success' return address in %g7
+ * we use the SYSCALL_G5RFLAG to put the `success' return address in %g5
  * and avoid a branch.
  */
 #define        RSYSCALL(x) \
-       ENTRY(x); mov (_CAT(SYS_,x))|SYSCALL_G7RFLAG,%g1; add %o7,8,%g7; \
+       ENTRY(x); mov (_CAT(SYS_,x))|SYSCALL_G5RFLAG,%g1; add %o7,8,%g5; \
        t ST_SYSCALL; ERROR()
 
 /*
  * PSEUDO(x,y) is like RSYSCALL(y) except that the name is x.
  */
 #define        PSEUDO(x,y) \
-       ENTRY(x); mov (_CAT(SYS_,y))|SYSCALL_G7RFLAG,%g1; add %o7,8,%g7; \
+       ENTRY(x); mov (_CAT(SYS_,y))|SYSCALL_G5RFLAG,%g1; add %o7,8,%g5; \
        t ST_SYSCALL; ERROR()
 
 /*
  * XXX - This should be optimized.
  */
 #define RSYSCALL_NOERROR(x) \
-       ENTRY(x); mov (_CAT(SYS_,x))|SYSCALL_G7RFLAG,%g1; add %o7,8,%g7; \
+       ENTRY(x); mov (_CAT(SYS_,x))|SYSCALL_G5RFLAG,%g1; add %o7,8,%g5; \
        t ST_SYSCALL
 
 /*
  * PSEUDO_NOERROR(x,y) is like RSYSCALL_NOERROR(y) except that the name is x.
  */
 #define PSEUDO_NOERROR(x,y) \
-       ENTRY(x); mov (_CAT(SYS_,y))|SYSCALL_G7RFLAG,%g1; add %o7,8,%g7; \
+       ENTRY(x); mov (_CAT(SYS_,y))|SYSCALL_G5RFLAG,%g1; add %o7,8,%g5; \
        t ST_SYSCALL
 
-       .register       %g7,#scratch
-
        .globl  _C_LABEL(__cerror)
index b217d28c467cfca17084d99e39f22e4801cd66a3..622d713db8a7d2a5a426cd52a2c4633c1a4181da 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:57 martin Exp $  */
+/*     $NetBSD: _lwp.c,v 1.7 2012/03/17 20:48:58 martin Exp $  */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.5 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.7 2012/03/17 20:48:58 martin Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -53,6 +53,7 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        u->uc_stack.ss_sp = stack_base;
        u->uc_stack.ss_size = stack_size;
 
+       /*LINTED*/
        sp = (ulong *)(stack_base + stack_size);
        sp = (ulong *)((ulong)sp & ~0x0f);
 
@@ -62,6 +63,7 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        sp[14] = (ulong)sp - 2047;
        sp[15] = (ulong)_lwp_exit - 8;
 
+       /*LINTED*/
        sp = (ulong *)((caddr_t)sp - 2047);
 
        gr[_REG_PC] = (ulong) start;
@@ -70,4 +72,5 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        gr[_REG_O0] = (ulong) arg;
        gr[_REG_O6] = (ulong) sp;
        gr[_REG_O7] = (ulong)_lwp_exit - 8;
+       gr[_REG_G7] = (ulong)private;
 }
index 4990bb51f017e2aa57daa5b7a776ae1c14a16343..66d1ec40e9080f969bc9b6256654e2c7fc274a60 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _setjmp.S,v 1.6 2004/12/07 08:20:07 martin Exp $       */
+/*     $NetBSD: _setjmp.S,v 1.7 2011/04/30 19:43:17 martin Exp $       */
 
 /*
  * Copyright (c) 1992, 1993
 #if 0
        .asciz "@(#)_setjmp.s   8.1 (Berkeley) 6/4/93"
 #else
-       RCSID("$NetBSD: _setjmp.S,v 1.6 2004/12/07 08:20:07 martin Exp $")
+       RCSID("$NetBSD: _setjmp.S,v 1.7 2011/04/30 19:43:17 martin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
+       .register %g2,#ignore
+       .register %g3,#ignore
+
 /*
  * C library -- _setjmp, _longjmp
  *
 ENTRY(_setjmp)
        stx     %sp, [%o0+0]    /* store caller's stack pointer */
        stx     %o7, [%o0+8]    /* and return pc */
+       stx     %g0, [%o0+0x18] /* mark as non-sigmask jmpbuf */
+
+       /* store globals, offsets compatible with siglongjmp */
+       stx     %g1, [%o0+0x28]
+       stx     %g2, [%o0+0x30]         /* adjust asserts in longjmp.c */
+       stx     %g3, [%o0+0x48]         /* if you change any of these */
+       stx     %g6, [%o0+0x50]         /* offsets! */
+       stx     %g7, [%o0+0x58]
+
        retl
         clr    %o0             ! return 0
 
@@ -68,6 +80,11 @@ ENTRY(_longjmp)
         * a `restore' instruction which will reload the register
         * window from the stack.
         */
+       ldx     [%i0+0x28],%g1
+       ldx     [%i0+0x30],%g2
+       ldx     [%i0+0x48],%g3
+       ldx     [%i0+0x50],%g6
+       ldx     [%i0+0x58],%g7
        ldx     [%i0+8], %i7
        ldx     [%i0+0], %fp
        mov     1, %i0
diff --git a/lib/libc/arch/sparc64/gen/divrem.m4 b/lib/libc/arch/sparc64/gen/divrem.m4
deleted file mode 100644 (file)
index 108918e..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*     $NetBSD: divrem.m4,v 1.4 2003/08/07 16:42:27 agc Exp $  */
-
-/*
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * from: Header: divrem.m4,v 1.4 92/06/25 13:23:57 torek Exp
- */
-
-#include <machine/asm.h>
-#include <machine/trap.h>
-
-/*
- * Division and remainder, from Appendix E of the Sparc Version 8
- * Architecture Manual, with fixes from Gordon Irlam.
- */
-
-#if defined(LIBC_SCCS)
-       RCSID("$NetBSD: divrem.m4,v 1.4 2003/08/07 16:42:27 agc Exp $")
-#endif
-
-/*
- * Input: dividend and divisor in %o0 and %o1 respectively.
- *
- * m4 parameters:
- *  NAME       name of function to generate
- *  OP         OP=div => %o0 / %o1; OP=rem => %o0 % %o1
- *  S          S=true => signed; S=false => unsigned
- *
- * Algorithm parameters:
- *  N          how many bits per iteration we try to get (4)
- *  WORDSIZE   total number of bits (32)
- *
- * Derived constants:
- *  TWOSUPN    2^N, for label generation (m4 exponentiation currently broken)
- *  TOPBITS    number of bits in the top `decade' of a number
- *
- * Important variables:
- *  Q          the partial quotient under development (initially 0)
- *  R          the remainder so far, initially the dividend
- *  ITER       number of main division loop iterations required;
- *             equal to ceil(log2(quotient) / N).  Note that this
- *             is the log base (2^N) of the quotient.
- *  V          the current comparand, initially divisor*2^(ITER*N-1)
- *
- * Cost:
- *  Current estimate for non-large dividend is
- *     ceil(log2(quotient) / N) * (10 + 7N/2) + C
- *  A large dividend is one greater than 2^(31-TOPBITS) and takes a
- *  different path, as the upper bits of the quotient must be developed
- *  one bit at a time.
- */
-
-define(N, `4')
-define(TWOSUPN, `16')
-define(WORDSIZE, `32')
-define(TOPBITS, eval(WORDSIZE - N*((WORDSIZE-1)/N)))
-
-define(dividend, `%o0')
-define(divisor, `%o1')
-define(Q, `%o2')
-define(R, `%o3')
-define(ITER, `%o4')
-define(V, `%o5')
-
-/* m4 reminder: ifelse(a,b,c,d) => if a is b, then c, else d */
-define(T, `%g1')
-define(SC, `%g5')
-ifelse(S, `true', `define(SIGN, `%g6')')
-
-/*
- * This is the recursive definition for developing quotient digits.
- *
- * Parameters:
- *  $1 the current depth, 1 <= $1 <= N
- *  $2 the current accumulation of quotient bits
- *  N  max depth
- *
- * We add a new bit to $2 and either recurse or insert the bits in
- * the quotient.  R, Q, and V are inputs and outputs as defined above;
- * the condition codes are expected to reflect the input R, and are
- * modified to reflect the output R.
- */
-define(DEVELOP_QUOTIENT_BITS,
-`      ! depth $1, accumulated bits $2
-       bl      L.$1.eval(TWOSUPN+$2)
-       srl     V,1,V
-       ! remainder is positive
-       subcc   R,V,R
-       ifelse($1, N,
-       `       b       9f
-               add     Q, ($2*2+1), Q
-       ', `    DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2+1)')')
-L.$1.eval(TWOSUPN+$2):
-       ! remainder is negative
-       addcc   R,V,R
-       ifelse($1, N,
-       `       b       9f
-               add     Q, ($2*2-1), Q
-       ', `    DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2-1)')')
-       ifelse($1, 1, `9:')')
-
-FUNC(NAME)
-ifelse(S, `true',
-`      ! compute sign of result; if neither is negative, no problem
-       orcc    divisor, dividend, %g0  ! either negative?
-       bge     2f                      ! no, go do the divide
-       ifelse(OP, `div',
-               `xor    divisor, dividend, SIGN',
-               `mov    dividend, SIGN')        ! compute sign in any case
-       tst     divisor
-       bge     1f
-       tst     dividend
-       ! divisor is definitely negative; dividend might also be negative
-       bge     2f                      ! if dividend not negative...
-       neg     divisor                 ! in any case, make divisor nonneg
-1:     ! dividend is negative, divisor is nonnegative
-       neg     dividend                ! make dividend nonnegative
-2:
-')
-       ! Ready to divide.  Compute size of quotient; scale comparand.
-       orcc    divisor, %g0, V
-       bnz     1f
-       mov     dividend, R
-
-               ! Divide by zero trap.  If it returns, return 0 (about as
-               ! wrong as possible, but that is what SunOS does...).
-               t       ST_DIV0
-               retl
-               clr     %o0
-
-1:
-       cmp     R, V                    ! if divisor exceeds dividend, done
-       blu     Lgot_result             ! (and algorithm fails otherwise)
-       clr     Q
-       sethi   %hi(1 << (WORDSIZE - TOPBITS - 1)), T
-       cmp     R, T
-       blu     Lnot_really_big
-       clr     ITER
-
-       ! `Here the dividend is >= 2^(31-N) or so.  We must be careful here,
-       ! as our usual N-at-a-shot divide step will cause overflow and havoc.
-       ! The number of bits in the result here is N*ITER+SC, where SC <= N.
-       ! Compute ITER in an unorthodox manner: know we need to shift V into
-       ! the top decade: so do not even bother to compare to R.'
-       1:
-               cmp     V, T
-               bgeu    3f
-               mov     1, SC
-               sll     V, N, V
-               b       1b
-               inc     ITER
-
-       ! Now compute SC.
-       2:      addcc   V, V, V
-               bcc     Lnot_too_big
-               inc     SC
-
-               ! We get here if the divisor overflowed while shifting.
-               ! This means that R has the high-order bit set.
-               ! Restore V and subtract from R.
-               sll     T, TOPBITS, T   ! high order bit
-               srl     V, 1, V         ! rest of V
-               add     V, T, V
-               b       Ldo_single_div
-               dec     SC
-
-       Lnot_too_big:
-       3:      cmp     V, R
-               blu     2b
-               nop
-               be      Ldo_single_div
-               nop
-       /* NB: these are commented out in the V8-Sparc manual as well */
-       /* (I do not understand this) */
-       ! V > R: went too far: back up 1 step
-       !       srl     V, 1, V
-       !       dec     SC
-       ! do single-bit divide steps
-       !
-       ! We have to be careful here.  We know that R >= V, so we can do the
-       ! first divide step without thinking.  BUT, the others are conditional,
-       ! and are only done if R >= 0.  Because both R and V may have the high-
-       ! order bit set in the first step, just falling into the regular
-       ! division loop will mess up the first time around.
-       ! So we unroll slightly...
-       Ldo_single_div:
-               deccc   SC
-               bl      Lend_regular_divide
-               nop
-               sub     R, V, R
-               mov     1, Q
-               b       Lend_single_divloop
-               nop
-       Lsingle_divloop:
-               sll     Q, 1, Q
-               bl      1f
-               srl     V, 1, V
-               ! R >= 0
-               sub     R, V, R
-               b       2f
-               inc     Q
-       1:      ! R < 0
-               add     R, V, R
-               dec     Q
-       2:
-       Lend_single_divloop:
-               deccc   SC
-               bge     Lsingle_divloop
-               tst     R
-               b,a     Lend_regular_divide
-
-Lnot_really_big:
-1:
-       sll     V, N, V
-       cmp     V, R
-       bleu    1b
-       inccc   ITER
-       be      Lgot_result
-       dec     ITER
-
-       tst     R       ! set up for initial iteration
-Ldivloop:
-       sll     Q, N, Q
-       DEVELOP_QUOTIENT_BITS(1, 0)
-Lend_regular_divide:
-       deccc   ITER
-       bge     Ldivloop
-       tst     R
-       bl,a    Lgot_result
-       ! non-restoring fixup here (one instruction only!)
-ifelse(OP, `div',
-`      dec     Q
-', `   add     R, divisor, R
-')
-
-Lgot_result:
-ifelse(S, `true',
-`      ! check to see if answer should be < 0
-       tst     SIGN
-       bl,a    1f
-       ifelse(OP, `div', `neg Q', `neg R')
-1:')
-       retl
-       ifelse(OP, `div', `mov Q, %o0', `mov R, %o0')
index 5e70b742b03c3b06b5396f7fecce9867e8f99b8c..93e3b2cf6a37661059e31094a2c63b56df806f4c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: flt_rounds.c,v 1.4 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: flt_rounds.c,v 1.6 2012/06/24 15:26:02 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,7 +7,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: flt_rounds.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: flt_rounds.c,v 1.6 2012/06/24 15:26:02 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -21,9 +21,9 @@ static const int map[] = {
 };
 
 int
-__flt_rounds()
+__flt_rounds(void)
 {
-       int x;
+       uint32_t x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return map[(x >> 30) & 0x03];
index b0cadda9cdef12e5bd5c5292d5f9c9ca87119c74..095ff73f43fbb2ee1ad3526460a50af7914e38fa 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetmask.c,v 1.4 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpgetmask.c,v 1.6 2012/06/24 15:26:02 christos Exp $   */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,11 +7,12 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetmask.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetmask.c,v 1.6 2012/06/24 15:26:02 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
@@ -19,9 +20,9 @@ __weak_alias(fpgetmask,_fpgetmask)
 #endif
 
 fp_except
-fpgetmask()
+fpgetmask(void)
 {
-       int x;
+       uint32_t x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return (x >> 23) & 0x1f;
index c44991092b86941f92fe4f2e856a678600fea61d..ef65c131b064471fe0f4b42c84f6bc605584dc57 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetround.c,v 1.4 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpgetround.c,v 1.6 2012/06/24 15:26:02 christos Exp $  */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,11 +7,12 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetround.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetround.c,v 1.6 2012/06/24 15:26:02 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
@@ -19,9 +20,9 @@ __weak_alias(fpgetround,_fpgetround)
 #endif
 
 fp_rnd
-fpgetround()
+fpgetround(void)
 {
-       int x;
+       uint32_t x;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
        return (x >> 30) & 0x03;
index bd0484dd41ef31208bba4341aab80930b433aca8..67b3ea652277e6c781f43ff98f4065b74fa5d6f5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpgetsticky.c,v 1.4 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: fpgetsticky.c,v 1.7 2012/06/24 15:26:02 christos Exp $ */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,22 +7,34 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpgetsticky.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpgetsticky.c,v 1.7 2012/06/24 15:26:02 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
 __weak_alias(fpgetsticky,_fpgetsticky)
 #endif
 
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+extern fp_except _softfloat_float_exception_flags;
+#endif
+
 fp_except
-fpgetsticky()
+fpgetsticky(void)
 {
-       int x;
+       uint32_t x;
+       fp_except res;
 
        __asm("st %%fsr,%0" : "=m" (*&x));
-       return (x >> 5) & 0x1f;
+       res = (x >> 5) & 0x1f;
+
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+       res |= _softfloat_float_exception_flags;
+#endif
+
+       return res;
 }
index 65e7a79458923a3d63ec98f1b220115d8e5052af..5a889e0270ca1d7574e7c2bc71ee09e64e343175 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetmask.c,v 1.4 2005/12/24 23:10:08 perry Exp $      */
+/*     $NetBSD: fpsetmask.c,v 1.6 2012/03/17 21:35:06 martin Exp $     */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,17 +7,22 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetmask.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetmask.c,v 1.6 2012/03/17 21:35:06 martin Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
 __weak_alias(fpsetmask,_fpsetmask)
 #endif
 
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+extern fp_except _softfloat_float_exception_mask;
+#endif
+
 fp_except
 fpsetmask(mask)
        fp_except mask;
@@ -33,5 +38,13 @@ fpsetmask(mask)
 
        __asm("ld %0,%%fsr" : : "m" (*&new));
 
-       return (old >> 23) & 0x1f;
+       old = ((uint32_t)old >> 23) & 0x1f;
+
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+       /* update softfloat mask as well */
+       old |= _softfloat_float_exception_mask;
+       _softfloat_float_exception_mask = mask;
+#endif
+
+       return old;
 }
index 9e21dc7e397ab674c69446db0db7ffdfbdec8e01..0a3cd482c9cab29db746f66458fcbe6b1f6d6e8e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetround.c,v 1.4 2005/12/24 23:10:08 perry Exp $     */
+/*     $NetBSD: fpsetround.c,v 1.5 2012/03/17 21:35:06 martin Exp $    */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,11 +7,12 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetround.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetround.c,v 1.5 2012/03/17 21:35:06 martin Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
@@ -33,5 +34,5 @@ fpsetround(rnd_dir)
 
        __asm("ld %0,%%fsr" : : "m" (*&new));
 
-       return (old >> 30) & 0x03;
+       return ((uint32_t)old >> 30) & 0x03;
 }
index 10e98ed78c714af5e306efad36776bd4bb2c40e0..e878b9331d18d9b6fedffec24b201c495663a1ac 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fpsetsticky.c,v 1.4 2005/12/24 23:10:08 perry Exp $    */
+/*     $NetBSD: fpsetsticky.c,v 1.6 2012/03/17 21:35:06 martin Exp $   */
 
 /*
  * Written by J.T. Conklin, Apr 10, 1995
@@ -7,17 +7,22 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: fpsetsticky.c,v 1.4 2005/12/24 23:10:08 perry Exp $");
+__RCSID("$NetBSD: fpsetsticky.c,v 1.6 2012/03/17 21:35:06 martin Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
 
+#include <sys/types.h>
 #include <ieeefp.h>
 
 #ifdef __weak_alias
 __weak_alias(fpsetsticky,_fpsetsticky)
 #endif
 
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+extern fp_except _softfloat_float_exception_flags;
+#endif
+
 fp_except
 fpsetsticky(sticky)
        fp_except sticky;
@@ -33,5 +38,11 @@ fpsetsticky(sticky)
 
        __asm("ld %0,%%fsr" : : "m" (*&new));
 
-       return (old >> 5) & 0x1f;
+       old = ((uint32_t)old >> 5) & 0x1f;
+
+#ifdef EXCEPTIONS_WITH_SOFTFLOAT
+       old |= _softfloat_float_exception_flags;
+       _softfloat_float_exception_flags = sticky;
+#endif
+       return old;
 }
index 54f54ac2062b0f1faa26d603131833df129c0c9c..c62d01d60b4f3c4c146b016e82817907493187ce 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: longjmp.c,v 1.2 2008/04/28 20:22:57 martin Exp $       */
+/*     $NetBSD: longjmp.c,v 1.7 2012/03/17 21:35:06 martin Exp $       */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <stddef.h>
 
 #define __LIBC12_SOURCE__
 #include <setjmp.h>
 #include <compat/include/setjmp.h>
 
 typedef struct {
-       __greg_t        __glob[5];
+       __greg_t        g3;
+       __greg_t        g6;
+       __greg_t        g7;
+       __greg_t        dummy;
+       __greg_t        save_mask;
 } __jmp_buf_regs_t;
 
+/*
+ * setjmp.S uses hard coded offsets into the jump_buf,
+ * make sure any changes cause a compile failure here
+ */
+#ifndef lint   /* XXX this is too much for lint */
+__CTASSERT(0x68 == offsetof(__jmp_buf_regs_t,save_mask) +
+       sizeof(struct sigcontext));
+__CTASSERT(sizeof(sigjmp_buf) >= sizeof(__jmp_buf_regs_t) +
+       sizeof(struct sigcontext));
+#endif
+
 void
 __longjmp14(jmp_buf env, int val)
 {
@@ -72,16 +88,17 @@ __longjmp14(jmp_buf env, int val)
        /* Fill other registers */
        uc.uc_mcontext.__gregs[_REG_CCR] = sc->sc_tstate;
        uc.uc_mcontext.__gregs[_REG_PC] = sc->sc_pc;
-       uc.uc_mcontext.__gregs[_REG_nPC] = sc->sc_npc;
+       uc.uc_mcontext.__gregs[_REG_nPC] = sc->sc_pc+4;
        uc.uc_mcontext.__gregs[_REG_G1] = sc->sc_g1;
        uc.uc_mcontext.__gregs[_REG_G2] = sc->sc_o0;
-       uc.uc_mcontext.__gregs[_REG_G3] = r->__glob[0];
-       uc.uc_mcontext.__gregs[_REG_G4] = r->__glob[1];
-       uc.uc_mcontext.__gregs[_REG_G5] = r->__glob[2];
-       uc.uc_mcontext.__gregs[_REG_G6] = r->__glob[3];
-       uc.uc_mcontext.__gregs[_REG_G7] = r->__glob[4];
+       uc.uc_mcontext.__gregs[_REG_G3] = r->g3;
+       uc.uc_mcontext.__gregs[_REG_G4] = 0;
+       uc.uc_mcontext.__gregs[_REG_G5] = 0;
+       uc.uc_mcontext.__gregs[_REG_G6] = r->g6;
+       uc.uc_mcontext.__gregs[_REG_G7] = r->g7;
        uc.uc_mcontext.__gregs[_REG_O6] = sc->sc_sp;
 
+
        /* Make return value non-zero */
        if (val == 0)
                val = 1;
index 64fa3c622caa6e96ec0b7bcf47b1c885115eb28d..8bdcee63a5d8eb63247d8f9a479ce1d9ccfc753c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: makecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $   */
+/*     $NetBSD: makecontext.c,v 1.5 2012/03/17 21:35:06 martin Exp $   */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: makecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: makecontext.c,v 1.5 2012/03/17 21:35:06 martin Exp $");
 #endif
 
 #include <inttypes.h>
@@ -50,6 +50,7 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        ulong *sp;
        va_list ap;
 
+       /*LINTED*/
        sp = (ulong *)((caddr_t)ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
        /* Align on quad-word boundary. */
        sp = (ulong *)((ulong)sp & ~0xf);
@@ -71,6 +72,7 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        sp[14] = (ulong)sp - 2047;
        sp[15] = (ulong)_resumecontext - 8;
 
+       /*LINTED*/
        sp = (ulong *)((caddr_t)sp - 2047);
 
        gr[_REG_O6] = (__greg_t)sp;
index 1a7c4c55f4097d4a86a246b159d416bebc8f8fee..57d68fdf8eb3f5b445e75f831f059de8ebb281b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.5 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.4 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index e12e04a38904685c5bffb8d82eb3f27fc459f19f..081f61e2f98c755cf41a9ff42123a3ed3f958be7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: setjmp.S,v 1.7 2005/10/16 17:15:38 christos Exp $      */
+/*     $NetBSD: setjmp.S,v 1.9 2011/04/30 19:39:38 martin Exp $        */
 
 /*
  * Copyright (c) 1992, 1993
@@ -42,7 +42,7 @@
 #if 0
        .asciz "@(#)setjmp.s    8.1 (Berkeley) 6/4/93"
 #else
-       RCSID("$NetBSD: setjmp.S,v 1.7 2005/10/16 17:15:38 christos Exp $")
+       RCSID("$NetBSD: setjmp.S,v 1.9 2011/04/30 19:39:38 martin Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -118,19 +118,15 @@ ENTRY(__setjmp14)
        stx     %fp, [%i0 + 0x08]       /* sc.sc_sp = sp */
        add     %i7, 8, %o0
        stx     %o0, [%i0 + 0x10]       /* sc.sc_pc = return_pc */
-       add     %i7, 12, %o0
-       stx     %o0, [%i0 + 0x18]       /* sc.sc_npc = return_pc + 4 */
        stx     %g0, [%i0 + 0x20]       /* sc.sc_tstate = (clean ccr) */
        stx     %l1, [%i0 + 0x28]       /* sc.sc_g1 */
        stx     %l2, [%i0 + 0x30]       /* sc.sc_o0, set in longjmp, use as %g2 */
-       /* 0x38 */                      /* sc.sc_mask was already saved above */
+       /* 0x38: 4x32bit */             /* sc.sc_mask was already saved above */
 
        /* save additional registers needed to fill a complete mcontext */
-       stx     %l3, [%i0 + 0x40]
-       stx     %l4, [%i0 + 0x48]
-       stx     %l5, [%i0 + 0x50]
-       stx     %l6, [%i0 + 0x58]
-       stx     %l7, [%i0 + 0x60]
+       stx     %l3, [%i0 + 0x48]       /* adjust asserts in longjmp.c */
+       stx     %l6, [%i0 + 0x50]       /* if you change any of these */
+       stx     %l7, [%i0 + 0x58]       /* offsets! */
 
        ret                             /* return 0 */
         restore %g0, 0, %o0
index fedbc70047941c07eb877a8baadaf3bdc2383e9d..4c350d9920ecc5e82daab132772f6b3c2d8123c3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: sigsetjmp.S,v 1.8 2005/10/16 17:15:38 christos Exp $   */
+/*     $NetBSD: sigsetjmp.S,v 1.10 2011/04/30 19:39:38 martin Exp $    */
 /*
  * Copyright (c) 1995 Paul Kranenburg
  * All rights reserved.
 
 #include "SYS.h"
 
+/*
+ * We use the sc_npc field inside the sigcontext to store the save mask
+ */
+#define        MASK_OFFSET     0x68
+
 #ifdef PIC
 #ifdef BIGPIC
        
 ENTRY(__sigsetjmp14)
        PIC_PROLOGUE(%g1,%o2)           ! %g1 = _GLOBAL_OFFSET_TABLE
-       st      %o1,[%o0+0x68]          ! jmpbuf[JBLEN]
+       st      %o1,[%o0+MASK_OFFSET]   ! end of jmpbuf
        sethi   %hi(_C_LABEL(__setjmp14)), %o2
        sethi   %hi(_C_LABEL(_setjmp)), %o3
        or      %o2, %lo(_C_LABEL(__setjmp14)), %o2
@@ -51,7 +56,7 @@ ENTRY(__sigsetjmp14)
        
 ENTRY(__siglongjmp14)
        PIC_PROLOGUE(%g1,%o2)           ! %g1 = _GLOBAL_OFFSET_TABLE
-       ld      [%o0+0x68], %o2         ! jmpbuf[JBLEN]
+       ld      [%o0+MASK_OFFSET], %o2  ! end of jmpbuf
        sethi   %hi(_C_LABEL(__longjmp14)), %o3 
        sethi   %hi(_C_LABEL(_longjmp)), %o4
        or      %o3, %lo(_C_LABEL(__longjmp14)), %o3
@@ -68,7 +73,7 @@ ENTRY(__siglongjmp14)
 ENTRY(__sigsetjmp14)
        PIC_PROLOGUE(%g1,%o2)                   ! %g1 = _GLOBAL_OFFSET_TABLE
        cmp     %o1,0
-       st      %o1,[%o0+0x68]                  ! jmpbuf[JBLEN]
+       st      %o1,[%o0+MASK_OFFSET]           ! end of jmpbuf
        bne,a   1f
         ldx    [%g1+_C_LABEL(__setjmp14)], %g1 ! if (%o1 != 0) goto __setjmp;
        ldx     [%g1+_C_LABEL(_setjmp)], %g1    ! else goto _setjmp;
@@ -78,7 +83,7 @@ ENTRY(__sigsetjmp14)
 
 ENTRY(__siglongjmp14)
        PIC_PROLOGUE(%g1,%o2)                   ! %g1 = _GLOBAL_OFFSET_TABLE
-       ld      [%o0+0x68],%o2                  ! jmpbuf[JBLEN]
+       ld      [%o0+MASK_OFFSET],%o2           ! end of jmpbuf
        cmp     %o2,0
        bne,a   1f
         ldx    [%g1+_C_LABEL(__longjmp14)], %g1 ! if (%o2 != 0) goto __longjmp;
@@ -93,12 +98,12 @@ ENTRY(__siglongjmp14)
 ENTRY(__sigsetjmp14)
        cmp     %o1,0
        be      _C_LABEL(_setjmp)
-        st     %o1,[%o0+0x68]          ! jmpbuf[JBLEN]
+        st     %o1,[%o0+MASK_OFFSET]   ! end of jmpbuf
        ba,a    _C_LABEL(__setjmp14)
        unimp 0
 
 ENTRY(__siglongjmp14)
-       ld      [%o0+0x68],%g1
+       ld      [%o0+MASK_OFFSET],%g1
        cmp     %g1,0
        be      _C_LABEL(_longjmp)
         nop
index 972d5a389ea50e5ae240b0fb91311b7053f8c57d..262bd50b8b5528b53acd345e086dc4c2957b6d4f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.4 2008/04/28 20:22:57 martin Exp $   */
+/*     $NetBSD: swapcontext.S,v 1.6 2012/09/12 02:00:53 manu Exp $     */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: swapcontext.S,v 1.4 2008/04/28 20:22:57 martin Exp $")
+       RCSID("$NetBSD: swapcontext.S,v 1.6 2012/09/12 02:00:53 manu Exp $")
 #endif /* LIBC_SCCS && !lint */
 
-       .register       %g2,#scratch
 
 ENTRY(swapcontext)
        mov     %o0, %o2                        /* must save pointer */
@@ -51,8 +50,17 @@ ENTRY(swapcontext)
        add     %o7, 8, %o1
        stx     %o1, [%o2 + 64 + 1 * 8]         /* gr[_REG_PC] = retaddr */
 
-       mov     %o3, %o0
-       mov     %o1, %g2                        /* optimize `return' */
-       mov     SYS_setcontext|SYSCALL_G2RFLAG, %g1
-       t       ST_SYSCALL
-       ERROR()
+#ifdef PIC
+       PIC_PROLOGUE(%g5,%o4)                   /* %g5 = _GLOBAL_OFFSET_TABLE */
+#ifdef BIGPIC
+       set     _C_LABEL(setcontext), %o6
+       ldx     [%g5+%o6], %o5
+#else
+       ldx     [%g5+_C_LABEL(setcontext)], %o5
+#endif
+       jmp     %o5
+        mov    %o3, %o0
+#else
+       ba,a    _C_LABEL(setcontext)
+        mov    %o3, %o0
+#endif
index 40bf845638a97deb0cd8c9d1be94e41dc6b4a32b..df3388072bf3b19be29ef97d78c0320b20cfcdc6 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: qp.c,v 1.7 2008/04/28 20:22:57 martin Exp $ */
+/* $NetBSD: qp.c,v 1.9 2012/03/17 20:48:59 martin Exp $ */
 
 /*-
  * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@@ -168,12 +168,12 @@ _Qp_mul(float128 *c, float128 *a, float128 *b)
 /*
  * XXX need corresponding softfloat function
  */
-static float128 __zero = {0x4034000000000000, 0x00000000};
+static float128 __sf128_zero = {0x4034000000000000, 0x00000000};
 
 void
 _Qp_neg(float128 *c, float128 *a)
 {
-       *c = float128_sub(__zero, *a);
+       *c = float128_sub(__sf128_zero, *a);
 }
 
 
@@ -271,15 +271,15 @@ _Qp_uxtoq(float128 *c, unsigned long a)
 
        if (a & 0x8000000000000000ULL) {
                a = (a >> 1) | (a & 1);
-               *c = int64_to_float128(a);
+               *c = int64_to_float128((long long)a);
                *c = float128_add(*c, *c);
        } else
-               *c = int64_to_float128(a);
+               *c = int64_to_float128((long long)a);
 }
 
 
 void
 _Qp_xtoq(float128 *c, long a)
 {
-       *c = int64_to_float128(a);
+       *c = int64_to_float128((long long)a);
 }
index 069c0e5b6bca2c39efbb3d079f5ce0e434e22cf1..881669265b18590fa72280d67381ec124cff01f9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: softfloat.h,v 1.6 2007/11/08 15:50:23 martin Exp $     */
+/*     $NetBSD: softfloat.h,v 1.8 2011/07/07 07:14:57 matt Exp $       */
 
 /* This is a derivative work. */
 
@@ -86,12 +86,10 @@ Software IEC/IEEE floating-point rounding mode.
 -------------------------------------------------------------------------------
 */
 extern fp_rnd float_rounding_mode;
-enum {
-    float_round_nearest_even = FP_RN,
-    float_round_to_zero      = FP_RZ,
-    float_round_down         = FP_RM,
-    float_round_up           = FP_RP
-};
+#define float_round_nearest_even FP_RN
+#define float_round_to_zero      FP_RZ
+#define float_round_down         FP_RM
+#define float_round_up           FP_RP
 
 /*
 -------------------------------------------------------------------------------
@@ -121,13 +119,17 @@ void float_raise( fp_except );
 Software IEC/IEEE integer-to-floating-point conversion routines.
 -------------------------------------------------------------------------------
 */
-float32 int32_to_float32( int );
-float64 int32_to_float64( int );
+float32 int32_to_float32( int32 );
+float32 uint32_to_float32( uint32 );
+float64 int32_to_float64( int32 );
+float64 uint32_to_float64( uint32 );
 #ifdef FLOATX80
-floatx80 int32_to_floatx80( int );
+floatx80 int32_to_floatx80( int32 );
+floatx80 uint32_to_floatx80( uint32 );
 #endif
 #ifdef FLOAT128
-float128 int32_to_float128( int );
+float128 int32_to_float128( int32 );
+float128 uint32_to_float128( uint32 );
 #endif
 float32 int64_to_float32( long long );
 float64 int64_to_float64( long long );
index 7d677f4d390ab99e01e544d829ffafb0fdb15977..6bc391b28094b5dbeb493b6aca850299e178dd60 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: memcpy.S,v 1.2 2001/08/01 05:52:12 eeh Exp $   */
+/*     $NetBSD: memcpy.S,v 1.5 2011/07/12 07:51:33 mrg Exp $   */
 
 /*
  * Copyright (c) 2001  Eduardo E. Horvath
 #include <machine/psl.h>
 
 #if defined(LIBC_SCCS) && !defined(lint)
-       RCSID("$NetBSD: memcpy.S,v 1.2 2001/08/01 05:52:12 eeh Exp $")
+       RCSID("$NetBSD: memcpy.S,v 1.5 2011/07/12 07:51:33 mrg Exp $")
 #endif  /* LIBC_SCCS and not lint */
 
 #define        EMPTY   nop
 #define        NOTREACHED      ta      1
 
 #define        BCOPY_SMALL     16
-#define        BLOCK_SIZE      64
+#define        BLOCK_SIZE      SPARC64_BLOCK_SIZE
+#define        BLOCK_ALIGN     SPARC64_BLOCK_ALIGN
 
 #if 0
 #define ASI_STORE      ASI_BLK_COMMIT_P
 #define ASI_STORE      ASI_BLK_P
 #endif
 
+#ifndef        _ALIGN
+#define _ALIGN .align 8
+#endif
+
 #if 1
 /*
  * kernel bcopy/memcpy
@@ -728,7 +733,7 @@ Lbcopy_complete:
        .data
 0:     .asciz  "bcopy failed: %x@%p != %x@%p byte %d\n"
 1:     .asciz  "bcopy(%p, %p, %lx)\n"
-       .align 8
+       _ALIGN
        .text
 2:     
 #endif
index 7bc45135ee625a42baf144b8948f09b6cd938d97..315f319446efc4572bdc0c81b5af77033064dc21 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: SYS.h,v 1.10 2003/08/07 16:42:30 agc Exp $ */
+/*     $NetBSD: SYS.h,v 1.12 2012/02/27 12:26:21 joerg Exp $ */
 /*
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -33,6 +33,9 @@
 #include <machine/asm.h>
 #include <sys/syscall.h>
 
+#define        CERROR  _C_LABEL(__cerror)
+#define        CURBRK  _C_LABEL(__curbrk)
+
 #ifdef __STDC__
 #define SYSTRAP(x)     chmk $ SYS_ ## x
 #else
@@ -44,6 +47,7 @@
        SYSTRAP(y)
 
 #define _SYSCALL(x,y)                                                  \
+       .p2align 2;                                                     \
        err: nop; nop; jmp CERROR+2;                                    \
        _SYSCALL_NOERROR(x,y);                                          \
        jcs err+2
 
 #define PSEUDO_NOERROR(x,y)                                            \
        _SYSCALL_NOERROR(x,y);                                          \
-       ret
+       ret;                                                            \
+       END(x)
 
 #define PSEUDO(x,y)                                                    \
        _SYSCALL(x,y);                                                  \
-       ret
+       ret;                                                            \
+       END(x)
 
 #define RSYSCALL_NOERROR(x)                                            \
        PSEUDO_NOERROR(x,x)
 
 #define        ASMSTR          .asciz
 
-#ifdef __ELF__
-#define        CERROR  _C_LABEL(__cerror)
-#define        CURBRK  _C_LABEL(__curbrk)
-#else
-#define        CERROR  _ASM_LABEL(cerror)
-#define        CURBRK  _ASM_LABEL(curbrk)
-#endif
-
+       .protected      CERROR
        .globl  CERROR
index 69726b16942a580b2fd7d0f61f4227649d0d1762..6114aad24b695e4ad97e606be7c800a770cb88f5 100644 (file)
  * SUCH DAMAGE.
  */
 
-#if defined(LIBC_SCCS) && !defined(lint)
-       /* .asciz "@(#)setjmp.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: __setjmp14.S,v 1.10 2005/05/03 04:37:33 matt Exp $"
-#endif /* LIBC_SCCS and not lint */
-
 /*
  * C library -- setjmp, longjmp
  *
 #include "DEFS.h"
 #include "assym.h"
 
+#if defined(LIBC_SCCS) && !defined(lint)
+       /* .asciz "@(#)setjmp.s 8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: __setjmp14.S,v 1.11 2011/01/25 02:38:15 matt Exp $")
+#endif /* LIBC_SCCS and not lint */
+
 ENTRY(__setjmp14, R6)
        movl    4(%ap),%r2              # construct sigcontext
        subl2   $12,%sp                 # space for current struct sigstack
@@ -68,48 +68,10 @@ ENTRY(__setjmp14, R6)
        movl    16(%fp),(%r2)+          # save pc of caller
        movpsl  (%r2)                   # save current psl
        movw    4(%fp),(%r2)            # save psw of caller
-#ifdef __ELF__
        addl3   $SC_LEN,4(%ap),%r2      # point to past signal context
        movq    %r6,(%r2)+              # save r6/r7
        movq    %r8,(%r2)+              # save r8/r9
        movq    %r10,(%r2)+             # save r10/r11
-#endif
        clrl    %r0
        ret
-
-#ifndef __ELF__
-ENTRY(__longjmp14, 0)
-       movl    8(%ap),%r0              # return(v)
-       movl    4(%ap),%r1              # fetch buffer
-       tstl    12(%r1)                 # is fp non-null?
-       beql    botch
-
-#ifdef __ELF__
-       moval   $SC_LEN(%r1),%r2        # get ptr to saved registers
-       movq    (%r2)+,%r6              # restore r6/r7
-       movq    (%r2)+,%r8              # restore r8/r9
-       movq    (%r2)+,%r10             # restore r10/r11
-#else
-loop:
-       cmpl    12(%r1),%fp             # are we there yet?
-       beql    done
-       blssu   botch
-       moval   20(%fp),%r2
-       blbc    6(%fp),1f               # was %r0 saved?
-       movl    %r0,(%r2)+
-1:
-       bbc     $1,6(%fp),2f            # was %r1 saved?
-       movl    %r1,(%r2)
-2:
-       movab   loop,16(%fp)
-       ret                             # pop another frame
-
-done:
-#endif /* !__ELF__ */
-       pushl   %r1                     # pointer to sigcontext
-       calls   $1,_C_LABEL(__sigreturn14) # restore previous context
-                                       # we should never return
-botch:
-       calls   $0,_C_LABEL(longjmperror)
-       halt
-#endif
+END(__setjmp14)
index b5ada464259f6f8b7d15bed190d87dd050c83d66..ed661bfa4e40f862609ae4b61f7c5b63d2c8c526 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+#include <machine/setjmp.h>
+
 #if defined(LIBC_SCCS) && !defined(lint)
-       .asciz "$NetBSD: __sigsetjmp14.S,v 1.4 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: __sigsetjmp14.S,v 1.5 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -43,9 +46,6 @@
  * signal mask.
  */
 
-#include "DEFS.h"
-#include <machine/setjmp.h>
-
 ENTRY(__sigsetjmp14, R6)
        movl    4(%ap),%r0              # get env pointer
        movl    8(%ap),(_JBLEN*4)(%r0)  # save "savemask"
@@ -53,6 +53,7 @@ ENTRY(__sigsetjmp14, R6)
        beql    L1
        jmp     _C_LABEL(__setjmp14)+2  # yep, do full setjmp
 L1:    jmp     _C_LABEL(_setjmp)+2     # nope, skip to _setjmp
+END(__sigsetjmp14)
 
 ENTRY(__siglongjmp14, 0)
        movl    4(%ap),%r0              # get env pointer
@@ -60,5 +61,5 @@ ENTRY(__siglongjmp14, 0)
        beql    L2
        jmp     _C_LABEL(__longjmp14)+2 # yep, do full longjmp
 L2:    jmp     _C_LABEL(_longjmp)+2    # nope, skip to _longjmp
-
+END(__siglongjmp14)
 
index d48b6cd0c87dc098b1b579defedf219963b44f97..94d710bc69f78f462bfbcca60e9a567601567e98 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: _lwp.c,v 1.1 2009/06/03 01:02:28 christos Exp $        */
+/*     $NetBSD: _lwp.c,v 1.3 2012/03/22 17:32:22 christos Exp $        */
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _lwp.c,v 1.1 2009/06/03 01:02:28 christos Exp $");
+__RCSID("$NetBSD: _lwp.c,v 1.3 2012/03/22 17:32:22 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -68,12 +68,20 @@ _lwp_makecontext(ucontext_t *u, void (*start)(void *),
        sp[1] = 0x20000000;             /* make this a CALLS frame */
        sp[2] = 0;                      /* saved argument pointer */
        sp[3] = 0;                      /* saved frame pointer */
-       sp[4] = (intptr_t)_lwp_exit + 2;/* return via _lwp_exit */
+       sp[4] = (int)(uintptr_t)_lwp_exit + 2;/* return via _lwp_exit */
        sp[5] = 1;                      /* argc */
-       sp[6] = (intptr_t)arg;          /* argv */
+       sp[6] = (int)(uintptr_t)arg;            /* argv */
        
-       gr[_REG_AP] = (__greg_t)(sp + 5);
-       gr[_REG_SP] = (__greg_t)sp;
-       gr[_REG_FP] = (__greg_t)sp;
-       gr[_REG_PC] = (__greg_t)start + 2;
+       gr[_REG_AP] = (__greg_t)(uintptr_t)(sp + 5);
+       gr[_REG_SP] = (__greg_t)(uintptr_t)sp;
+       gr[_REG_FP] = (__greg_t)(uintptr_t)sp;
+       gr[_REG_PC] = (__greg_t)(uintptr_t)start + 2;
+
+       /*
+        * Push the TLS pointer onto the new stack also.
+        * The _UC_TLSBASE flag tells the kernel to pop it and use it.
+        */
+       *--sp = (int)(intptr_t)private;
+       gr[_REG_SP] = (__greg_t)(uintptr_t)sp;
+       u->uc_flags |= _UC_TLSBASE;
 }
index 4cd0fca4a1a50eafdbd39855462a7cc35b8254f4..932ee13710a340ec27e676a08d4f5d6aa14af129 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)_setjmp.s        8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: _setjmp.S,v 1.9 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: _setjmp.S,v 1.10 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /*
  * in order to be consistent.
  */
 
-#include "DEFS.h"
-
 ENTRY(_setjmp, R6)
        movl    4(%ap),%r0
        movl    12(%fp),12(%r0)         # save frame pointer of caller
        movl    16(%fp),20(%r0)         # save pc of caller
-#ifdef __ELF__
        movl    8(%fp),16(%r0)          # save ap of caller
        clrl    %r1                     # clear arg count
        bbc     $13,6(%fp),1f           # was this a callg?
@@ -63,16 +62,15 @@ ENTRY(_setjmp, R6)
        movq    %r6,44(%r0)             # save r6/r7
        movq    %r8,52(%r0)             # save r8/r9
        movq    %r10,60(%r0)            # save r10/r11
-#endif
        clrl    %r0
        ret
+END(_setjmp)
 
 ENTRY(_longjmp, 0)
        movl    8(%ap),%r0              # return(v)
        movl    4(%ap),%r1              # fetch buffer
        tstl    12(%r1)                 # is fp null
        beql    botch
-#ifdef __ELF__
        movq    44(%r1),%r6             # restore r6/r7
        movq    52(%r1),%r8             # restore r8/r9
        movq    60(%r1),%r10            # restore r10/r11
@@ -81,41 +79,8 @@ ENTRY(_longjmp, 0)
        movl    12(%r1),%fp             # restore fp
        movq    20(%r1),-(%sp)          # save pc/psl to new stack
        rei                             # and go back to saved pc/psl
-#else
-loop:
-       bitw    $1,6(%fp)               # %r0 saved?
-       beql    1f
-       movl    %r0,20(%fp)
-       bitw    $2,6(%fp)               # was %r1 saved?
-       beql    2f
-       movl    %r1,24(%fp)
-       brb     2f
-1:
-       bitw    $2,6(%fp)               # was %r1 saved?
-       beql    2f
-       movl    %r1,20(%fp)
-2:
-       cmpl    12(%r1),12(%fp)
-       beql    done
-       blssu   botch
-       movab   loop,16(%fp)
-       ret                             # pop another frame
-
-done:
-       cmpb    *16(%fp),$2             # returning to an "rei"?
-       bneq    1f
-       movab   3f,16(%fp)              # do return w/ psl-pc pop
-       brw     2f
-1:
-       movab   4f,16(%fp)              # do standard return
-2:
-       ret                             # unwind stack before signals enabled
-3:
-       addl2   $8,%sp                  # compensate for PSL-PC push
-4:
-       jmp     *20(%r1)                # done, return....
-#endif /* !__ELF__ */
 
 botch:
        calls   $0,_C_LABEL(longjmperror)
        halt
+END(_longjmp)
index d70bf2465d13866a2717fc03c8ecaf6df302f4e2..d6153040ea542a31299c5ef4483b625ce7103c40 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)alloca.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: alloca.S,v 1.3 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: alloca.S,v 1.5 2011/11/21 16:17:48 chs Exp $")
 #endif /* LIBC_SCCS and not lint */
 
-#include "DEFS.h"
-
 ENTRY(alloca, 0)
        movl    4(%ap),%r0      # get allocation size
-       movl    16(%fp),%r2     # save return address before we smash it
+       movl    16(%fp),%r1     # save return address before we smash it
        movab   here,16(%fp)
        ret
 here:
        subl2   %r0,%sp         # create stack space
        bicl2   $3,%sp          # align to longword boundary
        movl    %sp,%r0
-       jmp     (%r2)
+       jmp     (%r1)
+END(alloca)
index 6a94404fdcb352dc3b33a8238871326d30a42eb6..d3e64a1090e1b7413afeea38fef0a9505084217b 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)htons.s  8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: byte_swap_2.S,v 1.3 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: byte_swap_2.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
-#include "DEFS.h"
-
 ALTENTRY(ntohs)
 ALTENTRY(htons)
 ENTRY(__bswap16, 0)
@@ -41,3 +41,4 @@ ENTRY(__bswap16, 0)
        movb    5(%ap),%r0
        movzwl  %r0,%r0
        ret
+END(__bswap16)
index 13cb0519c0b7657336d14e0da5be163de0e6b631..d5272a3aed24ad51fb0ed63b75185161f1258325 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)htonl.s  8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: byte_swap_4.S,v 1.4 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: byte_swap_4.S,v 1.5 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
-#include "DEFS.h"
-
 ALTENTRY(ntohl)
 ALTENTRY(htonl)
 ENTRY(__bswap32, 0)
@@ -41,3 +41,4 @@ ENTRY(__bswap32, 0)
        insv    %r0,$16,$8,%r0
        movb    7(%ap),%r0
        ret
+END(__bswap32)
index a31bb9b75cbf8bb7fe46329da924f3fef6f44bb1..1b5c5f501b43525c0165a0cc35151e24cd714a99 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)fabs.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: fabs.S,v 1.3 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: fabs.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /* fabs - floating absolute value */
 
-#include "DEFS.h"
-
 ENTRY(fabs, 0)
        movd    4(%ap),%r0
        bgeq    1f
        mnegd   %r0,%r0
 1:
        ret
+END(fabs)
index 66db2499b9f1a28af1b638c31830c67d7ca169f5..a2edb2bda5ffb9e1c91492ea093269fcdd51dbc5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: frexp.c,v 1.4 2003/08/07 16:42:31 agc Exp $    */
+/*     $NetBSD: frexp.c,v 1.5 2012/06/25 22:32:43 abs Exp $    */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)frexp.c    8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: frexp.c,v 1.4 2003/08/07 16:42:31 agc Exp $");
+__RCSID("$NetBSD: frexp.c,v 1.5 2012/06/25 22:32:43 abs Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -42,9 +42,7 @@ __RCSID("$NetBSD: frexp.c,v 1.4 2003/08/07 16:42:31 agc Exp $");
 #include <math.h>
 
 double
-frexp(value, eptr)
-       double value;
-       int *eptr;
+frexp(double value, int *eptr)
 {
        union {
                 double v;
index ef36ccf08054fe1e3845b1ce9ec1c68cf38e33af..477705e18ff6b6410b40708118549bc32db9aff5 100644 (file)
  * SUCH DAMAGE.
  */
 
-#if defined(LIBC_SCCS) && !defined(lint)
-       /*.asciz "@(#)ldexp.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: ldexp.S,v 1.6 2003/08/07 16:42:31 agc Exp $"
-#endif /* LIBC_SCCS and not lint */
-
 /*
  * double ldexp (value, exp)
  * double value;
  */
 
 #include "DEFS.h"
+#include "assym.h"
 
-/*
- * don't include errno.h, ANSI C says it defines errno.
- *
- * #include <errno.h>
- */
-#define        ERANGE  34
+#if defined(LIBC_SCCS) && !defined(lint)
+       /*.asciz "@(#)ldexp.s   8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: ldexp.S,v 1.7 2011/01/25 02:38:15 matt Exp $")
+#endif /* LIBC_SCCS and not lint */
 
+#ifndef _REENTRANT
        .globl  _C_LABEL(errno)
+#endif
 
 ENTRY(ldexp, 0)
        movd    4(%ap),%r0      /* fetch "value" */
@@ -72,7 +68,12 @@ ENTRY(ldexp, 0)
        clrd    %r0
        jbr     1f
 3:
-       movd    huge,%r0                /* largest possible floating magnitude */
+       /*
+        * The largest number that can be represented in a long floating
+        * number.  This is given in hex in order to avoid floating
+        * conversions
+        */
+       movq    $0x7fffffffffffffff,%r0  /* largest possible floating magnitude */
        jbc     $15,4(%ap),1f   /* jump if argument was positive */
        mnegd   %r0,%r0         /* if arg < 0, make result negative */
 1:
@@ -85,9 +86,4 @@ ENTRY(ldexp, 0)
        movl    $ ERANGE,_C_LABEL(errno)
 #endif
        ret
-
-       .data
-huge:  .word   0x7fff          /* the largest number that can */
-       .word   0xffff          /*   be represented in a long floating */
-       .word   0xffff          /*   number.  This is given in hex in order */
-       .word   0xffff          /*   to avoid floating conversions */
+END(ldexp)
index 87ee3bf907f3fe182de86e001a85f89fdb5ac070..7199f12c16daa95cb4c94a74421176c22679c57a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $   */
+/*     $NetBSD: makecontext.c,v 1.4 2012/03/22 17:32:22 christos Exp $ */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: makecontext.c,v 1.4 2012/03/22 17:32:22 christos Exp $");
 #endif
 
 #include <stddef.h>
@@ -69,11 +69,11 @@ makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...)
        sp[1] = 0x20000000;             /* make this a CALLS frame */
        sp[2] = 0;                      /* saved argument pointer */
        sp[3] = 0;                      /* saved frame pointer */
-       sp[4] = (int)_resumecontext+2;  /* return via trampoline code */
+       sp[4] = (int)(uintptr_t)_resumecontext+2;/* return via trampoline code */
 
-       gr[_REG_AP] = (__greg_t)(sp + 5);
-       gr[_REG_SP] = (__greg_t)sp;
-       gr[_REG_FP] = (__greg_t)sp;
-       gr[_REG_PC] = (__greg_t)func+2;
+       gr[_REG_AP] = (__greg_t)(uintptr_t)(sp + 5);
+       gr[_REG_SP] = (__greg_t)(uintptr_t)sp;
+       gr[_REG_FP] = (__greg_t)(uintptr_t)sp;
+       gr[_REG_PC] = (__greg_t)(uintptr_t)func+2;
 
 }
index e17570564f2d6a1df89a6e5a9ed41eefb234fe2d..684875641606180407f2f214948b67c235c897b0 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)modf.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: modf.S,v 1.4 2003/08/07 16:42:31 agc Exp $"
+RCSID("$NetBSD: modf.S,v 1.5 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -40,8 +42,6 @@
  * and stores the integer part indirectly through "iptr".
  */
 
-#include "DEFS.h"
-
 ENTRY(modf, 0)
        emodd   4(%ap),$0,$0f1.0,%r2,%r0
        jvs     1f                      # integer overflow
@@ -50,6 +50,7 @@ ENTRY(modf, 0)
 1:
        subd3   %r0,4(%ap),*12(%ap)
        ret
+END(modf)
 
 ENTRY(modff, 0)
        emodf   4(%ap),$0,$0f1.0,%r2,%r0
@@ -59,3 +60,4 @@ ENTRY(modff, 0)
 1:
        subf3   %r0,4(%ap),*8(%ap)
        ret
+END(modff)
index 7baafea1e828c93477a5c229e556b2864e15b73e..f604739da1099ec557fc7b1636da3851329a896d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $ */
+/*     $NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:58 joerg Exp $  */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $");
+__RCSID("$NetBSD: resumecontext.c,v 1.4 2011/09/19 21:24:58 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: resumecontext.c,v 1.3 2008/04/28 20:22:57 martin Exp $");
 #include "extern.h"
 
 void
-_resumecontext()
+_resumecontext(void)
 {
        ucontext_t uct;
 
index 45f5afbd1842d7e4256d685e921099158e34dc83..f80a29bc97f7b327798dde11cdc67d4dd28c2906 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: swapcontext.S,v 1.3 2008/04/28 20:22:58 martin Exp $   */
+/*     $NetBSD: swapcontext.S,v 1.4 2011/01/25 02:38:15 matt Exp $     */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
 
 #include "SYS.h"
 
+#ifdef LIBC_SCCS
+RCSID("$NetBSD: swapcontext.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 ENTRY(swapcontext, 0)
        clrl    %r0                     /* assume getcontext succeeds */
        chmk    $SYS_getcontext         /* getcontext(oucp) */
@@ -48,3 +52,4 @@ ENTRY(swapcontext, 0)
        pushl   8(%ap)
        calls   $1,_C_LABEL(setcontext) /* setcontext(ucp) */
        ret
+END(swapcontext)
index ddb2b0851840fa5bc00105434f4e4d5ec43e93a7..cad3361db1a72ba2fcd9b4a87855e2ec17af083e 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: genassym.cf,v 1.4 2008/04/28 20:22:57 martin Exp $
+#      $NetBSD: genassym.cf,v 1.5 2011/01/25 02:38:15 matt Exp $
 
 #
 # Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,6 +31,7 @@
 
 include <ucontext.h>
 include <signal.h>
+include <errno.h>
 
 define UC_LEN          sizeof(ucontext_t)
 define UC_FLAGS                offsetof(ucontext_t, uc_flags)
@@ -81,3 +82,5 @@ define        SC_MASK         offsetof(struct sigcontext, sc_mask)
 
 define SIG_BLOCK       SIG_BLOCK
 define SS_LEN          sizeof(sigset_t)
+
+define ERANGE          ERANGE
index e032c29b4f9f2ed3841e36a83c94deb38e386b31..1ea154014bd5b881737745be771caeb457432601 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bcmp.S,v 1.3 2003/08/07 16:42:32 agc Exp $     */
+/*     $NetBSD: bcmp.S,v 1.4 2011/01/25 02:38:15 matt Exp $    */
 /*
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
 
 #include "DEFS.h"
 
+#ifdef LIBC_SCCS
+RCSID("$NetBSD: bcmp.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 /* Since "cmpc3" is not portable across VAXen, do it the hard way */
 /*  still, this is four times faster than the generic C version on a uvax2 */
 
@@ -56,3 +60,4 @@ ENTRY(bcmp, 0)
        clrl    %r0             # we have a match!
 9:
        ret
+END(bcmp)
index 6a9c8fe78c331a9e170467d9d251a713cef8af69..b2f96a49f71efdd4a1fbd6e75e3b88f1ede338f4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bcopy.S,v 1.3 2003/08/07 16:42:32 agc Exp $    */
+/*     $NetBSD: bcopy.S,v 1.4 2011/01/25 02:38:15 matt Exp $   */
 /*
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
  * SUCH DAMAGE.
  */
 
-#if defined(LIBC_SCCS) && !defined(lint)
-       .asciz "@(#)bcopy.s     8.1 (Berkeley) 6/4/93"
-#endif /* LIBC_SCCS and not lint */
-
 /* bcopy(from, to, size) */
 
 #include "DEFS.h"
 
+#if defined(LIBC_SCCS)
+       /* .asciz "@(#)bcopy.s  8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: bcopy.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
+
 ENTRY(bcopy, R6)
        movl    4(%ap),%r1
        movl    8(%ap),%r3
@@ -73,3 +75,4 @@ ENTRY(bcopy, R6)
        subl2   %r6,%r3
        movc3   %r6,(%r1),(%r3)
        ret
+END(bcopy)
index 291bdf8d053f4e2926d098b0ef8f9c9620c74c50..54b3046f4a3dcf46a7fcdc00c1d1a007b9cdc328 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bzero.S,v 1.3 2003/08/07 16:42:32 agc Exp $    */
+/*     $NetBSD: bzero.S,v 1.4 2011/01/25 02:38:15 matt Exp $   */
 /*
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
  * SUCH DAMAGE.
  */
 
-#if defined(LIBC_SCCS) && !defined(lint)
-       .asciz "@(#)bzero.s     8.1 (Berkeley) 6/4/93"
-#endif /* LIBC_SCCS and not lint */
+#include "DEFS.h"
 
-/* bzero(base, length) */
+#if defined(LIBC_SCCS)
+       /* .asciz "@(#)bzero.s  8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: bzero.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
 
-#include "DEFS.h"
+/* bzero(base, length) */
 
 ENTRY(bzero, 0)
        movl    4(%ap),%r3
@@ -48,3 +49,4 @@ ENTRY(bzero, 0)
        jgtr    1b
        movc5   $0,(%r3),$0,8(%ap),(%r3)
        ret
+END(bzero)
index 04d78bf106ecc118629fdc7298edf039a42f1835..a87be2adf0e6a3aecce1e26c943cfc99c8a26e1d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs.S,v 1.3 2003/08/07 16:42:32 agc Exp $      */
+/*     $NetBSD: ffs.S,v 1.4 2011/01/25 02:38:15 matt Exp $     */
 /*
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
  * SUCH DAMAGE.
  */
 
+#include "DEFS.h"
+
 #if defined(LIBC_SCCS) && !defined(lint)
-       .asciz "@(#)ffs.s       8.1 (Berkeley) 6/4/93"
+       /* .asciz "@(#)ffs.s    8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: ffs.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
 #endif /* LIBC_SCCS and not lint */
 
 /* bit = ffs(value) */
 
-#include "DEFS.h"
-
 ENTRY(ffs, 0)
        ffs     $0,$32,4(%ap),%r0
        bneq    1f
@@ -43,3 +44,4 @@ ENTRY(ffs, 0)
 1:
        incl    %r0
        ret
+END(ffs)
index 097f35c7010e6b08652550593b554076f1d7d49e..5d0516bd97005632edb2455b437c86236d43788a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: index.S,v 1.3 2003/08/07 16:42:32 agc Exp $    */
+/*     $NetBSD: index.S,v 1.4 2011/01/25 02:38:15 matt Exp $   */
 /*
  * Copyright (c) 1980, 1993
  *     The Regents of the University of California.  All rights reserved.
  */
 #include "DEFS.h"
 
+#ifdef LIBC_SCCS
+RCSID("$NetSBD$")
+#endif
+
 /* Alas not quite twice as fast as the generic C version on a uvax2 */
 
 ENTRY(index, 0)
@@ -57,3 +61,4 @@ ENTRY(index, 0)
        jneq    3b
        decl    %r0
        jbr     2b
+END(index)
index a129fb4fee4565b2fae793911b13049c94be6cd5..89e9ac5e3ff9b1f52051c8de35520a1646a9dfb4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: memcmp.S,v 1.3 2003/08/07 16:42:32 agc Exp $   */
+/*     $NetBSD: memcmp.S,v 1.4 2011/01/25 02:38:15 matt Exp $  */
 /*-
  * Copyright (c) 1990, 1993
  *     The Regents of the University of California.  All rights reserved.
 
 #include "DEFS.h"
 
+#ifdef LIBC_SCCS
+RCSID("$NetBSD: memcmp.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 ENTRY(memcmp, 0)
        movl    12(%ap),%r0
        jeql    9f
@@ -63,3 +67,4 @@ ENTRY(memcmp, 0)
        subl3   %r4,%r3,%r0
 9:
        ret
+END(memcmp)
index 53dec100372b3df5c2dc8194c4f335672565d36a..2d7246acd413037e4685f7d4e674a2bc8c48f244 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: __clone.S,v 1.3 2008/04/28 20:22:58 martin Exp $       */
+/*     $NetBSD: __clone.S,v 1.4 2011/01/25 02:38:15 matt Exp $ */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: __clone.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(clone, __clone)
 #endif
@@ -74,3 +78,4 @@ ENTRY(__clone, 0)
 
 9:     movl    $EINVAL,%r0
        jmp     CERROR+2
+END(__clone)
index e4703a26a50a658febd992201e3aac7fdaef7d9b..0631cceac73bc4f4f67939ccadcdfc3a29d2d571 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: __sigtramp3.S,v 1.1 2003/09/30 19:05:41 matt Exp $     */
+/*     $NetBSD: __sigtramp3.S,v 1.2 2011/01/25 02:38:15 matt Exp $     */
 
 /*
  * Copyright (c) 2003 Matt Thomas <matt@3am-software.com>
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: __sigtramp3.S,v 1.2 2011/01/25 02:38:15 matt Exp $")
+#endif
+
        .text
        _ALIGN_TEXT
 
        .globl  _C_LABEL(__sigtramp_siginfo_3)
 _C_LABEL(__sigtramp_siginfo_3):
+       nop; nop
        callg (%ap),(%fp)               # use global arg list
        addl2 $8,%ap                    # arg is pointer to ucontext
        SYSTRAP(setcontext)             # exit from here
index 4ceb9bb43a7ef3a5d19b4ea141562cbffc92647e..1efa4a64e47d0e324297d0153fc0b662eb080acf 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)syscall.s        8.2 (Berkeley) 1/21/94" */
-       .asciz "$NetBSD: __syscall.S,v 1.3 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: __syscall.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 ENTRY(__syscall, 0)
        movl    4(%ap),%r0      # syscall number
        addl2   $8,%ap          # skip the first argument
@@ -48,3 +48,4 @@ ENTRY(__syscall, 0)
        ret
 1:
        jmp     CERROR+2
+END(__syscall)
index d9bdabdc93dd2c8c83061eab366e8bab61f22466..440ac3f45b87c97076b82a8d67ce3812be83e67b 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)Ovfork.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: __vfork14.S,v 1.5 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: __vfork14.S,v 1.7 2011/11/21 16:17:48 chs Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
 /*
@@ -37,8 +39,6 @@
  * C library -- vfork
  */
 
-#include "SYS.h"
-
 /*
  * pid = vfork();
  *
  */
 
 ENTRY(__vfork14, 0)
-       movl    16(%fp),%r2     # save return address before we smash it
+       movl    16(%fp),%r0     # save return address before we smash it
        movab   here,16(%fp)
        ret
 here:
+       movl    %r0,%r2
        chmk    $ SYS___vfork14
        bcs     err             # if failed, set errno and return -1
        /* this next trick is Chris Torek's fault */
@@ -74,3 +75,4 @@ err:
        mnegl   $1,%r0
        jmp     (%r2)
 #endif
+END(__vfork14)
index 63be221fb1921a616a64db3ff9cfcd05c689d7cd..d884b2a2af92de9d12bfc77c16333bc684aeff0f 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)brk.s    8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: brk.S,v 1.12 2003/12/26 11:21:48 martin Exp $"
+RCSID("$NetBSD: brk.S,v 1.13 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
        .globl  CURBRK
        .globl  _C_LABEL(__minbrk)
 
@@ -52,3 +52,4 @@ ENTRY(_brk, 0)
        ret
 err:
        jmp     CERROR+2
+END(_brk)
index f9430318db2806c76447473abe3ce918c778c5d3..94f929ac412ab3258755b1bb2205ee4862296f5d 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)cerror.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: cerror.S,v 1.8 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: cerror.S,v 1.9 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
        .globl  _C_LABEL(errno)
-CERROR: .word 0
+NENTRY(__cerror, 0)
 #ifdef _REENTRANT
        pushl   %r0
        calls   $0,_C_LABEL(__errno)
@@ -46,3 +46,4 @@ CERROR: .word 0
        mnegl   $1,%r0
        movl    %r0,%r1
        ret
+END(__cerror)
index b1262f01d5bf47cffebc1f36217f3e630d749a53..c084b8a8c75ab25ce777fe9abe44996da6f6fa12 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: execl.S,v 1.3 2003/08/24 21:04:53 ragge Exp $  */
+/*     $NetBSD: execl.S,v 1.4 2011/01/25 02:38:15 matt Exp $   */
 /*
  * Copyright (c) 2001 Ludd, University of Lule}, Sweden. All rights reserved.
  *
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: execl.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(execl, _execl)
 #endif
@@ -40,3 +44,4 @@ ENTRY(_execl, 0)
        pushl   4(%ap)  # Push path
        calls   $2,_C_LABEL(execv)
        ret
+END(_execl)
index 6c8c9ff4adf0b4906e4d7175448d6297da7a8382..3a3a5288c2cdebbb25dca3e16b5f9d08492f8fee 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: execle.S,v 1.4 2003/08/24 21:04:53 ragge Exp $ */
+/*     $NetBSD: execle.S,v 1.5 2011/01/25 02:38:15 matt Exp $  */
 /*
  * Copyright (c) 2001 Ludd, University of Lule}, Sweden. All rights reserved.
  *
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: execle.S,v 1.5 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(execle, _execle)
 #endif
@@ -42,3 +46,4 @@ ENTRY(_execle, 0)
        pushl   4(%ap)          # Push path
        calls   $3,_C_LABEL(execve)
        ret
+END(_execle)
index fd275ce284f4f9a26f2bd85c7dbf254a2df97708..3c866ea39db234b5a932cdc4ae29c9546e34b832 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: execlp.S,v 1.3 2003/08/24 21:04:53 ragge Exp $ */
+/*     $NetBSD: execlp.S,v 1.4 2011/01/25 02:38:15 matt Exp $  */
 /*
  * Copyright (c) 2001 Ludd, University of Lule}, Sweden. All rights reserved.
  *
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: execlp.S,v 1.4 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(execlp, _execlp)
 #endif
@@ -40,3 +44,4 @@ ENTRY(_execlp, 0)
        pushl   4(%ap)  # Push path
        calls   $2,_C_LABEL(execvp)
        ret
+END(_execlp)
index 3061c6fa60afbc8d111cc620e07fa76cdad6b1a9..191fb6e99db70fc9af028a1ff85c96f2a925050e 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+#include <machine/psl.h>
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)exect.s  8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: exect.S,v 1.5 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: exect.S,v 1.6 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-#include <machine/psl.h>
-
 ENTRY(exect, 0)
        bispsw  $PSL_T
        chmk    $ SYS_execve
        jmp     CERROR+2                # exect(file, argv, env)
+END(exect)
index 72ddf58fbcbf226ffb199ae125470f6d3c61a7ab..54d5b7d37535170f9b869374e8e8c2b8f42d634e 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)fork.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: fork.S,v 1.5 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: fork.S,v 1.6 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 _SYSCALL(__fork,fork)
        jlbc    %r1,1f  # parent, since %r1 == 0 in parent, 1 in child
        clrl    %r0
 1:
        ret             # pid = fork()
+END(__fork)
index b0d78e1072076a30c07a8e9024808271045de360..d334193125208730011897127f29161b755a8a07 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: getcontext.S,v 1.4 2008/04/28 20:22:58 martin Exp $    */
+/*     $NetBSD: getcontext.S,v 1.6 2011/11/21 16:17:48 chs Exp $       */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: getcontext.S,v 1.6 2011/11/21 16:17:48 chs Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(getcontext, _getcontext)
 #endif
@@ -44,8 +48,8 @@ ENTRY(_getcontext, 0)
        jcc     1f
        jmp     CERROR+2                /* badness happened */
 
-1:     movl    4(%ap),%r2              /* ptr to ucontext */
-       movl    16(%fp),%r3             /* PC to return to */
+1:     movl    4(%ap),%r0              /* ptr to ucontext */
+       movl    16(%fp),%r1             /* PC to return to */
        movab   2f,16(%fp)              /* let's return early */
        ret
        /*
@@ -55,7 +59,9 @@ ENTRY(_getcontext, 0)
         * the callers state but we still have control.
         */
        _ALIGN_TEXT
-2:     movq    %ap,(36+12*4)(%r2)      /* adjust AP + SP */
-       movl    %fp,(36+14*4)(%r2)      /* adjust FP */
-       movl    %r3,(36+15*4)(%r2)      /* adjust PC */
-       jmp     (%r3)                   /* and return */
+2:     movq    %ap,(36+12*4)(%r0)      /* adjust AP + SP */
+       movl    %fp,(36+14*4)(%r0)      /* adjust FP */
+       movl    %r3,(36+15*4)(%r0)      /* adjust PC */
+       clrl    %r0
+       jmp     (%r1)                   /* and return */
+END(_getcontext)
index 9163d1fe034e94c2c80337247c9bfc5fa8f43bce..60ded6aed33e34818b685656ac84073770583acf 100644 (file)
  * SUCH DAMAGE.
  */
 
-#if defined(SYSLIBC_SCCS) && !defined(lint)
-       /* .asciz "@(#)pipe.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: pipe.S,v 1.4 2003/08/07 16:42:33 agc Exp $"
-#endif /* SYSLIBC_SCCS and not lint */
-
 #include "SYS.h"
 
+#if defined(SYSLIBC_SCCS)
+       /* .asciz "@(#)pipe.s   8.1 (Berkeley) 6/4/93" */
+RCSID("$NetBSD: pipe.S,v 1.5 2011/01/25 02:38:15 matt Exp $")
+#endif
+
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(pipe, _pipe)
 #endif
@@ -44,3 +44,4 @@ _SYSCALL(_pipe,pipe)
        movl    %r1,(%r2)
        clrl    %r0
        ret
+END(_pipe)
index 0aa93b1f6c1ff5b4c731c395192388c28fea8d0b..6e8519c02674ed00e2ff0241b2c119a195b09e60 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)ptrace.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: ptrace.S,v 1.7 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: ptrace.S,v 1.8 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 ENTRY(ptrace, 0)
 #ifdef _REENTRANT
        calls   $0,_C_LABEL(__errno)
@@ -46,3 +46,4 @@ ENTRY(ptrace, 0)
        ret
 err:
        jmp     CERROR+2
+END(ptrace)
index 19fad3abe33683d9a9b81916bd5a1e689adb6fce..ae42e7ba48dc3ffb6a93d10399ef6bf50749aff2 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sbrk.s   8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: sbrk.S,v 1.10 2003/08/07 16:42:33 agc Exp $"
+RCSID("$NetBSD: sbrk.S,v 1.11 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
        .globl  _end
        .globl  _C_LABEL(__minbrk)
        .globl  CURBRK
@@ -61,3 +61,4 @@ ENTRY(_sbrk, 0)
        ret
 err:
        jmp     CERROR+2
+END(_sbrk)
index b55c600fa7364a4714236b347a77ccc0186f7f0d..9cd8bce5381bd3693527e0287913243e588f866a 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)syscall.s        8.2 (Berkeley) 1/21/94" */
-       .asciz "$NetBSD: syscall.S,v 1.6 2003/08/07 16:42:34 agc Exp $"
+RCSID("$NetBSD: syscall.S,v 1.7 2011/01/25 02:38:15 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 ENTRY(syscall, 0)
        movl    4(%ap),%r0      # syscall number
        subl3   $1,(%ap)+,(%ap) # one fewer arguments
@@ -47,3 +47,4 @@ ENTRY(syscall, 0)
        ret
 1:
        jmp     CERROR+2
+END(syscall)
index 90f1c526dc52a944e5fc37b6eb7a0181d008791d..d5a357c968e493a7c72444379dc5c987b3a4d2dd 100644 (file)
@@ -128,7 +128,7 @@ cdbr_open(const char *path, int flags)
                return NULL;
        }
 
-       if (read(fd, cdbr->mmap_base, cdbr->mmap_size) != cdbr->mmap_size)
+       if ((size_t)read(fd, cdbr->mmap_base, cdbr->mmap_size) != cdbr->mmap_size)
        {
                free(cdbr->mmap_base);
                free(cdbr);
index 1786884d0ee2a5c4621f98dd235171ec2b5af0ed..821e4101e9a435efe0f6a8ef28d432469a3944b3 100644 (file)
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile.inc,v 1.1 2005/09/16 18:21:19 drochner Exp $
+# $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:12 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/alpha/sys/compat_quotactl.S b/lib/libc/compat/arch/alpha/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..aa367e0
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:12 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index a38ba1171ed92b6f0b0f00980af5259fc0d3e9b8..7910a4612af638c9bbc8a89cdc8005a25f59fe82 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2006/03/11 19:54:56 christos Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:13 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/hppa/sys/compat_quotactl.S b/lib/libc/compat/arch/hppa/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..8df4a3d
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:13 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index f7d1a2c49756cecb90e05e47e1ad3ab07131a19a..83d9c16d570329358aee4a360bed0beff5c53acf 100644 (file)
@@ -1,3 +1,3 @@
-# $NetBSD: Makefile.inc,v 1.1 2006/09/23 17:38:03 cherry Exp $
+# $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:13 bouyer Exp $
 
-SRCS+= compat___semctl.S
+SRCS+= compat___semctl.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/ia64/sys/compat_quotactl.S b/lib/libc/compat/arch/ia64/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..8df4a3d
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:13 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 768d04cf058362ff37381e3e287d384f790fedc9..47154b1b6185a13f2420283f804d4b708e583e28 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2006/03/09 16:20:55 christos Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:13 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/m68k/sys/compat_quotactl.S b/lib/libc/compat/arch/m68k/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..8df4a3d
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:13 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 73e76ccd922c89f5341519a5a7fea247ce1b0903..07241b4135b7f49990c524c17bb54a43c664a72d 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2005/09/17 11:49:39 tsutsui Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:14 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/mips/sys/compat_quotactl.S b/lib/libc/compat/arch/mips/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..94630b8
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:14 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 425cfc4da3e54b2e4d3bf9a19066a18f4c7bcaa6..13b76ee084fe3b3f6fb6d0b4822439a1c3b0de9f 100644 (file)
@@ -1,7 +1,7 @@
-#      $NetBSD: Makefile.inc,v 1.1 2006/02/18 00:21:28 matt Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:14 bouyer Exp $
 
 SRCS+= compat_Ovfork.S \
        compat___sigreturn14.S compat___sigtramp1.S \
        compat_msgctl.S compat___semctl.S compat_shmctl.S \
        compat_sigaction13.S compat_sigpending13.S compat_sigprocmask13.S \
-       compat_sigreturn13.S compat_sigsuspend13.S 
+       compat_sigreturn13.S compat_sigsuspend13.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/powerpc/sys/compat_quotactl.S b/lib/libc/compat/arch/powerpc/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..94630b8
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:14 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 2b441c41e47a1afb18b76ad4da6284f5be45dac5..a814c1bda8a287de0f0711926ab2a8b528b383f4 100644 (file)
@@ -1,3 +1,3 @@
-#      $NetBSD: Makefile.inc,v 1.2 2006/07/07 06:59:04 ross Exp $
+#      $NetBSD: Makefile.inc,v 1.3 2011/03/06 17:08:14 bouyer Exp $
 
-SRCS+= compat_msgctl.S compat___semctl.S compat_shmctl.S
+SRCS+= compat_msgctl.S compat___semctl.S compat_shmctl.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/powerpc64/sys/compat_quotactl.S b/lib/libc/compat/arch/powerpc64/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..94630b8
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:14 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 44f37408de2a9695d6d034f3c801541097e2a136..07241b4135b7f49990c524c17bb54a43c664a72d 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2005/09/15 21:39:16 uwe Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:14 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/sh3/sys/compat_quotactl.S b/lib/libc/compat/arch/sh3/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..94630b8
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:14 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index 0a7475a9990623ff3d58646db44355a751d94d0a..191a9903a3e5625041ee34ecc3ed09b19852e993 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2005/10/15 22:11:22 uwe Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:15 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
diff --git a/lib/libc/compat/arch/sparc/sys/compat_quotactl.S b/lib/libc/compat/arch/sparc/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..efb8031
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:15 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index f45e2b8b876a64444a1139dadc93117e55c1d4ad..191a9903a3e5625041ee34ecc3ed09b19852e993 100644 (file)
@@ -1,6 +1,6 @@
-#      $NetBSD: Makefile.inc,v 1.1 2005/10/16 04:41:34 christos Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:15 bouyer Exp $
 
 SRCS+=compat_Ovfork.S compat___semctl.S compat___sigreturn14.S \
     compat___sigtramp1.S compat_msgctl.S compat_shmctl.S compat_sigaction.S \
     compat_sigpending.S compat_sigprocmask.S compat_sigreturn.S \
-    compat_sigsuspend.S 
+    compat_sigsuspend.S compat_quotactl.S
index 38810fbfb4fb2884433894b6390c2f996bdc02ab..3fbf49aa103daf77920289aa5d1a34cc6ef32d72 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: compat___sigtramp1.S,v 1.1 2005/10/16 04:41:34 christos Exp $  */
+/*     $NetBSD: compat___sigtramp1.S,v 1.2 2011/07/12 07:51:33 mrg Exp $       */
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath
@@ -58,6 +58,9 @@
        .register       %g2,#ignore
        .register       %g3,#ignore
 
+#define BLOCK_SIZE SPARC64_BLOCK_SIZE
+#define BLOCK_ALIGN SPARC64_BLOCK_ALIGN
+
 /*
  * When this code is run, the stack looks like:
  *     [%sp]                   128 bytes to which registers can be dumped
diff --git a/lib/libc/compat/arch/sparc64/sys/compat_quotactl.S b/lib/libc/compat/arch/sparc64/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..efb8031
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:15 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index add529716f06e02149fc5e76e76907bc7ab67b2f..0ef0169070f028ae3d5c2e41faca04e2e83a5cce 100644 (file)
@@ -1,7 +1,7 @@
-#      $NetBSD: Makefile.inc,v 1.1 2006/02/18 22:54:51 matt Exp $
+#      $NetBSD: Makefile.inc,v 1.2 2011/03/06 17:08:15 bouyer Exp $
 
 SRCS+= compat_Ovfork.S \
        compat___sigreturn14.S compat___sigtramp2.S \
        compat_msgctl.S compat___semctl.S compat_shmctl.S \
        compat_sigaction13.S compat_sigpending13.S compat_sigprocmask13.S \
-       compat_sigreturn13.S compat_sigsuspend13.S 
+       compat_sigreturn13.S compat_sigsuspend13.S compat_quotactl.S
index 0fdda43da6b7864df6221808c38f58bcfc2f63a7..b425c5f5bc02c2b1d50ae279e65180c948909bc4 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)Ovfork.s 8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat_Ovfork.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat_Ovfork.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
 /*
@@ -37,8 +39,6 @@
  * C library -- vfork
  */
 
-#include "SYS.h"
-
 WARN_REFERENCES(vfork, \
     "warning: reference to compatibility vfork(); include <unistd.h> for correct reference")
 
@@ -77,3 +77,4 @@ err:
        mnegl   $1,%r0
        jmp     (%r2)
 #endif
+END(vfork)
index 4a530aaab309dac2b6e965be6b9d29f23bdd08e5..006aa6e7e779ec4300456f7ff82711129e3a8734 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sigreturn.s      8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat___sigreturn14.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat___sigreturn14.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 /*
  * We must preserve the state of the registers as the user has set them up.
  */
index 7f0b6883e6bd2a84b78cceba5c44eb6b082c99d6..72693ac3749eefc0e3f23b44fd91d5e52f9dab8c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: compat___sigtramp2.S,v 1.1 2006/02/18 22:54:51 matt Exp $      */
+/*     $NetBSD: compat___sigtramp2.S,v 1.3 2011/01/29 22:58:47 matt Exp $      */
 
 /*
  * Copyright (c) 2002 Anders Magnusson, (ragge@NetBSD.org).
 
 #include "SYS.h"
 
+#ifdef SYSLIBC_SCCS
+RCSID("$NetBSD: compat___sigtramp2.S,v 1.3 2011/01/29 22:58:47 matt Exp $")
+#endif
+
        .text
        _ALIGN_TEXT
 
        .globl  _C_LABEL(__sigtramp_sigcontext_2)
 _C_LABEL(__sigtramp_sigcontext_2):
+       nop; nop;
        pushr $(R0|R1|R2|R3|R4|R5)      # save scratch registers
        callg (%ap),(%fp)               # use global arg list
        popr $(R0|R1|R2|R3|R4|R5)       # restore regs
        movab 8(%ap),%ap                # arg is pointer to sigctx
        SYSTRAP(compat_16___sigreturn14) # exit from here
        halt                            # illegal insn
+END(__sigtramp_sigcontext_2)
diff --git a/lib/libc/compat/arch/vax/sys/compat_quotactl.S b/lib/libc/compat/arch/vax/sys/compat_quotactl.S
new file mode 100644 (file)
index 0000000..efb8031
--- /dev/null
@@ -0,0 +1,38 @@
+/*     $NetBSD: compat_quotactl.S,v 1.2 2011/03/06 17:08:15 bouyer Exp $       */
+
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SYS.h"
+
+WARN_REFERENCES(quotactl, \
+    "warning: reference to compatibility quotactl(); include <sys/quota.h> for correct reference")
+
+PSEUDO(quotactl,compat_50_quotactl)
index fa423f893f80dcbe82d0736fb63e31ea0125fbaf..04fddc12159d8e51c56b48010ffce8a413fbc896 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sigpending.s     8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat_sigpending13.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat_sigpending13.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 WARN_REFERENCES(sigpending, \
     "warning: reference to compatibility sigpending(); include <signal.h> for correct reference")
 
@@ -41,3 +41,4 @@ _SYSCALL(sigpending,compat_13_sigpending13)
        movl    %r0,*4(%ap)             # store old mask
        clrl    %r0
        ret
+END(sigpending)
index 14df4facaf9c2452a9f8382b89d443747ce102cd..0c3129fa51db8758c45f00d2d735f21252900413 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sigprocmask.s    8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat_sigprocmask13.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat_sigprocmask13.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 WARN_REFERENCES(sigprocmask, \
     "warning: reference to compatibility sigprocmask(); include <signal.h> for correct reference")
 
@@ -54,3 +54,4 @@ ENTRY(sigprocmask, 0)
 out:
        clrl    %r0
        ret
+END(sigprocmask)
index f66856d64f8299434e3dfb7592d45829dd5659b0..31686c57dda14bb2fe97b2144fad9a496ca14045 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sigreturn.s      8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat_sigreturn13.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat_sigreturn13.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 /*
  * We must preserve the state of the registers as the user has set them up.
  */
index 057ce40b288b8038ac61e7e4751660dc0980e8c8..cb468b06944c10c4d4b70758ecf58e94b10c1ff2 100644 (file)
  * SUCH DAMAGE.
  */
 
+#include "SYS.h"
+
 #if defined(SYSLIBC_SCCS) && !defined(lint)
        /* .asciz "@(#)sigsuspend.s     8.1 (Berkeley) 6/4/93" */
-       .asciz "$NetBSD: compat_sigsuspend13.S,v 1.1 2006/02/18 22:54:51 matt Exp $"
+RCSID("$NetBSD: compat_sigsuspend13.S,v 1.2 2011/01/25 02:38:16 matt Exp $")
 #endif /* SYSLIBC_SCCS and not lint */
 
-#include "SYS.h"
-
 WARN_REFERENCES(sigsuspend, \
     "warning: reference to compatibility sigsuspend(); include <signal.h> for correct reference")
 
 ENTRY(sigsuspend, 0)
        movl    *4(%ap),4(%ap)          # indirect to mask arg
-       chmk    $ SYS_compat_13_sigsuspend13
+       SYSTRAP(compat_13_sigsuspend13)
        jcc     1f
        jmp     CERROR+2
 1:     clrl    %r0                     # shouldnt happen
        ret
+END(sigsuspend)
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
deleted file mode 100644 (file)
index 2578b32..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-/*     $NetBSD: malloc.c,v 1.52 2008/02/03 22:56:53 christos Exp $     */
-
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <phk@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
- * ----------------------------------------------------------------------------
- *
- * From FreeBSD: malloc.c,v 1.91 2006/01/12 07:28:20 jasone
- *
- */
-
-#ifdef __minix
-#define mmap minix_mmap
-#define munmap minix_munmap
-#ifdef _LIBSYS
-#include <minix/sysutil.h>
-#define MALLOC_NO_SYSCALLS
-#define wrtwarning(w) printf("libminc malloc warning: %s\n", w)
-#define wrterror(w) panic("libminc malloc error: %s\n", w)
-#endif
-#endif
-
-/*
- * Defining MALLOC_EXTRA_SANITY will enable extra checks which are related
- * to internal conditions and consistency in malloc.c. This has a
- * noticeable runtime performance hit, and generally will not do you
- * any good unless you fiddle with the internals of malloc or want
- * to catch random pointer corruption as early as possible.
- */
-#ifndef MALLOC_EXTRA_SANITY
-#undef MALLOC_EXTRA_SANITY
-#endif
-
-/*
- * What to use for Junk.  This is the byte value we use to fill with
- * when the 'J' option is enabled.
- */
-#define SOME_JUNK      0xd0            /* as in "Duh" :-) */
-
-/*
- * The basic parameters you can tweak.
- *
- * malloc_minsize      minimum size of an allocation in bytes.
- *                     If this is too small it's too much work
- *                     to manage them.  This is also the smallest
- *                     unit of alignment used for the storage
- *                     returned by malloc/realloc.
- *
- */
-
-#include "namespace.h"
-#if defined(__FreeBSD__)
-#   if defined(__i386__)
-#       define malloc_minsize          16U
-#   endif
-#   if defined(__ia64__)
-#      define malloc_pageshift         13U
-#      define malloc_minsize           16U
-#   endif
-#   if defined(__alpha__)
-#       define malloc_pageshift                13U
-#       define malloc_minsize          16U
-#   endif
-#   if defined(__sparc64__)
-#       define malloc_pageshift                13U
-#       define malloc_minsize          16U
-#   endif
-#   if defined(__amd64__)
-#       define malloc_pageshift                12U
-#       define malloc_minsize          16U
-#   endif
-#   if defined(__arm__)
-#       define malloc_pageshift         12U
-#       define malloc_minsize           16U
-#   endif
-#ifndef __minix
-#   define HAS_UTRACE
-#   define UTRACE_LABEL
-#endif /* __minix */
-
-#include <sys/cdefs.h>
-void utrace(struct ut *, int);
-
-    /*
-     * Make malloc/free/realloc thread-safe in libc for use with
-     * kernel threads.
-     */
-#   include "libc_private.h"
-#   include "spinlock.h"
-    static spinlock_t thread_lock      = _SPINLOCK_INITIALIZER;
-#   define _MALLOC_LOCK()              if (__isthreaded) _SPINLOCK(&thread_lock);
-#   define _MALLOC_UNLOCK()            if (__isthreaded) _SPINUNLOCK(&thread_lock);
-#endif /* __FreeBSD__ */
-
-#include <assert.h>
-
-#include <sys/types.h>
-#if defined(__NetBSD__)
-#   define malloc_minsize               16U
-#   define HAS_UTRACE
-#   define UTRACE_LABEL "malloc",
-#include <sys/cdefs.h>
-#include "extern.h"
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: malloc.c,v 1.52 2008/02/03 22:56:53 christos Exp $");
-#endif /* LIBC_SCCS and not lint */
-int utrace(const char *, void *, size_t);
-
-#include <reentrant.h>
-extern int __isthreaded;
-static mutex_t thread_lock = MUTEX_INITIALIZER;
-#define _MALLOC_LOCK() if (__isthreaded) mutex_lock(&thread_lock);
-#define _MALLOC_UNLOCK()       if (__isthreaded) mutex_unlock(&thread_lock);
-#endif /* __NetBSD__ */
-
-#if defined(__sparc__) && defined(sun)
-#   define malloc_minsize              16U
-#   define MAP_ANON                    (0)
-    static int fdzero;
-#   define MMAP_FD     fdzero
-#   define INIT_MMAP() \
-       { if ((fdzero = open(_PATH_DEVZERO, O_RDWR, 0000)) == -1) \
-           wrterror("open of /dev/zero"); }
-#endif /* __sparc__ */
-
-/* Insert your combination here... */
-#if defined(__FOOCPU__) && defined(__BAROS__)
-#   define malloc_minsize              16U
-#endif /* __FOOCPU__ && __BAROS__ */
-
-#ifndef ZEROSIZEPTR
-#define ZEROSIZEPTR    ((void *)(uintptr_t)(1UL << (malloc_pageshift - 1)))
-#endif
-
-/*
- * No user serviceable parts behind this point.
- */
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <paths.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/*
- * This structure describes a page worth of chunks.
- */
-
-struct pginfo {
-    struct pginfo      *next;  /* next on the free list */
-    void               *page;  /* Pointer to the page */
-    u_short            size;   /* size of this page's chunks */
-    u_short            shift;  /* How far to shift for this size chunks */
-    u_short            free;   /* How many free chunks */
-    u_short            total;  /* How many chunk */
-    u_int              bits[1]; /* Which chunks are free */
-};
-
-/*
- * This structure describes a number of free pages.
- */
-
-struct pgfree {
-    struct pgfree      *next;  /* next run of free pages */
-    struct pgfree      *prev;  /* prev run of free pages */
-    void               *page;  /* pointer to free pages */
-    void               *end;   /* pointer to end of free pages */
-    size_t             size;   /* number of bytes free */
-};
-
-/*
- * How many bits per u_int in the bitmap.
- * Change only if not 8 bits/byte
- */
-#define        MALLOC_BITS     ((int)(8*sizeof(u_int)))
-
-/*
- * Magic values to put in the page_directory
- */
-#define MALLOC_NOT_MINE        ((struct pginfo*) 0)
-#define MALLOC_FREE    ((struct pginfo*) 1)
-#define MALLOC_FIRST   ((struct pginfo*) 2)
-#define MALLOC_FOLLOW  ((struct pginfo*) 3)
-#define MALLOC_MAGIC   ((struct pginfo*) 4)
-
-/*
- * Page size related parameters, computed at run-time.
- */
-static size_t malloc_pagesize;
-static size_t malloc_pageshift;
-static size_t malloc_pagemask;
-
-#ifndef malloc_minsize
-#define malloc_minsize                 16U
-#endif
-
-#ifndef malloc_maxsize
-#define malloc_maxsize                 ((malloc_pagesize)>>1)
-#endif
-
-#define pageround(foo) (((foo) + (malloc_pagemask))&(~(malloc_pagemask)))
-#define ptr2idx(foo) \
-    (((size_t)(uintptr_t)(foo) >> malloc_pageshift)-malloc_origo)
-
-#ifndef _MALLOC_LOCK
-#define _MALLOC_LOCK()
-#endif
-
-#ifndef _MALLOC_UNLOCK
-#define _MALLOC_UNLOCK()
-#endif
-
-#ifndef MMAP_FD
-#define MMAP_FD (-1)
-#endif
-
-#ifndef INIT_MMAP
-#define INIT_MMAP()
-#endif
-
-#ifndef __minix
-#ifndef MADV_FREE
-#define MADV_FREE MADV_DONTNEED
-#endif
-#endif /* !__minix */
-
-/* Number of free pages we cache */
-static size_t malloc_cache = 16;
-
-/* The offset from pagenumber to index into the page directory */
-static size_t malloc_origo;
-
-/* The last index in the page directory we care about */
-static size_t last_idx;
-
-/* Pointer to page directory. Allocated "as if with" malloc */
-static struct  pginfo **page_dir;
-
-/* How many slots in the page directory */
-static size_t  malloc_ninfo;
-
-/* Free pages line up here */
-static struct pgfree free_list;
-
-/* Abort(), user doesn't handle problems.  */
-static int malloc_abort;
-
-/* Are we trying to die ?  */
-static int suicide;
-
-/* always realloc ?  */
-static int malloc_realloc;
-
-/* pass the kernel a hint on free pages ?  */
-#if defined(MADV_FREE)
-static int malloc_hint = 0;
-#endif
-
-/* xmalloc behaviour ?  */
-static int malloc_xmalloc;
-
-/* sysv behaviour for malloc(0) ?  */
-static int malloc_sysv;
-
-/* zero fill ?  */
-static int malloc_zero;
-
-/* junk fill ?  */
-static int malloc_junk;
-
-#ifdef HAS_UTRACE
-
-/* utrace ?  */
-static int malloc_utrace;
-
-struct ut { void *p; size_t s; void *r; };
-
-#define UTRACE(a, b, c) \
-       if (malloc_utrace) {                    \
-               struct ut u;                    \
-               u.p=a; u.s = b; u.r=c;          \
-               utrace(UTRACE_LABEL (void *) &u, sizeof u);     \
-       }
-#else /* !HAS_UTRACE */
-#define UTRACE(a,b,c)
-#endif /* HAS_UTRACE */
-
-/* my last break. */
-static void *malloc_brk;
-
-/* one location cache for free-list holders */
-static struct pgfree *px;
-
-/* compile-time options */
-const char *_malloc_options;
-
-/* Name of the current public function */
-static const char *malloc_func;
-
-/* Macro for mmap */
-#define MMAP(size) \
-       mmap(NULL, (size), PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, \
-           MMAP_FD, (off_t)0);
-
-/*
- * Necessary function declarations
- */
-static int extend_pgdir(size_t idx);
-static void *imalloc(size_t size);
-static void ifree(void *ptr);
-static void *irealloc(void *ptr, size_t size);
-
-#ifndef MALLOC_NO_SYSCALLS
-static void
-wrtmessage(const char *p1, const char *p2, const char *p3, const char *p4)
-{
-
-    write(STDERR_FILENO, p1, strlen(p1));
-    write(STDERR_FILENO, p2, strlen(p2));
-    write(STDERR_FILENO, p3, strlen(p3));
-    write(STDERR_FILENO, p4, strlen(p4));
-}
-
-void (*_malloc_message)(const char *p1, const char *p2, const char *p3,
-           const char *p4) = wrtmessage;
-static void
-wrterror(const char *p)
-{
-
-    suicide = 1;
-    _malloc_message(getprogname(), malloc_func, " error: ", p);
-    abort();
-}
-
-static void
-wrtwarning(const char *p)
-{
-
-    /*
-     * Sensitive processes, somewhat arbitrarily defined here as setuid,
-     * setgid, root and wheel cannot afford to have malloc mistakes.
-     */
-    if (malloc_abort || issetugid() || getuid() == 0 || getgid() == 0)
-       wrterror(p);
-}
-#endif
-
-/*
- * Allocate a number of pages from the OS
- */
-static void *
-map_pages(size_t pages)
-{
-    caddr_t result, rresult, tail;
-    intptr_t bytes = pages << malloc_pageshift;
-
-    if (bytes < 0 || (size_t)bytes < pages) {
-       errno = ENOMEM;
-       return NULL;
-    }
-
-    if ((result = sbrk(bytes)) == (void *)-1)
-       return NULL;
-
-    /*
-     * Round to a page, in case sbrk(2) did not do this for us
-     */
-    rresult = (caddr_t)pageround((size_t)(uintptr_t)result);
-    if (result < rresult) {
-       /* make sure we have enough space to fit bytes */
-       if (sbrk((intptr_t)(rresult - result)) == (void *) -1) {
-           /* we failed, put everything back */
-           if (brk(result)) {
-               wrterror("brk(2) failed [internal error]\n");
-           }
-       }
-    }
-    tail = rresult + (size_t)bytes;
-
-    last_idx = ptr2idx(tail) - 1;
-    malloc_brk = tail;
-
-    if ((last_idx+1) >= malloc_ninfo && !extend_pgdir(last_idx)) {
-       malloc_brk = result;
-       last_idx = ptr2idx(malloc_brk) - 1;
-       /* Put back break point since we failed. */
-       if (brk(malloc_brk))
-           wrterror("brk(2) failed [internal error]\n");
-       return 0;
-    }
-
-    return rresult;
-}
-
-/*
- * Extend page directory
- */
-static int
-extend_pgdir(size_t idx)
-{
-    struct  pginfo **new, **old;
-    size_t newlen, oldlen;
-
-    /* check for overflow */
-    if ((((~(1UL << ((sizeof(size_t) * NBBY) - 1)) / sizeof(*page_dir)) + 1)
-       + (malloc_pagesize / sizeof *page_dir)) < idx) {
-       errno = ENOMEM;
-       return 0;
-    }
-
-    /* Make it this many pages */
-    newlen = pageround(idx * sizeof *page_dir) + malloc_pagesize;
-
-    /* remember the old mapping size */
-    oldlen = malloc_ninfo * sizeof *page_dir;
-
-    /*
-     * NOTE: we allocate new pages and copy the directory rather than tempt
-     * fate by trying to "grow" the region.. There is nothing to prevent
-     * us from accidentally re-mapping space that's been allocated by our caller
-     * via dlopen() or other mmap().
-     *
-     * The copy problem is not too bad, as there is 4K of page index per
-     * 4MB of malloc arena.
-     *
-     * We can totally avoid the copy if we open a file descriptor to associate
-     * the anon mappings with.  Then, when we remap the pages at the new
-     * address, the old pages will be "magically" remapped..  But this means
-     * keeping open a "secret" file descriptor.....
-     */
-
-    /* Get new pages */
-    new = MMAP(newlen);
-    if (new == MAP_FAILED)
-       return 0;
-
-    /* Copy the old stuff */
-    memcpy(new, page_dir, oldlen);
-
-    /* register the new size */
-    malloc_ninfo = newlen / sizeof *page_dir;
-
-    /* swap the pointers */
-    old = page_dir;
-    page_dir = new;
-
-    /* Now free the old stuff */
-    munmap(old, oldlen);
-    return 1;
-}
-
-/*
- * Initialize the world
- */
-static void
-malloc_init(void)
-{
-    int save_errno = errno;
-#ifndef MALLOC_NO_SYSCALLS
-    const char *p;
-    char b[64];
-    size_t i;
-    ssize_t j;
-
-    /*
-     * Compute page-size related variables.
-     */
-    malloc_pagesize = (size_t)sysconf(_SC_PAGESIZE);
-#else
-    malloc_pagesize = PAGE_SIZE;
-#endif
-    malloc_pagemask = malloc_pagesize - 1;
-    for (malloc_pageshift = 0;
-        (1UL << malloc_pageshift) != malloc_pagesize;
-        malloc_pageshift++)
-       /* nothing */ ;
-
-    INIT_MMAP();
-
-#ifdef MALLOC_EXTRA_SANITY
-    malloc_junk = 1;
-#endif /* MALLOC_EXTRA_SANITY */
-
-#ifndef MALLOC_NO_SYSCALLS
-    for (i = 0; i < 3; i++) {
-       if (i == 0) {
-           j = readlink("/etc/malloc.conf", b, sizeof b - 1);
-           if (j <= 0)
-               continue;
-           b[j] = '\0';
-           p = b;
-       } else if (i == 1 && issetugid() == 0) {
-           p = getenv("MALLOC_OPTIONS");
-       } else if (i == 1) {
-           continue;
-       } else {
-           p = _malloc_options;
-       }
-       for (; p != NULL && *p != '\0'; p++) {
-           switch (*p) {
-               case '>': malloc_cache   <<= 1; break;
-               case '<': malloc_cache   >>= 1; break;
-               case 'a': malloc_abort   = 0; break;
-               case 'A': malloc_abort   = 1; break;
-#ifndef __minix
-               case 'h': malloc_hint    = 0; break;
-               case 'H': malloc_hint    = 1; break;
-#endif /* !__minix */
-               case 'r': malloc_realloc = 0; break;
-               case 'R': malloc_realloc = 1; break;
-               case 'j': malloc_junk    = 0; break;
-               case 'J': malloc_junk    = 1; break;
-#ifdef HAS_UTRACE
-               case 'u': malloc_utrace  = 0; break;
-               case 'U': malloc_utrace  = 1; break;
-#endif
-               case 'v': malloc_sysv    = 0; break;
-               case 'V': malloc_sysv    = 1; break;
-               case 'x': malloc_xmalloc = 0; break;
-               case 'X': malloc_xmalloc = 1; break;
-               case 'z': malloc_zero    = 0; break;
-               case 'Z': malloc_zero    = 1; break;
-               default:
-                   _malloc_message(getprogname(), malloc_func,
-                        " warning: ", "unknown char in MALLOC_OPTIONS\n");
-                   break;
-           }
-       }
-    }
-#endif
-
-    UTRACE(0, 0, 0);
-
-    /*
-     * We want junk in the entire allocation, and zero only in the part
-     * the user asked for.
-     */
-    if (malloc_zero)
-       malloc_junk = 1;
-
-    /* Allocate one page for the page directory */
-    page_dir = MMAP(malloc_pagesize);
-
-    if (page_dir == MAP_FAILED)
-       wrterror("mmap(2) failed, check limits.\n");
-
-    /*
-     * We need a maximum of malloc_pageshift buckets, steal these from the
-     * front of the page_directory;
-     */
-    malloc_origo = pageround((size_t)(uintptr_t)sbrk((intptr_t)0))
-       >> malloc_pageshift;
-    malloc_origo -= malloc_pageshift;
-
-    malloc_ninfo = malloc_pagesize / sizeof *page_dir;
-
-    /* Recalculate the cache size in bytes, and make sure it's nonzero */
-
-    if (!malloc_cache)
-       malloc_cache++;
-
-    malloc_cache <<= malloc_pageshift;
-
-    /*
-     * This is a nice hack from Kaleb Keithly (kaleb@x.org).
-     * We can sbrk(2) further back when we keep this on a low address.
-     */
-    px = imalloc(sizeof *px);
-
-    errno = save_errno;
-}
-
-/*
- * Allocate a number of complete pages
- */
-static void *
-malloc_pages(size_t size)
-{
-    void *p, *delay_free = NULL;
-    size_t i;
-    struct pgfree *pf;
-    size_t idx;
-
-    idx = pageround(size);
-    if (idx < size) {
-       errno = ENOMEM;
-       return NULL;
-    } else
-       size = idx;
-
-    p = NULL;
-
-    /* Look for free pages before asking for more */
-    for(pf = free_list.next; pf; pf = pf->next) {
-
-#ifdef MALLOC_EXTRA_SANITY
-       if (pf->size & malloc_pagemask)
-           wrterror("(ES): junk length entry on free_list.\n");
-       if (!pf->size)
-           wrterror("(ES): zero length entry on free_list.\n");
-       if (pf->page == pf->end)
-           wrterror("(ES): zero entry on free_list.\n");
-       if (pf->page > pf->end)
-           wrterror("(ES): sick entry on free_list.\n");
-       if ((void*)pf->page >= (void*)sbrk(0))
-           wrterror("(ES): entry on free_list past brk.\n");
-       if (page_dir[ptr2idx(pf->page)] != MALLOC_FREE)
-           wrterror("(ES): non-free first page on free-list.\n");
-       if (page_dir[ptr2idx(pf->end)-1] != MALLOC_FREE)
-           wrterror("(ES): non-free last page on free-list.\n");
-#endif /* MALLOC_EXTRA_SANITY */
-
-       if (pf->size < size)
-           continue;
-
-       if (pf->size == size) {
-           p = pf->page;
-           if (pf->next != NULL)
-                   pf->next->prev = pf->prev;
-           pf->prev->next = pf->next;
-           delay_free = pf;
-           break;
-       } 
-
-       p = pf->page;
-       pf->page = (char *)pf->page + size;
-       pf->size -= size;
-       break;
-    }
-
-#ifdef MALLOC_EXTRA_SANITY
-    if (p != NULL && page_dir[ptr2idx(p)] != MALLOC_FREE)
-       wrterror("(ES): allocated non-free page on free-list.\n");
-#endif /* MALLOC_EXTRA_SANITY */
-
-    size >>= malloc_pageshift;
-
-    /* Map new pages */
-    if (p == NULL)
-       p = map_pages(size);
-
-    if (p != NULL) {
-
-       idx = ptr2idx(p);
-       page_dir[idx] = MALLOC_FIRST;
-       for (i=1;i<size;i++)
-           page_dir[idx+i] = MALLOC_FOLLOW;
-
-       if (malloc_junk)
-           memset(p, SOME_JUNK, size << malloc_pageshift);
-    }
-
-    if (delay_free) {
-       if (px == NULL)
-           px = delay_free;
-       else
-           ifree(delay_free);
-    }
-
-    return p;
-}
-
-/*
- * Allocate a page of fragments
- */
-
-static inline int
-malloc_make_chunks(int bits)
-{
-    struct  pginfo *bp;
-    void *pp;
-    int i, k;
-    long l;
-
-    /* Allocate a new bucket */
-    pp = malloc_pages(malloc_pagesize);
-    if (pp == NULL)
-       return 0;
-
-    /* Find length of admin structure */
-    l = (long)offsetof(struct pginfo, bits[0]);
-    l += (long)sizeof bp->bits[0] *
-       (((malloc_pagesize >> bits)+MALLOC_BITS-1) / MALLOC_BITS);
-
-    /* Don't waste more than two chunks on this */
-    if ((1<<(bits)) <= l+l) {
-       bp = (struct  pginfo *)pp;
-    } else {
-       bp = imalloc((size_t)l);
-       if (bp == NULL) {
-           ifree(pp);
-           return 0;
-       }
-    }
-
-    bp->size = (1<<bits);
-    bp->shift = bits;
-    bp->total = bp->free = (u_short)(malloc_pagesize >> bits);
-    bp->page = pp;
-
-    /* set all valid bits in the bitmap */
-    k = bp->total;
-    i = 0;
-
-    /* Do a bunch at a time */
-    for(;k-i >= MALLOC_BITS; i += MALLOC_BITS)
-       bp->bits[i / MALLOC_BITS] = ~0U;
-
-    for(; i < k; i++)
-        bp->bits[i/MALLOC_BITS] |= 1<<(i%MALLOC_BITS);
-
-    if (bp == bp->page) {
-       /* Mark the ones we stole for ourselves */
-       for(i = 0; l > 0; i++) {
-           bp->bits[i / MALLOC_BITS] &= ~(1 << (i % MALLOC_BITS));
-           bp->free--;
-           bp->total--;
-           l -= (long)(1 << bits);
-       }
-    }
-
-    /* MALLOC_LOCK */
-
-    page_dir[ptr2idx(pp)] = bp;
-
-    bp->next = page_dir[bits];
-    page_dir[bits] = bp;
-
-    /* MALLOC_UNLOCK */
-
-    return 1;
-}
-
-/*
- * Allocate a fragment
- */
-static void *
-malloc_bytes(size_t size)
-{
-    size_t i;
-    int j;
-    u_int u;
-    struct  pginfo *bp;
-    size_t k;
-    u_int *lp;
-
-    /* Don't bother with anything less than this */
-    if (size < malloc_minsize)
-       size = malloc_minsize;
-
-
-    /* Find the right bucket */
-    j = 1;
-    i = size-1;
-    while (i >>= 1)
-       j++;
-
-    /* If it's empty, make a page more of that size chunks */
-    if (page_dir[j] == NULL && !malloc_make_chunks(j))
-       return NULL;
-
-    bp = page_dir[j];
-
-    /* Find first word of bitmap which isn't empty */
-    for (lp = bp->bits; !*lp; lp++)
-       ;
-
-    /* Find that bit, and tweak it */
-    u = 1;
-    k = 0;
-    while (!(*lp & u)) {
-       u += u;
-       k++;
-    }
-    *lp ^= u;
-
-    /* If there are no more free, remove from free-list */
-    if (!--bp->free) {
-       page_dir[j] = bp->next;
-       bp->next = NULL;
-    }
-
-    /* Adjust to the real offset of that chunk */
-    k += (lp-bp->bits)*MALLOC_BITS;
-    k <<= bp->shift;
-
-    if (malloc_junk)
-       memset((u_char*)bp->page + k, SOME_JUNK, (size_t)bp->size);
-
-    return (u_char *)bp->page + k;
-}
-
-/*
- * Allocate a piece of memory
- */
-static void *
-imalloc(size_t size)
-{
-    void *result;
-
-    if (suicide)
-       abort();
-
-    if ((size + malloc_pagesize) < size)       /* Check for overflow */
-       result = NULL;
-    else if ((size + malloc_pagesize) >= (uintptr_t)page_dir)
-       result = NULL;
-    else if (size <= malloc_maxsize)
-       result = malloc_bytes(size);
-    else
-       result = malloc_pages(size);
-
-    if (malloc_abort && result == NULL)
-       wrterror("allocation failed.\n");
-
-    if (malloc_zero && result != NULL)
-       memset(result, 0, size);
-
-    return result;
-}
-
-/*
- * Change the size of an allocation.
- */
-static void *
-irealloc(void *ptr, size_t size)
-{
-    void *p;
-    size_t osize, idx;
-    struct pginfo **mp;
-    size_t i;
-
-    if (suicide)
-       abort();
-
-    idx = ptr2idx(ptr);
-
-    if (idx < malloc_pageshift) {
-       wrtwarning("junk pointer, too low to make sense.\n");
-       return 0;
-    }
-
-    if (idx > last_idx) {
-       wrtwarning("junk pointer, too high to make sense.\n");
-       return 0;
-    }
-
-    mp = &page_dir[idx];
-
-    if (*mp == MALLOC_FIRST) {                 /* Page allocation */
-
-       /* Check the pointer */
-       if ((size_t)(uintptr_t)ptr & malloc_pagemask) {
-           wrtwarning("modified (page-) pointer.\n");
-           return NULL;
-       }
-
-       /* Find the size in bytes */
-       for (osize = malloc_pagesize; *++mp == MALLOC_FOLLOW;)
-           osize += malloc_pagesize;
-
-        if (!malloc_realloc &&                         /* unless we have to, */
-         size <= osize &&                      /* .. or are too small, */
-         size > (osize - malloc_pagesize)) {   /* .. or can free a page, */
-           if (malloc_junk)
-               memset((u_char *)ptr + size, SOME_JUNK, osize-size);
-           return ptr;                         /* don't do anything. */
-       }
-
-    } else if (*mp >= MALLOC_MAGIC) {          /* Chunk allocation */
-
-       /* Check the pointer for sane values */
-       if (((size_t)(uintptr_t)ptr & ((*mp)->size-1))) {
-           wrtwarning("modified (chunk-) pointer.\n");
-           return NULL;
-       }
-
-       /* Find the chunk index in the page */
-       i = ((size_t)(uintptr_t)ptr & malloc_pagemask) >> (*mp)->shift;
-
-       /* Verify that it isn't a free chunk already */
-        if ((*mp)->bits[i/MALLOC_BITS] & (1UL << (i % MALLOC_BITS))) {
-           wrtwarning("chunk is already free.\n");
-           return NULL;
-       }
-
-       osize = (*mp)->size;
-
-       if (!malloc_realloc &&          /* Unless we have to, */
-         size <= osize &&              /* ..or are too small, */
-         (size > osize / 2 ||          /* ..or could use a smaller size, */
-         osize == malloc_minsize)) {   /* ..(if there is one) */
-           if (malloc_junk)
-               memset((u_char *)ptr + size, SOME_JUNK, osize-size);
-           return ptr;                 /* ..Don't do anything */
-       }
-
-    } else {
-       wrtwarning("pointer to wrong page.\n");
-       return NULL;
-    }
-
-    p = imalloc(size);
-
-    if (p != NULL) {
-       /* copy the lesser of the two sizes, and free the old one */
-       if (!size || !osize)
-           ;
-       else if (osize < size)
-           memcpy(p, ptr, osize);
-       else
-           memcpy(p, ptr, size);
-       ifree(ptr);
-    } 
-    return p;
-}
-
-/*
- * Free a sequence of pages
- */
-
-static inline void
-free_pages(void *ptr, size_t idx, struct pginfo *info)
-{
-    size_t i;
-    struct pgfree *pf, *pt=NULL;
-    size_t l;
-    void *tail;
-
-    if (info == MALLOC_FREE) {
-       wrtwarning("page is already free.\n");
-       return;
-    }
-
-    if (info != MALLOC_FIRST) {
-       wrtwarning("pointer to wrong page.\n");
-       return;
-    }
-
-    if ((size_t)(uintptr_t)ptr & malloc_pagemask) {
-       wrtwarning("modified (page-) pointer.\n");
-       return;
-    }
-
-    /* Count how many pages and mark them free at the same time */
-    page_dir[idx] = MALLOC_FREE;
-    for (i = 1; page_dir[idx+i] == MALLOC_FOLLOW; i++)
-       page_dir[idx + i] = MALLOC_FREE;
-
-    l = i << malloc_pageshift;
-
-    if (malloc_junk)
-       memset(ptr, SOME_JUNK, l);
-
-#ifndef __minix
-    if (malloc_hint)
-       madvise(ptr, l, MADV_FREE);
-#endif /* !__minix */
-
-    tail = (char *)ptr+l;
-
-    /* add to free-list */
-    if (px == NULL)
-       px = imalloc(sizeof *px);       /* This cannot fail... */
-    px->page = ptr;
-    px->end =  tail;
-    px->size = l;
-    if (free_list.next == NULL) {
-
-       /* Nothing on free list, put this at head */
-       px->next = free_list.next;
-       px->prev = &free_list;
-       free_list.next = px;
-       pf = px;
-       px = NULL;
-
-    } else {
-
-       /* Find the right spot, leave pf pointing to the modified entry. */
-       tail = (char *)ptr+l;
-
-       for(pf = free_list.next; pf->end < ptr && pf->next != NULL;
-           pf = pf->next)
-           ; /* Race ahead here */
-
-       if (pf->page > tail) {
-           /* Insert before entry */
-           px->next = pf;
-           px->prev = pf->prev;
-           pf->prev = px;
-           px->prev->next = px;
-           pf = px;
-           px = NULL;
-       } else if (pf->end == ptr ) {
-           /* Append to the previous entry */
-           pf->end = (char *)pf->end + l;
-           pf->size += l;
-           if (pf->next != NULL && pf->end == pf->next->page ) {
-               /* And collapse the next too. */
-               pt = pf->next;
-               pf->end = pt->end;
-               pf->size += pt->size;
-               pf->next = pt->next;
-               if (pf->next != NULL)
-                   pf->next->prev = pf;
-           }
-       } else if (pf->page == tail) {
-           /* Prepend to entry */
-           pf->size += l;
-           pf->page = ptr;
-       } else if (pf->next == NULL) {
-           /* Append at tail of chain */
-           px->next = NULL;
-           px->prev = pf;
-           pf->next = px;
-           pf = px;
-           px = NULL;
-       } else {
-           wrterror("freelist is destroyed.\n");
-       }
-    }
-    
-    /* Return something to OS ? */
-    if (pf->next == NULL &&                    /* If we're the last one, */
-      pf->size > malloc_cache &&               /* ..and the cache is full, */
-      pf->end == malloc_brk &&                 /* ..and none behind us, */
-      malloc_brk == sbrk((intptr_t)0)) {       /* ..and it's OK to do... */
-       int r;
-       /*
-        * Keep the cache intact.  Notice that the '>' above guarantees that
-        * the pf will always have at least one page afterwards.
-        */
-       pf->end = (char *)pf->page + malloc_cache;
-       pf->size = malloc_cache;
-
-       r = brk(pf->end);
-       assert(r >= 0);
-       malloc_brk = pf->end;
-
-       idx = ptr2idx(pf->end);
-
-       for(i=idx;i <= last_idx;)
-           page_dir[i++] = MALLOC_NOT_MINE;
-
-       last_idx = idx - 1;
-
-       /* XXX: We could realloc/shrink the pagedir here I guess. */
-    }
-    if (pt != NULL)
-       ifree(pt);
-}
-
-/*
- * Free a chunk, and possibly the page it's on, if the page becomes empty.
- */
-
-static inline void
-free_bytes(void *ptr, size_t idx, struct pginfo *info)
-{
-    size_t i;
-    struct pginfo **mp;
-    void *vp;
-
-    /* Find the chunk number on the page */
-    i = ((size_t)(uintptr_t)ptr & malloc_pagemask) >> info->shift;
-
-    if (((size_t)(uintptr_t)ptr & (info->size-1))) {
-       wrtwarning("modified (chunk-) pointer.\n");
-       return;
-    }
-
-    if (info->bits[i/MALLOC_BITS] & (1UL << (i % MALLOC_BITS))) {
-       wrtwarning("chunk is already free.\n");
-       return;
-    }
-
-    if (malloc_junk)
-       memset(ptr, SOME_JUNK, (size_t)info->size);
-
-    info->bits[i/MALLOC_BITS] |= (u_int)(1UL << (i % MALLOC_BITS));
-    info->free++;
-
-    mp = page_dir + info->shift;
-
-    if (info->free == 1) {
-
-       /* Page became non-full */
-
-       mp = page_dir + info->shift;
-       /* Insert in address order */
-       while (*mp && (*mp)->next && (*mp)->next->page < info->page)
-           mp = &(*mp)->next;
-       info->next = *mp;
-       *mp = info;
-       return;
-    }
-
-    if (info->free != info->total)
-       return;
-
-    /* Find & remove this page in the queue */
-    while (*mp != info) {
-       mp = &((*mp)->next);
-#ifdef MALLOC_EXTRA_SANITY
-       if (!*mp)
-               wrterror("(ES): Not on queue.\n");
-#endif /* MALLOC_EXTRA_SANITY */
-    }
-    *mp = info->next;
-
-    /* Free the page & the info structure if need be */
-    page_dir[idx] = MALLOC_FIRST;
-    vp = info->page;           /* Order is important ! */
-    if(vp != (void*)info) 
-       ifree(info);
-    ifree(vp);
-}
-
-static void
-ifree(void *ptr)
-{
-    struct pginfo *info;
-    size_t idx;
-
-    /* This is legal */
-    if (ptr == NULL)
-       return;
-
-    /* If we're already sinking, don't make matters any worse. */
-    if (suicide)
-       return;
-
-    idx = ptr2idx(ptr);
-
-    if (idx < malloc_pageshift) {
-       wrtwarning("junk pointer, too low to make sense.\n");
-       return;
-    }
-
-    if (idx > last_idx) {
-       wrtwarning("junk pointer, too high to make sense.\n");
-       return;
-    }
-
-    info = page_dir[idx];
-
-    if (info < MALLOC_MAGIC)
-        free_pages(ptr, idx, info);
-    else
-       free_bytes(ptr, idx, info);
-    return;
-}
-
-static int malloc_active; /* Recusion flag for public interface. */
-static unsigned malloc_started; /* Set when initialization has been done */
-
-static void *
-pubrealloc(void *ptr, size_t size, const char *func)
-{
-    void *r;
-    int err = 0;
-
-    /*
-     * If a thread is inside our code with a functional lock held, and then
-     * catches a signal which calls us again, we would get a deadlock if the
-     * lock is not of a recursive type.
-     */
-    _MALLOC_LOCK();
-    malloc_func = func;
-    if (malloc_active > 0) {
-       if (malloc_active == 1) {
-           wrtwarning("recursive call\n");
-           malloc_active = 2;
-       }
-        _MALLOC_UNLOCK();
-       errno = EINVAL;
-       return (NULL);
-    } 
-    malloc_active = 1;
-
-    if (!malloc_started) {
-        if (ptr != NULL) {
-           wrtwarning("malloc() has never been called\n");
-           malloc_active = 0;
-            _MALLOC_UNLOCK();
-           errno = EINVAL;
-           return (NULL);
-       }
-       malloc_init();
-       malloc_started = 1;
-    }
-   
-    if (ptr == ZEROSIZEPTR)
-       ptr = NULL;
-    if (malloc_sysv && !size) {
-       if (ptr != NULL)
-           ifree(ptr);
-       r = NULL;
-    } else if (!size) {
-       if (ptr != NULL)
-           ifree(ptr);
-       r = ZEROSIZEPTR;
-    } else if (ptr == NULL) {
-       r = imalloc(size);
-       err = (r == NULL);
-    } else {
-        r = irealloc(ptr, size);
-       err = (r == NULL);
-    }
-    UTRACE(ptr, size, r);
-    malloc_active = 0;
-    _MALLOC_UNLOCK();
-    if (malloc_xmalloc && err)
-       wrterror("out of memory\n");
-    if (err)
-       errno = ENOMEM;
-    return (r);
-}
-
-/*
- * These are the public exported interface routines.
- */
-
-void *
-malloc(size_t size)
-{
-
-    return pubrealloc(NULL, size, " in malloc():");
-}
-
-int
-posix_memalign(void **memptr, size_t alignment, size_t size)
-{
-    int err;
-    void *result;
-
-    if (!malloc_started) {
-           malloc_init();
-           malloc_started = 1;
-    }
-    /* Make sure that alignment is a large enough power of 2. */
-    if (((alignment - 1) & alignment) != 0 || alignment < sizeof(void *) ||
-       alignment > malloc_pagesize)
-           return EINVAL;
-
-    /* 
-     * (size | alignment) is enough to assure the requested alignment, since
-     * the allocator always allocates power-of-two blocks.
-     */
-    err = errno; /* Protect errno against changes in pubrealloc(). */
-    result = pubrealloc(NULL, (size | alignment), " in posix_memalign()");
-    errno = err;
-
-    if (result == NULL)
-       return ENOMEM;
-
-    *memptr = result;
-    return 0;
-}
-
-void *
-calloc(size_t num, size_t size)
-{
-    void *ret;
-
-    if (size != 0 && (num * size) / size != num) {
-       /* size_t overflow. */
-       errno = ENOMEM;
-       return (NULL);
-    }
-
-    ret = pubrealloc(NULL, num * size, " in calloc():");
-
-    if (ret != NULL)
-       memset(ret, 0, num * size);
-
-    return ret;
-}
-
-void
-free(void *ptr)
-{
-
-    pubrealloc(ptr, 0, " in free():");
-}
-
-void *
-realloc(void *ptr, size_t size)
-{
-
-    return pubrealloc(ptr, size, " in realloc():");
-}
-
-/*
- * Begin library-private functions, used by threading libraries for protection
- * of malloc during fork().  These functions are only called if the program is
- * running in threaded mode, so there is no need to check whether the program
- * is threaded here.
- */
-
-void
-_malloc_prefork(void)
-{
-
-       _MALLOC_LOCK();
-}
-
-void
-_malloc_postfork(void)
-{
-
-       _MALLOC_UNLOCK();
-}
index 374fce17a2dd8451ba69dd228b95e8754889ffad..4488713d63bbe1d7c92c70335e51eef642f4b417 100644 (file)
@@ -5,6 +5,9 @@
 #endif
 
 #include <assert.h>
+#include <sys/types.h>
+#include <sys/signal.h>
+
 
 #define NO_THREADS 4 
 #define MAX_THREAD_POOL 1024
index fbc170fabdf72d3421daf0d227285fc72f9dd60e..6a0e0c304b566ef3245353a9c4c59ea2d00ff987 100644 (file)
@@ -77,6 +77,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *term,
        /* term may be NULL */
        /* winp may be NULL */
 
+#ifndef __minix
        if ((master = open("/dev/ptm", O_RDWR)) != -1) {
                struct ptmget pt;
                if (ioctl(master, TIOCPTMGET, &pt) != -1) {
@@ -88,6 +89,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *term,
                }
                (void)close(master);
        }
+#endif
 
        (void)getgrnam_r("tty", &grs, grbuf, sizeof(grbuf), &grp);
        if (grp != NULL) {
@@ -115,9 +117,13 @@ openpty(int *amaster, int *aslave, char *name, struct termios *term,
                        linep = line;
                        if (chown(line, getuid(), ttygid) == 0 &&
                            chmod(line, mode) == 0 &&
+#ifndef __minix
                            revoke(line) == 0 &&
+#endif
                            (slave = open(line, O_RDWR, 0)) != -1) {
+#ifndef __minix
 gotit:
+#endif
                                *amaster = master;
                                *aslave = slave;
                                if (name)
index 89a98e8a056ffdf8e7dca7da1cfc0c28899b2b91..a2d23fe70c3f5ff0b38bac5aca077a07fb9aef5c 100644 (file)
@@ -11,6 +11,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/queue.h>
+#include <sys/ucred.h>
 #include <limits.h>
 #include <unistd.h>
 #include <signal.h>
diff --git a/share/mk/bsd.README b/share/mk/bsd.README
new file mode 100644 (file)
index 0000000..20f2199
--- /dev/null
@@ -0,0 +1,1841 @@
+#      $NetBSD: bsd.README,v 1.300 2012/08/23 21:21:16 joerg Exp $
+#      @(#)bsd.README  8.2 (Berkeley) 4/2/94
+
+This is the README file for the make "include" files for the NetBSD
+source tree.  The files are installed in /usr/share/mk, and are,
+by convention, named with the suffix ".mk".
+
+Note, this file is not intended to replace reading through the .mk
+files for anything tricky.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+RANDOM THINGS WORTH KNOWING:
+
+The files are simply C-style #include files, and pretty much behave like
+you'd expect.  The syntax is slightly different in that a single '.' is
+used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
+
+One difference that will save you lots of debugging time is that inclusion
+of the file is normally done at the *end* of the Makefile.  The reason for
+this is because .mk files often modify variables and behavior based on the
+values of variables set in the Makefile.  To make this work, remember that
+the FIRST target found is the target that is used, i.e. if the Makefile has:
+
+       a:
+               echo a
+       a:
+               echo a number two
+
+the command "make a" will echo "a".  To make things confusing, the SECOND
+variable assignment is the overriding one, i.e. if the Makefile has:
+
+       a=      foo
+       a=      bar
+
+       b:
+               echo ${a}
+
+the command "make b" will echo "bar".  This is for compatibility with the
+way the V7 make behaved.
+
+It's fairly difficult to make the BSD .mk files work when you're building
+multiple programs in a single directory.  It's a lot easier to split up the
+programs than to deal with the problem.  Most of the agony comes from making
+the "obj" directory stuff work right, not because we switched to a new version
+of make.  So, don't get mad at us, figure out a better way to handle multiple
+architectures so we can quit using the symbolic link stuff.  (Imake doesn't
+count.)
+
+The file .depend in the source directory is expected to contain dependencies
+for the source files.  This file is read automatically by make after reading
+the Makefile.
+
+The variable DESTDIR works as before.  It's not set anywhere but will change
+the tree where the file gets installed.
+
+The profiled libraries are no longer built in a different directory than
+the regular libraries.  A new suffix, ".po", is used to denote a profiled
+object, and ".pico" denotes a shared (position-independent) object.
+
+There are various make variables used during the build.
+
+Many variables support a (case sensitive) value of "no" or "yes",
+and are tested with  ${VAR} == "no"  and  ${VAR} != "no" .
+
+
+The basic rule for the variable naming scheme is as follows:
+
+HOST_xxx       A command that runs on the host machine regardless of
+               whether or not the system is being cross compiled, or
+               flags for such a command.
+
+MKxxx          Can be set to "no" to disable functionality, or
+               "yes" to enable it.
+               Usually defaults to "yes", although some variables
+               default to "no".
+               Due to make(1) implementation issues, if a temporary
+               command-line override of a mk.conf(5) or <bsd.own.mk>
+               setting is required whilst still honoring a particular
+               Makefile's setting of MKxxx, use
+                       env MKxxx=value make
+               instead of
+                       make MKxxx=value
+
+NOxxx          If defined, disables a feature.
+               Not intended for users.
+               This is to allow Makefiles to disable functionality
+               that they don't support (such as missing man pages).
+               NOxxx variables must be defined before <bsd.own.mk>
+               is included.
+
+TOOL_xxx       A tool that is provided as part of the USETOOLS
+               framework.  When not using the USETOOLS framework,
+               TOOL_xxx variables should refer to tools that are
+               already installed on the host system.
+
+The following variables that control how things are made/installed that
+are not set by default. These should not be set by Makefiles; they're for
+the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5))
+or on the make(1) command line:
+
+BUILD          If defined, 'make install' checks that the targets in the
+               source directories are up-to-date and remakes them if they
+                are out of date, instead of blindly trying to install
+                out of date or non-existent targets.
+
+MAKEVERBOSE    Control how "verbose" the standard make(1) rules are.
+               Default: 2
+               Supported values:
+                   0   Minimal output ("quiet")
+                   1   Describe what is occurring
+                   2   Describe what is occurring and echo the actual command
+                   3   Ignore the effect of the "@" prefix in make commands
+                   4   Trace shell commands using the shell's -x flag
+
+MKATF          If "no", don't build libatf-c, libatf-c++ libraries associated
+               with the Automated Testing Framework (ATF).
+               Default: yes
+
+MKBFD          Obsolete, use MKBINUTILS
+
+MKBINUTILS     If "no", don't build binutils (gas, ld, etc and libbfd,
+               libopcodes)
+               Default: yes
+
+MKBSDTAR       If "yes", use the libarchive based cpio and tar instead of
+               the pax frontends.
+               Default: no
+
+MKCATPAGES     If "no", don't build or install the catman pages.
+               Default: no
+
+MKCOMPAT       If "no", don't build or install the src/compat.
+               Default: yes on amd64/sparc64, no elsewhere.
+
+MKCOMPLEX      If "no", don't build libm support for <complex.h>
+               Default: yes
+
+MKCRYPTO       If "no", no cryptography support will be built into the system,
+               and also acts as "MKKERBEROS=no".
+               Default: yes
+
+MKCRYPTO_RC5   If not "no", RC5 support will be built into libcrypto_rc5
+               Default: no
+
+MKCVS          If "no", don't build or install cvs(1).
+               Default: yes
+
+MKDEBUG                If "no", don't build and install separate debugging symbols
+               into /usr/libdata/debug.
+               Default: no
+
+MKDEBUGLIB     Build *_g.a debugging libraries, which are compiled
+               with -DDEBUG.
+               Default: no
+
+MKDOC          If "no", don't build or install the documentation.
+               Default: yes
+
+MKDYNAMICROOT  If "no", build programs in /bin and /sbin statically,
+               don't install certain libraries in /lib, and don't
+               install the shared linker into /libexec.
+               Default: yes
+
+MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
+               to cross-build programs and libraries externally added by
+               users, and automatically enables creation of those sets.
+               Default: no
+
+MKGCC          If "no", don't build gcc(1) or any of the GCC-related
+               libraries (libgcc, libobjc, libstdc++).
+               Default: yes
+
+MKGCCCMDS      If "no", don't build gcc(1), but do build the GCC-related
+               libraries (libgcc, libobjc, libstdc++).
+               Default: yes
+
+MKGDB          If "no", don't build gdb(1).
+               Default: yes
+
+MKHESIOD       If "no", disables building of Hesiod infrastructure
+               (libraries and support programs).
+               Default: yes
+
+MKHOSTOBJ      If not "no", for programs intended to be run on the compile
+               host, the name, release, and architecture of the host
+               operating system will be suffixed to the name of the object
+               directory created by "make obj".
+               Default: no
+
+MKHTML         If "no", don't build or install the HTML man pages.
+               Default: yes
+
+MKIEEEFP       If "no", don't add code for IEEE754/IEC60559 conformance.
+               Has no effect on most platforms.
+               Default: yes
+
+MKSTRIPIDENT   Strip the RCS IDs from program binaries and shared libraries.
+               Default: no
+
+MKINET6                If "no", disables building of INET6 (IPv6) infrastructure
+               (libraries and support programs).  This option must not be
+               set to "no" if MKX11 is not "no".
+               Default: yes
+
+MKINFO         If "no", don't build or install Info documentation from
+               Texinfo source files.
+               Default: yes
+
+MKIPFILTER     If "no", don't build or install the IP Filter programs and LKM.
+               Default: yes
+
+MKISCSI                If "no", don't build or install iSCSI library or applications
+               (depends on libpthread.)
+               Default: yes
+
+MKKERBEROS     If "no", disables building of Kerberos v5
+               infrastructure (libraries and support programs).
+               Default: yes
+
+MKLDAP         If "no", disables building of LDAP infrastructure
+               (libraries and support programs).
+               Default: yes
+
+MKLINKLIB      If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
+               Also:
+                       - don't install the .a libraries
+                       - don't install _pic.a libraries on PIC systems
+                       - don't build .a libraries on PIC systems
+                       - don't install the .so symlink on ELF systems
+               I.e, only install the shared library (and the .so.major
+               symlink on ELF).
+               Default: yes
+
+MKLINT         If "no", don't build or install the lint libraries.
+               Default: yes
+
+MKLVM          If "no", don't build or install the logical volume manager
+               and device mapper tools and libraries
+               Default: yes
+
+MKMAN          If "no", don't build or install the man or catman pages,
+               and also acts as "MKCATPAGES=no MKHTML=no".
+               Default: yes
+
+MKMANDOC       If "yes", mandoc is built as tool and used to compile
+               catman or html pages.  A directory can be exempted by
+               defining NOMANDOC.  Individual man pages are exempted
+               if NOMANDOC.${target} is set to "yes".
+               Default: yes
+
+MKMANZ         If not "no", compress manual pages at installation time.
+               Default: no
+
+MKMDNS         If "no", disables building of mDNS infrastructure
+               (libraries and support programs).
+               Default: yes
+
+MKNLS          If "no", don't build or install the NLS files and locale
+               definition files.
+               Default: yes
+
+MKNPF          If "no", don't build or install the NPF and its modules.
+               Default: yes
+
+MKOBJ          If "no", don't enable the rule which creates objdirs,
+               and also acts as "MKOBJDIRS=no".
+               Default: yes
+
+MKOBJDIRS      If "no", don't create objdirs during a "make build".
+               Default: no
+
+MKPAM          If "no", disables building of PAM authentication
+               infrastructure (libraries and support programs).
+               Default: yes
+
+MKPCC          If "no", don't build pcc(1) or any of the PCC-related
+               libraries (libpcc, libpccsoftfloat).
+               Default: no
+
+MKPF           If "no", don't build or install the pf programs and LKM.
+               Default: yes
+
+MKPIC          If "no", don't build or install shared libraries, and
+               also acts as "MKPICLIB=no"
+               Default: yes (for MACHINE_ARCHs that support it) 
+
+MKPICINSTALL   If "no", don't install the *_pic.a libraries.
+               Default: yes
+
+MKPICLIB       If "no", don't build *_pic.a libraries, and build the
+               shared object libraries from the .a libraries.
+               A symlink is installed in ${DESTDIR}/usr/lib for the
+               _pic.a library pointing to the .a library.
+               Default: yes
+
+MKPIE          If "no", create regular executables. Otherwise create
+               PIE (Position Independent Executables).
+               Default: no
+
+MKPIGZGZIP     If "no", only install pigz as pigz, not gzip.
+               Default: no
+
+MKPOSTFIX      If "no", don't build or install postfix(1).
+               Default: yes
+
+MKPROFILE      If "no", don't build or install the profiling (*_p.a) libraries.
+               Default: yes
+
+MKREPRO         If "yes", create reproducable builds. This enables
+               different switches to make two builds from the same source tree
+               result in the same build results.
+               Default: no
+
+MKSHARE                If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
+               MKMAN=no MKNLS=no".
+               I.e, don't build catman pages, documentation, Info
+               documentation, man pages, NLS files, ...
+               Default: yes
+
+MKSKEY         If "no", disables building of S/key authentication
+               infrastructure (libraries and support programs).
+               Default: yes
+
+MKSOFTFLOAT    If not "no", build with options to enable the compiler to
+               generate output containing library calls for floating
+               point and possibly soft-float library support.
+               Default: no
+
+MKSTATICLIB    If "no", don't build or install the normal static (*.a)
+               libraries.
+               Default: yes
+
+MKUNPRIVED     If not "no", don't set the owner/group/mode when installing
+               files or directories, and keep a metadata log of what
+               the owner/group/mode should be.  This allows a
+               non-root "make install".
+               Default: no
+
+MKUPDATE       If not "no", 'make install' only installs targets that are
+               more recently modified in the source directories that their
+               installed counterparts.
+               Default: no
+
+MKX11          If not "no", depending on the value of ${X11FLAVOUR},
+               'make build' also descends into either src/x11 (XFree86) or
+               src/external/mit/xorg (modular Xorg) to cross-build X11 and
+               automatically enables creation of X sets.
+               Default: no
+
+MKX11FONTS     If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
+               install the X fonts.  The xfont set is still created but
+               will be empty.
+               Default: yes
+
+MKYP           If "no", disables building of YP (NIS)
+               infrastructure (libraries and support programs).
+               Default: yes
+
+MKZFS          If "no", do not build and install utilities and libraries 
+               used to manage ZFS file system. Do not build zfs and solaris 
+               compatibility kernel modules.
+               Default: yes on i386/amd64, no elsewhere.
+
+MKRUMP         If "no", do not build and install rump related headers,
+               libraries, and programs.
+               Default: yes
+
+USE_HESIOD     If "no", disables building Hesiod support into
+               various system utilities/libraries that support it.
+               If ${MKHESIOD} is "no", USE_HESIOD will also be
+               forced to "no".
+
+USE_INET6      If "no", disables building INET6 (IPv6) support into
+               various system utilities/libraries that support it.
+               If ${MKINET6} is "no", USE_INET6 will also be
+               forced to "no".
+
+USE_JEMALLOC   If "no", disables building the "jemalloc" allocator
+               designed for improved performance with threaded
+               applications.  The "phkmalloc" allocator as used up
+               before NetBSD-5.0 will be substituted.
+
+USE_KERBEROS   If "no", disables building Kerberos v5
+               support into various system utilities/libraries that
+               support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
+               will also be forced to "no".
+
+USE_LDAP       If "no", disables building LDAP support into various
+               system utilities/libraries that support it.
+               If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
+
+USE_PAM                If "no", disables building PAM authentication support
+               into various system utilities/libraries that support it.
+               If ${MKPAM} is "no", USE_PAM will also be forced to "no".
+
+USE_SKEY       If "no", disables building S/key authentication
+               support into various system utilities/libraries that
+               support it.  If ${MKSKEY} is "no", USE_SKEY will
+               also be forced to "no".
+               Default: no
+
+USE_SSP                If "no", disables GCC stack protection code, which
+               detects stack overflows and aborts the program. The
+               stack protection code imposes a performance penalty
+               of about 5%.
+               Default: "no", unless "USE_FORT" is set to "yes"
+
+USE_FORT       If "yes" turns on substitute wrappers for commonly used
+               functions that do not do bounds checking regularly, but
+               they could in some cases by using the gcc
+               __builtin_object_size() function to determine the buffer 
+               size where it is known and detect buffer overflows.
+               These substitute functions are in /usr/include/ssp.
+               Default: depends on the part of the source tree
+
+USE_YP         If "no", disables building YP (NIS) support into
+               various system utilities/libraries that support it.
+               If ${MKYP} is "no", USE_YP will also be forced to "no".
+
+USE_PIGZGZIP   If "no", use the host "gzip" program to compress things.
+               Otherwise, build tools/pigz and use nbpigz to compress
+               things.
+               Default: "no".
+
+X11FLAVOUR     Set to "Xorg" or "XFree86", depending on whether to build
+               XFree86 or modular Xorg.  Only matters if MKX11!=no.
+               Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
+               "XFree86" on everything else.
+
+COPTS.lib<lib>
+OBJCOPTS.lib<lib>
+LDADD.lib<lib>
+CPPFLAGS.lib<lib>
+CXXFLAGS.lib<lib>
+COPTS.<prog>
+OBJCCOPTS.<prog>
+LDADD.<prog>
+CPPFLAGS.<prog>
+CXXFLAGS.<prog>        These provide a way to specify additions to the associated
+               variables in a way that applies only to a particular library
+               or program.  <lib> corresponds to the LIB variable set in
+               the library's makefile.  <prog> corresponds to either PROG
+               or PROG_CXX (if set).  For example, if COPTS.libcrypto is
+               set to "-g", "-g" will be added to COPTS only when compiling
+               the crypto library.
+
+The active compiler is selected using the following variables:
+AVAILABLE_COMPILER
+               List of available compiler suites.  Processed in order
+               for selecting the active compiler for each frontend.
+HAVE_PCC       If defined, PCC is present and enabled.
+HAVE_LLVM      If defined, LLVM/Clang is present and enabled.
+UNSUPPORTED_COMPILER.xxx
+               If defined, the support for compiler "xxx" is disabled.
+
+For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
+ACTIVE_CC      Active compile suite for the CC frontend.
+SUPPORTED_CC   Compile suite with support for the CC frontend.
+TOOL_CC.xxx    Path to the CC frontend for compiler "xxx"
+
+=-=-=-=-=   sys.mk   =-=-=-=-=
+
+The include file <sys.mk> has the default rules for all makes, in the BSD
+environment or otherwise.  You probably don't want to touch this file.
+
+=-=-=-=-=   bsd.own.mk   =-=-=-=-=
+
+The include file <bsd.own.mk> contains source tree configuration parameters,
+such as the owners, groups, etc. for both manual pages and binaries, and
+a few global "feature configuration" parameters.
+
+It has no targets.
+
+To get system-specific configuration parameters, <bsd.own.mk> will try to
+include the file specified by the "MAKECONF" variable.  If MAKECONF is not
+set, or no such file exists, the system make configuration file, /etc/mk.conf
+is included.  These files may define any of the variables described below.
+
+<bsd.own.mk> sets the following variables, if they are not already defined
+(defaults are in brackets):
+
+NETBSDSRCDIR   Top of the NetBSD source tree.
+               If _SRC_TOP_ != "", that will be used as the default,
+               otherwise BSDSRCDIR will be used as the default.
+               Various makefiles within the NetBSD source tree will
+               use this to reference the top level of the source tree.
+
+_SRC_TOP_      Top of the system source tree, as determined by <bsd.own.mk>
+               based on the presence of tools/ and build.sh.  This variable
+               is "internal" to <bsd.own.mk>, although its value is only
+               determined once and then propagated to all sub-makes.
+
+BSDSRCDIR      The real path to the system sources, so that 'make obj'
+               will work correctly.  [/usr/src]
+
+BSDOBJDIR      The real path to the system 'obj' tree, so that 'make obj'
+               will work correctly.  [/usr/obj]
+
+BINGRP         Binary group.  [wheel]
+
+BINOWN         Binary owner.  [root]
+
+BINMODE                Binary mode.  [555]
+
+NONBINMODE     Mode for non-executable files.  [444]
+
+MANDIR         Base path for manual installation.  [/usr/share/man/cat]
+
+MANGRP         Manual group.  [wheel]
+
+MANOWN         Manual owner.  [root]
+
+MANMODE                Manual mode.  [${NONBINMODE}]
+
+MANINSTALL     Manual installation type.  Space separated list:
+                       catinstall, htmlinstall, maninstall
+               Default value derived from MKCATPAGES and MKHTML.
+
+LDSTATIC       Control program linking; if set blank, link everything
+               dynamically.  If set to "-static", link everything statically.
+               If not set, programs link according to their makefile.
+
+LIBDIR         Base path for library installation.  [/usr/lib]
+
+LINTLIBDIR     Base path for lint(1) library installation.  [/usr/libdata/lint]
+
+LIBGRP         Library group.  [${BINGRP}]
+
+LIBOWN         Library owner.  [${BINOWN}]
+
+LIBMODE                Library mode.  [${NONBINMODE}]
+
+DOCDIR         Base path for system documentation (e.g. PSD, USD, etc.)
+               installation.  [/usr/share/doc]
+
+HTMLDOCDIR     Base path for html system documentation installation.
+               [/usr/share/doc/html]
+
+DOCGRP         Documentation group.  [wheel]
+
+DOCOWN         Documentation owner.  [root]
+
+DOCMODE                Documentation mode.  [${NONBINMODE}]
+
+NLSDIR         Base path for Native Language Support files installation.
+               [/usr/share/nls]
+
+NLSGRP         Native Language Support files group.  [wheel]
+
+NLSOWN         Native Language Support files owner.  [root]
+
+NLSMODE                Native Language Support files mode.  [${NONBINMODE}]
+
+X11SRCDIR      The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
+               if that exists; otherwise /usr/xsrc]
+
+X11SRCDIR.xc   The path to the (old) X11 xc src tree.  [${X11SRCDIR}/xfree/xc]
+
+X11SRCDIR.local        The path to the local X11 src tree.  [${X11SRCDIR}/local]
+
+X11SRCDIR.lib<package>
+X11SRCDIR.<package>
+               The path to the xorg src tree for the specificed package>.
+               [${X11SRCDIR}/external/mit/xorg/<package>/dist]
+
+X11ROOTDIR     Root directory of the X11 installation.  [/usr/X11R6 or
+               [/usr/X11R7]
+
+X11BINDIR      X11 bin directory.  [${X11ROOTDIR}/bin]
+
+X11FONTDIR     X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
+
+X11INCDIR      X11 include directory.  [${X11ROOTDIR}/include]
+
+X11LIBDIR      X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
+
+X11MANDIR      X11 manual directory.  [${X11ROOTDIR}/man]
+
+X11USRLIBDIR   X11 library directory.  [${X11ROOTDIR}/lib]
+
+STRIPFLAG      The flag passed to the install program to cause the binary
+               to be stripped.  This is to be used when building your
+               own install script so that the entire system can be made
+               stripped/not-stripped using a single knob.  []
+
+COPY           The flag passed to the install program to cause the binary
+               to be copied rather than moved.  This is to be used when
+               building our own install script so that the entire system
+               can either be installed with copies, or with moves using
+               a single knob.  [-c]
+
+MAKEDIRTARGET dir target [params]
+               Runs "cd $${dir} && ${MAKE} [params] $${target}",
+               displaying a "pretty" message whilst doing so.
+
+RELEASEMACHINEDIR
+               Subdirectory used below RELEASEDIR when building
+               a release.  [${MACHINE}]
+
+RELEASEMACHINE Subdirectory or path component used for the following
+               paths:
+                       distrib/${RELEASEMACHINE}
+                       distrib/notes/${RELEASEMACHINE}
+                       etc/etc.${RELEASEMACHINE}
+               Used when building a release.  [${MACHINE}]
+
+Additionally, the following variables may be set by <bsd.own.mk> or in a
+make configuration file to modify the behavior of the system build
+process (default values are in brackets along with comments, if set by
+<bsd.own.mk>):
+
+USETOOLS       Indicates whether the tools specified by ${TOOLDIR} should
+               be used as part of a build in progress.
+               Supported values:
+
+               yes     Use the tools from TOOLDIR.
+                       Must be set to this if cross-compiling.
+
+               no      Do not use the tools from TOOLDIR, but refuse to
+                       build native compilation tool components that are
+                       version-specific for that tool.
+
+               never   Do not use the tools from TOOLDIR, even when
+                       building native tool components.  This is similar to
+                       the traditional NetBSD build method, but does not
+                       verify that the compilation tools in use are
+                       up-to-date enough in order to build the tree
+                       successfully.  This may cause build or runtime
+                       problems when building the whole NetBSD source tree.
+
+               Default: "yes" if building all or part of a whole NetBSD
+               source tree (detected automatically); "no" otherwise
+               (to preserve traditional semantics of the <bsd.*.mk>
+               make(1) include files).
+
+OBJECT_FMT     Object file format.  [set to "ELF" on architectures that
+               use ELF -- currently all architectures].
+
+TOOLCHAIN_MISSING
+               If not "no", this indicates that the platform being built
+               does not have a working in-tree toolchain.  If the
+               ${MACHINE_ARCH} in question falls into this category,
+               TOOLCHAIN_MISSING is conditionally assigned the value "yes". 
+               Otherwise, the variable is unconditionally assigned the
+               value "no".
+               If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
+               unconditionally assigned the value "no".
+
+EXTERNAL_TOOLCHAIN
+               This variable is not directly set by <bsd.own.mk>, but
+               including <bsd.own.mk> is the canonical way to gain
+               access to this variable.  The variable should be defined
+               either in the user's environment or in the user's mk.conf
+               file.  If defined, this variable indicates the root of
+               an external toolchain which will be used to build the
+               tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
+               platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
+               cross-compile framework.
+
+               If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
+               assigned the value "no", since the external version of the
+               compiler may not be able to build the library components of
+               the in-tree compiler.
+
+               NOTE: This variable is not yet used in as many places as
+               it should be.  Expect the exact semantics of this variable
+               to change in the short term as parts of the cross-compile
+               framework continue to be cleaned up.
+
+The following variables are defined to commands to perform the
+appropriate operation, with the default in [brackets].  Note that
+the defaults change if USETOOLS == "yes":
+
+TOOL_AMIGAAOUT2BB      aout to Amiga bootblock converter.  [amiga-aout2bb]
+
+TOOL_AMIGAELF2BB       ELF to Amiga bootblock converter.  [amiga-elf2bb]
+
+TOOL_AMIGATXLT         Amige assembly language format translator.  [amiga-txlt]
+
+TOOL_ASN1_COMPILE      ASN1 compiler.  [asn1_compile]
+
+TOOL_AWK               Pattern-directed scanning/processing language.  [awk]
+
+TOOL_CAP_MKDB          Create capability database.  [cap_mkdb]
+
+TOOL_CAT               Concatenate and print files.  [cat]
+
+TOOL_CKSUM             Display file checksums.  [cksum]
+
+TOOL_COMPILE_ET                Error table compiler.  [compile_et]
+
+TOOL_CONFIG            Build kernel compilation directories.  [config]
+
+TOOL_CRUNCHGEN         Generate crunched binary build environment.  [crunchgen]
+
+TOOL_CTAGS             Create a tags file.  [ctags]
+
+TOOL_DB                        Manipulate db(3) databases.  [db]
+
+TOOL_DISKLABEL         Read and write disk pack label.  [disklabel]
+
+TOOL_EQN               Format equations for groff.  [eqn]
+
+TOOL_FDISK             MS-DOS partition maintenance program.  [fdisk]
+
+TOOL_FGEN              IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
+
+TOOL_GENASSYM          Generate constants for assembly files.  [genassym]
+
+TOOL_GENCAT            Generate NLS message catalogs.  [gencat]
+
+TOOL_GMAKE             GNU make utility.  [gmake]
+
+TOOL_GREP              Print lines matching a pattern.  [grep]
+
+TOOL_GROFF             Front end for groff document formatting system.  [groff]
+
+TOOL_HEXDUMP           Ascii, decimal, hexadecimal, octal dump.  [hexdump]
+
+TOOL_HP300MKBOOT       Make bootable image for hp300.  [hp300-mkboot]
+
+TOOL_HP700MKBOOT       Make bootable image for hp700.  [hp700-mkboot]
+
+TOOL_INDXBIB           Make bibliographic database's inverted index.  [indxbib]
+
+TOOL_INSTALLBOOT       Install disk bootstrap software.  [installboot]
+
+TOOL_INSTALL_INFO      Update info/dir entries.  [install-info]
+
+TOOL_JOIN              Relational database operator.  [join]
+
+TOOL_M4                        M4 macro language processor.  [m4]
+
+TOOL_MACPPCFIXCOFF     Fix up xcoff headers for macppc.  [macppc-fixcoff]
+
+TOOL_MAKEFS            Create file system image from directory tree.  [makefs]
+
+TOOL_MAKEINFO          Translate Texinfo documents.  [makeinfo]
+
+TOOL_MAKEWHATIS                Create a whatis.db database.  [makewhatis]
+
+TOOL_MDSETIMAGE                Set kernel RAM disk image.  [mdsetimage]
+
+TOOL_MENUC             Menu compiler.  [menuc]
+
+TOOL_MIPSELF2ECOFF     Convert ELF-format executable to ECOFF for mips.
+                       [mips-elf2ecoff]
+
+TOOL_MKCSMAPPER                Make charset mapping table.  [mkcsmapper]
+
+TOOL_MKESDB            Make encoding scheme database.  [mkesdb]
+
+TOOL_MKLOCALE          Make LC_CTYPE locale files.  [mklocale]
+
+TOOL_MKMAGIC           Create database for file(1).  [file]
+
+TOOL_MKTEMP            Make (unique) temporary file name.  [mktemp]
+
+TOOL_MSGC              Simple message list compiler.  [msgc]
+
+TOOL_MTREE             Map a directory hierarchy.  [mtree]
+
+TOOL_PAX               Manipulate file archives and copy directories.  [pax]
+
+TOOL_PIC               Compile pictures for groff.  [pic]
+
+TOOL_PIGZ              Parallel compressor.  [pigz]
+
+TOOL_POWERPCMKBOOTIMAGE        Make bootable image for powerpc.  [powerpc-mkbootimage]
+
+TOOL_PWD_MKDB          Generate the password databases.  [pwd_mkdb]
+
+TOOL_REFER             Preprocess bibliographic references for groff.  [refer]
+
+TOOL_ROFF_ASCII                Generate ASCII groff output.  [nroff]
+
+TOOL_ROFF_DVI          Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
+
+TOOL_ROFF_HTML         Generate HTML groff output.
+                       [${TOOL_GROFF} -Tlatin1 -mdoc2html]
+
+TOOL_ROFF_PS           Generate PS groff output.  [${TOOL_GROFF} -Tps]
+
+TOOL_ROFF_RAW          Generate "raw" groff output.  [${TOOL_GROFF} -Z]
+
+TOOL_RPCGEN            Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
+
+TOOL_SED               Stream editor.  [sed]
+
+TOOL_SOELIM            Eliminate .so's from groff input.  [soelim]
+
+TOOL_SPARKCRC          Generate a crc suitable for use in a sparkive file.
+                       [sparkcrc]
+
+TOOL_STAT              Display file status.  [stat]
+
+TOOL_STRFILE           Create a random access file for storing strings.
+                       [strfile]
+
+TOOL_SUNLABEL          Read or modify a SunOS disk label.  [sunlabel]
+
+TOOL_TBL               Format tables for groff.  [tbl]
+
+TOOL_UUDECODE          Uudecode a binary file.  [uudecode]
+
+TOOL_VGRIND            Grind nice listings of programs.  [vgrind -f]
+
+TOOL_ZIC               Time zone compiler.  [zic]
+
+<bsd.own.mk> is generally useful when building your own Makefiles so that
+they use the same default owners etc. as the rest of the tree.
+
+
+=-=-=-=-=   bsd.clean.mk   =-=-=-=-=
+
+The include file <bsd.clean.mk> defines the clean and cleandir
+targets.  It uses the following variables:
+
+CLEANFILES     Files to remove for both the clean and cleandir targets.
+
+CLEANDIRFILES  Files to remove for the cleandir target, but not for
+               the clean target.
+
+MKCLEANSRC     Controls whether or not the clean and cleandir targets
+               will delete files from both the object directory,
+               ${.OBJDIR}, and the source directory, ${.CURDIR}.
+
+               If MKCLEANSRC is set to "no", then the file names in
+               CLEANFILES or CLEANDIRFILES are interpreted relative
+               to the object directory, ${.OBJDIR}.  This is the
+               traditional behaviour.
+
+               If MKCLEANSRC is set to "yes", then the file deletion
+               is performed relative to both the object directory,
+               ${.OBJDIR}, and the source directory, ${.CURDIR}.  (This
+               has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
+               Deleting files from ${.CURDIR} is intended to remove
+               stray output files that had been left in the source
+               directory by an earlier build that did not use object
+               directories.
+
+               The default is MKCLEANSRC=yes.  If you always build with
+               separate object directories, and you are sure that there
+               are no stray files in the source directories, then you
+               may set MKCLEANSRC=no to save some time.
+
+MKCLEANVERIFY  Controls whether or not the clean and cleandir targets
+               will verify that files have been deleted.
+
+               If MKCLEANVERIFY is set to "no", then the files will
+               be deleted using a "rm -f" command, and its success or
+               failure will be ignored.
+
+               If MKCLEANVERIFY is set to "yes", then the success of
+               the "rm -f" command will be verified using an "ls"
+               command.
+
+               The default is MKCLEANVERIFY=yes.  If you are sure that
+               there will be no problems caused by file permissions,
+               read-only file systems, or the like, then you may set
+               MKCLEANVERIFY=no to save some time.
+
+To use the clean and cleandir targets defined in <bsd.clean.mk>, other
+Makefiles or bsd.*.mk files should append file names to the CLEANFILES
+or CLEANDIRFILES variables.  For example:
+
+           CLEANFILES+= a.out
+           CLEANDIRFILES+= .depend
+
+           .include <bsd.clean.mk>
+
+
+=-=-=-=-=   bsd.dep.mk   =-=-=-=-=
+
+The include file <bsd.dep.mk> contains the default targets for building
+.depend files.  It creates .d files from entries in SRCS and DPSRCS
+that are C, C++, or Objective C source files, and builds .depend from the
+.d files.  All other files in SRCS and all of DPSRCS will be used as
+dependencies for the .d files.  In order for this to function correctly,
+it should be .included after all other .mk files and directives that may
+modify SRCS or DPSRCS.  It uses the following variables:
+
+SRCS           List of source files to build the program.
+
+DPSRCS         List of source files which are needed for generating
+               dependencies, but are not needed in ${SRCS}.
+
+
+=-=-=-=-=   bsd.files.mk   =-=-=-=-=
+
+The include file <bsd.files.mk> handles the FILES variables and is included
+from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
+
+FILES          The list of files to install.
+
+CONFIGFILES    Similar semantics to FILES, except that the files
+               are installed by the `configinstall' target,
+               not the `install' target.
+               The FILES* variables documented below also apply.
+
+FILESOWN       File owner.  [${BINOWN}]
+
+FILESGRP       File group.  [${BINGRP}]
+
+FILESMODE      File mode.  [${NONBINMODE}]
+
+FILESDIR       The location to install the files.
+
+FILESNAME      Optional name to install each file as.
+
+FILESOWN_<fn>  File owner of the specific file <fn>.
+
+FILESGRP_<fn>  File group of the specific file <fn>.
+
+FILESMODE_<fn> File mode of the specific file <fn>.
+
+FILESDIR_<fn>  The location to install the specific file <fn>.
+
+FILESNAME_<fn> Optional name to install <fn> as.
+
+FILESBUILD     If this variable is defined, then its value will be
+               used as the default for all FILESBUILD_<fn> variables.
+               Otherwise, the default will be "no".
+
+FILESBUILD_<fn>        A value different from "no" will add the file to the list of
+               targets to be built by `realall'.  Users of that variable
+               should provide a target to build the file.
+
+
+BUILDSYMLINKS  List of two word items:
+                       lnsrc lntgt
+               For each lnsrc item, create a symlink named lntgt.
+               The lntgt symlinks are removed by the cleandir target.
+
+UUDECODE_FILES List of files which are stored as <file>.uue in the source
+               tree. Each one will be decoded with ${TOOL_UUDECODE}.
+               The source files have a `.uue' suffix, the generated files do 
+               not.
+
+UUDECODE_FILES_RENAME_<fn>
+               Rename the output from the decode to the provided name.
+               
+               *NOTE: These files are simply decoded, with no install or other
+                      rule applying implicitly except being added to the clean
+                      target.
+
+=-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
+
+The include file <bsd.gcc.mk> computes various parameters related to GCC
+support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
+before <bsd.gcc.mk>.
+
+The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
+of which need to know where to find certain GCC support libraries.
+
+The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
+which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
+the compiler is asked where to find the support libraries, otherwise the
+support libraries are found in ${DESTDIR}/usr/lib.
+
+<bsd.gcc.mk> sets the following variables:
+
+_GCC_CRTBEGIN  The full path name to crtbegin.o.
+
+_GCC_CRTBEGINS The full path name to crtbeginS.o.
+
+_GCC_CRTEND    The full path name to crtend.o.
+
+_GCC_CRTENDS   The full path name to crtendS.o.
+
+_GCC_LIBGCCDIR The directory where libgcc.a is located.
+
+
+=-=-=-=-=   bsd.inc.mk   =-=-=-=-=
+
+The include file <bsd.inc.mk> defines the includes target and uses the
+variables:
+
+INCS           The list of include files.
+
+INCSDIR                The location to install the include files.
+
+INCSNAME       Target name of the include file, if only one; same as
+               FILESNAME, but for include files.
+
+INCSYMLINKS    Similar to SYMLINKS in <bsd.links.mk>, except that these
+               are installed in the 'includes' target and not the
+               (much later) 'install' target.
+
+INCSNAME_<file>        The name file <file> should be installed as, if not <file>,
+               same as FILESNAME_<file>, but for include files.
+
+
+=-=-=-=-=   bsd.info.mk   =-=-=-=-=
+
+The include file <bsd.info.mk> is used to generate and install GNU Info
+documentation from respective Texinfo source files.  It defines three
+implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
+following variables:
+
+TEXINFO                List of Texinfo source files.  Info documentation will
+               consist of single files with the extension replaced by
+               .info.
+
+INFOFLAGS      Flags to pass to makeinfo.  []
+
+
+=-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
+
+The include file <bsd.kernobj.mk> defines variables related to the
+location of kernel sources and object directories.
+
+KERNSRCDIR     Is the location of the top of the kernel src.
+               [${_SRC_TOP_}/sys]
+
+KERNARCHDIR    Is the location of the machine dependent kernel sources.
+               [arch/${MACHINE}]
+
+KERNCONFDIR    Is where the configuration files for kernels are found.
+               [${KERNSRCDIR}/${KERNARCHDIR}/conf]
+
+KERNOBJDIR     Is the kernel build directory.  The kernel GENERIC for
+               instance will be compiled in ${KERNOBJDIR}/GENERIC.
+               The default value is
+               ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
+               if it exists or the target 'obj' is being made.
+               Otherwise the default is
+               ${KERNSRCDIR}/${KERNARCHDIR}/compile.
+
+It is important that Makefiles (such as those under src/distrib) that
+wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
+rather than make assumptions about the location of the compiled kernel.
+
+
+=-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
+
+The include file <bsd.kinc.mk> defines the many targets (includes,
+subdirectories, etc.), and is used by kernel makefiles to handle
+include file installation.  It is intended to be included alone, by
+kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
+Please see <bsd.kinc.mk> for more details, and keep the documentation
+in that file up to date.
+
+
+=-=-=-=-=   bsd.lib.mk   =-=-=-=-=
+
+The include file <bsd.lib.mk> has support for building libraries.  It has
+the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
+includes, install, lint, and tags.  Additionally, it has a checkver target
+which checks for installed shared object libraries whose version is greater
+that the version of the source. It has a limited number of suffixes,
+consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
+<bsd.shlib.mk> to get shared library parameters.
+
+It sets/uses the following variables:
+
+LIB            The name of the library to build.
+
+LIBDIR         Target directory for libraries.
+
+MKARZERO       Normally, ar(1) sets the timestamps, uid, gid and
+               permissions in files inside its archives to those of
+               the file it was fed. This leads to non-reproduceable
+               builds. If MKARZERO is set to "yes" (default is "no")
+               then the "D" flag is passed to ar, causing the
+               timestamp, uid and gid to be zeroed and the file
+               permissions to be set to 644. This allows .a files
+               from different builds to be bit identical.
+
+SHLIBINSTALLDIR        Target directory for shared libraries if ${USE_SHLIBDIR}
+               is not "no".
+
+SHLIB_MAJOR
+SHLIB_MINOR
+SHLIB_TEENY    Major, minor, and teeny version numbers of shared library
+
+USE_SHLIBDIR   If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
+               as the path to install shared libraries to.
+               USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
+               Default: no
+
+LIBISMODULE    If not "no", install as ${LIB}.so (without the "lib" prefix),
+               and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
+               MKPROFILE=no MKSTATICLIB=no".
+               Default: no
+
+LIBISPRIVATE   If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
+               MKPROFILE=no", and don't install the (.a) library.
+               This is useful for "build only" helper libraries.
+               Default: no
+
+LIBISCXX       If not "no", Use ${CXX} instead of ${CC} to link
+               shared libraries.
+               This is useful for C++ libraries.
+               Default: no
+
+LINTLIBDIR     Target directory for lint libraries.
+
+LIBGRP         Library group.
+
+LIBOWN         Library owner.
+
+LIBMODE                Library mode.
+
+LDADD          Additional loader objects.
+
+MAN            The manual pages to be installed (use a .1 - .9 suffix).
+
+NOCHECKVER_<library>
+NOCHECKVER     If set, disables checking for installed shared object
+               libraries with versions greater than the source.  A
+               particular library name, without the "lib" prefix, may
+               be appended to the variable name to disable the check for
+               only that library.
+
+SRCS           List of source files to build the library.  Suffix types
+               .s, .c, and .f are supported.  Note, .s files are preferred
+               to .c files of the same name.  (This is not the default for
+               versions of make.)
+
+LIBDPLIBS      A list of the tuples:
+                       libname  path-to-srcdir-of-libname
+
+               For each tuple;
+                    *  LIBDO.libname contains the .OBJDIR of the library
+                       `libname', and if it is not set it is determined
+                       from the srcdir and added to MAKEOVERRIDES (the
+                       latter is to allow for build time optimization).
+                    *  LDADD gets  -L${LIBDO.libname} -llibname    added.
+                    *  DPADD gets  ${LIBDO.libname}/liblibname.so  or
+                                   ${LIBDO.libname}/liblibname.a   added.
+
+               This variable may be used for individual libraries, as
+               well as in parent directories to cache common libraries 
+               as a build-time optimization.
+
+The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+It has rules for building profiled objects; profiled libraries are
+built by default.
+
+Libraries are ranlib'd when made.
+
+
+=-=-=-=-=   bsd.links.mk   =-=-=-=-=
+
+The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
+and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
+
+LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
+is used. The defaults may be modified by other bsd.*.mk files which
+include bsd.links.mk.  In the future, these variables may be replaced
+by a method for explicitly recording hard links in a metadata log.
+
+LINKS          The list of hard links, consisting of pairs of paths:
+                       source-file target-file
+               ${DESTDIR} is prepended to both paths before linking.
+               For example, to link /bin/test and /bin/[, use:
+                       LINKS=/bin/test /bin/[
+
+CONFIGLINKS    Similar semantics to LINKS, except that the links
+               are installed by the `configinstall' target,
+               not the `install' target.
+
+SYMLINKS       The list of symbolic links, consisting of pairs of paths:
+                       source-file target-file
+               ${DESTDIR} is only prepended to target-file before linking.
+               For example, to symlink /usr/bin/tar to /bin/tar resulting
+               in ${DESTDIR}/usr/bin/tar -> /bin/tar:
+                       SYMLINKS=/bin/tar /usr/bin/tar
+
+CONFIGSYMLINKS Similar semantics to SYMLINKS, except that the symbolic links
+               are installed by the `configinstall' target,
+               not the `install' target.
+
+LINKSOWN       Link owner.  [${BINOWN}]
+
+LINKSGRP       Link group.  [${BINGRP}]
+
+LINKSMODE      Link mode.  [${NONBINMODE}]
+
+LINKSOWN_<fn>  Link owner of the specific file <fn>.
+
+LINKSGRP_<fn>  Link group of the specific file <fn>.
+
+LINKSMODE_<fn> Link mode of the specific file <fn>.
+
+
+=-=-=-=-=   bsd.man.mk   =-=-=-=-=
+
+The include file <bsd.man.mk> handles installing manual pages and their
+links.
+
+It has a three targets:
+
+       catinstall:
+               Install the preformatted manual pages and their links.
+       htmlinstall:
+               Install the HTML manual pages and their links.
+       maninstall:
+               Install the manual page sources and their links.
+
+It sets/uses the following variables:
+
+MANDIR         Base path for manual installation.
+
+MANGRP         Manual group.
+
+MANOWN         Manual owner.
+
+MANMODE                Manual mode.
+
+MANSUBDIR      Subdirectory under the manual page section, i.e. "/vax"
+               or "/tahoe" for machine specific manual pages.
+
+MAN            The manual pages to be installed (use a .1 - .9 suffix).
+
+MLINKS         List of manual page links (using a .1 - .9 suffix).  The
+               linked-to file must come first, the linked file second,
+               and there may be multiple pairs.
+
+The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
+it exists.
+
+
+=-=-=-=-=   bsd.obj.mk   =-=-=-=-=
+
+The include file <bsd.obj.mk> defines targets related to the creation
+and use of separated object and source directories.
+
+If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
+${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
+it exists.  Otherwise make(1) looks for the existence of a
+subdirectory (or a symlink to a directory) of the source directory
+into which built targets should be placed.  If an environment variable
+named MAKEOBJDIR is set, make(1) uses its value as the name of the
+object directory; failing that, make first looks for a subdirectory
+named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
+
+Object directories are not created automatically by make(1) if they
+don't exist; you need to run a separate "make obj".  (This will happen
+during a top-level build if "MKOBJDIRS" is set to a value other than
+"no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
+and this is determined by a simple string prefix comparison -- object
+directories are created in a separate object directory tree, and a
+symlink to the object directory in that tree is created in the source
+directory; otherwise, "make obj" assumes that you're not in the main
+source tree and that it's not safe to use a separate object tree.
+
+Several variables used by <bsd.obj.mk> control exactly what
+directories and links get created during a "make obj":
+
+MAKEOBJDIR     If set, this is the component name of the object
+               directory.
+
+OBJMACHINE     If this is set but MAKEOBJDIR is not set, creates
+               object directories or links named "obj.${MACHINE}";
+               otherwise, just creates ones named "obj".
+
+USR_OBJMACHINE  If set, and the current directory is a subdirectory of
+               ${BSDSRCDIR}, create object directory in the
+               corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
+               otherwise, create it in the corresponding subdirectory
+               of ${BSDOBJDIR}
+
+BUILDID                If set, the contents of this variable are appended
+               to the object directory name.  If OBJMACHINE is also
+               set, ".${BUILDID}" is added after ".${MACHINE}".
+
+
+=-=-=-=-=   bsd.prog.mk   =-=-=-=-=
+
+The include file <bsd.prog.mk> handles building programs from one or
+more source files, along with their manual pages.  It has a limited number
+of suffixes, consistent with the current needs of the BSD tree. 
+<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
+
+It has eight targets:
+
+       all:
+               build the program and its manual page.  This also
+               creates a GDB initialization file (.gdbinit) in
+               the objdir.  The .gdbinit file sets the shared library
+               prefix to ${DESTDIR} to facilitate cross-debugging.
+       clean:
+               remove the program, any object files and the files a.out,
+               Errs, errs, mklog, and ${PROG}.core.
+       cleandir:
+               remove all of the files removed by the target clean, as
+               well as .depend, tags, and any manual pages.
+               `distclean' is a synonym for `cleandir'.
+       depend:
+               make the dependencies for the source files, and store
+               them in the file .depend.
+       includes:
+               install any header files.
+       install:
+               install the program and its manual pages; if the Makefile
+               does not itself define the target install, the targets
+               beforeinstall and afterinstall may also be used to cause
+               actions immediately before and after the install target
+               is executed.
+       lint:
+               run lint on the source files
+       tags:
+               create a tags file for the source files.
+
+It sets/uses the following variables:
+
+BINGRP         Binary group.
+
+BINOWN         Binary owner.
+
+BINMODE                Binary mode.
+
+CLEANDIRFILES  Additional files to remove for the cleandir target.
+
+CLEANFILES     Additional files to remove for the clean and cleandir targets.
+
+COPTS          Additional flags to the compiler when creating C objects.
+
+COPTS.<fn>     Additional flags to the compiler when creating the
+               C objects for <fn>.
+               For <fn>.[ly], "<fn>.c" must be used.
+
+CPUFLAGS       Additional flags to the compiler/assembler to select
+               CPU instruction set options, CPU tuning options, etc.
+
+CPUFLAGS.<fn>  Additional flags to the compiler/assembler for <fn>.
+               For <fn>.[ly], "<fn>.c" must be used.
+
+CPPFLAGS       Additional flags to the C pre-processor.
+
+CPPFLAGS.<fn>  Additional flags to the C pre-processor for <fn>.
+               For <fn>.[ly], "<fn>.c" must be used.
+
+GDBINIT                List of GDB initialization files to add to "source"
+               directives in the .gdbinit file that is created in the
+               objdir.
+
+LDADD          Additional loader objects.  Usually used for libraries.
+               For example, to load with the compatibility and utility
+               libraries, use:
+
+                       LDADD+=-lutil -lcompat
+
+LDFLAGS                Additional linker flags (passed to ${CC} during link).
+
+LINKS          See <bsd.links.mk>
+
+OBJCOPTS       Additional flags to the compiler when creating ObjC objects.
+
+OBJCOPTS.<fn>  Additional flags to the compiler when creating the
+               ObjC objects for <fn>.
+               For <fn>.[ly], "<fn>.c" must be used.
+
+SYMLINKS       See <bsd.links.mk>
+
+MAN            Manual pages (should end in .1 - .9).  If no MAN variable is
+               defined, "MAN=${PROG}.1" is assumed.
+
+PAXCTL_FLAGS   If defined, run paxctl(1) on the program binary after link
+               time, with the value of this variable as args to paxctl(1).
+
+PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
+
+PROG           The name of the program to build.  If not supplied, nothing
+               is built.
+
+PROG_CXX       If defined, the name of the program to build.  Also
+               causes <bsd.prog.mk> to link the program with the C++
+               compiler rather than the C compiler.  PROG_CXX overrides
+               the value of PROG if PROG is also set.
+
+PROGNAME       The name that the above program will be installed as, if
+               different from ${PROG}.
+
+SRCS           List of source files to build the program.  If SRCS is not
+               defined, it's assumed to be ${PROG}.c.
+
+DPSRCS         List of source files which are needed for generating
+               dependencies, but are not needed in ${SRCS}.
+
+DPADD          Additional dependencies for the program.  Usually used for
+               libraries.  For example, to depend on the compatibility and
+               utility libraries use:
+
+                       DPADD+=${LIBCOMPAT} ${LIBUTIL}
+
+               The following system libraries are predefined for DPADD:
+
+               LIBARCHIVE?=    ${DESTDIR}/usr/lib/libarchive.a
+               LIBASN1?=       ${DESTDIR}/usr/lib/libasn1.a
+               LIBATF_C?=      ${DESTDIR}/usr/lib/libatf-c.a
+               LIBATF_CXX?=    ${DESTDIR}/usr/lib/libatf-c++.a
+               LIBBIND9?=      ${DESTDIR}/usr/lib/libbind9.a
+               LIBBLUETOOTH?=  ${DESTDIR}/usr/lib/libbluetooth.a
+               LIBBSDMALLOC?=  ${DESTDIR}/usr/lib/libbsdmalloc.a
+               LIBBZ2?=        ${DESTDIR}/usr/lib/libbz2.a
+               LIBC?=          ${DESTDIR}/usr/lib/libc.a
+               LIBCOMPAT?=     ${DESTDIR}/usr/lib/libcompat.a
+               LIBCOM_ERR?=    ${DESTDIR}/usr/lib/libcom_err.a
+               LIBCRT0?=       ${DESTDIR}/usr/lib/crt0.o
+               LIBCRYPT?=      ${DESTDIR}/usr/lib/libcrypt.a
+               LIBCRYPTO?=     ${DESTDIR}/usr/lib/libcrypto.a
+               LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
+               LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
+               LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a
+               LIBCURSES?=     ${DESTDIR}/usr/lib/libcurses.a
+               LIBC_PIC?=      ${DESTDIR}/usr/lib/libc_pic.a
+               LIBDBM?=        ${DESTDIR}/usr/lib/libdbm.a
+               LIBDES?=        ${DESTDIR}/usr/lib/libdes.a
+               LIBDNS?=        ${DESTDIR}/usr/lib/libdns.a
+               LIBEDIT?=       ${DESTDIR}/usr/lib/libedit.a
+               LIBEVENT?=      ${DESTDIR}/usr/lib/libevent.a
+               LIBEXPAT?=      ${DESTDIR}/usr/lib/libexpat.a
+               LIBFETCH?=      ${DESTDIR}/usr/lib/libfetch.a
+               LIBFORM?=       ${DESTDIR}/usr/lib/libform.a
+               LIBFL?=         ${DESTDIR}/usr/lib/libfl.a
+               LIBG2C?=        ${DESTDIR}/usr/lib/libg2c.a
+               LIBGCC?=        ${DESTDIR}/usr/lib/libgcc.a
+               LIBGNUMALLOC?=  ${DESTDIR}/usr/lib/libgnumalloc.a
+               LIBGSSAPI?=     ${DESTDIR}/usr/lib/libgssapi.a
+               LIBHDB?=        ${DESTDIR}/usr/lib/libhdb.a
+               LIBHEIMBASE?=   ${DESTDIR}/usr/lib/libheimbase.a
+               LIBHEIMNTLM?=   ${DESTDIR}/usr/lib/libheimntlm.a
+               LIBHX500?=      ${DESTDIR}/usr/lib/libhx500.a
+               LIBINTL?=       ${DESTDIR}/usr/lib/libintl.a
+               LIBIPSEC?=      ${DESTDIR}/usr/lib/libipsec.a
+               LIBISC?=        ${DESTDIR}/usr/lib/libisc.a
+               LIBISCCC?=      ${DESTDIR}/usr/lib/libisccc.a
+               LIBISCFG?=      ${DESTDIR}/usr/lib/libiscfg.a
+               LIBKADM5CLNT?=  ${DESTDIR}/usr/lib/libkadm5clnt.a
+               LIBKADM5SRV?=   ${DESTDIR}/usr/lib/libkadm5srv.a
+               LIBKAFS?=       ${DESTDIR}/usr/lib/libkafs.a
+               LIBKRB5?=       ${DESTDIR}/usr/lib/libkrb5.a
+               LIBKVM?=        ${DESTDIR}/usr/lib/libkvm.a
+               LIBL?=          ${DESTDIR}/usr/lib/libl.a
+               LIBLBER?=       ${DESTDIR}/usr/lib/liblber.a
+               LIBLDAP?=       ${DESTDIR}/usr/lib/libldap.a
+               LIBLDAP_R?=     ${DESTDIR}/usr/lib/libldap_r.a
+               LIBLUA?=        ${DESTDIR}/usr/lib/liblua.a
+               LIBLWRES?=      ${DESTDIR}/usr/lib/liblwres.a
+               LIBM?=          ${DESTDIR}/usr/lib/libm.a
+               LIBMAGIC?=      ${DESTDIR}/usr/lib/libmagic.a
+               LIBMENU?=       ${DESTDIR}/usr/lib/libmenu.a
+               LIBOBJC?=       ${DESTDIR}/usr/lib/libobjc.a
+               LIBOSSAUDIO?=   ${DESTDIR}/usr/lib/libossaudio.a
+               LIBPAM?=        ${DESTDIR}/usr/lib/libpam.a
+               LIBPCAP?=       ${DESTDIR}/usr/lib/libpcap.a
+               LIBPCI?=        ${DESTDIR}/usr/lib/libpci.a
+               LIBPMC?=        ${DESTDIR}/usr/lib/libpmc.a
+               LIBPOSIX?=      ${DESTDIR}/usr/lib/libposix.a
+               LIBPTHREAD?=    ${DESTDIR}/usr/lib/libpthread.a
+               LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
+               LIBPUFFS?=      ${DESTDIR}/usr/lib/libpuffs.a
+               LIBQUOTA?=      ${DESTDIR}/usr/lib/libquota.a
+               LIBRADIUS?=     ${DESTDIR}/usr/lib/libradius.a
+               LIBRESOLV?=     ${DESTDIR}/usr/lib/libresolv.a
+               LIBRMT?=        ${DESTDIR}/usr/lib/librmt.a
+               LIBROKEN?=      ${DESTDIR}/usr/lib/libroken.a
+               LIBRPCSVC?=     ${DESTDIR}/usr/lib/librpcsvc.a
+               LIBRT?=         ${DESTDIR}/usr/lib/librt.a
+               LIBRUMP?=       ${DESTDIR}/usr/lib/librump.a
+               LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
+               LIBRUMPFS_EFS?= ${DESTDIR}/usr/lib/librumpfs_efs.a
+               LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
+               LIBRUMPFS_FFS?= ${DESTDIR}/usr/lib/librumpfs_ffs.a
+               LIBRUMPFS_HFS?= ${DESTDIR}/usr/lib/librumpfs_hfs.a
+               LIBRUMPFS_LFS?= ${DESTDIR}/usr/lib/librumpfs_lfs.a
+               LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
+               LIBRUMPFS_NFS?= ${DESTDIR}/usr/lib/librumpfs_nfs.a
+               LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
+               LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
+               LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
+               LIBRUMPFS_UDF?= ${DESTDIR}/usr/lib/librumpfs_udf.a
+               LIBRUMPFS_UFS?= ${DESTDIR}/usr/lib/librumpfs_ufs.a
+               LIBRUMPUSER?=   ${DESTDIR}/usr/lib/librumpuser.a
+               LIBSASLC?=      ${DESTDIR}/usr/lib/libsaslc.a
+               LIBSKEY?=       ${DESTDIR}/usr/lib/libskey.a
+               LIBSL?=         ${DESTDIR}/usr/lib/libsl.a
+               LIBSQLITE3?=    ${DESTDIR}/usr/lib/libsqlite3.a
+               LIBSS?=         ${DESTDIR}/usr/lib/libss.a
+               LIBSSH?=        ${DESTDIR}/usr/lib/libssh.a
+               LIBSSL?=        ${DESTDIR}/usr/lib/libssl.a
+               LIBSSP?=        ${DESTDIR}/usr/lib/libssp.a
+               LIBSTDCXX?=     ${DESTDIR}/usr/lib/libstdc++.a
+               LIBSUPCXX?=     ${DESTDIR}/usr/lib/libsupc++.a
+               LIBTERMINFO?=   ${DESTDIR}/usr/lib/libterminfo.a
+               LIBTRE?=        ${DESTDIR}/usr/lib/libtre.a
+               LIBUSBHID?=     ${DESTDIR}/usr/lib/libusbhid.a
+               LIBUTIL?=       ${DESTDIR}/usr/lib/libutil.a
+               LIBWIND?=       ${DESTDIR}/usr/lib/libwind.a
+               LIBWRAP?=       ${DESTDIR}/usr/lib/libwrap.a
+               LIBY?=          ${DESTDIR}/usr/lib/liby.a
+               LIBZ?=          ${DESTDIR}/usr/lib/libz.a
+
+               The following X-Windows libraries are predefined for DPADD:
+
+               LIBFS?=         ${DESTDIR}/usr/X11R7/lib/libFS.a
+               LIBGL?=         ${DESTDIR}/usr/X11R7/lib/libGL.a
+               LIBGLU?=        ${DESTDIR}/usr/X11R7/lib/libGLU.a
+               LIBICE?=        ${DESTDIR}/usr/X11R7/lib/libICE.a
+               LIBSM?=         ${DESTDIR}/usr/X11R7/lib/libSM.a
+               LIBX11?=        ${DESTDIR}/usr/X11R7/lib/libX11.a
+               LIBXTRAP?=      ${DESTDIR}/usr/X11R7/lib/libXTrap.a
+               LIBXAU?=        ${DESTDIR}/usr/X11R7/lib/libXau.a
+               LIBXAW?=        ${DESTDIR}/usr/X11R7/lib/libXaw.a
+               LIBXDMCP?=      ${DESTDIR}/usr/X11R7/lib/libXdmcp.a
+               LIBXEXT?=       ${DESTDIR}/usr/X11R7/lib/libXext.a
+               LIBXFONT?=      ${DESTDIR}/usr/X11R7/lib/libXfont.a
+               LIBXFT?=        ${DESTDIR}/usr/X11R7/lib/libXft.a
+               LIBXI?=         ${DESTDIR}/usr/X11R7/lib/libXi.a
+               LIBXINERAMA?=   ${DESTDIR}/usr/X11R7/lib/libXinerama.a
+               LIBXMU?=        ${DESTDIR}/usr/X11R7/lib/libXmu.a
+               LIBXMUU?=       ${DESTDIR}/usr/X11R7/lib/libXmuu.a
+               LIBXPM?=        ${DESTDIR}/usr/X11R7/lib/libXpm.a
+               LIBXRANDR?=     ${DESTDIR}/usr/X11R7/lib/libXrandr.a
+               LIBXRENDER?=    ${DESTDIR}/usr/X11R7/lib/libXrender.a
+               LIBXSS?=        ${DESTDIR}/usr/X11R7/lib/libXss.a
+               LIBXT?=         ${DESTDIR}/usr/X11R7/lib/libXt.a
+               LIBXTST?=       ${DESTDIR}/usr/X11R7/lib/libXtst.a
+               LIBXV?=         ${DESTDIR}/usr/X11R7/lib/libXv.a
+               LIBXXF86DGA?=   ${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
+               LIBXXF86MISC?=  ${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
+               LIBXXF86VM?=    ${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
+               LIBDPS?=        ${DESTDIR}/usr/X11R7/lib/libdps.a
+               LIBFNTSTUBS?=   ${DESTDIR}/usr/X11R7/lib/libfntstubs.a
+               LIBFONTCACHE?=  ${DESTDIR}/usr/X11R7/lib/libfontcache.a
+               LIBFONTCONFIG?= ${DESTDIR}/usr/X11R7/lib/libfontconfig.a
+               LIBFONTENC?=    ${DESTDIR}/usr/X11R7/lib/libfontenc.a
+               LIBFREETYPE?=   ${DESTDIR}/usr/X11R7/lib/libfreetype.a
+               LIBLBXUTIL?=    ${DESTDIR}/usr/X11R7/lib/liblbxutil.a
+               LIBXKBFILE?=    ${DESTDIR}/usr/X11R7/lib/libxkbfile.a
+
+SHAREDSTRINGS  If defined, a new .c.o rule is used that results in shared
+               strings, using xstr(1). Note that this will not work with
+               parallel makes.
+
+STRIPFLAG      The flag passed to the install program to cause the binary
+               to be stripped.
+
+SUBDIR         A list of subdirectories that should be built as well.
+               Each of the targets will execute the same target in the
+               subdirectories.
+
+SCRIPTS                A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
+               These are installed exactly like programs.
+
+SCRIPTSDIR     The location to install the scripts.  Each script can be
+               installed to a separate path by setting SCRIPTSDIR_<script>.
+
+SCRIPTSNAME    The name that the above program will be installed as, if
+               different from ${SCRIPTS}. These can be further specialized
+               by setting SCRIPTSNAME_<script>.
+
+FILES          See description of <bsd.files.mk>.
+
+SHLINKDIR      Target directory for shared linker.  See description of
+               <bsd.own.mk> for additional information about this variable.
+
+The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+Some simple examples:
+
+To build foo from foo.c with a manual page foo.1, use:
+
+       PROG=   foo
+
+       .include <bsd.prog.mk>
+
+To build foo from foo.c with a manual page foo.2, add the line:
+
+       MAN=    foo.2
+
+If foo does not have a manual page at all, add the line:
+
+       MKMAN=  no
+
+If foo has multiple source files, add the line:
+
+       SRCS=   a.c b.c c.c d.c
+
+
+=-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
+
+The include file <bsd.rpc.mk> contains a makefile fragment used to
+construct source files built by rpcgen.
+
+The following macros may be defined in makefiles which include
+<bsd.rpc.mk> in order to control which files get built and how they
+are to be built:
+
+RPC_INCS:      construct .h file from .x file
+RPC_XDRFILES:  construct _xdr.c from .x file
+               (for marshalling/unmarshalling data types)
+RPC_SVCFILES:  construct _svc.c from .x file
+               (server-side stubs)
+RPC_SVCFLAGS:  Additional flags passed to builds of RPC_SVCFILES.
+
+RPC_XDIR:      Directory containing .x/.h files
+
+
+=-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
+
+The include file <bsd.shlib.mk> computes parameters for shared library
+installation and use.  It defines no targets.  <bsd.own.mk> MUST be
+included before <bsd.shlib.mk>.
+
+<bsd.own.mk> sets the following variables, if they are not already defined
+(defaults are in brackets):
+
+SHLIBINSTALLDIR        If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
+               instead of ${LIBDIR} as the base path for shared library
+               installation.  [/lib]
+
+SHLIBDIR       The path to USE_SHLIBDIR shared libraries to use when building
+               a program.  [/lib for programs in /bin and /sbin, /usr/lib
+               for all others.]
+
+_LIBSODIR      Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
+               otherwise set to ${LIBDIR}
+
+SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
+
+SHLINKDIR      Path to use for shared linker when building a program.
+               [/libexec for programs in /bin and /sbin, /usr/libexec for
+               all others.]
+
+
+=-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
+
+The include file <bsd.subdir.mk> contains the default targets for building
+subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
+clean, cleandir, depend, includes, install, lint, and tags.  It uses the
+following variables:
+
+NOSUBDIR       If this variable is defined, then the SUBDIR variable
+               will be ignored and subdirectories will not be processed.
+
+SUBDIR         For all of the directories listed in ${SUBDIR}, the
+               specified directory will be visited and the target made.
+
+               As a special case, the use of a token .WAIT as an
+               entry in SUBDIR acts as a synchronization barrier
+               when multiple make jobs are run; subdirs before the
+               .WAIT must complete before any subdirs after .WAIT are
+               started.  See make(1) for some caveats on use of .WAIT
+               and other special sources.
+
+
+=-=-=-=-=   bsd.sys.mk   =-=-=-=-=
+
+The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
+<bsd.lib.mk>.  It contains overrides that are used when building
+the NetBSD source tree.
+
+The following variables control how various files are compiled/built.
+(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
+
+AR             Create, modify, and extract from archives.  [ar]
+
+ARFLAGS                Options to ${AR}.  [rl]
+
+AS             Assembler.  [as]
+
+AFLAGS         Options to ${CC} when compiling or linking .s or .S
+               assembly source files.  []
+
+BUILDSEED      GCC uses random numbers when compiling C++ code.
+               If this option is present, seed the random number
+               generator based on the value, source file names and
+               the output file name to make builds more deterministic.
+               Additional information is available in the GCC
+               documentation of -frandom-seed.
+
+CC             C compiler.  [cc]
+
+CFLAGS         Options to ${CC}.  [Usually -O or -O2]
+
+CPP            C Pre-Processor.  [cpp]
+
+CPPFLAGS       Options to ${CPP}.  []
+
+CPUFLAGS       Optimization flags for ${CC}.  []
+
+CXX            C++ compiler.  [c++]
+
+CXXFLAGS       Options to ${CXX}.  [${CFLAGS}]
+
+ELF2ECOFF      Convert ELF-format executable to ECOFF.  [elf2ecoff]
+
+FC             Fortran compiler.  [f77]
+
+FFLAGS         Options to {$FC}.  [-O]
+
+HOST_SH                Shell.  This must be an absolute path, because it may be
+               substituted into "#!" lines in scripts.  [/bin/sh]
+
+INSTALL                install(1) command.  [install]
+
+LEX            Lexical analyzer.  [lex]
+
+LFLAGS         Options to ${LEX}.  []
+
+LPREFIX                Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
+
+LD             Linker.  [ld]
+
+LDFLAGS                Options to ${CC} during the link process.  []
+
+LINT           C program verifier.  [lint]
+
+LINTFLAGS      Options to ${LINT}.  [-chapbxzFS]
+
+LORDER         List dependencies for object files.  [lorder]
+
+MAKE           make(1).  [make]
+
+MKDEP          Construct Makefile dependency list.  [mkdep]
+
+NM             List symbols from object files.  [nm]
+
+PC             Pascal compiler.  [pc]  (Not present)
+
+PFLAGS         Options to ${PC}.  []
+
+OBJC           Objective C compiler.  [${CC}]
+
+OBJCFLAGS      Options to ${OBJC}.  [${CFLAGS}]
+
+OBJCOPY                Copy and translate object files.  [objcopy]
+
+OBJCOPYLIBFLAGS        Flags to pass to objcopy when library objects are
+               being built. [${.TARGET} =~ "*.po" ? -X : -x]
+
+OBJDUMP                Display information from object files.  [objdump]
+
+RANLIB         Generate index to archive.  [ranlib]
+
+SIZE           List section sizes and total size.  [size]
+
+STRIP          Discard symbols from object files.  [strip]
+
+TSORT          Topological sort of a directed graph.  [tsort -q]
+
+YACC           LALR(1) parser generator.  [yacc]
+
+YFLAGS         Options to ${YACC}.  []
+
+YHEADER                If defined, add "-d" to YFLAGS, and add dependencies
+               from <file>.y to <file>.h and <file>.c, and add
+               <foo>.h to CLEANFILES.
+
+YPREFIX                If defined, add "-p ${YPREFIX}" to YFLAGS.
+
+
+Other variables of note (incomplete list):
+
+NOGCCERROR     If defined, prevents passing certain ${CFLAGS} to GCC
+               that cause warnings to be fatal, such as:
+                       -Werror -Wa,--fatal-warnings
+               (The latter being for as(1).)
+
+NOCLANGERROR   If defined and clang is used as C compiler, -Werror is not
+               passed to it.
+
+WARNS          Crank up compiler warning options; the distinct levels are:
+                       WARNS=1
+                       WARNS=2
+                       WARNS=3
+                       WARNS=4
+                       WARNS=5
+
+=-=-=-=-=   bsd.x11.mk   =-=-=-=-=
+
+The include file <bsd.x11.mk> contains parameters and targets for
+cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
+It should be included after the general Makefile contents but before
+the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
+
+It provides the following targets:
+       .man.1 .man.3 .man.4 .man.5 .man.7:
+               If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
+               these rules convert from X11's manual page source
+               into an mdoc.old source file.
+
+It sets the following variables:
+
+BINDIR                 Set to ${X11BINDIR}.
+                       To override, define after including <bsd.x11.mk>
+
+LIBDIR                 Set to ${X11USRLIBDIR}.
+                       To override, define after including <bsd.x11.mk>
+
+MANDIR                 Set to ${X11MANDIR}.
+                       To override, define after including <bsd.x11.mk>
+
+CPPFLAGS               Appended with definitions to include from
+                       ${DESTDIR}${X11INCDIR}
+
+LDFLAGS                        Appended with definitions to link from
+                       ${DESTDIR}${X11USRLIBDIR}
+
+X11FLAGS.CONNECTION    Equivalent to X11's CONNECTION_FLAGS.
+
+X11FLAGS.EXTENSION     Equivalent to X11's EXT_DEFINES.
+
+X11FLAGS.LOADABLE      Equivalent to X11's LOADABLE.
+
+X11FLAGS.OS_DEFINES    Equivalent to X11's OS_DEFINES.
+
+X11FLAGS.SERVER                Equivalent to X11's ServerDefines.
+
+X11FLAGS.THREADLIB     Equivalent to X11's THREADS_DEFINES for libraries.
+
+X11FLAGS.THREADS       Equivalent to X11's THREADS_DEFINES.
+
+X11FLAGS.VERSION       cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
+
+X11FLAGS.DIX           Equivalent to X11's DIX_DEFINES.
+
+X11TOOL_UNXCOMM                Commandline to convert `XCOMM' comments to `#'
+
+It uses the following variables:
+
+APPDEFS                        List of app-default files to install.
+
+CPPSCRIPTS             List of files/scripts to run through cpp(1)
+                       and then ${X11TOOL_UNXCOMM}.  The source files
+                       have a `.cpp' suffix, the generated files do not.
+
+CPPSCRIPTFLAGS         Additional flags to cpp(1) when building CPPSCRIPTS.
+
+CPPSCRIPTFLAGS_<fn>    Additional flags to cpp(1) when building CPPSCRIPT <fn>.
+
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=