git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
sh
/
kernel
/
cpu
/
sh4
/
fpu.c
diff --git
a/arch/sh/kernel/cpu/sh4/fpu.c
b/arch/sh/kernel/cpu/sh4/fpu.c
index
f486c07
..
7624677
100644
(file)
--- a/
arch/sh/kernel/cpu/sh4/fpu.c
+++ b/
arch/sh/kernel/cpu/sh4/fpu.c
@@
-282,11
+282,8
@@
ieee_fpe_handler (struct pt_regs *regs)
grab_fpu(regs);
restore_fpu(tsk);
set_tsk_thread_flag(tsk, TIF_USEDFPU);
grab_fpu(regs);
restore_fpu(tsk);
set_tsk_thread_flag(tsk, TIF_USEDFPU);
- } else {
- tsk->thread.trap_no = 11;
- tsk->thread.error_code = 0;
+ } else
force_sig(SIGFPE, tsk);
force_sig(SIGFPE, tsk);
- }
regs->pc = nextpc;
return 1;
regs->pc = nextpc;
return 1;
@@
-296,29
+293,29
@@
ieee_fpe_handler (struct pt_regs *regs)
}
asmlinkage void
}
asmlinkage void
-do_fpu_error(unsigned long r4, unsigned long r5, unsigned long r6,
unsigned long r7,
-
struct pt_regs
regs)
+do_fpu_error(unsigned long r4, unsigned long r5, unsigned long r6,
+
unsigned long r7, struct pt_regs __
regs)
{
{
+ struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
struct task_struct *tsk = current;
struct task_struct *tsk = current;
- if (ieee_fpe_handler
(&
regs))
+ if (ieee_fpe_handler
(
regs))
return;
return;
- regs.pc += 2;
- save_fpu(tsk, ®s);
- tsk->thread.trap_no = 11;
- tsk->thread.error_code = 0;
+ regs->pc += 2;
+ save_fpu(tsk, regs);
force_sig(SIGFPE, tsk);
}
asmlinkage void
do_fpu_state_restore(unsigned long r4, unsigned long r5, unsigned long r6,
force_sig(SIGFPE, tsk);
}
asmlinkage void
do_fpu_state_restore(unsigned long r4, unsigned long r5, unsigned long r6,
- unsigned long r7, struct pt_regs regs)
+ unsigned long r7, struct pt_regs
__
regs)
{
{
+ struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
struct task_struct *tsk = current;
struct task_struct *tsk = current;
- grab_fpu(
&
regs);
- if (!user_mode(
&
regs)) {
+ grab_fpu(regs);
+ if (!user_mode(regs)) {
printk(KERN_ERR "BUG: FPU is used in kernel mode.\n");
return;
}
printk(KERN_ERR "BUG: FPU is used in kernel mode.\n");
return;
}