Commit 5fae1b66 authored by Al Viro's avatar Al Viro

h8300: generic kernel_execve()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 557e1995
...@@ -9,6 +9,7 @@ config H8300 ...@@ -9,6 +9,7 @@ config H8300
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select GENERIC_KERNEL_THREAD select GENERIC_KERNEL_THREAD
select GENERIC_KERNEL_EXECVE
config SYMBOL_PREFIX config SYMBOL_PREFIX
string string
......
...@@ -337,8 +337,7 @@ SYMBOL_NAME_LABEL(ret_from_kernel_thread) ...@@ -337,8 +337,7 @@ SYMBOL_NAME_LABEL(ret_from_kernel_thread)
mov.l @(LER4:16,sp),er0 mov.l @(LER4:16,sp),er0
mov.l @(LER5:16,sp),er1 mov.l @(LER5:16,sp),er1
jsr @er1 jsr @er1
sub.l @er0,@er0 jmp @SYMBOL_NAME(ret_from_exception)
jsr @SYMBOL_NAME(sys_exit)
SYMBOL_NAME_LABEL(resume) SYMBOL_NAME_LABEL(resume)
/* /*
......
...@@ -46,29 +46,3 @@ asmlinkage void syscall_print(void *dummy,...) ...@@ -46,29 +46,3 @@ asmlinkage void syscall_print(void *dummy,...)
((regs->pc)&0xffffff)-2,regs->orig_er0,regs->er1,regs->er2,regs->er3,regs->er0); ((regs->pc)&0xffffff)-2,regs->orig_er0,regs->er1,regs->er2,regs->er3,regs->er0);
} }
#endif #endif
/*
* Do a system call from kernel instead of calling sys_execve so we
* end up with proper pt_regs.
*/
asmlinkage
int kernel_execve(const char *filename,
const char *const argv[],
const char *const envp[])
{
register long res __asm__("er0");
register const char *const *_c __asm__("er3") = envp;
register const char *const *_b __asm__("er2") = argv;
register const char * _a __asm__("er1") = filename;
__asm__ __volatile__ ("mov.l %1,er0\n\t"
"trapa #0\n\t"
: "=r" (res)
: "g" (__NR_execve),
"g" (_a),
"g" (_b),
"g" (_c)
: "cc", "memory");
return res;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment