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 | |
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.
-rw-r--r-- | arch/mips64/kernel/linux32.c | 23 | ||||
-rw-r--r-- | arch/mips64/kernel/scall_o32.S | 3 |
2 files changed, 18 insertions, 8 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); */ } diff --git a/arch/mips64/kernel/scall_o32.S b/arch/mips64/kernel/scall_o32.S index 5aa5548c6..ff26ad70e 100644 --- a/arch/mips64/kernel/scall_o32.S +++ b/arch/mips64/kernel/scall_o32.S @@ -35,11 +35,12 @@ NESTED(handle_sys, PT_SIZE, sp) SAVE_SOME STI .set at +#if 0 SAVE_ALL ld a1, PT_R2(sp) PRINT("Got syscall %d\n") RESTORE_ALL - +#endif ld t1, PT_EPC(sp) # skip syscall on return sltiu t0, v0, MAX_SYSCALL_NO + 1 # check syscall number |