summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKanoj Sarcar <kanoj@engr.sgi.com>2000-03-17 22:42:13 +0000
committerKanoj Sarcar <kanoj@engr.sgi.com>2000-03-17 22:42:13 +0000
commitda7f527fdd6904594aa8ef8b8b8793e61770ca3b (patch)
tree121011a79b33cff43d1fce82ba08fa4b75c7079e
parent8715f08b6d43c992ddd35ec941edac13b6515819 (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.c23
-rw-r--r--arch/mips64/kernel/scall_o32.S3
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