summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-11-19 19:13:38 +0900
committerPaul Mundt <lethal@linux-sh.org>2008-01-28 13:18:48 +0900
commit600ee240d15e535d51e6c2b2f8475f0aa42885ea (patch)
tree95ca3ee293c43c104172debd3951c8693c27334d
parent061854fd155116ab1f40c39a75e2c641827fd246 (diff)
sh: Move over and enable FPU support for SH-5.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--arch/sh/Kconfig.sh641
-rw-r--r--arch/sh/kernel/cpu/sh5/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh5/fpu.c (renamed from arch/sh64/kernel/fpu.c)4
-rw-r--r--arch/sh/kernel/process_64.c8
-rw-r--r--arch/sh/kernel/signal_64.c4
5 files changed, 10 insertions, 8 deletions
diff --git a/arch/sh/Kconfig.sh64 b/arch/sh/Kconfig.sh64
index 10f5d30d318..e37cd8c51e3 100644
--- a/arch/sh/Kconfig.sh64
+++ b/arch/sh/Kconfig.sh64
@@ -83,6 +83,7 @@ choice
config CPU_SH5
bool "SH-5"
+ select CPU_HAS_FPU
endchoice
diff --git a/arch/sh/kernel/cpu/sh5/Makefile b/arch/sh/kernel/cpu/sh5/Makefile
index 7ea10732b5c..6d388e8d899 100644
--- a/arch/sh/kernel/cpu/sh5/Makefile
+++ b/arch/sh/kernel/cpu/sh5/Makefile
@@ -1,3 +1,4 @@
obj-y := entry.o switchto.o
obj-$(CONFIG_KALLSYMS) += unwind.o
+obj-$(CONFIG_SH_FPU) += fpu.o
diff --git a/arch/sh64/kernel/fpu.c b/arch/sh/kernel/cpu/sh5/fpu.c
index 8ad4ed6a6c9..d3f5e7468df 100644
--- a/arch/sh64/kernel/fpu.c
+++ b/arch/sh/kernel/cpu/sh5/fpu.c
@@ -152,7 +152,7 @@ do_fpu_state_restore(unsigned long ex, struct pt_regs *regs)
if (last_task_used_math == current)
return;
- grab_fpu();
+ enable_fpu();
if (last_task_used_math != NULL) {
/* Other processes fpu state, save away */
fpsave(&last_task_used_math->thread.fpu.hard);
@@ -165,6 +165,6 @@ do_fpu_state_restore(unsigned long ex, struct pt_regs *regs)
fpload(&init_fpuregs.hard);
set_used_math();
}
- release_fpu();
+ disable_fpu();
}
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index 0761af4d2a4..0c2bc61b66b 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -469,9 +469,9 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
fpvalid = !!tsk_used_math(tsk);
if (fpvalid) {
if (current == last_task_used_math) {
- grab_fpu();
+ enable_fpu();
fpsave(&tsk->thread.fpu.hard);
- release_fpu();
+ disable_fpu();
last_task_used_math = 0;
regs->sr |= SR_FD;
}
@@ -496,9 +496,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
#ifdef CONFIG_SH_FPU
if(last_task_used_math == current) {
- grab_fpu();
+ enable_fpu();
fpsave(&current->thread.fpu.hard);
- release_fpu();
+ disable_fpu();
last_task_used_math = NULL;
regs->sr |= SR_FD;
}
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c
index 069fb608364..08f403e2366 100644
--- a/arch/sh/kernel/signal_64.c
+++ b/arch/sh/kernel/signal_64.c
@@ -211,9 +211,9 @@ setup_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc)
return err;
if (current == last_task_used_math) {
- grab_fpu();
+ enable_fpu();
fpsave(&current->thread.fpu.hard);
- release_fpu();
+ disable_fpu();
last_task_used_math = NULL;
regs->sr |= SR_FD;
}