diff options
author | Yoshinori Sato <ysato@users.sourceforge.jp> | 2006-09-27 17:25:07 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 17:25:07 +0900 |
commit | a2d1a5fae6296c2a3ac1aaa982c95464c46c0585 (patch) | |
tree | fa704906d368f6ab0f03b164d5071992a4029a9a /arch/sh/kernel/process.c | |
parent | 0b8929354cdeddb17e81bfda903812c9adfd0b67 (diff) | |
download | linux-stable-a2d1a5fae6296c2a3ac1aaa982c95464c46c0585.tar.gz linux-stable-a2d1a5fae6296c2a3ac1aaa982c95464c46c0585.tar.bz2 linux-stable-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.c | 13 |
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; } |