Module Name:    src
Committed By:   matt
Date:           Fri Aug  3 18:08:02 UTC 2012

Modified Files:
        src/sys/kern: makesyscalls.sh
        src/sys/sys: systm.h

Log Message:
If any argument of a syscall is a pointer, set SYCALL_ARG_PTR as a flag.


To generate a diff of this commit:
cvs rdiff -u -r1.124 -r1.125 src/sys/kern/makesyscalls.sh
cvs rdiff -u -r1.256 -r1.257 src/sys/sys/systm.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/makesyscalls.sh
diff -u src/sys/kern/makesyscalls.sh:1.124 src/sys/kern/makesyscalls.sh:1.125
--- src/sys/kern/makesyscalls.sh:1.124	Fri Aug  3 11:31:33 2012
+++ src/sys/kern/makesyscalls.sh	Fri Aug  3 18:08:01 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: makesyscalls.sh,v 1.124 2012/08/03 11:31:33 pooka Exp $
+#	$NetBSD: makesyscalls.sh,v 1.125 2012/08/03 18:08:01 matt Exp $
 #
 # Copyright (c) 1994, 1996, 2000 Christopher G. Demetriou
 # All rights reserved.
@@ -532,6 +532,7 @@ function parseline() {
 
 	isvarargs = 0;
 	args64 = 0;
+	ptr = 0;
 	while (f <= end) {
 		if ($f == "...") {
 			f++;
@@ -568,6 +569,13 @@ function parseline() {
 				sycall_flags = "SYCALL_ARG"argc-1"_64 | " sycall_flags;
 			args64++;
 		}
+		if (index(argtype[argc], "*") != 0 && ptr == 0) {
+			if (sycall_flags == "0")
+				sycall_flags = "SYCALL_ARG_PTR";
+			else
+				sycall_flags = "SYCALL_ARG_PTR | " sycall_flags;
+			ptr = 1;
+		}
 		argname[argc]=$f;
 		f += 2;			# skip name, and any comma
 	}

Index: src/sys/sys/systm.h
diff -u src/sys/sys/systm.h:1.256 src/sys/sys/systm.h:1.257
--- src/sys/sys/systm.h:1.256	Sun Nov 27 11:07:21 2011
+++ src/sys/sys/systm.h	Fri Aug  3 18:08:01 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: systm.h,v 1.256 2011/11/27 11:07:21 martin Exp $	*/
+/*	$NetBSD: systm.h,v 1.257 2012/08/03 18:08:01 matt Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1988, 1991, 1993
@@ -143,6 +143,7 @@ extern int nsysent;
 #define SYCALL_ARG6_64  0x0800000
 #define SYCALL_ARG7_64  0x1000000
 #define SYCALL_NOSYS    0x2000000 /* permanent nosys in sysent[] */
+#define	SYCALL_ARG_PTR	0x3000000 /* at least one argument is a pointer */
 #define SYCALL_RET_64_P(sy)	((sy)->sy_flags & SYCALL_RET_64)
 #define SYCALL_ARG_64_P(sy, n)	((sy)->sy_flags & (SYCALL_ARG0_64 << (n)))
 #define	SYCALL_ARG_64_MASK(sy)	(((sy)->sy_flags >> 17) & 0xff)

Reply via email to