aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Ebbert <76306.1226@compuserve.com>2005-09-13 04:55:41 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-13 12:59:04 -0400
commit33333373c40633cec8791a284e84e4b116522c8f (patch)
tree4f2572d98f9ecf21eac072e9de748c2c69062432
parentddbf9ef385bfbef897210733abfb73cb9b94ecec (diff)
[PATCH] i386: Ignore masked FPU exceptions
Masked FPU exceptions should obviously not happen in the first place, but if they do, ignoring them seems to be the right thing to do. Although there is no documentation available for Cyrix MII, I did find erratum F-7 for Winchip C6, "FPU instruction may result in spurious exception under certain conditions" which seems to indicate that this can happen. That would also explain the behaviour Ondrej Zary reported on the MII. Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/i386/kernel/traps.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index 09a58cb6daa7..431a551e46ea 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -807,8 +807,9 @@ void math_error(void __user *eip)
807 cwd = get_fpu_cwd(task); 807 cwd = get_fpu_cwd(task);
808 swd = get_fpu_swd(task); 808 swd = get_fpu_swd(task);
809 switch (swd & ~cwd & 0x3f) { 809 switch (swd & ~cwd & 0x3f) {
810 case 0x000: 810 case 0x000: /* No unmasked exception */
811 default: 811 return;
812 default: /* Multiple exceptions */
812 break; 813 break;
813 case 0x001: /* Invalid Op */ 814 case 0x001: /* Invalid Op */
814 /* 815 /*