Loading arch/alpha/kernel/alpha_ksyms.c +0 −1 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,6 @@ EXPORT_SYMBOL(alpha_write_fp_reg_s); /* entry.S */ /* entry.S */ EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_execve); /* Networking helper routines. */ /* Networking helper routines. */ EXPORT_SYMBOL(csum_tcpudp_magic); EXPORT_SYMBOL(csum_tcpudp_magic); Loading arch/alpha/kernel/entry.S +0 −52 Original line number Original line Diff line number Diff line Loading @@ -663,58 +663,6 @@ kernel_thread: br ret_to_kernel br ret_to_kernel .end kernel_thread .end kernel_thread /* * kernel_execve(path, argv, envp) */ .align 4 .globl kernel_execve .ent kernel_execve kernel_execve: /* We can be called from a module. */ ldgp $gp, 0($27) lda $sp, -(32+SIZEOF_PT_REGS+8)($sp) .frame $sp, 32+SIZEOF_PT_REGS+8, $26, 0 stq $26, 0($sp) stq $16, 8($sp) stq $17, 16($sp) stq $18, 24($sp) .prologue 1 lda $16, 32($sp) lda $17, 0 lda $18, SIZEOF_PT_REGS bsr $26, memset !samegp /* Avoid the HAE being gratuitously wrong, which would cause us to do the whole turn off interrupts thing and restore it. */ ldq $2, alpha_mv+HAE_CACHE stq $2, 152+32($sp) ldq $16, 8($sp) ldq $17, 16($sp) ldq $18, 24($sp) lda $19, 32($sp) bsr $26, do_execve !samegp ldq $26, 0($sp) bne $0, 1f /* error! */ /* Move the temporary pt_regs struct from its current location to the top of the kernel stack frame. See copy_thread for details for a normal process. */ lda $16, 0x4000 - SIZEOF_PT_REGS($8) lda $17, 32($sp) lda $18, SIZEOF_PT_REGS bsr $26, memmove !samegp /* Take that over as our new stack frame and visit userland! */ lda $sp, 0x4000 - SIZEOF_PT_REGS($8) br $31, ret_from_sys_call 1: lda $sp, 32+SIZEOF_PT_REGS+8($sp) ret .end kernel_execve /* /* * Special system calls. Most of these are special in that they either * Special system calls. Most of these are special in that they either Loading arch/alpha/kernel/process.c +19 −0 Original line number Original line Diff line number Diff line Loading @@ -455,3 +455,22 @@ get_wchan(struct task_struct *p) } } return pc; return pc; } } int kernel_execve(const char *path, const char *const argv[], const char *const envp[]) { /* Avoid the HAE being gratuitously wrong, which would cause us to do the whole turn off interrupts thing and restore it. */ struct pt_regs regs = {.hae = alpha_mv.hae_cache}; int err = do_execve(path, argv, envp, ®s); if (!err) { struct pt_regs *p = current_pt_regs(); /* copy regs to normal position and off to userland we go... */ *p = regs; __asm__ __volatile__ ( "mov %0, $sp;" "br $31, ret_from_sys_call" : : "r"(p)); } return err; } EXPORT_SYMBOL(kernel_execve); Loading
arch/alpha/kernel/alpha_ksyms.c +0 −1 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,6 @@ EXPORT_SYMBOL(alpha_write_fp_reg_s); /* entry.S */ /* entry.S */ EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_execve); /* Networking helper routines. */ /* Networking helper routines. */ EXPORT_SYMBOL(csum_tcpudp_magic); EXPORT_SYMBOL(csum_tcpudp_magic); Loading
arch/alpha/kernel/entry.S +0 −52 Original line number Original line Diff line number Diff line Loading @@ -663,58 +663,6 @@ kernel_thread: br ret_to_kernel br ret_to_kernel .end kernel_thread .end kernel_thread /* * kernel_execve(path, argv, envp) */ .align 4 .globl kernel_execve .ent kernel_execve kernel_execve: /* We can be called from a module. */ ldgp $gp, 0($27) lda $sp, -(32+SIZEOF_PT_REGS+8)($sp) .frame $sp, 32+SIZEOF_PT_REGS+8, $26, 0 stq $26, 0($sp) stq $16, 8($sp) stq $17, 16($sp) stq $18, 24($sp) .prologue 1 lda $16, 32($sp) lda $17, 0 lda $18, SIZEOF_PT_REGS bsr $26, memset !samegp /* Avoid the HAE being gratuitously wrong, which would cause us to do the whole turn off interrupts thing and restore it. */ ldq $2, alpha_mv+HAE_CACHE stq $2, 152+32($sp) ldq $16, 8($sp) ldq $17, 16($sp) ldq $18, 24($sp) lda $19, 32($sp) bsr $26, do_execve !samegp ldq $26, 0($sp) bne $0, 1f /* error! */ /* Move the temporary pt_regs struct from its current location to the top of the kernel stack frame. See copy_thread for details for a normal process. */ lda $16, 0x4000 - SIZEOF_PT_REGS($8) lda $17, 32($sp) lda $18, SIZEOF_PT_REGS bsr $26, memmove !samegp /* Take that over as our new stack frame and visit userland! */ lda $sp, 0x4000 - SIZEOF_PT_REGS($8) br $31, ret_from_sys_call 1: lda $sp, 32+SIZEOF_PT_REGS+8($sp) ret .end kernel_execve /* /* * Special system calls. Most of these are special in that they either * Special system calls. Most of these are special in that they either Loading
arch/alpha/kernel/process.c +19 −0 Original line number Original line Diff line number Diff line Loading @@ -455,3 +455,22 @@ get_wchan(struct task_struct *p) } } return pc; return pc; } } int kernel_execve(const char *path, const char *const argv[], const char *const envp[]) { /* Avoid the HAE being gratuitously wrong, which would cause us to do the whole turn off interrupts thing and restore it. */ struct pt_regs regs = {.hae = alpha_mv.hae_cache}; int err = do_execve(path, argv, envp, ®s); if (!err) { struct pt_regs *p = current_pt_regs(); /* copy regs to normal position and off to userland we go... */ *p = regs; __asm__ __volatile__ ( "mov %0, $sp;" "br $31, ret_from_sys_call" : : "r"(p)); } return err; } EXPORT_SYMBOL(kernel_execve);