diff options
author | Len Brown <len.brown@intel.com> | 2005-08-25 12:45:49 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-08-25 12:45:49 -0400 |
commit | 09d4a80e66cdf3e68cdb06e907f7bc0b242acbd0 (patch) | |
tree | 29e6a11bffc92f6b8393344cab209e1f2b8bf7a9 /arch/i386 | |
parent | d0d59b98d7a0b3801ce03e695ba885b698a6d122 (diff) | |
parent | 9c2c38a122cc23d6a09b8004d60a33913683eedf (diff) | |
download | op-kernel-dev-09d4a80e66cdf3e68cdb06e907f7bc0b242acbd0.zip op-kernel-dev-09d4a80e66cdf3e68cdb06e907f7bc0b242acbd0.tar.gz |
Merge HEAD from ../from-linus
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/kernel/traps.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index a61f33d..cd2d5d5 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c @@ -803,15 +803,17 @@ void math_error(void __user *eip) */ cwd = get_fpu_cwd(task); swd = get_fpu_swd(task); - switch (((~cwd) & swd & 0x3f) | (swd & 0x240)) { + switch (swd & ~cwd & 0x3f) { case 0x000: default: break; case 0x001: /* Invalid Op */ - case 0x041: /* Stack Fault */ - case 0x241: /* Stack Fault | Direction */ + /* + * swd & 0x240 == 0x040: Stack Underflow + * swd & 0x240 == 0x240: Stack Overflow + * User must clear the SF bit (0x40) if set + */ info.si_code = FPE_FLTINV; - /* Should we clear the SF or let user space do it ???? */ break; case 0x002: /* Denormalize */ case 0x010: /* Underflow */ |