sh: Bring the SH-5 FPU in line with the SH-4 FPU API.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
diff --git a/arch/sh/kernel/cpu/sh5/fpu.c b/arch/sh/kernel/cpu/sh5/fpu.c
index d3f5e74..5a391b1 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 @@
 		     "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 @@
 		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(&current->thread.fpu.hard);
@@ -167,4 +166,3 @@
         }
 	disable_fpu();
 }
-
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index 2dd97ee..973dd1a 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -480,7 +480,7 @@
 	if (fpvalid) {
 		if (current == last_task_used_math) {
 			enable_fpu();
-			fpsave(&tsk->thread.fpu.hard);
+			save_fpu(tsk, regs);
 			disable_fpu();
 			last_task_used_math = 0;
 			regs->sr |= SR_FD;
@@ -507,7 +507,7 @@
 #ifdef CONFIG_SH_FPU
 	if(last_task_used_math == current) {
 		enable_fpu();
-		fpsave(&current->thread.fpu.hard);
+		save_fpu(current, regs);
 		disable_fpu();
 		last_task_used_math = NULL;
 		regs->sr |= SR_FD;
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c
index 51bb546..e9cc6eb 100644
--- a/arch/sh/kernel/ptrace_64.c
+++ b/arch/sh/kernel/ptrace_64.c
@@ -75,7 +75,7 @@
 
 	if (last_task_used_math == task) {
 		enable_fpu();
-		fpsave(&task->thread.fpu.hard);
+		save_fpu(task, regs);
 		disable_fpu();
 		last_task_used_math = 0;
 		regs->sr |= SR_FD;
@@ -111,7 +111,7 @@
 		set_stopped_child_used_math(task);
 	} else if (last_task_used_math == task) {
 		enable_fpu();
-		fpsave(&task->thread.fpu.hard);
+		save_fpu(task, regs);
 		disable_fpu();
 		last_task_used_math = 0;
 		regs->sr |= SR_FD;
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c
index 08f403e..9228919 100644
--- a/arch/sh/kernel/signal_64.c
+++ b/arch/sh/kernel/signal_64.c
@@ -212,7 +212,7 @@
 
 	if (current == last_task_used_math) {
 		enable_fpu();
-		fpsave(&current->thread.fpu.hard);
+		save_fpu(current, regs);
 		disable_fpu();
 		last_task_used_math = NULL;
 		regs->sr |= SR_FD;
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c
index 0f4ea3a..b8020f2 100644
--- a/arch/sh/kernel/traps_64.c
+++ b/arch/sh/kernel/traps_64.c
@@ -618,7 +618,7 @@
 		   indexed by register number. */
 		if (last_task_used_math == current) {
 			enable_fpu();
-			fpsave(&current->thread.fpu.hard);
+			save_fpu(current, regs);
 			disable_fpu();
 			last_task_used_math = NULL;
 			regs->sr |= SR_FD;
@@ -691,7 +691,7 @@
 		   indexed by register number. */
 		if (last_task_used_math == current) {
 			enable_fpu();
-			fpsave(&current->thread.fpu.hard);
+			save_fpu(current, regs);
 			disable_fpu();
 			last_task_used_math = NULL;
 			regs->sr |= SR_FD;