Loading arch/s390/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ config S390 select KTIME_SCALAR if 32BIT select HAVE_ARCH_SECCOMP_FILTER select GENERIC_KERNEL_THREAD select GENERIC_KERNEL_EXECVE select HAVE_MOD_ARCH_SPECIFIC select MODULES_USE_ELF_RELA Loading arch/s390/include/asm/unistd.h +0 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND # endif #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_KERNEL_EXECVE /* * "Conditional" syscalls Loading arch/s390/kernel/entry.S +5 −27 Original line number Diff line number Diff line Loading @@ -330,40 +330,18 @@ ENTRY(ret_from_fork) la %r11,STACK_FRAME_OVERHEAD(%r15) l %r12,__LC_THREAD_INFO l %r13,__LC_SVC_NEW_PSW+4 tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? je 1f l %r1,BASED(.Lschedule_tail) basr %r14,%r1 # call schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_tracenogo 1: # it's a kernel thread st %r15,__PT_R15(%r11) # store stack pointer for new kthread l %r1,BASED(.Lschedule_tail) basr %r14,%r1 # call schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts lm %r9,%r11,__PT_R9(%r11) # load gprs tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? jne sysc_tracenogo # it's a kernel thread lm %r9,%r10,__PT_R9(%r11) # load gprs ENTRY(kernel_thread_starter) la %r2,0(%r10) basr %r14,%r9 la %r2,0 br %r11 # do_exit # # kernel_execve function needs to deal with pt_regs that is not # at the usual place # ENTRY(ret_from_kernel_execve) ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts lr %r15,%r2 lr %r11,%r2 ahi %r15,-STACK_FRAME_OVERHEAD xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) l %r12,__LC_THREAD_INFO ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_return j sysc_tracenogo /* * Program check handler routine Loading arch/s390/kernel/entry64.S +5 −21 Original line number Diff line number Diff line Loading @@ -352,33 +352,17 @@ sysc_tracenogo: ENTRY(ret_from_fork) la %r11,STACK_FRAME_OVERHEAD(%r15) lg %r12,__LC_THREAD_INFO tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? je 1f brasl %r14,schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_tracenogo 1: # it's a kernel thread stg %r15,__PT_R15(%r11) # store stack pointer for new kthread brasl %r14,schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts lmg %r9,%r11,__PT_R9(%r11) # load gprs tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? jne sysc_tracenogo # it's a kernel thread lmg %r9,%r10,__PT_R9(%r11) # load gprs ENTRY(kernel_thread_starter) la %r2,0(%r10) basr %r14,%r9 la %r2,0 br %r11 # do_exit 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 j sysc_tracenogo /* * Program check handler routine Loading Loading
arch/s390/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ config S390 select KTIME_SCALAR if 32BIT select HAVE_ARCH_SECCOMP_FILTER select GENERIC_KERNEL_THREAD select GENERIC_KERNEL_EXECVE select HAVE_MOD_ARCH_SPECIFIC select MODULES_USE_ELF_RELA Loading
arch/s390/include/asm/unistd.h +0 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND # endif #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_KERNEL_EXECVE /* * "Conditional" syscalls Loading
arch/s390/kernel/entry.S +5 −27 Original line number Diff line number Diff line Loading @@ -330,40 +330,18 @@ ENTRY(ret_from_fork) la %r11,STACK_FRAME_OVERHEAD(%r15) l %r12,__LC_THREAD_INFO l %r13,__LC_SVC_NEW_PSW+4 tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? je 1f l %r1,BASED(.Lschedule_tail) basr %r14,%r1 # call schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_tracenogo 1: # it's a kernel thread st %r15,__PT_R15(%r11) # store stack pointer for new kthread l %r1,BASED(.Lschedule_tail) basr %r14,%r1 # call schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts lm %r9,%r11,__PT_R9(%r11) # load gprs tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? jne sysc_tracenogo # it's a kernel thread lm %r9,%r10,__PT_R9(%r11) # load gprs ENTRY(kernel_thread_starter) la %r2,0(%r10) basr %r14,%r9 la %r2,0 br %r11 # do_exit # # kernel_execve function needs to deal with pt_regs that is not # at the usual place # ENTRY(ret_from_kernel_execve) ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts lr %r15,%r2 lr %r11,%r2 ahi %r15,-STACK_FRAME_OVERHEAD xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) l %r12,__LC_THREAD_INFO ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_return j sysc_tracenogo /* * Program check handler routine Loading
arch/s390/kernel/entry64.S +5 −21 Original line number Diff line number Diff line Loading @@ -352,33 +352,17 @@ sysc_tracenogo: ENTRY(ret_from_fork) la %r11,STACK_FRAME_OVERHEAD(%r15) lg %r12,__LC_THREAD_INFO tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? je 1f brasl %r14,schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts j sysc_tracenogo 1: # it's a kernel thread stg %r15,__PT_R15(%r11) # store stack pointer for new kthread brasl %r14,schedule_tail TRACE_IRQS_ON ssm __LC_SVC_NEW_PSW # reenable interrupts lmg %r9,%r11,__PT_R9(%r11) # load gprs tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ? jne sysc_tracenogo # it's a kernel thread lmg %r9,%r10,__PT_R9(%r11) # load gprs ENTRY(kernel_thread_starter) la %r2,0(%r10) basr %r14,%r9 la %r2,0 br %r11 # do_exit 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 j sysc_tracenogo /* * Program check handler routine Loading