Module Name:    src
Committed By:   riastradh
Date:           Sat Aug  4 03:53:56 UTC 2012

Modified Files:
        src/lib/libm/arch/i387: fenv.c
        src/lib/libm/arch/x86_64: fenv.c

Log Message:
Mask off the result of feenableexcept and fedisableexcept on x86.

These shouldn't return bits outside FE_ALL_EXCEPT.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/lib/libm/arch/i387/fenv.c
cvs rdiff -u -r1.1 -r1.2 src/lib/libm/arch/x86_64/fenv.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/libm/arch/i387/fenv.c
diff -u src/lib/libm/arch/i387/fenv.c:1.3 src/lib/libm/arch/i387/fenv.c:1.4
--- src/lib/libm/arch/i387/fenv.c:1.3	Sun Aug  1 06:34:38 2010
+++ src/lib/libm/arch/i387/fenv.c	Sat Aug  4 03:53:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: fenv.c,v 1.3 2010/08/01 06:34:38 taca Exp $ */
+/* $NetBSD: fenv.c,v 1.4 2012/08/04 03:53:55 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2004-2005 David Schultz <[email protected]>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: fenv.c,v 1.3 2010/08/01 06:34:38 taca Exp $");
+__RCSID("$NetBSD: fenv.c,v 1.4 2012/08/04 03:53:55 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/sysctl.h>
@@ -472,7 +472,7 @@ feenableexcept(int mask)
 		__ldmxcsr(mxcsr);
 	}
 
-	return (~omask);
+	return (FE_ALL_EXCEPT & ~omask);
 }
 
 int
@@ -496,7 +496,7 @@ fedisableexcept(int mask)
 		__ldmxcsr(mxcsr);
 	}
 
-	return (~omask);
+	return (FE_ALL_EXCEPT & ~omask);
 }
 
 int

Index: src/lib/libm/arch/x86_64/fenv.c
diff -u src/lib/libm/arch/x86_64/fenv.c:1.1 src/lib/libm/arch/x86_64/fenv.c:1.2
--- src/lib/libm/arch/x86_64/fenv.c:1.1	Sat Jul 31 21:47:53 2010
+++ src/lib/libm/arch/x86_64/fenv.c	Sat Aug  4 03:53:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: fenv.c,v 1.1 2010/07/31 21:47:53 joerg Exp $ */
+/* $NetBSD: fenv.c,v 1.2 2012/08/04 03:53:56 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2004-2005 David Schultz <das (at) FreeBSD.ORG>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: fenv.c,v 1.1 2010/07/31 21:47:53 joerg Exp $");
+__RCSID("$NetBSD: fenv.c,v 1.2 2012/08/04 03:53:56 riastradh Exp $");
 
 #include <assert.h>
 #include <fenv.h>
@@ -483,7 +483,7 @@ feenableexcept(int mask)
 	mxcsr &= ~(mask << _SSE_EMASK_SHIFT);
 	__ldmxcsr(mxcsr);
 
-	return (~omask);
+	return (FE_ALL_EXCEPT & ~omask);
 
 }
 
@@ -505,7 +505,7 @@ fedisableexcept(int mask)
 	mxcsr |= mask << _SSE_EMASK_SHIFT;
 	__ldmxcsr(mxcsr);
 
-	return (~omask);
+	return (FE_ALL_EXCEPT & ~omask);
 }
 
 int

Reply via email to