From 332fd57b92d26e2ac6112340b98e92bb76117a41 Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Thu, 22 Nov 2007 17:30:50 +0900 Subject: sh: Bring the SH-5 FPU in line with the SH-4 FPU API. Signed-off-by: Paul Mundt --- arch/sh/kernel/cpu/sh5/fpu.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'arch/sh/kernel/cpu/sh5/fpu.c') diff --git a/arch/sh/kernel/cpu/sh5/fpu.c b/arch/sh/kernel/cpu/sh5/fpu.c index d3f5e7468df..5a391b1a00e 100644 --- a/arch/sh/kernel/cpu/sh5/fpu.c +++ b/arch/sh/kernel/cpu/sh5/fpu.c @@ -30,12 +30,12 @@ static union sh_fpu_union init_fpuregs = { .hard = { - .fp_regs = { [0 ... 63] = sNAN32 }, - .fpscr = FPSCR_INIT + .fp_regs = { [0 ... 63] = sNAN32 }, + .fpscr = FPSCR_INIT } }; -inline void fpsave(struct sh_fpu_hard_struct *fpregs) +void save_fpu(struct task_struct *tsk, struct pt_regs *regs) { asm volatile("fst.p %0, (0*8), fp0\n\t" "fst.p %0, (1*8), fp2\n\t" @@ -73,11 +73,10 @@ inline void fpsave(struct sh_fpu_hard_struct *fpregs) "fgetscr fr63\n\t" "fst.s %0, (32*8), fr63\n\t" : /* no output */ - : "r" (fpregs) + : "r" (&tsk->thread.fpu.hard) : "memory"); } - static inline void fpload(struct sh_fpu_hard_struct *fpregs) { @@ -153,10 +152,10 @@ do_fpu_state_restore(unsigned long ex, struct pt_regs *regs) return; enable_fpu(); - if (last_task_used_math != NULL) { + if (last_task_used_math != NULL) /* Other processes fpu state, save away */ - fpsave(&last_task_used_math->thread.fpu.hard); - } + save_fpu(last_task_used_math, regs); + last_task_used_math = current; if (used_math()) { fpload(¤t->thread.fpu.hard); @@ -167,4 +166,3 @@ do_fpu_state_restore(unsigned long ex, struct pt_regs *regs) } disable_fpu(); } - -- cgit v1.2.3