microblaze: Fix _user_exception function

Saving some instructions. Clear VMS bit if kernel comes
from kernel space.

Signed-off-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
Michal Simek 2010-06-22 18:29:05 +02:00
parent 287503fabd
commit 25f6e59657

View File

@ -352,6 +352,7 @@ C_ENTRY(_user_exception):
swi r0, r1, PTO + PT_MODE; /* Was in user-mode. */ swi r0, r1, PTO + PT_MODE; /* Was in user-mode. */
lwi r11, r0, TOPHYS(PER_CPU(ENTRY_SP)); lwi r11, r0, TOPHYS(PER_CPU(ENTRY_SP));
swi r11, r1, PTO+PT_R1; /* Store user SP. */ swi r11, r1, PTO+PT_R1; /* Store user SP. */
clear_ums;
2: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); 2: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
/* Save away the syscall number. */ /* Save away the syscall number. */
swi r12, r1, PTO+PT_R0; swi r12, r1, PTO+PT_R0;
@ -363,10 +364,8 @@ C_ENTRY(_user_exception):
* register should point to the location where * register should point to the location where
* the called function should return. [note that MAKE_SYS_CALL uses label 1] */ * the called function should return. [note that MAKE_SYS_CALL uses label 1] */
# Step into virtual mode. /* Step into virtual mode */
set_vms; rtbd r0, 3f
addik r11, r0, 3f
rtid r11, 0
nop nop
3: 3:
lwi r11, CURRENT_TASK, TS_THREAD_INFO /* get thread info */ lwi r11, CURRENT_TASK, TS_THREAD_INFO /* get thread info */