svn commit: r205044 - in user/jmallett/octeon: . lib/libc/rpc lib/libc/sparc64/fpu lib/libc/stdio sbin/nos-tun secure/libexec secure/libexec/ssh-pkcs11-helper sys/amd64/amd64 sys/amd64/conf sys/amd...

Juli Mallett jmallett at FreeBSD.org
Thu Mar 11 22:11:25 UTC 2010


Author: jmallett
Date: Thu Mar 11 22:11:24 2010
New Revision: 205044
URL: http://svn.freebsd.org/changeset/base/205044

Log:
  Merge from head.

Added:
  user/jmallett/octeon/secure/libexec/ssh-pkcs11-helper/Makefile
     - copied unchanged from r205041, head/secure/libexec/ssh-pkcs11-helper/Makefile
Modified:
  user/jmallett/octeon/UPDATING
  user/jmallett/octeon/lib/libc/rpc/Symbol.map
  user/jmallett/octeon/lib/libc/rpc/clnt_simple.c
  user/jmallett/octeon/lib/libc/rpc/getnetconfig.c
  user/jmallett/octeon/lib/libc/rpc/key_call.c
  user/jmallett/octeon/lib/libc/rpc/mt_misc.c
  user/jmallett/octeon/lib/libc/rpc/mt_misc.h
  user/jmallett/octeon/lib/libc/rpc/rpc_generic.c
  user/jmallett/octeon/lib/libc/rpc/rpc_soc.c
  user/jmallett/octeon/lib/libc/sparc64/fpu/fpu.c
  user/jmallett/octeon/lib/libc/sparc64/fpu/fpu_emu.h
  user/jmallett/octeon/lib/libc/stdio/findfp.c
  user/jmallett/octeon/lib/libc/stdio/local.h
  user/jmallett/octeon/lib/libc/stdio/snprintf.c
  user/jmallett/octeon/lib/libc/stdio/vasprintf.c
  user/jmallett/octeon/lib/libc/stdio/vdprintf.c
  user/jmallett/octeon/lib/libc/stdio/vfprintf.c
  user/jmallett/octeon/lib/libc/stdio/vsnprintf.c
  user/jmallett/octeon/lib/libc/stdio/vsprintf.c
  user/jmallett/octeon/lib/libc/stdio/vsscanf.c
  user/jmallett/octeon/lib/libc/stdio/vswprintf.c
  user/jmallett/octeon/lib/libc/stdio/vswscanf.c
  user/jmallett/octeon/lib/libc/stdio/xprintf.c
  user/jmallett/octeon/sbin/nos-tun/Makefile
  user/jmallett/octeon/sbin/nos-tun/nos-tun.c
  user/jmallett/octeon/secure/libexec/Makefile
  user/jmallett/octeon/sys/amd64/amd64/db_trace.c
  user/jmallett/octeon/sys/amd64/amd64/exception.S
  user/jmallett/octeon/sys/amd64/amd64/identcpu.c
  user/jmallett/octeon/sys/amd64/amd64/pmap.c
  user/jmallett/octeon/sys/amd64/amd64/vm_machdep.c
  user/jmallett/octeon/sys/amd64/conf/GENERIC
  user/jmallett/octeon/sys/amd64/conf/NOTES
  user/jmallett/octeon/sys/amd64/conf/XENHVM
  user/jmallett/octeon/sys/amd64/include/elf.h
  user/jmallett/octeon/sys/amd64/include/reg.h
  user/jmallett/octeon/sys/amd64/linux32/linux32_sysvec.c
  user/jmallett/octeon/sys/arm/arm/busdma_machdep.c
  user/jmallett/octeon/sys/arm/arm/identcpu.c
  user/jmallett/octeon/sys/arm/arm/vm_machdep.c
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32.h
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_misc.c
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_proto.h
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_syscall.h
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_syscalls.c
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_sysent.c
  user/jmallett/octeon/sys/compat/freebsd32/freebsd32_util.h
  user/jmallett/octeon/sys/compat/freebsd32/syscalls.master
  user/jmallett/octeon/sys/compat/ia32/ia32_reg.h
  user/jmallett/octeon/sys/compat/ia32/ia32_sysvec.c
  user/jmallett/octeon/sys/conf/files.amd64
  user/jmallett/octeon/sys/conf/files.ia64
  user/jmallett/octeon/sys/conf/options.amd64
  user/jmallett/octeon/sys/conf/options.i386
  user/jmallett/octeon/sys/conf/options.ia64
  user/jmallett/octeon/sys/dev/acpica/acpi_video.c
  user/jmallett/octeon/sys/dev/bge/if_bge.c
  user/jmallett/octeon/sys/dev/bwn/if_bwn.c
  user/jmallett/octeon/sys/dev/mii/brgphy.c
  user/jmallett/octeon/sys/dev/pci/vga_pci.c
  user/jmallett/octeon/sys/dev/siba/siba_core.c
  user/jmallett/octeon/sys/dev/usb/controller/usb_controller.c
  user/jmallett/octeon/sys/dev/usb/controller/uss820dci.c
  user/jmallett/octeon/sys/dev/usb/input/ukbd.c
  user/jmallett/octeon/sys/dev/usb/serial/uftdi.c
  user/jmallett/octeon/sys/dev/usb/serial/uvisor.c
  user/jmallett/octeon/sys/dev/usb/template/usb_template.c
  user/jmallett/octeon/sys/dev/usb/template/usb_template.h
  user/jmallett/octeon/sys/dev/usb/template/usb_template_mtp.c
  user/jmallett/octeon/sys/dev/usb/usb_device.c
  user/jmallett/octeon/sys/dev/usb/usb_device.h
  user/jmallett/octeon/sys/dev/usb/usb_generic.c
  user/jmallett/octeon/sys/dev/usb/usb_transfer.c
  user/jmallett/octeon/sys/dev/usb/usbdevs
  user/jmallett/octeon/sys/fs/nfsserver/nfs_nfsdport.c
  user/jmallett/octeon/sys/fs/procfs/procfs_dbregs.c
  user/jmallett/octeon/sys/fs/procfs/procfs_fpregs.c
  user/jmallett/octeon/sys/fs/procfs/procfs_ioctl.c
  user/jmallett/octeon/sys/fs/procfs/procfs_map.c
  user/jmallett/octeon/sys/fs/procfs/procfs_regs.c
  user/jmallett/octeon/sys/i386/conf/NOTES
  user/jmallett/octeon/sys/i386/i386/identcpu.c
  user/jmallett/octeon/sys/i386/i386/mp_machdep.c
  user/jmallett/octeon/sys/i386/i386/pmap.c
  user/jmallett/octeon/sys/i386/xen/mp_machdep.c
  user/jmallett/octeon/sys/ia64/conf/NOTES
  user/jmallett/octeon/sys/ia64/ia64/exception.S
  user/jmallett/octeon/sys/ia64/ia64/genassym.c
  user/jmallett/octeon/sys/ia64/ia64/machdep.c
  user/jmallett/octeon/sys/ia64/include/elf.h
  user/jmallett/octeon/sys/ia64/include/reg.h
  user/jmallett/octeon/sys/kern/imgact_elf.c
  user/jmallett/octeon/sys/kern/kern_jail.c
  user/jmallett/octeon/sys/kern/kern_ktr.c
  user/jmallett/octeon/sys/kern/kern_module.c
  user/jmallett/octeon/sys/kern/kern_thr.c
  user/jmallett/octeon/sys/kern/kern_umtx.c
  user/jmallett/octeon/sys/kern/sys_generic.c
  user/jmallett/octeon/sys/kern/sys_process.c
  user/jmallett/octeon/sys/kern/uipc_socket.c
  user/jmallett/octeon/sys/kern/vfs_aio.c
  user/jmallett/octeon/sys/kern/vfs_syscalls.c
  user/jmallett/octeon/sys/mips/include/kdb.h
  user/jmallett/octeon/sys/mips/include/smp.h
  user/jmallett/octeon/sys/mips/mips/db_trace.c
  user/jmallett/octeon/sys/mips/mips/mp_machdep.c
  user/jmallett/octeon/sys/mips/mips/swtch.S
  user/jmallett/octeon/sys/modules/linux/Makefile
  user/jmallett/octeon/sys/modules/procfs/Makefile
  user/jmallett/octeon/sys/net/if_tap.c
  user/jmallett/octeon/sys/net/route.h
  user/jmallett/octeon/sys/netinet/ipfw/ip_dn_glue.c
  user/jmallett/octeon/sys/netinet/ipfw/ip_fw_sockopt.c
  user/jmallett/octeon/sys/sys/pcpu.h
  user/jmallett/octeon/sys/sys/pioctl.h
  user/jmallett/octeon/sys/sys/ptrace.h
  user/jmallett/octeon/usr.bin/perror/perror.1
  user/jmallett/octeon/usr.bin/script/script.c
  user/jmallett/octeon/usr.bin/truss/amd64-fbsd.c
  user/jmallett/octeon/usr.bin/truss/amd64-fbsd32.c
  user/jmallett/octeon/usr.bin/truss/amd64-linux32.c
  user/jmallett/octeon/usr.bin/truss/extern.h
  user/jmallett/octeon/usr.bin/truss/i386-fbsd.c
  user/jmallett/octeon/usr.bin/truss/i386-linux.c
  user/jmallett/octeon/usr.bin/truss/ia64-fbsd.c
  user/jmallett/octeon/usr.bin/truss/main.c
  user/jmallett/octeon/usr.bin/truss/mips-fbsd.c
  user/jmallett/octeon/usr.bin/truss/powerpc-fbsd.c
  user/jmallett/octeon/usr.bin/truss/setup.c
  user/jmallett/octeon/usr.bin/truss/sparc64-fbsd.c
  user/jmallett/octeon/usr.bin/truss/syscalls.c
  user/jmallett/octeon/usr.bin/truss/truss.h
