From: Michal Simek Date: Tue, 22 Jun 2010 16:50:31 +0000 (+0200) Subject: microblaze: Fix _interrupt function X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=80c5ff6b9b2dd9a2e99d3d6f74df5e6f888d43e9;p=linux-beck.git microblaze: Fix _interrupt function Save instructions by using delay slot and clear UMS only if kernel comes from user space. Signed-off-by: Michal Simek --- diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index 4c06e1a46a25..f4fda8578551 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -747,15 +747,13 @@ C_ENTRY(_interrupt): swi r0, r1, PTO + PT_MODE; lwi r11, r0, TOPHYS(PER_CPU(ENTRY_SP)); swi r11, r1, PTO+PT_R1; + clear_ums; 2: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); tovirt(r1,r1) - addik r5, r1, PTO; - set_vms; - addik r11, r0, do_IRQ; addik r15, r0, irq_call; -irq_call:rtbd r11, 0; - nop; +irq_call:rtbd r0, do_IRQ; + addik r5, r1, PTO; /* MS: we are in virtual mode */ ret_from_irq: