diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-06 23:08:47 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-01 05:03:04 +0200 |
commit | f322220d6159455da2b5a8a596d802c8695fed30 (patch) | |
tree | a04a6eb85da691bdbb0a46a97c1e447e0435a795 /arch/s390/kernel/entry64.S | |
parent | s390: switch to generic kernel_thread() (diff) | |
download | linux-f322220d6159455da2b5a8a596d802c8695fed30.tar.xz linux-f322220d6159455da2b5a8a596d802c8695fed30.zip |
s390: convert to generic kernel_execve()
same situation as with alpha and arm - only massage needed
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to '')
-rw-r--r-- | arch/s390/kernel/entry64.S | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index 39c84e65f74f..3d188f74d4c0 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S @@ -369,32 +369,13 @@ ENTRY(kernel_thread_starter) la %r2,0 br %r11 # do_exit -# -# kernel_execve function needs to deal with pt_regs that is not -# at the usual place -# -ENTRY(kernel_execve) - stmg %r12,%r15,96(%r15) - lgr %r14,%r15 - aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) - stg %r14,__SF_BACKCHAIN(%r15) - la %r12,STACK_FRAME_OVERHEAD(%r15) - xc 0(__PT_SIZE,%r12),0(%r12) - lgr %r5,%r12 - brasl %r14,do_execve - ltgfr %r2,%r2 - je 0f - aghi %r15,(STACK_FRAME_OVERHEAD + __PT_SIZE) - lmg %r12,%r15,96(%r15) - br %r14 - # execve succeeded. -0: ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts - lg %r15,__LC_KERNEL_STACK # load ksp - aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) - la %r11,STACK_FRAME_OVERHEAD(%r15) - mvc 0(__PT_SIZE,%r11),0(%r12) # copy pt_regs - lg %r12,__LC_THREAD_INFO +ENTRY(ret_from_kernel_execve) + ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts + lgr %r15,%r2 + lgr %r11,%r2 + aghi %r15,-STACK_FRAME_OVERHEAD xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) + lg %r12,__LC_THREAD_INFO ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_return |