aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2010-06-22 12:29:05 -0400
committerMichal Simek <monstr@monstr.eu>2010-08-04 04:45:12 -0400
commit25f6e59657211b3f7d912520c53fb7d98ebe960b (patch)
tree375bf049e17ac3cb94fd894c1a727afd99915094 /arch
parent287503fabd9910cc77266142c7c8acbdb8efbf6b (diff)
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/microblaze/kernel/entry.S7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S
index e7abf7426c8c..4c06e1a46a25 100644
--- a/arch/microblaze/kernel/entry.S
+++ b/arch/microblaze/kernel/entry.S
@@ -352,6 +352,7 @@ C_ENTRY(_user_exception):
352 swi r0, r1, PTO + PT_MODE; /* Was in user-mode. */ 352 swi r0, r1, PTO + PT_MODE; /* Was in user-mode. */
353 lwi r11, r0, TOPHYS(PER_CPU(ENTRY_SP)); 353 lwi r11, r0, TOPHYS(PER_CPU(ENTRY_SP));
354 swi r11, r1, PTO+PT_R1; /* Store user SP. */ 354 swi r11, r1, PTO+PT_R1; /* Store user SP. */
355 clear_ums;
3552: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); 3562: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
356 /* Save away the syscall number. */ 357 /* Save away the syscall number. */
357 swi r12, r1, PTO+PT_R0; 358 swi r12, r1, PTO+PT_R0;
@@ -363,10 +364,8 @@ C_ENTRY(_user_exception):
363 * register should point to the location where 364 * register should point to the location where
364 * the called function should return. [note that MAKE_SYS_CALL uses label 1] */ 365 * the called function should return. [note that MAKE_SYS_CALL uses label 1] */
365 366
366 # Step into virtual mode. 367 /* Step into virtual mode */
367 set_vms; 368 rtbd r0, 3f
368 addik r11, r0, 3f
369 rtid r11, 0
370 nop 369 nop
3713: 3703:
372 lwi r11, CURRENT_TASK, TS_THREAD_INFO /* get thread info */ 371 lwi r11, CURRENT_TASK, TS_THREAD_INFO /* get thread info */