Module Name: src
Committed By: matt
Date: Sat Aug 22 16:55:19 UTC 2009
Modified Files:
src/sys/arch/mips/mips [matt-nb5-mips64]: syscall.c
Log Message:
Use sy_narg, not sy_argsize!
Add debug code to pretty print args.
To generate a diff of this commit:
cvs rdiff -u -r1.37.12.3 -r1.37.12.4 src/sys/arch/mips/mips/syscall.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/mips/syscall.c
diff -u src/sys/arch/mips/mips/syscall.c:1.37.12.3 src/sys/arch/mips/mips/syscall.c:1.37.12.4
--- src/sys/arch/mips/mips/syscall.c:1.37.12.3 Sat Aug 22 00:28:42 2009
+++ src/sys/arch/mips/mips/syscall.c Sat Aug 22 16:55:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: syscall.c,v 1.37.12.3 2009/08/22 00:28:42 matt Exp $ */
+/* $NetBSD: syscall.c,v 1.37.12.4 2009/08/22 16:55:19 matt Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -107,7 +107,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.37.12.3 2009/08/22 00:28:42 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.37.12.4 2009/08/22 16:55:19 matt Exp $");
#if defined(_KERNEL_OPT)
#include "opt_sa.h"
@@ -227,13 +227,12 @@
else
callp += code;
- nargs = callp->sy_argsize;
+ nargs = callp->sy_narg;
frame->f_regs[_R_V0] = 0;
#if !defined(__mips_o32)
if (abi != _MIPS_BSD_API_O32) {
#endif
CTASSERT(sizeof(copyargs[0]) == sizeof(fargs[0]));
- /* rval[1] already is V1 */
if (nargs <= nregs) {
/*
* Just use the frame for the source of arguments
@@ -241,6 +240,7 @@
args = fargs;
} else {
const size_t nsaved = _MIPS_SIM_NEWABI_P(abi) ? 0 : 4;
+ KASSERT(nargs <= __arraycount(copyargs));
args = copyargs;
/*
* Copy the arguments passed via register from the * trap frame to our argument array
@@ -352,6 +352,22 @@
} while (/*CONSTCOND*/ 0); /* avoid a goto */
#endif
+#if 0
+ if (p->p_emul->e_syscallnames)
+ printf("syscall %s:", p->p_emul->e_syscallnames[code]);
+ else
+ printf("syscall %u:", code);
+ if (nargs == 0)
+ printf(" <no args>");
+ else for (size_t j = 0; j < nargs; j++) {
+ if (j == nregs) printf(" *");
+ printf(" [%s%zu]=%#"PRIxREGISTER,
+ SYCALL_ARG_64_P(callp, j) ? "+" : "",
+ j, args[j]);
+ }
+ printf("\n");
+#endif
+
if (__predict_false(p->p_trace_enabled)
&& (error = trace_enter(code, args, nargs)) != 0)
goto out;