aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/process.c
diff options
context:
space:
mode:
authorYoshinori Sato <ysato@users.sourceforge.jp>2006-09-27 17:25:07 +0900
committerPaul Mundt <lethal@linux-sh.org>2006-09-27 17:25:07 +0900
commita2d1a5fae6296c2a3ac1aaa982c95464c46c0585 (patch)
treefa704906d368f6ab0f03b164d5071992a4029a9a /arch/sh/kernel/process.c
parentsh: __NR_restart_syscall support. (diff)
downloadlinux-dev-a2d1a5fae6296c2a3ac1aaa982c95464c46c0585.tar.xz
linux-dev-a2d1a5fae6296c2a3ac1aaa982c95464c46c0585.zip
sh: __addr_ok() and other misc nommu fixups.
A few more outstanding nommu fixups.. Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/process.c')
-rw-r--r--arch/sh/kernel/process.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index 4a32550fd7c6..c4aa687ba26a 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -302,9 +302,11 @@ ubc_set_tracing(int asid, unsigned long pc)
{
ctrl_outl(pc, UBC_BARA);
+#ifdef CONFIG_MMU
/* We don't have any ASID settings for the SH-2! */
if (cpu_data->type != CPU_SH7604)
ctrl_outb(asid, UBC_BASRA);
+#endif
ctrl_outl(0, UBC_BAMRA);
@@ -347,6 +349,7 @@ struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *ne
}
#endif
+#ifdef CONFIG_MMU
/*
* Restore the kernel mode register
* k7 (r7_bank1)
@@ -354,19 +357,21 @@ struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *ne
asm volatile("ldc %0, r7_bank"
: /* no output */
: "r" (task_thread_info(next)));
+#endif
-#ifdef CONFIG_MMU
/* If no tasks are using the UBC, we're done */
if (ubc_usercnt == 0)
/* If no tasks are using the UBC, we're done */;
else if (next->thread.ubc_pc && next->mm) {
- ubc_set_tracing(next->mm->context & MMU_CONTEXT_ASID_MASK,
- next->thread.ubc_pc);
+ int asid = 0;
+#ifdef CONFIG_MMU
+ asid |= next->mm->context & MMU_CONTEXT_ASID_MASK;
+#endif
+ ubc_set_tracing(asid, next->thread.ubc_pc);
} else {
ctrl_outw(0, UBC_BBRA);
ctrl_outw(0, UBC_BBRB);
}
-#endif
return prev;
}