diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-06 17:08:47 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-30 23:03:04 -0400 |
commit | f322220d6159455da2b5a8a596d802c8695fed30 (patch) | |
tree | a04a6eb85da691bdbb0a46a97c1e447e0435a795 /arch/s390/kernel/entry.S | |
parent | f9a7e025dfc28783fd2b05812e663251acf4bf21 (diff) |
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 'arch/s390/kernel/entry.S')
-rw-r--r-- | arch/s390/kernel/entry.S | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 24de1cd3754b..ef46f66bc0d6 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -355,30 +355,13 @@ ENTRY(kernel_thread_starter) | |||
355 | # kernel_execve function needs to deal with pt_regs that is not | 355 | # kernel_execve function needs to deal with pt_regs that is not |
356 | # at the usual place | 356 | # at the usual place |
357 | # | 357 | # |
358 | ENTRY(kernel_execve) | 358 | ENTRY(ret_from_kernel_execve) |
359 | stm %r12,%r15,48(%r15) | 359 | ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts |
360 | lr %r14,%r15 | 360 | lr %r15,%r2 |
361 | l %r13,__LC_SVC_NEW_PSW+4 | 361 | lr %r11,%r2 |
362 | ahi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) | 362 | ahi %r15,-STACK_FRAME_OVERHEAD |
363 | st %r14,__SF_BACKCHAIN(%r15) | ||
364 | la %r12,STACK_FRAME_OVERHEAD(%r15) | ||
365 | xc 0(__PT_SIZE,%r12),0(%r12) | ||
366 | l %r1,BASED(.Ldo_execve) | ||
367 | lr %r5,%r12 | ||
368 | basr %r14,%r1 # call do_execve | ||
369 | ltr %r2,%r2 | ||
370 | je 0f | ||
371 | ahi %r15,(STACK_FRAME_OVERHEAD + __PT_SIZE) | ||
372 | lm %r12,%r15,48(%r15) | ||
373 | br %r14 | ||
374 | # execve succeeded. | ||
375 | 0: ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts | ||
376 | l %r15,__LC_KERNEL_STACK # load ksp | ||
377 | ahi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) | ||
378 | la %r11,STACK_FRAME_OVERHEAD(%r15) | ||
379 | mvc 0(__PT_SIZE,%r11),0(%r12) # copy pt_regs | ||
380 | l %r12,__LC_THREAD_INFO | ||
381 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) | 363 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) |
364 | l %r12,__LC_THREAD_INFO | ||
382 | ssm __LC_SVC_NEW_PSW # reenable interrupts | 365 | ssm __LC_SVC_NEW_PSW # reenable interrupts |
383 | j sysc_return | 366 | j sysc_return |
384 | 367 | ||
@@ -941,7 +924,6 @@ cleanup_idle_wait: | |||
941 | .Ldo_signal: .long do_signal | 924 | .Ldo_signal: .long do_signal |
942 | .Ldo_notify_resume: .long do_notify_resume | 925 | .Ldo_notify_resume: .long do_notify_resume |
943 | .Ldo_per_trap: .long do_per_trap | 926 | .Ldo_per_trap: .long do_per_trap |
944 | .Ldo_execve: .long do_execve | ||
945 | .Ljump_table: .long pgm_check_table | 927 | .Ljump_table: .long pgm_check_table |
946 | .Lschedule: .long schedule | 928 | .Lschedule: .long schedule |
947 | #ifdef CONFIG_PREEMPT | 929 | #ifdef CONFIG_PREEMPT |