From 82d576c9ca471b4c4fe33969604a245ec06c845b Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Wed, 22 Sep 2010 14:31:06 +0000 Subject: [PATCH] enable_fpu_exception() - only write cr0 if bit isn't already on. (NMI profiling results indicate this both is relatively expensive and happens a lot unnecessarily if the fpu is in use.) --- kernel/arch/i386/exception.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/arch/i386/exception.c b/kernel/arch/i386/exception.c index 86eb54101..7b3e1e378 100644 --- a/kernel/arch/i386/exception.c +++ b/kernel/arch/i386/exception.c @@ -285,7 +285,9 @@ PUBLIC void proc_stacktrace(struct proc *whichproc) PUBLIC void enable_fpu_exception(void) { - write_cr0(read_cr0() | I386_CR0_TS); + u32_t cr0 = read_cr0(); + if(!(cr0 & I386_CR0_TS)) + write_cr0(cr0 | I386_CR0_TS); } PUBLIC void disable_fpu_exception(void) -- 2.44.0