diff options
author | Kanoj Sarcar <kanoj@engr.sgi.com> | 2000-03-17 22:42:13 +0000 |
---|---|---|
committer | Kanoj Sarcar <kanoj@engr.sgi.com> | 2000-03-17 22:42:13 +0000 |
commit | da7f527fdd6904594aa8ef8b8b8793e61770ca3b (patch) | |
tree | 121011a79b33cff43d1fce82ba08fa4b75c7079e /arch/mips64/kernel/linux32.c | |
parent | 8715f08b6d43c992ddd35ec941edac13b6515819 (diff) |
Hackaround in sys32_wait for what seems to be a tools problem ... will
be investigating more. Turn off debug printouts from the system call
path for greater readability of command output.
Diffstat (limited to 'arch/mips64/kernel/linux32.c')
-rw-r--r-- | arch/mips64/kernel/linux32.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/arch/mips64/kernel/linux32.c b/arch/mips64/kernel/linux32.c index f23e8424a..cf98db92e 100644 --- a/arch/mips64/kernel/linux32.c +++ b/arch/mips64/kernel/linux32.c @@ -1,4 +1,4 @@ -/* $Id: linux32.c,v 1.9 2000/03/15 02:36:21 kanoj Exp $ +/* $Id: linux32.c,v 1.10 2000/03/15 18:05:43 kanoj Exp $ * * Conversion between 32-bit and 64-bit native system calls. * @@ -535,12 +535,19 @@ extern asmlinkage int sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru); asmlinkage int -sys32_wait4(__kernel_pid_t32 pid, unsigned int *stat_addr, int options, - struct rusage32 *ru) +sys32_wait4(abi64_no_regargs, struct pt_regs regs) { - if (!ru) - return sys_wait4(pid, stat_addr, options, NULL); - else { + __kernel_pid_t32 pid = (long)regs.regs[4]; + unsigned int *stat_addr = (long)regs.regs[5]; + int options = (long)regs.regs[6]; + struct rusage32 *ru = (long)regs.regs[7]; + + if (!ru) { +unsigned long saved = regs.cp0_status; + options = sys_wait4(pid, stat_addr, options, NULL); +regs.cp0_status = saved; + return(options); + } else { struct rusage r; int ret; unsigned int status; @@ -559,6 +566,8 @@ sys32_wait4(__kernel_pid_t32 pid, unsigned int *stat_addr, int options, asmlinkage int sys32_waitpid(__kernel_pid_t32 pid, unsigned int *stat_addr, int options) { - return sys32_wait4(pid, stat_addr, options, NULL); +printk("WAITPID\n"); +while(0); + /* return sys32_wait4(pid, stat_addr, options, NULL); */ } |