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 <monstr@monstr.eu>
This commit is contained in:
Michal Simek 2010-06-22 18:50:31 +02:00
parent 25f6e59657
commit 80c5ff6b9b

View File

@ -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: