diff options
author | William Lee Irwin III <wli@holomorphy.com> | 2007-03-12 20:08:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-03-12 20:08:25 -0400 |
commit | 54f565ea895b383b67a2d6e31d2e2fcac5e6c345 (patch) | |
tree | 82c9a38af3f9912ca3a4cb60e243a53151be5ac7 /arch/sparc/kernel/traps.c | |
parent | c0a79b229ac0e3a96fc00d5be65a498ceb06ef63 (diff) |
[SPARC]: Fix TIF_USEDFPU flag atomicity
From: William Lee Irwin III <wli@holomorphy.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/traps.c')
-rw-r--r-- | arch/sparc/kernel/traps.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c index 6a70d215fd04..527687afc1c4 100644 --- a/arch/sparc/kernel/traps.c +++ b/arch/sparc/kernel/traps.c | |||
@@ -259,7 +259,7 @@ void do_fpd_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
259 | } else { | 259 | } else { |
260 | fpload(¤t->thread.float_regs[0], ¤t->thread.fsr); | 260 | fpload(¤t->thread.float_regs[0], ¤t->thread.fsr); |
261 | } | 261 | } |
262 | current_thread_info()->flags |= _TIF_USEDFPU; | 262 | set_thread_flag(TIF_USEDFPU); |
263 | #endif | 263 | #endif |
264 | } | 264 | } |
265 | 265 | ||
@@ -290,7 +290,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
290 | #ifndef CONFIG_SMP | 290 | #ifndef CONFIG_SMP |
291 | if(!fpt) { | 291 | if(!fpt) { |
292 | #else | 292 | #else |
293 | if(!(task_thread_info(fpt)->flags & _TIF_USEDFPU)) { | 293 | if (!test_tsk_thread_flag(fpt, TIF_USEDFPU)) { |
294 | #endif | 294 | #endif |
295 | fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth); | 295 | fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth); |
296 | regs->psr &= ~PSR_EF; | 296 | regs->psr &= ~PSR_EF; |
@@ -333,7 +333,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
333 | /* nope, better SIGFPE the offending process... */ | 333 | /* nope, better SIGFPE the offending process... */ |
334 | 334 | ||
335 | #ifdef CONFIG_SMP | 335 | #ifdef CONFIG_SMP |
336 | task_thread_info(fpt)->flags &= ~_TIF_USEDFPU; | 336 | clear_tsk_thread_flag(fpt, TIF_USEDFPU); |
337 | #endif | 337 | #endif |
338 | if(psr & PSR_PS) { | 338 | if(psr & PSR_PS) { |
339 | /* The first fsr store/load we tried trapped, | 339 | /* The first fsr store/load we tried trapped, |