From 80c5ff6b9b2dd9a2e99d3d6f74df5e6f888d43e9 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Tue, 22 Jun 2010 18:50:31 +0200 Subject: [PATCH] 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 --- arch/microblaze/kernel/entry.S | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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: