CVS commit: src/sys/arch/powerpc/include

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:18:14 UTC 2013

Modified Files:
src/sys/arch/powerpc/include: intr.h softint.h

Log Message:
Fix kern_softint.c errors (tested with WALNUT  EV64260)


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/powerpc/include/intr.h
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/powerpc/include/softint.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/include/intr.h
diff -u src/sys/arch/powerpc/include/intr.h:1.10 src/sys/arch/powerpc/include/intr.h:1.11
--- src/sys/arch/powerpc/include/intr.h:1.10	Sat Jan 14 19:35:58 2012
+++ src/sys/arch/powerpc/include/intr.h	Fri Aug 23 06:18:14 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.10 2012/01/14 19:35:58 phx Exp $ */
+/*	$NetBSD: intr.h,v 1.11 2013/08/23 06:18:14 matt Exp $ */
 
 /*-
  * Copyright (c) 2007 Michael Lorenz
@@ -28,11 +28,11 @@
 
 #ifndef _LOCORE
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: intr.h,v 1.10 2012/01/14 19:35:58 phx Exp $);
+__KERNEL_RCSID(0, $NetBSD: intr.h,v 1.11 2013/08/23 06:18:14 matt Exp $);
 #endif
 
-#ifndef POWERPC_INTR_MACHDEP_H
-#define POWERPC_INTR_MACHDEP_H
+#ifndef _POWERPC_INTR_MACHDEP_H_
+#define _POWERPC_INTR_MACHDEP_H_
 
 #define	__HAVE_FAST_SOFTINTS	1
 
@@ -71,6 +71,8 @@ void	splx(int);
 
 #if !defined(_MODULE)
 
+#include powerpc/softint.h
+
 void	genppc_cpu_configure(void);
 
 /*
@@ -136,4 +138,4 @@ splraiseipl(ipl_cookie_t icookie)
 
 #endif /* _LOCORE */
 
-#endif /* POWERPC_INTR_MACHDEP_H */
+#endif /* _POWERPC_INTR_MACHDEP_H_ */

Index: src/sys/arch/powerpc/include/softint.h
diff -u src/sys/arch/powerpc/include/softint.h:1.1 src/sys/arch/powerpc/include/softint.h:1.2
--- src/sys/arch/powerpc/include/softint.h:1.1	Tue Jun 14 22:36:12 2011
+++ src/sys/arch/powerpc/include/softint.h	Fri Aug 23 06:18:14 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: softint.h,v 1.1 2011/06/14 22:36:12 matt Exp $	*/
+/*	$NetBSD: softint.h,v 1.2 2013/08/23 06:18:14 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -34,14 +34,14 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifdef __INTR_PRIVATE
 #ifndef _POWERPC_SOFTINT_H_
 #define _POWERPC_SOFTINT_H_
 
-#include sys/intr.h
+//#include sys/intr.h
 
 #ifdef __HAVE_FAST_SOFTINTS
 
+#ifdef __INTR_PRIVATE
 #ifdef __HAVE_PREEMPTION
 #define	IPL_PREEMPT_SOFTMASK	(1  IPL_NONE)
 #else
@@ -66,6 +66,8 @@
 	|(SOFTINT_CLOCK   (4*IPL_SOFTCLOCK )))
 #define	IPL2SOFTINT(ipl)	((IPL2SOFTINT_MAP  (4 * (ipl)))  0x0f)
 
+#endif /* __INTR_PRIVATE */
+
 #ifdef _KERNEL
 void	powerpc_softint(struct cpu_info *, int, vaddr_t);
 void	powerpc_softint_init_md(lwp_t *, u_int, uintptr_t *);
@@ -74,4 +76,3 @@ void	powerpc_softint_trigger(uintptr_t);
 
 #endif /* __HAVE_FAST_SOFTINTS */
 #endif /* !_POWERPC_SOFTINT_H_ */
-#endif /* __INTR_PRIVATE */



CVS commit: src/sys/arch/powerpc

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:19:46 UTC 2013

Modified Files:
src/sys/arch/powerpc/booke: spe.c trap.c
src/sys/arch/powerpc/ibm4xx: trap.c
src/sys/arch/powerpc/include: proc.h
src/sys/arch/powerpc/powerpc: fpu.c