Directory Properties:
  user/jmallett/octeon/   (props changed)
  user/jmallett/octeon/sys/contrib/x86emu/   (props changed)

Modified: user/jmallett/octeon/UPDATING
==============================================================================
--- user/jmallett/octeon/UPDATING	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/UPDATING	Thu Mar 11 22:11:24 2010	(r205044)
@@ -22,6 +22,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.
 	machines to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20100311:
+	The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
+	to allow 32-bit compatibility on non-x86 platforms. All kernel
+	configurations on amd64 and ia64 platforms using these options must
+	be modified accordingly.
+
 20100113:
 	The utmp user accounting database has been replaced with utmpx,
 	the user accounting interface standardized by POSIX.

Modified: user/jmallett/octeon/lib/libc/rpc/Symbol.map
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/Symbol.map	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/Symbol.map	Thu Mar 11 22:11:24 2010	(r205044)
@@ -239,10 +239,6 @@ FBSDprivate_1.0 {
 	__key_encryptsession_pk_LOCAL;
 	__key_decryptsession_pk_LOCAL;
 	__key_gendes_LOCAL;
-	__tsd_lock;	/*
-			 * Why does usr.bin/rpcinfo/Makefile need rpc_generic.c?
-			 * Remove this hack if rpcinfo stops building with it.
-			 */
 	__svc_clean_idle;
 	__rpc_gss_unwrap;
 	__rpc_gss_unwrap_stub;

Modified: user/jmallett/octeon/lib/libc/rpc/clnt_simple.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/clnt_simple.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/clnt_simple.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -76,7 +76,11 @@ struct rpc_call_private {
 	char	nettype[NETIDLEN];	/* Network type */
 };
 static struct rpc_call_private *rpc_call_private_main;
+static thread_key_t rpc_call_key;
+static once_t rpc_call_once = ONCE_INITIALIZER;
+static int rpc_call_key_error;
 
+static void rpc_call_key_init(void);
 static void rpc_call_destroy(void *);
 
 static void
@@ -91,6 +95,13 @@ rpc_call_destroy(void *vp)
 	}
 }
 
+static void
+rpc_call_key_init(void)
+{
+
+	rpc_call_key_error = thr_keycreate(&rpc_call_key, rpc_call_destroy);
+}
+
 /*
  * This is the simplified interface to the client rpc layer.
  * The client handle is not destroyed here and is reused for
@@ -112,17 +123,16 @@ rpc_call(host, prognum, versnum, procnum
 	struct rpc_call_private *rcp = (struct rpc_call_private *) 0;
 	enum clnt_stat clnt_stat;
 	struct timeval timeout, tottimeout;
-	static thread_key_t rpc_call_key;
 	int main_thread = 1;
 
 	if ((main_thread = thr_main())) {
 		rcp = rpc_call_private_main;
 	} else {
-		if (rpc_call_key == 0) {
-			mutex_lock(&tsd_lock);
-			if (rpc_call_key == 0)
-				thr_keycreate(&rpc_call_key, rpc_call_destroy);
-			mutex_unlock(&tsd_lock);
+		if (thr_once(&rpc_call_once, rpc_call_key_init) != 0 ||
+		    rpc_call_key_error != 0) {
+			rpc_createerr.cf_stat = RPC_SYSTEMERROR;
+			rpc_createerr.cf_error.re_errno = rpc_call_key_error;
+			return (rpc_createerr.cf_stat);
 		}
 		rcp = (struct rpc_call_private *)thr_getspecific(rpc_call_key);
 	}

Modified: user/jmallett/octeon/lib/libc/rpc/getnetconfig.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/getnetconfig.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/getnetconfig.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -130,21 +130,29 @@ static struct netconfig *dup_ncp(struct 
 
 
 static FILE *nc_file;		/* for netconfig db */
-static pthread_mutex_t nc_file_lock = PTHREAD_MUTEX_INITIALIZER;
+static mutex_t nc_file_lock = MUTEX_INITIALIZER;
 
 static struct netconfig_info	ni = { 0, 0, NULL, NULL};
-static pthread_mutex_t ni_lock = PTHREAD_MUTEX_INITIALIZER;
+static mutex_t ni_lock = MUTEX_INITIALIZER;
 
+static thread_key_t nc_key;
+static once_t nc_once = ONCE_INITIALIZER;
+static int nc_key_error;
+
+static void
+nc_key_init(void)
+{
+
+	nc_key_error = thr_keycreate(&nc_key, free);
+}
 
 #define MAXNETCONFIGLINE    1000
 
 static int *
 __nc_error()
 {
-	static pthread_mutex_t nc_lock = PTHREAD_MUTEX_INITIALIZER;
-	static thread_key_t nc_key = 0;
 	static int nc_error = 0;
-	int error, *nc_addr;
+	int *nc_addr;
 
 	/*
 	 * Use the static `nc_error' if we are the main thread
@@ -153,15 +161,8 @@ __nc_error()
 	 */
 	if (thr_main())
 		return (&nc_error);
-	if (nc_key == 0) {
-		error = 0;
-		mutex_lock(&nc_lock);
-		if (nc_key == 0)
-			error = thr_keycreate(&nc_key, free);
-		mutex_unlock(&nc_lock);
-		if (error)
-			return (&nc_error);
-	}
+	if (thr_once(&nc_once, nc_key_init) != 0 || nc_key_error != 0)
+		return (&nc_error);
 	if ((nc_addr = (int *)thr_getspecific(nc_key)) == NULL) {
 		nc_addr = (int *)malloc(sizeof (int));
 		if (thr_setspecific(nc_key, (void *) nc_addr) != 0) {

Modified: user/jmallett/octeon/lib/libc/rpc/key_call.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/key_call.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/key_call.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -279,6 +279,9 @@ struct  key_call_private {
 	uid_t	uid;		/* user-id at last authorization */
 };
 static struct key_call_private *key_call_private_main = NULL;
+static thread_key_t key_call_key;
+static once_t key_call_once = ONCE_INITIALIZER;
+static int key_call_key_error;
 
 static void
 key_call_destroy(void *vp)
@@ -292,6 +295,13 @@ key_call_destroy(void *vp)
 	}
 }
 
+static void
+key_call_init(void)
+{
+
+	key_call_key_error = thr_keycreate(&key_call_key, key_call_destroy);
+}
+
 /*
  * Keep the handle cached.  This call may be made quite often.
  */
@@ -307,7 +317,6 @@ int	vers;
 	struct utsname u;
 	int main_thread;
 	int fd;
-	static thread_key_t key_call_key;
 
 #define	TOTAL_TIMEOUT	30	/* total timeout talking to keyserver */
 #define	TOTAL_TRIES	5	/* Number of tries */
@@ -315,12 +324,9 @@ int	vers;
 	if ((main_thread = thr_main())) {
 		kcp = key_call_private_main;
 	} else {
-		if (key_call_key == 0) {
-			mutex_lock(&tsd_lock);
-			if (key_call_key == 0)
-				thr_keycreate(&key_call_key, key_call_destroy);
-			mutex_unlock(&tsd_lock);
-		}
+		if (thr_once(&key_call_once, key_call_init) != 0 ||
+		    key_call_key_error != 0)
+			return ((CLIENT *) NULL);
 		kcp = (struct key_call_private *)thr_getspecific(key_call_key);
 	}	
 	if (kcp == (struct key_call_private *)NULL) {

Modified: user/jmallett/octeon/lib/libc/rpc/mt_misc.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/mt_misc.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/mt_misc.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -28,7 +28,6 @@ __FBSDID("$FreeBSD$");
 #define	proglst_lock		__proglst_lock
 #define	rpcsoc_lock		__rpcsoc_lock
 #define	svcraw_lock		__svcraw_lock
-#define	tsd_lock		__tsd_lock
 #define	xprtlist_lock		__xprtlist_lock
 
 /* protects the services list (svc.c) */
@@ -76,33 +75,33 @@ pthread_mutex_t	rpcsoc_lock = PTHREAD_MU
 /* svc_raw.c serialization */
 pthread_mutex_t	svcraw_lock = PTHREAD_MUTEX_INITIALIZER;
 
-/* protects TSD key creation */
-pthread_mutex_t	tsd_lock = PTHREAD_MUTEX_INITIALIZER;
-
 /* xprtlist (svc_generic.c) */
 pthread_mutex_t	xprtlist_lock = PTHREAD_MUTEX_INITIALIZER;
 
 #undef	rpc_createerr
 
 struct rpc_createerr rpc_createerr;
+static thread_key_t rce_key;
+static once_t rce_once = ONCE_INITIALIZER;
+static int rce_key_error;
+
+static void
+rce_key_init(void)
+{
+
+	rce_key_error = thr_keycreate(&rce_key, free);
+}
 
 struct rpc_createerr *
 __rpc_createerr()
 {
-	static thread_key_t rce_key = 0;
 	struct rpc_createerr *rce_addr = 0;
 
 	if (thr_main())
 		return (&rpc_createerr);
-	if ((rce_addr =
-	    (struct rpc_createerr *)thr_getspecific(rce_key)) != 0) {
-		mutex_lock(&tsd_lock);
-		if (thr_keycreate(&rce_key, free) != 0) {
-			mutex_unlock(&tsd_lock);
-			return (&rpc_createerr);
-		}
-		mutex_unlock(&tsd_lock);
-	}
+	if (thr_once(&rce_once, rce_key_init) != 0 || rce_key_error != 0)
+		return (&rpc_createerr);
+	rce_addr = (struct rpc_createerr *)thr_getspecific(rce_key);
 	if (!rce_addr) {
 		rce_addr = (struct rpc_createerr *)
 			malloc(sizeof (struct rpc_createerr));

Modified: user/jmallett/octeon/lib/libc/rpc/mt_misc.h
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/mt_misc.h	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/mt_misc.h	Thu Mar 11 22:11:24 2010	(r205044)
@@ -42,7 +42,6 @@
 #define	proglst_lock		__proglst_lock
 #define	rpcsoc_lock		__rpcsoc_lock
 #define	svcraw_lock		__svcraw_lock
-#define	tsd_lock		__tsd_lock
 #define	xprtlist_lock		__xprtlist_lock
 
 extern pthread_rwlock_t	svc_lock;

Modified: user/jmallett/octeon/lib/libc/rpc/rpc_generic.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/rpc_generic.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/rpc_generic.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -221,6 +221,18 @@ getnettype(nettype)
 	return (_rpctypelist[i].type);
 }
 
+static thread_key_t tcp_key, udp_key;
+static once_t keys_once = ONCE_INITIALIZER;
+static int tcp_key_error, udp_key_error;
+
+static void
+keys_init(void)
+{
+
+	tcp_key_error = thr_keycreate(&tcp_key, free);
+	udp_key_error = thr_keycreate(&udp_key, free);
+}
+
 /*
  * For the given nettype (tcp or udp only), return the first structure found.
  * This should be freed by calling freenetconfigent()
@@ -236,25 +248,15 @@ __rpc_getconfip(nettype)
 	static char *netid_udp_main;
 	struct netconfig *dummy;
 	int main_thread;
-	static thread_key_t tcp_key, udp_key;
 
 	if ((main_thread = thr_main())) {
 		netid_udp = netid_udp_main;
 		netid_tcp = netid_tcp_main;
 	} else {
-		if (tcp_key == 0) {
-			mutex_lock(&tsd_lock);
-			if (tcp_key == 0)
-				thr_keycreate(&tcp_key, free);
-			mutex_unlock(&tsd_lock);
-		}
+		if (thr_once(&keys_once, keys_init) != 0 ||
+		    tcp_key_error != 0 || udp_key_error != 0)
+			return (NULL);
 		netid_tcp = (char *)thr_getspecific(tcp_key);
-		if (udp_key == 0) {
-			mutex_lock(&tsd_lock);
-			if (udp_key == 0)
-				thr_keycreate(&udp_key, free);
-			mutex_unlock(&tsd_lock);
-		}
 		netid_udp = (char *)thr_getspecific(udp_key);
 	}
 	if (!netid_udp && !netid_tcp) {

Modified: user/jmallett/octeon/lib/libc/rpc/rpc_soc.c
==============================================================================
--- user/jmallett/octeon/lib/libc/rpc/rpc_soc.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/rpc/rpc_soc.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -360,6 +360,14 @@ registerrpc(prognum, versnum, procnum, p
  */
 static thread_key_t	clnt_broadcast_key;
 static resultproc_t	clnt_broadcast_result_main;
+static once_t		clnt_broadcast_once = ONCE_INITIALIZER;
+
+static void
+clnt_broadcast_key_init(void)
+{
+
+	thr_keycreate(&clnt_broadcast_key, free);
+}
 
 /*
  * Need to translate the netbuf address into sockaddr_in address.
@@ -402,12 +410,7 @@ clnt_broadcast(prog, vers, proc, xargs, 
 	if (thr_main())
 		clnt_broadcast_result_main = eachresult;
 	else {
-		if (clnt_broadcast_key == 0) {
-			mutex_lock(&tsd_lock);
-			if (clnt_broadcast_key == 0)
-				thr_keycreate(&clnt_broadcast_key, free);
-			mutex_unlock(&tsd_lock);
-		}
+		thr_once(&clnt_broadcast_once, clnt_broadcast_key_init);
 		thr_setspecific(clnt_broadcast_key, (void *) eachresult);
 	}
 	return rpc_broadcast((rpcprog_t)prog, (rpcvers_t)vers,

Modified: user/jmallett/octeon/lib/libc/sparc64/fpu/fpu.c
==============================================================================
--- user/jmallett/octeon/lib/libc/sparc64/fpu/fpu.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/sparc64/fpu/fpu.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -97,7 +97,7 @@ __FBSDID("$FreeBSD$");
 #define	X8(x) X4(x),X4(x)
 #define	X16(x) X8(x),X8(x)
 
-static char cx_to_trapx[] = {
+static const char cx_to_trapx[] = {
 	X1(FSR_NX),
 	X2(FSR_DZ),
 	X4(FSR_UF),
@@ -113,7 +113,8 @@ int __fpe_debug = 0;
 #endif
 #endif	/* FPU_DEBUG */
 
-static int __fpu_execute(struct utrapframe *, struct fpemu *, u_int32_t, u_long);
+static int __fpu_execute(struct utrapframe *, struct fpemu *, u_int32_t,
+    u_long);
 
 /*
  * Need to use an fpstate on the stack; we could switch, so we cannot safely
@@ -169,7 +170,7 @@ __fpu_exception(struct utrapframe *uf)
 void
 __fpu_dumpfpn(struct fpn *fp)
 {
-	static char *class[] = {
+	static const char *const class[] = {
 		"SNAN", "QNAN", "ZERO", "NUM", "INF"
 	};
 
@@ -181,15 +182,11 @@ __fpu_dumpfpn(struct fpn *fp)
 }
 #endif
 
-static int opmask[] = {0, 0, 1, 3};
+static const int opmask[] = {0, 0, 1, 3, 1};
 
 /* Decode 5 bit register field depending on the type. */
 #define	RN_DECODE(tp, rn) \
-	((tp == FTYPE_DBL || tp == FTYPE_EXT ? INSFPdq_RN((rn)) : (rn)) & \
-	    ~opmask[tp])
-
-/* Operand size in 32-bit registers. */
-#define	OPSZ(tp)	((tp) == FTYPE_LNG ? 2 : (1 << (tp)))
+	((tp) >= FTYPE_DBL ? INSFPdq_RN(rn) & ~opmask[tp] : (rn))
 
 /*
  * Helper for forming the below case statements. Build only the op3 and opf
@@ -209,8 +206,6 @@ static void
 __fpu_mov(struct fpemu *fe, int type, int rd, int rs2, u_int32_t nand,
     u_int32_t xor)
 {
-	u_int64_t tmp64;
-	int i;
 
 	if (type == FTYPE_INT || type == FTYPE_SNG)
 		__fpu_setreg(rd, (__fpu_getreg(rs2) & ~nand) ^ xor);
@@ -219,13 +214,10 @@ __fpu_mov(struct fpemu *fe, int type, in
 		 * Need to use the double versions to be able to access
 		 * the upper 32 fp registers.
 		 */
-		for (i = 0; i < OPSZ(type); i += 2, rd += 2, rs2 += 2) {
-			tmp64 = __fpu_getreg64(rs2);
-			if (i == 0)
-				tmp64 = (tmp64 & ~((u_int64_t)nand << 32)) ^
-				    ((u_int64_t)xor << 32);
-			__fpu_setreg64(rd, tmp64);
-		}
+		__fpu_setreg64(rd, (__fpu_getreg64(rs2) &
+		    ~((u_int64_t)nand << 32)) ^ ((u_int64_t)xor << 32));
+		if (type == FTYPE_EXT)
+			__fpu_setreg64(rd + 2, __fpu_getreg64(rs2 + 2));
 	}
 }
 
@@ -271,17 +263,17 @@ __fpu_cmpck(struct fpemu *fe)
  * multiply two integers this way.
  */
 static int
-__fpu_execute(struct utrapframe *uf, struct fpemu *fe, u_int32_t insn, u_long tstate)
+__fpu_execute(struct utrapframe *uf, struct fpemu *fe, u_int32_t insn,
+    u_long tstate)
 {
 	struct fpn *fp;
 	int opf, rs1, rs2, rd, type, mask, cx, cond;
 	u_long reg, fsr;
 	u_int space[4];
-	int i;
 
 	/*
 	 * `Decode' and execute instruction.  Start with no exceptions.
-	 * The type of any opf opcode is in the bottom two bits, so we
+	 * The type of almost any OPF opcode is in the bottom two bits, so we
 	 * squish them out here.
 	 */
 	opf = insn & (IF_MASK(IF_F3_OP3_SHIFT, IF_F3_OP3_BITS) |
@@ -359,7 +351,7 @@ __fpu_execute(struct utrapframe *uf, str
 		__fpu_explode(fe, &fe->fe_f2, type, rs2);
 		__fpu_compare(fe, 1, IF_F3_CC(insn));
 		return (__fpu_cmpck(fe));
-	case FOP(INS2_FPop1, INSFP1_FMOV):	/* these should all be pretty obvious */
+	case FOP(INS2_FPop1, INSFP1_FMOV):
 		__fpu_mov(fe, type, rd, rs2, 0, 0);
 		return (0);
 	case FOP(INS2_FPop1, INSFP1_FNEG):
@@ -410,6 +402,7 @@ __fpu_execute(struct utrapframe *uf, str
 	case FOP(INS2_FPop1, INSFP1_FxTOd):
 	case FOP(INS2_FPop1, INSFP1_FxTOq):
 		type = FTYPE_LNG;
+		rs2 = RN_DECODE(type, IF_F3_RS2(insn));
 		__fpu_explode(fe, fp = &fe->fe_f1, type, rs2);
 		/* sneaky; depends on instruction encoding */
 		type = (IF_F3_OPF(insn) >> 2) & 3;
@@ -418,8 +411,7 @@ __fpu_execute(struct utrapframe *uf, str
 	case FOP(INS2_FPop1, INSFP1_FTOx):
 		__fpu_explode(fe, fp = &fe->fe_f1, type, rs2);
 		type = FTYPE_LNG;
-		mask = 1;	/* needs 2 registers */
-		rd = IF_F3_RD(insn) & ~mask;
+		rd = RN_DECODE(type, IF_F3_RD(insn));
 		break;
 	case FOP(INS2_FPop1, INSFP1_FTOs):
 	case FOP(INS2_FPop1, INSFP1_FTOd):
@@ -457,10 +449,10 @@ __fpu_execute(struct utrapframe *uf, str
 	if (type == FTYPE_INT || type == FTYPE_SNG)
 		__fpu_setreg(rd, space[0]);
 	else {
-		for (i = 0; i < OPSZ(type); i += 2) {
-			__fpu_setreg64(rd + i, ((u_int64_t)space[i] << 32) |
-			    space[i + 1]);
-		}
+		__fpu_setreg64(rd, ((u_int64_t)space[0] << 32) | space[1]);
+		if (type == FTYPE_EXT)
+			__fpu_setreg64(rd + 2,
+			    ((u_int64_t)space[2] << 32) | space[3]);
 	}
 	return (0);	/* success */
 }

Modified: user/jmallett/octeon/lib/libc/sparc64/fpu/fpu_emu.h
==============================================================================
--- user/jmallett/octeon/lib/libc/sparc64/fpu/fpu_emu.h	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/sparc64/fpu/fpu_emu.h	Thu Mar 11 22:11:24 2010	(r205044)
@@ -140,7 +140,7 @@ struct fpn {
 #define	FTYPE_SNG	INSFP_s
 #define	FTYPE_DBL	INSFP_d
 #define	FTYPE_EXT	INSFP_q
-#define	FTYPE_LNG	-1
+#define	FTYPE_LNG	4
 
 /*
  * Emulator state.

Modified: user/jmallett/octeon/lib/libc/stdio/findfp.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/findfp.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/findfp.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -61,6 +61,7 @@ int	__sdidinit;
 	._read = __sread,		\
 	._seek = __sseek,		\
 	._write = __swrite,		\
+	._fl_mutex = PTHREAD_MUTEX_INITIALIZER, \
 }
 				/* the usual - (stdin + stdout + stderr) */
 static FILE usual[FOPEN_MAX - 3];
@@ -96,7 +97,7 @@ moreglue(n)
 	int n;
 {
 	struct glue *g;
-	static FILE empty;
+	static FILE empty = { ._fl_mutex = PTHREAD_MUTEX_INITIALIZER };
 	FILE *p;
 
 	g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + n * sizeof(FILE));
@@ -154,7 +155,7 @@ found:
 	fp->_ub._size = 0;
 	fp->_lb._base = NULL;	/* no line buffer */
 	fp->_lb._size = 0;
-/*	fp->_lock = NULL; */	/* once set always set (reused) */
+/*	fp->_fl_mutex = NULL; */ /* once set always set (reused) */
 	fp->_orientation = 0;
 	memset(&fp->_mbstate, 0, sizeof(mbstate_t));
 	return (fp);

Modified: user/jmallett/octeon/lib/libc/stdio/local.h
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/local.h	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/local.h	Thu Mar 11 22:11:24 2010	(r205044)
@@ -110,6 +110,14 @@ extern int	__sdidinit;
 }
 
 /*
+ * Structure initializations for 'fake' FILE objects.
+ */
+#define	FAKE_FILE {				\
+	._file = -1,				\
+	._fl_mutex = PTHREAD_MUTEX_INITIALIZER, \
+}
+
+/*
  * Set the orientation for a stream. If o > 0, the stream has wide-
  * orientation. If o < 0, the stream has byte-orientation.
  */

Modified: user/jmallett/octeon/lib/libc/stdio/snprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/snprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/snprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -48,7 +48,7 @@ snprintf(char * __restrict str, size_t n
 	size_t on;
 	int ret;
 	va_list ap;
-	FILE f;
+	FILE f = FAKE_FILE;
 
 	on = n;
 	if (n != 0)
@@ -56,12 +56,9 @@ snprintf(char * __restrict str, size_t n
 	if (n > INT_MAX)
 		n = INT_MAX;
 	va_start(ap, fmt);
-	f._file = -1;
 	f._flags = __SWR | __SSTR;
 	f._bf._base = f._p = (unsigned char *)str;
 	f._bf._size = f._w = n;
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	ret = __vfprintf(&f, fmt, ap);
 	if (on > 0)
 		*f._p = '\0';

Modified: user/jmallett/octeon/lib/libc/stdio/vasprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vasprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vasprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -42,9 +42,8 @@ vasprintf(str, fmt, ap)
 	__va_list ap;
 {
 	int ret;
-	FILE f;
+	FILE f = FAKE_FILE;
 
-	f._file = -1;
 	f._flags = __SWR | __SSTR | __SALC;
 	f._bf._base = f._p = (unsigned char *)malloc(128);
 	if (f._bf._base == NULL) {
@@ -53,8 +52,6 @@ vasprintf(str, fmt, ap)
 		return (-1);
 	}
 	f._bf._size = f._w = 127;		/* Leave room for the NUL */
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	ret = __vfprintf(&f, fmt, ap);
 	if (ret < 0) {
 		free(f._bf._base);

Modified: user/jmallett/octeon/lib/libc/stdio/vdprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vdprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vdprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$");
 int
 vdprintf(int fd, const char * __restrict fmt, va_list ap)
 {
-	FILE f;
+	FILE f = FAKE_FILE;
 	unsigned char buf[BUFSIZ];
 	int ret;
 
@@ -56,8 +56,6 @@ vdprintf(int fd, const char * __restrict
 	f._write = __swrite;
 	f._bf._base = buf;
 	f._bf._size = sizeof(buf);
-	f._orientation = 0;
-	bzero(&f._mbstate, sizeof(f._mbstate));
 
 	if ((ret = __vfprintf(&f, fmt, ap)) < 0)
 		return (ret);

Modified: user/jmallett/octeon/lib/libc/stdio/vfprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vfprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vfprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -169,7 +169,7 @@ static int
 __sbprintf(FILE *fp, const char *fmt, va_list ap)
 {
 	int ret;
-	FILE fake;
+	FILE fake = FAKE_FILE;
 	unsigned char buf[BUFSIZ];
 
 	/* XXX This is probably not needed. */

Modified: user/jmallett/octeon/lib/libc/stdio/vsnprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vsnprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vsnprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -47,7 +47,7 @@ vsnprintf(char * __restrict str, size_t 
 	size_t on;
 	int ret;
 	char dummy[2];
-	FILE f;
+	FILE f = FAKE_FILE;
 
 	on = n;
 	if (n != 0)
@@ -61,12 +61,9 @@ vsnprintf(char * __restrict str, size_t 
 		str = dummy;
 		n = 1;
 	}
-	f._file = -1;
 	f._flags = __SWR | __SSTR;
 	f._bf._base = f._p = (unsigned char *)str;
 	f._bf._size = f._w = n;
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	ret = __vfprintf(&f, fmt, ap);
 	if (on > 0)
 		*f._p = '\0';

Modified: user/jmallett/octeon/lib/libc/stdio/vsprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vsprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vsprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -44,14 +44,11 @@ int
 vsprintf(char * __restrict str, const char * __restrict fmt, __va_list ap)
 {
 	int ret;
-	FILE f;
+	FILE f = FAKE_FILE;
 
-	f._file = -1;
 	f._flags = __SWR | __SSTR;
 	f._bf._base = f._p = (unsigned char *)str;
 	f._bf._size = f._w = INT_MAX;
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	ret = __vfprintf(&f, fmt, ap);
 	*f._p = 0;
 	return (ret);

Modified: user/jmallett/octeon/lib/libc/stdio/vsscanf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vsscanf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vsscanf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -55,16 +55,11 @@ int
 vsscanf(const char * __restrict str, const char * __restrict fmt,
 	__va_list ap)
 {
-	FILE f;
+	FILE f = FAKE_FILE;
 
-	f._file = -1;
 	f._flags = __SRD;
 	f._bf._base = f._p = (unsigned char *)str;
 	f._bf._size = f._r = strlen(str);
 	f._read = eofread;
-	f._ub._base = NULL;
-	f._lb._base = NULL;
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	return (__svfscanf(&f, fmt, ap));
 }

Modified: user/jmallett/octeon/lib/libc/stdio/vswprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vswprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vswprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -45,7 +45,7 @@ vswprintf(wchar_t * __restrict s, size_t
 {
 	static const mbstate_t initial;
 	mbstate_t mbs;
-	FILE f;
+	FILE f = FAKE_FILE;
 	char *mbp;
 	int ret, sverrno;
 	size_t nwc;
@@ -55,7 +55,6 @@ vswprintf(wchar_t * __restrict s, size_t
 		return (-1);
 	}
 
-	f._file = -1;
 	f._flags = __SWR | __SSTR | __SALC;
 	f._bf._base = f._p = (unsigned char *)malloc(128);
 	if (f._bf._base == NULL) {
@@ -63,8 +62,6 @@ vswprintf(wchar_t * __restrict s, size_t
 		return (-1);
 	}
 	f._bf._size = f._w = 127;		/* Leave room for the NUL */
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	ret = __vfwprintf(&f, fmt, ap);
 	if (ret < 0) {
 		sverrno = errno;

Modified: user/jmallett/octeon/lib/libc/stdio/vswscanf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/vswscanf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/vswscanf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -62,7 +62,7 @@ vswscanf(const wchar_t * __restrict str,
 {
 	static const mbstate_t initial;
 	mbstate_t mbs;
-	FILE f;
+	FILE f = FAKE_FILE;
 	char *mbstr;
 	size_t mlen;
 	int r;
@@ -80,15 +80,10 @@ vswscanf(const wchar_t * __restrict str,
 		free(mbstr);
 		return (EOF);
 	}
-	f._file = -1;
 	f._flags = __SRD;
 	f._bf._base = f._p = (unsigned char *)mbstr;
 	f._bf._size = f._r = mlen;
 	f._read = eofread;
-	f._ub._base = NULL;
-	f._lb._base = NULL;
-	f._orientation = 0;
-	memset(&f._mbstate, 0, sizeof(mbstate_t));
 	r = __vfwscanf(&f, fmt, ap);
 	free(mbstr);
 

Modified: user/jmallett/octeon/lib/libc/stdio/xprintf.c
==============================================================================
--- user/jmallett/octeon/lib/libc/stdio/xprintf.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/lib/libc/stdio/xprintf.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -48,6 +48,7 @@
 #include <wchar.h>
 #include "un-namespace.h"
 
+#include "local.h"
 #include "printf.h"
 #include "fvwrite.h"
 
@@ -575,7 +576,7 @@ static int
 __v3printf(FILE *fp, const char *fmt, int pct, va_list ap)
 {
 	int ret;
-	FILE fake;
+	FILE fake = FAKE_FILE;
 	unsigned char buf[BUFSIZ];
 
 	/* copy the important variables */

Modified: user/jmallett/octeon/sbin/nos-tun/Makefile
==============================================================================
--- user/jmallett/octeon/sbin/nos-tun/Makefile	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sbin/nos-tun/Makefile	Thu Mar 11 22:11:24 2010	(r205044)
@@ -1,8 +1,8 @@
 # $FreeBSD$
 
 PROG=	nos-tun
-WARNS?=	0
 MAN=	nos-tun.8
+WARNS?=	3
 
 .include <bsd.prog.mk>
 

Modified: user/jmallett/octeon/sbin/nos-tun/nos-tun.c
==============================================================================
--- user/jmallett/octeon/sbin/nos-tun/nos-tun.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sbin/nos-tun/nos-tun.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -89,7 +89,8 @@ int tun;                          /* tun
 
 static void usage(void);
 
-int Set_address(char *addr, struct sockaddr_in *sin)
+static int
+Set_address(char *addr, struct sockaddr_in *sin)
 {
   struct hostent *hp;
 
@@ -107,15 +108,16 @@ int Set_address(char *addr, struct socka
   return 0;
 }
 
-int tun_open(char *devname, struct sockaddr *ouraddr, char *theiraddr)
+static int
+tun_open(char *dev_name, struct sockaddr *ouraddr, char *theiraddr)
 {
   int s;
   struct sockaddr_in *sin;
 
   /* Open tun device */
-  tun = open (devname, O_RDWR);
+  tun = open(dev_name, O_RDWR);
   if (tun < 0) {
-    syslog(LOG_ERR,"can't open %s - %m",devname);
+    syslog(LOG_ERR,"can't open %s - %m", dev_name);
     return(1);
   }
 
@@ -125,8 +127,8 @@ int tun_open(char *devname, struct socka
   bzero((char *)&ifra, sizeof(ifra));
   bzero((char *)&ifrq, sizeof(ifrq));
 
-  strncpy(ifrq.ifr_name, devname+5, IFNAMSIZ);
-  strncpy(ifra.ifra_name, devname+5, IFNAMSIZ);
+  strncpy(ifrq.ifr_name, dev_name+5, IFNAMSIZ);
+  strncpy(ifra.ifra_name, dev_name+5, IFNAMSIZ);
 
   s = socket(AF_INET, SOCK_DGRAM, 0);
   if (s < 0) {
@@ -189,7 +191,8 @@ tunc_return:
   return(1);
 }
 
-void Finish(int signum)
+static void
+Finish(int signum)
 {
   int s;
 
@@ -238,7 +241,7 @@ int main (int argc, char **argv)
 {
   int  c, len, ipoff;
 
-  char *devname = NULL;
+  char *dev_name = NULL;
   char *point_to = NULL;
   char *to_point = NULL;
   char *target;
@@ -268,7 +271,7 @@ int main (int argc, char **argv)
       point_to = optarg;
       break;
     case 't':
-      devname = optarg;
+      dev_name = optarg;
       break;
     case 'p':
       protocol = optarg;
@@ -278,7 +281,7 @@ int main (int argc, char **argv)
   argc -= optind;
   argv += optind;
 
-  if ((argc != 1 && argc != 2) || (devname == NULL) ||
+  if ((argc != 1 && argc != 2) || (dev_name == NULL) ||
       (point_to == NULL) || (to_point == NULL)) {
     usage();
   }
@@ -302,7 +305,7 @@ int main (int argc, char **argv)
     exit(2);
   }
 
-  if(tun_open(devname, &t_laddr, to_point)) {
+  if(tun_open(dev_name, &t_laddr, to_point)) {
     closelog();
     exit(3);
   }
@@ -386,7 +389,7 @@ int main (int argc, char **argv)
 }
 
 static void
-usage()
+usage(void)
 {
 	fprintf(stderr,
 "usage: nos-tun -t tunnel -s source -d destination -p protocol_number [source] target\n");

Modified: user/jmallett/octeon/secure/libexec/Makefile
==============================================================================
--- user/jmallett/octeon/secure/libexec/Makefile	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/secure/libexec/Makefile	Thu Mar 11 22:11:24 2010	(r205044)
@@ -4,7 +4,7 @@
 
 SUBDIR=
 .if ${MK_OPENSSH} != "no"
-SUBDIR+=sftp-server ssh-keysign
+SUBDIR+=sftp-server ssh-keysign ssh-pkcs11-helper
 .endif
 
 .include <bsd.subdir.mk>

Copied: user/jmallett/octeon/secure/libexec/ssh-pkcs11-helper/Makefile (from r205041, head/secure/libexec/ssh-pkcs11-helper/Makefile)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/jmallett/octeon/secure/libexec/ssh-pkcs11-helper/Makefile	Thu Mar 11 22:11:24 2010	(r205044, copy of r205041, head/secure/libexec/ssh-pkcs11-helper/Makefile)
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+PROG=	ssh-pkcs11-helper
+SRCS=	ssh-pkcs11.c ssh-pkcs11-helper.c
+SRCS+=	roaming_dummy.c
+MAN=	ssh-pkcs11-helper.8
+CFLAGS+=-I${SSHDIR} -include ssh_namespace.h
+
+DPADD=	${LIBSSH} ${LIBCRYPT} ${LIBCRYPTO} ${LIBZ}
+LDADD=	-lssh -lcrypt -lcrypto -lz
+
+.include <bsd.prog.mk>
+
+.PATH:	${SSHDIR}
+
+${OBJS} ${POBJS} ${SOBJS}: ssh_namespace.h

Modified: user/jmallett/octeon/sys/amd64/amd64/db_trace.c
==============================================================================
--- user/jmallett/octeon/sys/amd64/amd64/db_trace.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/amd64/db_trace.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -319,7 +319,7 @@ db_nextframe(struct amd64_frame **fp, db
 			frame_type = INTERRUPT;
 		else if (strcmp(name, "Xfast_syscall") == 0)
 			frame_type = SYSCALL;
-#ifdef COMPAT_IA32
+#ifdef COMPAT_FREEBSD32
 		else if (strcmp(name, "Xint0x80_syscall") == 0)
 			frame_type = SYSCALL;
 #endif

Modified: user/jmallett/octeon/sys/amd64/amd64/exception.S
==============================================================================
--- user/jmallett/octeon/sys/amd64/amd64/exception.S	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/amd64/exception.S	Thu Mar 11 22:11:24 2010	(r205044)
@@ -572,7 +572,7 @@ ENTRY(fork_trampoline)
  * included.
  */
 
-#ifdef COMPAT_IA32
+#ifdef COMPAT_FREEBSD32
 	.data
 	.p2align 4
 	.text

Modified: user/jmallett/octeon/sys/amd64/amd64/identcpu.c
==============================================================================
--- user/jmallett/octeon/sys/amd64/amd64/identcpu.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/amd64/identcpu.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -187,7 +187,9 @@ printcpuinfo(void)
 	if (cpu_vendor_id == CPU_VENDOR_INTEL ||
 	    cpu_vendor_id == CPU_VENDOR_AMD ||
 	    cpu_vendor_id == CPU_VENDOR_CENTAUR) {
-		printf("  Stepping = %u", cpu_id & 0xf);
+		printf("  Family = %x", CPUID_TO_FAMILY(cpu_id));
+		printf("  Model = %x", CPUID_TO_MODEL(cpu_id));
+		printf("  Stepping = %u", cpu_id & CPUID_STEPPING);
 		if (cpu_high > 0) {
 
 			/*

Modified: user/jmallett/octeon/sys/amd64/amd64/pmap.c
==============================================================================
--- user/jmallett/octeon/sys/amd64/amd64/pmap.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/amd64/pmap.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -1105,7 +1105,8 @@ pmap_invalidate_cache_range(vm_offset_t 
 
 	if (cpu_feature & CPUID_SS)
 		; /* If "Self Snoop" is supported, do nothing. */
-	else if (cpu_feature & CPUID_CLFSH) {
+	else if ((cpu_feature & CPUID_CLFSH) != 0 &&
+		 eva - sva < 2 * 1024 * 1024) {
 
 		/*
 		 * Otherwise, do per-cache line flush.  Use the mfence
@@ -1122,7 +1123,8 @@ pmap_invalidate_cache_range(vm_offset_t 
 
 		/*
 		 * No targeted cache flush methods are supported by CPU,
-		 * globally invalidate cache as a last resort.
+		 * or the supplied range is bigger then 2MB.
+		 * Globally invalidate cache.
 		 */
 		pmap_invalidate_cache();
 	}

Modified: user/jmallett/octeon/sys/amd64/amd64/vm_machdep.c
==============================================================================
--- user/jmallett/octeon/sys/amd64/amd64/vm_machdep.c	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/amd64/vm_machdep.c	Thu Mar 11 22:11:24 2010	(r205044)
@@ -439,7 +439,7 @@ cpu_set_upcall_kse(struct thread *td, vo
 	 */
 	cpu_thread_clean(td);
 
-#ifdef COMPAT_IA32
+#ifdef COMPAT_FREEBSD32
 	if (td->td_proc->p_sysent->sv_flags & SV_ILP32) {
 		/*
 	 	 * Set the trap frame to point at the beginning of the uts
@@ -490,7 +490,7 @@ cpu_set_user_tls(struct thread *td, void
 	if ((u_int64_t)tls_base >= VM_MAXUSER_ADDRESS)
 		return (EINVAL);
 
-#ifdef COMPAT_IA32
+#ifdef COMPAT_FREEBSD32
 	if (td->td_proc->p_sysent->sv_flags & SV_ILP32) {
 		td->td_pcb->pcb_gsbase = (register_t)tls_base;
 		return (0);

Modified: user/jmallett/octeon/sys/amd64/conf/GENERIC
==============================================================================
--- user/jmallett/octeon/sys/amd64/conf/GENERIC	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/conf/GENERIC	Thu Mar 11 22:11:24 2010	(r205044)
@@ -45,7 +45,7 @@ options 	PSEUDOFS		# Pseudo-filesystem f
 options 	GEOM_PART_GPT		# GUID Partition Tables.
 options 	GEOM_LABEL		# Provides labelization
 options 	COMPAT_43TTY		# BSD 4.3 TTY compat (sgtty)
-options 	COMPAT_IA32		# Compatible with i386 binaries
+options 	COMPAT_FREEBSD32	# Compatible with i386 binaries
 options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
 options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
 options 	COMPAT_FREEBSD6		# Compatible with FreeBSD6

Modified: user/jmallett/octeon/sys/amd64/conf/NOTES
==============================================================================
--- user/jmallett/octeon/sys/amd64/conf/NOTES	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/conf/NOTES	Thu Mar 11 22:11:24 2010	(r205044)
@@ -483,7 +483,7 @@ options 	PMAP_SHPGPERPROC=201
 #XXX these 32 bit binaries is added.
 
 # Enable 32-bit runtime support for FreeBSD/i386 binaries.
-options 	COMPAT_IA32
+options 	COMPAT_FREEBSD32
 
 # Enable iBCS2 runtime support for SCO and ISC binaries
 #XXX#options 	IBCS2
@@ -494,7 +494,7 @@ options 	COMPAT_IA32
 # Enable Linux ABI emulation
 #XXX#options 	COMPAT_LINUX
 
-# Enable 32-bit Linux ABI emulation (requires COMPAT_43 and COMPAT_IA32)
+# Enable 32-bit Linux ABI emulation (requires COMPAT_43 and COMPAT_FREEBSD32)
 options 	COMPAT_LINUX32
 
 # Enable the linux-like proc filesystem support (requires COMPAT_LINUX32

Modified: user/jmallett/octeon/sys/amd64/conf/XENHVM
==============================================================================
--- user/jmallett/octeon/sys/amd64/conf/XENHVM	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/conf/XENHVM	Thu Mar 11 22:11:24 2010	(r205044)
@@ -46,7 +46,7 @@ options 	PSEUDOFS		# Pseudo-filesystem f
 options 	GEOM_PART_GPT		# GUID Partition Tables.
 options 	GEOM_LABEL		# Provides labelization
 options 	COMPAT_43TTY		# BSD 4.3 TTY compat (sgtty)
-options 	COMPAT_IA32		# Compatible with i386 binaries
+options 	COMPAT_FREEBSD32	# Compatible with i386 binaries
 options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
 options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
 options 	COMPAT_FREEBSD6		# Compatible with FreeBSD6

Modified: user/jmallett/octeon/sys/amd64/include/elf.h
==============================================================================
--- user/jmallett/octeon/sys/amd64/include/elf.h	Thu Mar 11 22:09:21 2010	(r205043)
+++ user/jmallett/octeon/sys/amd64/include/elf.h	Thu Mar 11 22:11:24 2010	(r205044)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list