|
@@ -293,24 +293,6 @@ C_ENTRY(_user_exception):
|
|
|
swi r1, r0, TOPHYS(PER_CPU(ENTRY_SP)) /* save stack */
|
|
|
addi r14, r14, 4 /* return address is 4 byte after call */
|
|
|
|
|
|
- mfs r1, rmsr
|
|
|
- nop
|
|
|
- andi r1, r1, MSR_UMS
|
|
|
- bnei r1, 1f
|
|
|
-
|
|
|
-/* Kernel-mode state save - kernel execve */
|
|
|
- lwi r1, r0, TOPHYS(PER_CPU(ENTRY_SP)); /* Reload kernel stack-ptr*/
|
|
|
- tophys(r1,r1);
|
|
|
-
|
|
|
- addik r1, r1, -PT_SIZE; /* Make room on the stack. */
|
|
|
- SAVE_REGS
|
|
|
-
|
|
|
- swi r1, r1, PT_MODE; /* pt_regs -> kernel mode */
|
|
|
- brid 2f;
|
|
|
- nop; /* Fill delay slot */
|
|
|
-
|
|
|
-/* User-mode state save. */
|
|
|
-1:
|
|
|
lwi r1, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); /* get saved current */
|
|
|
tophys(r1,r1);
|
|
|
lwi r1, r1, TS_THREAD_INFO; /* get stack from task_struct */
|
|
@@ -490,8 +472,8 @@ C_ENTRY(ret_from_kernel_thread):
|
|
|
/* ( in the delay slot ) */
|
|
|
brald r15, r20 /* fn was left in r20 */
|
|
|
addk r5, r0, r19 /* ... and argument - in r19 */
|
|
|
- brid sys_exit /* won't be returning... */
|
|
|
- addk r5, r0, r0
|
|
|
+ brid ret_from_trap
|
|
|
+ add r3, r0, r0
|
|
|
|
|
|
C_ENTRY(sys_vfork):
|
|
|
brid microblaze_vfork /* Do real work (tail-call) */
|