From f1ae3f6918ee4a437b4166a4deab4bd79629bc09 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Fri, 25 Sep 2009 11:52:50 +0200 Subject: [PATCH 1/2] microblaze: UMS is used only for MMU kernel Signed-off-by: Michal Simek --- arch/microblaze/kernel/process.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c index 4201c743cc9f..c592d475b3d8 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c @@ -235,7 +235,9 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long usp) regs->pc = pc; regs->r1 = usp; regs->pt_mode = 0; +#ifdef CONFIG_MMU regs->msr |= MSR_UMS; +#endif } #ifdef CONFIG_MMU From 131e4e97bfee809dc64febe8accef2f042a92722 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 28 Sep 2009 08:50:53 +0200 Subject: [PATCH 2/2] microblaze: Clear sticky FSR register after saving it to func parametr Previous patch d63678d607d0e37ec7abe5ceb545d7e8aab956a4 clear it for noMMU kernel. This one do it for MMU. Correct noMMU version Signed-off-by: Michal Simek --- arch/microblaze/kernel/entry.S | 2 ++ arch/microblaze/kernel/hw_exception_handler.S | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index acc1f05d1e2c..e3ecb36dd554 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -592,6 +592,8 @@ C_ENTRY(full_exception_trap): nop mfs r7, rfsr; /* save FSR */ nop + mts rfsr, r0; /* Clear sticky fsr */ + nop la r12, r0, full_exception set_vms; rtbd r12, 0; diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S index 6b0288ebccd6..2b86c03aa841 100644 --- a/arch/microblaze/kernel/hw_exception_handler.S +++ b/arch/microblaze/kernel/hw_exception_handler.S @@ -384,7 +384,7 @@ handle_other_ex: /* Handle Other exceptions here */ addk r8, r17, r0; /* Load exception address */ bralid r15, full_exception; /* Branch to the handler */ nop; - mts r0, rfsr; /* Clear sticky fsr */ + mts rfsr, r0; /* Clear sticky fsr */ nop /*