Log Message:
Get rid of MDLWP_USED{FPU,VEC}


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/booke/spe.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/powerpc/booke/trap.c
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/powerpc/ibm4xx/trap.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/powerpc/include/proc.h
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/powerpc/powerpc/fpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/booke/spe.c
diff -u src/sys/arch/powerpc/booke/spe.c:1.6 src/sys/arch/powerpc/booke/spe.c:1.7
--- src/sys/arch/powerpc/booke/spe.c:1.6	Wed Dec 26 19:05:04 2012
+++ src/sys/arch/powerpc/booke/spe.c	Fri Aug 23 06:19:46 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: spe.c,v 1.6 2012/12/26 19:05:04 matt Exp $	*/
+/*	$NetBSD: spe.c,v 1.7 2013/08/23 06:19:46 matt Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: spe.c,v 1.6 2012/12/26 19:05:04 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: spe.c,v 1.7 2013/08/23 06:19:46 matt Exp $);
 
 #include opt_altivec.h
 
@@ -63,13 +63,13 @@ const pcu_ops_t vec_ops = {
 bool
 vec_used_p(lwp_t *l)
 {
-	return (l-l_md.md_flags  MDLWP_USEDVEC) != 0;
+	return pcu_used_p(vec_ops);
 }
 
 void
 vec_mark_used(lwp_t *l)
 {
-	l-l_md.md_flags |= MDLWP_USEDVEC;
+	pcu_discard(vec_ops, true);
 }
 
 void
@@ -103,9 +103,8 @@ vec_state_load(lwp_t *l, u_int flags)
 	__asm volatile (isync);
 
 	/*
-	 * Note that vector has now been used.
+	 * Set PSL_SPV so vectors will be enabled on return to user.
 	 */
-	l-l_md.md_flags |= MDLWP_USEDVEC;
 	l-l_md.md_utf-tf_srr1 |= PSL_SPV;
 }
 

Index: src/sys/arch/powerpc/booke/trap.c
diff -u src/sys/arch/powerpc/booke/trap.c:1.22 src/sys/arch/powerpc/booke/trap.c:1.23
--- src/sys/arch/powerpc/booke/trap.c:1.22	Thu Aug  2 14:07:47 2012
+++ src/sys/arch/powerpc/booke/trap.c	Fri Aug 23 06:19:46 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.22 2012/08/02 14:07:47 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.23 2013/08/23 06:19:46 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -38,7 +38,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(1, $NetBSD: trap.c,v 1.22 2012/08/02 14:07:47 matt Exp $);
+__KERNEL_RCSID(1, $NetBSD: trap.c,v 1.23 2013/08/23 06:19:46 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -480,9 +480,9 @@ pgm_exception(struct trapframe *tf, ksig
 
 	if (tf-tf_esr  ESR_PIL) {
 		struct pcb * const pcb = lwp_getpcb(curlwp);
-		if (__predict_false(!(curlwp-l_md.md_flags  MDLWP_USEDFPU))) {
+		if (__predict_false(!fpu_used_p(curlwp))) {
 			memset(pcb-pcb_fpu, 0, sizeof(pcb-pcb_fpu));
-			curlwp-l_md.md_flags |= MDLWP_USEDFPU;
+			fpu_mark_used(curlwp);
 		}
 		if (fpu_emulate(tf, pcb-pcb_fpu, ksi)) {
 			if (ksi-ksi_signo == 0) {

Index: src/sys/arch/powerpc/ibm4xx/trap.c
diff -u src/sys/arch/powerpc/ibm4xx/trap.c:1.65 src/sys/arch/powerpc/ibm4xx/trap.c:1.66
--- src/sys/arch/powerpc/ibm4xx/trap.c:1.65	Mon Jul 23 04:13:06 2012
+++ src/sys/arch/powerpc/ibm4xx/trap.c	Fri Aug 23 06:19:46 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.65 2012/07/23 04:13:06 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.66 2013/08/23 06:19:46 matt Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: trap.c,v 1.65 2012/07/23 04:13:06 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: trap.c,v 1.66 2013/08/23 06:19:46 matt Exp $);
 
 #include opt_altivec.h
 #include opt_ddb.h
@@ -298,9 +298,9 @@ trap(struct trapframe *tf)
 		curcpu()-ci_data.cpu_ntrap++;
 		pcb = lwp_getpcb(l);
 
-		if (!(l-l_md.md_flags  MDLWP_USEDFPU)) {
+		if (__predict_false(!fpu_used_p(l))) {
 			memset(pcb-pcb_fpu, 0, sizeof(pcb-pcb_fpu));
-			l-l_md.md_flags |= MDLWP_USEDFPU;
+			fpu_mark_used(l);
 		}
 
 		if (fpu_emulate(tf, pcb-pcb_fpu, ksi)) {

Index: src/sys/arch/powerpc/include/proc.h
diff -u src/sys/arch/powerpc/include/proc.h:1.12 src/sys/arch/powerpc/include/proc.h:1.13
--- src/sys/arch/powerpc/include/proc.h:1.12	Sun Jun  5 16:52:25 2011
+++ src/sys/arch/powerpc/include/proc.h	Fri Aug 23 06:19:46 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: proc.h,v 1.12 2011/06/05 16:52:25 matt Exp $	*/
+/*	$NetBSD: proc.h,v 1.13 2013/08/23 06:19:46 matt Exp $	*/
 
 /*-
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -42,8 +42,6 @@ struct mdlwp {
 	volatile int md_astpending;
 	struct trapframe *md_utf;		/* user trampframe */
 };
-#define MDLWP_USEDFPU	__BIT(PCU_FPU)	/* this thread has used the FPU */
-#define	MDLWP_USEDVEC	__BIT(PCU_VEC)	/* this thread has used the VEC */
 
 struct trapframe;
 

Index: 

CVS commit: src/sys/arch/powerpc/oea

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:21:33 UTC 2013

Modified Files:
src/sys/arch/powerpc/oea: altivec.c

Log Message:
Get rid of MDLWP_USED{FPU,VEC}


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/powerpc/oea/altivec.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/oea/altivec.c
diff -u src/sys/arch/powerpc/oea/altivec.c:1.27 src/sys/arch/powerpc/oea/altivec.c:1.28
--- src/sys/arch/powerpc/oea/altivec.c:1.27	Thu Aug 22 19:50:54 2013
+++ src/sys/arch/powerpc/oea/altivec.c	Fri Aug 23 06:21:33 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: altivec.c,v 1.27 2013/08/22 19:50:54 drochner Exp $	*/
+/*	$NetBSD: altivec.c,v 1.28 2013/08/23 06:21:33 matt Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: altivec.c,v 1.27 2013/08/22 19:50:54 drochner Exp $);
+__KERNEL_RCSID(0, $NetBSD: altivec.c,v 1.28 2013/08/23 06:21:33 matt Exp $);
 
 #include opt_multiprocessor.h
 
@@ -63,13 +63,13 @@ const pcu_ops_t vec_ops = {
 bool
 vec_used_p(lwp_t *l)
 {
-	return (l-l_md.md_flags  MDLWP_USEDVEC) != 0;
+	return pcu_used_p(vec_ops);
 }
 
 void
 vec_mark_used(lwp_t *l)
 {
-	l-l_md.md_flags |= MDLWP_USEDVEC;
+	return pcu_discard(vec_ops, true);
 }
 
 void
@@ -109,7 +109,7 @@ vec_state_load(lwp_t *l, u_int flags)
 	/*
 	 * Mark vector registers as modified.
 	 */
-	l-l_md.md_flags |= MDLWP_USEDVEC|PSL_VEC;
+	l-l_md.md_flags |= PSL_VEC;
 	l-l_md.md_utf-tf_srr1 |= PSL_VEC;
 }
 



CVS commit: src/sys/arch/powerpc/powerpc

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:22:32 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
Simplify since we know curlwp is in %r13


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.49 src/sys/arch/powerpc/powerpc/locore_subr.S:1.50
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.49	Wed Aug  1 20:35:52 2012
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Fri Aug 23 06:22:32 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.49 2012/08/01 20:35:52 matt Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.50 2013/08/23 06:22:32 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -360,11 +360,7 @@ _ENTRY(softint_fast_dispatch)
 	streg	%r31, CFRAME_R31(%sp)
 
 	GET_CPUINFO(%r7)
-#ifdef PPC_BOOKE
-	mfsprg2	%r30
-#else
-	ldptr	%r30, CI_CURLWP(%r7)
-#endif /* PPC_BOOKE */
+	mr	%r30, %r13		/* curlwp is now in r13 */
 
 #if defined (PPC_OEA) || defined (PPC_OEA64_BRIDGE)
 	mfsr	%r10,USER_SR		/* save USER_SR for copyin/copyout */



CVS commit: src/sys/arch/powerpc/powerpc

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:24:21 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Avoid a few instructions since we know CURLWP is in %r13


To generate a diff of this commit:
cvs rdiff -u -r1.76 -r1.77 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.76 src/sys/arch/powerpc/powerpc/trap_subr.S:1.77
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.76	Thu Apr 11 17:13:15 2013
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Fri Aug 23 06:24:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.76 2013/04/11 17:13:15 macallan Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.77 2013/08/23 06:24:21 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -1068,13 +1068,7 @@ s_sctrap:
 	isync
 	addi	%r3,%r1,FRAME_TF
 /* Call the appropriate syscall handler: */
-#if 0
-	GET_CPUINFO(%r4)
-	ldptr	%r4,CI_CURLWP(%r4)
-	ldptr	%r4,L_PROC(%r4)
-#else
 	ldptr	%r4,L_PROC(%r13)
-#endif
 	ldptr	%r4,P_MD_SYSCALL(%r4)
 	mtctr	%r4
 	bctrl



CVS commit: src/sys/net/npf

2013-08-23 Thread Mindaugas Rasiukevicius
Module Name:src
Committed By:   rmind
Date:   Fri Aug 23 10:37:03 UTC 2013

Modified Files:
src/sys/net/npf: npf_inet.c

Log Message:
- npf_cache_ip: re-fetch IPv6 header since nbufs might have been reallocated.
- npf_cache_all: clear NBUF_DATAREF_RESET since npf_cache_ip() handles it.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/net/npf/npf_inet.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/npf/npf_inet.c
diff -u src/sys/net/npf/npf_inet.c:1.22 src/sys/net/npf/npf_inet.c:1.23
--- src/sys/net/npf/npf_inet.c:1.22	Sun Jun  2 02:20:04 2013
+++ src/sys/net/npf/npf_inet.c	Fri Aug 23 10:37:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_inet.c,v 1.22 2013/06/02 02:20:04 rmind Exp $	*/
+/*	$NetBSD: npf_inet.c,v 1.23 2013/08/23 10:37:03 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2009-2012 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: npf_inet.c,v 1.22 2013/06/02 02:20:04 rmind Exp $);
+__KERNEL_RCSID(0, $NetBSD: npf_inet.c,v 1.23 2013/08/23 10:37:03 rmind Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -391,8 +391,12 @@ npf_cache_ip(npf_cache_t *npc, nbuf_t *n
 			npc-npc_hlen += hlen;
 		}
 
-		/* Restore the offset. */
+		/*
+		 * Re-fetch the header pointers (nbufs might have been
+		 * reallocated).  Restore the original offset (if any).
+		 */
 		nbuf_reset(nbuf);
+		ip6 = nbuf_dataptr(nbuf);
 		if (off) {
 			nbuf_advance(nbuf, off, 0);
 		}
@@ -437,6 +441,7 @@ again:
 	 */
 	flags = npf_cache_ip(npc, nbuf);
 	if ((flags  NPC_IP46) == 0 || (flags  NPC_IPFRAG) != 0) {
+		nbuf_unset_flag(nbuf, NBUF_DATAREF_RESET);
 		npc-npc_info |= flags;
 		return flags;
 	}



CVS commit: src/sys/arch/arm/arm32

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 14:39:50 UTC 2013

Modified Files:
src/sys/arch/arm/arm32: sys_machdep.c

Log Message:
Make use of vfp_used_p condition on FPU_VFP


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/arm32/sys_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm32/sys_machdep.c
diff -u src/sys/arch/arm/arm32/sys_machdep.c:1.18 src/sys/arch/arm/arm32/sys_machdep.c:1.19
--- src/sys/arch/arm/arm32/sys_machdep.c:1.18	Fri Aug 23 05:22:01 2013
+++ src/sys/arch/arm/arm32/sys_machdep.c	Fri Aug 23 14:39:50 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_machdep.c,v 1.18 2013/08/23 05:22:01 matt Exp $	*/
+/*	$NetBSD: sys_machdep.c,v 1.19 2013/08/23 14:39:50 matt Exp $	*/
 
 /*
  * Copyright (c) 1995-1997 Mark Brinicombe.
@@ -41,7 +41,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: sys_machdep.c,v 1.18 2013/08/23 05:22:01 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: sys_machdep.c,v 1.19 2013/08/23 14:39:50 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -123,7 +123,11 @@ static int
 arm32_fpu_used(struct lwp *l, const void *uap, register_t *retval)
 {
 	/* No args */
+#ifdef FPU_VFP
 	retval[0] = vfp_used_p();
+#else
+	retval[0] = false;
+#endif
 	return 0;
 }
 



CVS commit: src/lib/libc/gen

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 16:01:35 UTC 2013

Added Files:
src/lib/libc/gen: floatunsidf_ieee754.c floatunsisf_ieee754.c

Log Message:
Add __floatunsi{sd}f for IEEE754.
Unlike the quad versions, these don't use floating point.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/lib/libc/gen/floatunsidf_ieee754.c \
src/lib/libc/gen/floatunsisf_ieee754.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/lib/libc/gen/floatunsidf_ieee754.c
diff -u /dev/null src/lib/libc/gen/floatunsidf_ieee754.c:1.1
--- /dev/null	Fri Aug 23 16:01:35 2013
+++ src/lib/libc/gen/floatunsidf_ieee754.c	Fri Aug 23 16:01:35 2013
@@ -0,0 +1,67 @@
+/*	$NetBSD: floatunsidf_ieee754.c,v 1.1 2013/08/23 16:01:35 matt Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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/cdefs.h
+#if defined(LIBC_SCCS)  !defined(lint)
+__RCSID($NetBSD: floatunsidf_ieee754.c,v 1.1 2013/08/23 16:01:35 matt Exp $);
+#endif /* LIBC_SCCS and not lint */
+
+#if defined(SOFTFLOAT) || defined(__ARM_EABI__)
+#include softfloat/softfloat-for-gcc.h
+#endif
+
+#include machine/ieee.h
+
+double __floatunsidf(uint32_t);
+
+/*
+ * Convert (unsigned) int to double.
+ */
+double
+__floatunsidf(uint32_t x)
+{
+	union ieee_double_u u;
+
+	if (x == 0)
+		return 0.0;
+	if (x == 1)
+		return 1.0;
+
+	u_int l = __builtin_clz(x);
+	x = (l + 1);	/* clear implicit bit */
+
+	u.dblu_sign = 0;
+	u.dblu_exp = DBL_EXP_BIAS + 31 - l;
+	u.dblu_frach = x  (32 - DBL_FRACHBITS);
+	u.dblu_fracl = x  (32 - DBL_FRACHBITS);
+
+	return u.dblu_d;
+}
Index: src/lib/libc/gen/floatunsisf_ieee754.c
diff -u /dev/null src/lib/libc/gen/floatunsisf_ieee754.c:1.1
--- /dev/null	Fri Aug 23 16:01:35 2013
+++ src/lib/libc/gen/floatunsisf_ieee754.c	Fri Aug 23 16:01:35 2013
@@ -0,0 +1,66 @@
+/*	$NetBSD: floatunsisf_ieee754.c,v 1.1 2013/08/23 16:01:35 matt Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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.
+ */
+

CVS commit: src/sys/dev/pci

2013-08-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Fri Aug 23 16:49:53 UTC 2013

Modified Files:
src/sys/dev/pci: if_iwn.c pcidevs

Log Message:
PR/48150: Noriyuki Koizumi: Add support for Intel Centrino Advanced-N 6235
Wi-Fi controller


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/dev/pci/if_iwn.c
cvs rdiff -u -r1.1159 -r1.1160 src/sys/dev/pci/pcidevs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/if_iwn.c
diff -u src/sys/dev/pci/if_iwn.c:1.67 src/sys/dev/pci/if_iwn.c:1.68
--- src/sys/dev/pci/if_iwn.c:1.67	Sun Jul 28 07:46:24 2013
+++ src/sys/dev/pci/if_iwn.c	Fri Aug 23 12:49:53 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwn.c,v 1.67 2013/07/28 11:46:24 prlw1 Exp $	*/
+/*	$NetBSD: if_iwn.c,v 1.68 2013/08/23 16:49:53 christos Exp $	*/
 /*	$OpenBSD: if_iwn.c,v 1.119 2013/05/29 23:16:52 yuo Exp $	*/
 
 /*-
@@ -22,7 +22,7 @@
  * adapters.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: if_iwn.c,v 1.67 2013/07/28 11:46:24 prlw1 Exp $);
+__KERNEL_RCSID(0, $NetBSD: if_iwn.c,v 1.68 2013/08/23 16:49:53 christos Exp $);
 
 #define IWN_USE_RBUF	/* Use local storage for RX */
 #undef IWN_HWCRYPTO	/* XXX does not even compile yet */
@@ -102,6 +102,7 @@ static const pci_product_id_t iwn_device
 	PCI_PRODUCT_INTEL_WIFI_LINK_6005_2X2_2,
 	PCI_PRODUCT_INTEL_WIFI_LINK_6230_1,
 	PCI_PRODUCT_INTEL_WIFI_LINK_6230_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_6235,
 };
 
 /*
@@ -731,7 +732,8 @@ iwn5000_attach(struct iwn_softc *sc, pci
 		if (pid == PCI_PRODUCT_INTEL_WIFI_LINK_1030_1 ||
 		pid == PCI_PRODUCT_INTEL_WIFI_LINK_1030_2 ||
 		pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_1 ||
-		pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_2) {
+		pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_2 ||
+		pid == PCI_PRODUCT_INTEL_WIFI_LINK_6235) {
 			sc-fwname = iwlwifi-6000g2b-6.ucode;
 			ops-config_bt_coex = iwn_config_bt_coex_adv1;
 		}

Index: src/sys/dev/pci/pcidevs
diff -u src/sys/dev/pci/pcidevs:1.1159 src/sys/dev/pci/pcidevs:1.1160
--- src/sys/dev/pci/pcidevs:1.1159	Wed Jul 17 15:49:11 2013
+++ src/sys/dev/pci/pcidevs	Fri Aug 23 12:49:53 2013
@@ -1,4 +1,4 @@
-$NetBSD: pcidevs,v 1.1159 2013/07/17 19:49:11 soren Exp $
+$NetBSD: pcidevs,v 1.1160 2013/08/23 16:49:53 christos Exp $
 
 /*
  * Copyright (c) 1995, 1996 Christopher G. Demetriou
@@ -2544,6 +2544,7 @@ product INTEL GDT_RAID1		0x0600	GDT RAID
 product INTEL GDT_RAID2		0x061f	GDT RAID
 product INTEL WIFI_LINK_2230_1	0x0887	Centrino Wireless-N 2230
 product INTEL WIFI_LINK_2230_2	0x0888	Centrino Wireless-N 2230
+product INTEL WIFI_LINK_6235	0x088e	Centrino Advanced-N 6235
 product INTEL 80960RM		0x0962	i960 RM PCI-PCI
 product INTEL 80960RN		0x0964	i960 RN PCI-PCI
 product INTEL HASWELL_HOST_DRAM	0x0c00	Haswell Host Bridge, DRAM



CVS commit: src/lib/libc/quad

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 17:41:03 UTC 2013

Added Files:
src/lib/libc/quad: floatdisf_ieee754.c floatundisf_ieee754.c

Log Message:
Add IEEE 754 versions of __float{,}disf which use no floating point.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/lib/libc/quad/floatdisf_ieee754.c \
src/lib/libc/quad/floatundisf_ieee754.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/lib/libc/quad/floatdisf_ieee754.c
diff -u /dev/null src/lib/libc/quad/floatdisf_ieee754.c:1.1
--- /dev/null	Fri Aug 23 17:41:03 2013
+++ src/lib/libc/quad/floatdisf_ieee754.c	Fri Aug 23 17:41:03 2013
@@ -0,0 +1,89 @@
+/*	$NetBSD: floatdisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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/cdefs.h
+#if defined(LIBC_SCCS)  !defined(lint)
+__RCSID($NetBSD: floatdisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $);
+#endif /* LIBC_SCCS and not lint */
+
+#if defined(SOFTFLOAT) || defined(__ARM_EABI__)
+#include softfloat/softfloat-for-gcc.h
+#endif
+
+#include limits.h
+#include machine/ieee.h
+#include quad.h
+
+float __floatdisf(quad_t);
+
+/*
+ * Convert signed quad to float.
+ */
+float
+__floatdisf(quad_t x)
+{
+	union ieee_single_u ux = { .sngu_f = 0.0 };
+
+	if (x == 0)
+		return 0.0;
+	if (x == 1)
+		return 1.0;
+
+	if (x  0) {
+		if (x == QUAD_MIN)
+			return -0x1.0p63;
+		ux.sngu_sign = 1;
+		x = -x;
+	}
+#if defined(_LP64) || defined(__mips_n32)
+	u_int l = __builtin_clzll(x);
+	x = (l + 1);	/* clear implicit bit */
+
+	ux.sngu_frac = (u_quad_t)x  (64 - SNG_FRACBITS);
+#else
+	union uu u = { .q = x };
+	uint32_t frac;
+	if (u.ul[H] == 0) {
+		u_int l = __builtin_clz(u.ul[L]);
+		frac = u.ul[L]  (l + 1);	/* clear implicit bit */
+		l += 32;
+	} else {
+		u_int l = __builtin_clz(u.ul[H]);
+		frac = u.ul[H]  (l + 1);	/* clear implicit bit */
+		frac |= u.ul[L]  (32 - (l + 1));
+	}
+
+	ux.sngu_frac = frac  (32 - SNG_FRACBITS);
+#endif
+	ux.sngu_exp = SNG_EXP_BIAS + 63 - l;
+
+	return ux.sngu_f;
+}
Index: src/lib/libc/quad/floatundisf_ieee754.c
diff -u /dev/null src/lib/libc/quad/floatundisf_ieee754.c:1.1
--- /dev/null	Fri Aug 23 17:41:03 2013
+++ src/lib/libc/quad/floatundisf_ieee754.c	Fri Aug 23 17:41:03 2013
@@ -0,0 +1,82 @@
+/*	$NetBSD: floatundisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * 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 

CVS commit: src/sys/arch/arm/vfp

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 18:11:47 UTC 2013

Modified Files:
src/sys/arch/arm/vfp: vfp_init.c

Log Message:
Deal with lack of VFP.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/vfp/vfp_init.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/vfp/vfp_init.c
diff -u src/sys/arch/arm/vfp/vfp_init.c:1.25 src/sys/arch/arm/vfp/vfp_init.c:1.26
--- src/sys/arch/arm/vfp/vfp_init.c:1.25	Fri Aug 23 05:22:01 2013
+++ src/sys/arch/arm/vfp/vfp_init.c	Fri Aug 23 18:11:47 2013
@@ -1,4 +1,4 @@
-/*  $NetBSD: vfp_init.c,v 1.25 2013/08/23 05:22:01 matt Exp $ */
+/*  $NetBSD: vfp_init.c,v 1.26 2013/08/23 18:11:47 matt Exp $ */
 
 /*
  * Copyright (c) 2008 ARM Ltd
@@ -189,12 +189,12 @@ vfp_fpscr_handler(u_int address, u_int i
 	 */
 	if (pcb-pcb_vfp.vfp_fpexc  VFP_FPEXC_EN)
 		return 1;
-#endif
 
 	if (__predict_false(!vfp_used_p())) {
 		pcb-pcb_vfp.vfp_fpscr =
 		(VFP_FPSCR_DN | VFP_FPSCR_FZ);	/* Runfast */
 	}
+#endif
 
 	/*
 	 * We know know the pcb has the saved copy.



CVS commit: src/lib/libc/quad

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Aug 24 00:51:48 UTC 2013

Modified Files:
src/lib/libc/quad: Makefile.inc floatdisf_ieee754.c
floatundisf_ieee754.c
Added Files:
src/lib/libc/quad: fixdfdi_ieee754.c fixsfdi_ieee754.c
fixunsdfdi_ieee754.c fixunssfdi_ieee754.c floatdidf_ieee754.c
floatundidf_ieee754.c

Log Message:
Add IEEE 754 versions of
fixdfdi.c fixsfdi.c fixunsdfdi.c fixunssfdi.c
floatdidf.c floatdisf.c floatundidf.c floatundisf.c
These don't FP so are well suited to softfloat implementation.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/lib/libc/quad/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/lib/libc/quad/fixdfdi_ieee754.c \
src/lib/libc/quad/fixsfdi_ieee754.c \
src/lib/libc/quad/fixunsdfdi_ieee754.c \
src/lib/libc/quad/fixunssfdi_ieee754.c \
src/lib/libc/quad/floatdidf_ieee754.c \
src/lib/libc/quad/floatundidf_ieee754.c
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/quad/floatdisf_ieee754.c \
src/lib/libc/quad/floatundisf_ieee754.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/quad/Makefile.inc
diff -u src/lib/libc/quad/Makefile.inc:1.16 src/lib/libc/quad/Makefile.inc:1.17
--- src/lib/libc/quad/Makefile.inc:1.16	Tue Apr 30 01:43:01 2013
+++ src/lib/libc/quad/Makefile.inc	Sat Aug 24 00:51:48 2013
@@ -1,13 +1,15 @@
-#	$NetBSD: Makefile.inc,v 1.16 2013/04/30 01:43:01 matt Exp $
+#	$NetBSD: Makefile.inc,v 1.17 2013/08/24 00:51:48 matt Exp $
 #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93
 
 # Quad support
 SRCS.quad=	cmpdi2.c ucmpdi2.c 
 SRCS.quad+=	divdi3.c moddi3.c 
+.if empty(LIBC_MACHINE_ARCH:Mearm*)
 SRCS.quad+=	fixdfdi.c fixsfdi.c
 SRCS.quad+=	fixunsdfdi.c fixunssfdi.c
 SRCS.quad+=	floatdidf.c floatdisf.c
-SRCS.quad+=	floatundisf.c floatundidf.c
+SRCS.quad+=	floatundidf.c floatundisf.c
+.endif
 SRCS.quad+=	muldi3.c
 SRCS.quad+=	negdi2.c
 SRCS.quad+=	qdivrem.c
@@ -17,8 +19,12 @@ SRCS.quad+=	udivdi3.c umoddi3.c 
 SRCS.quad+=	ashldi3.S ashrdi3.S lshrdi3.S
 .elif (${MACHINE_ARCH} == m68000)
 SRCS.quad+=	ashldi3.S lshrdi3.S
-.elif (!empty{LIBC_MACHINE_ARCH:Mearm*})
+.elif !empty(LIBC_MACHINE_ARCH:Mearm*)
 SRCS.quad+=	ashldi3.c ashrdi3.c lshrdi3.c lshldi3.c
+SRCS.quad+=	floatdidf_ieee754.c floatdisf_ieee754.c
+SRCS.quad+=	floatundidf_ieee754.c floatundisf_ieee754.c
+SRCS.quad+=	fixdfdi_ieee754.c fixsfdi_ieee754.c
+SRCS.quad+=	fixunsdfdi_ieee754.c fixunssfdi_ieee754.c
 .else
 SRCS.quad+=	ashldi3.c ashrdi3.c lshrdi3.c
 .endif

Index: src/lib/libc/quad/floatdisf_ieee754.c
diff -u src/lib/libc/quad/floatdisf_ieee754.c:1.1 src/lib/libc/quad/floatdisf_ieee754.c:1.2
--- src/lib/libc/quad/floatdisf_ieee754.c:1.1	Fri Aug 23 17:41:03 2013
+++ src/lib/libc/quad/floatdisf_ieee754.c	Sat Aug 24 00:51:48 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: floatdisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $	*/
+/*	$NetBSD: floatdisf_ieee754.c,v 1.2 2013/08/24 00:51:48 matt Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 #if defined(LIBC_SCCS)  !defined(lint)
-__RCSID($NetBSD: floatdisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $);
+__RCSID($NetBSD: floatdisf_ieee754.c,v 1.2 2013/08/24 00:51:48 matt Exp $);
 #endif /* LIBC_SCCS and not lint */
 
 #if defined(SOFTFLOAT) || defined(__ARM_EABI__)
@@ -69,14 +69,15 @@ __floatdisf(quad_t x)
 
 	ux.sngu_frac = (u_quad_t)x  (64 - SNG_FRACBITS);
 #else
-	union uu u = { .q = x };
+	union uu u = { .uq = x };
 	uint32_t frac;
+	u_int l;
 	if (u.ul[H] == 0) {
-		u_int l = __builtin_clz(u.ul[L]);
+		l = __builtin_clz(u.ul[L]);
 		frac = u.ul[L]  (l + 1);	/* clear implicit bit */
 		l += 32;
 	} else {
-		u_int l = __builtin_clz(u.ul[H]);
+		l = __builtin_clz(u.ul[H]);
 		frac = u.ul[H]  (l + 1);	/* clear implicit bit */
 		frac |= u.ul[L]  (32 - (l + 1));
 	}
Index: src/lib/libc/quad/floatundisf_ieee754.c
diff -u src/lib/libc/quad/floatundisf_ieee754.c:1.1 src/lib/libc/quad/floatundisf_ieee754.c:1.2
--- src/lib/libc/quad/floatundisf_ieee754.c:1.1	Fri Aug 23 17:41:03 2013
+++ src/lib/libc/quad/floatundisf_ieee754.c	Sat Aug 24 00:51:48 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: floatundisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $	*/
+/*	$NetBSD: floatundisf_ieee754.c,v 1.2 2013/08/24 00:51:48 matt Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include sys/cdefs.h
 #if defined(LIBC_SCCS)  !defined(lint)
-__RCSID($NetBSD: floatundisf_ieee754.c,v 1.1 2013/08/23 17:41:03 matt Exp $);
+__RCSID($NetBSD: floatundisf_ieee754.c,v 1.2 2013/08/24 00:51:48 matt Exp $);
 #endif /* LIBC_SCCS and not lint */
 
 #if defined(SOFTFLOAT) || defined(__ARM_EABI__)
@@ -64,12 +64,13 @@ __floatundisf(u_quad_t x)
 #else
 	union uu u = { .uq = x };
 	uint32_t frac;
+	u_int l;
 	if (u.ul[H] == 0) {
-		u_int l = __builtin_clz(u.ul[L]);
+		l = __builtin_clz(u.ul[L]);
 		frac = u.ul[L]  (l + 1);	/*