1From dcf30f8225829735e225aa76d1d03bdc372b1de1 Mon Sep 17 00:00:00 2001
2From: Matthew Macy <kmacy@freebsd.org>
3Date: Fri, 7 Nov 2014 22:00:41 -0800
4Subject: [PATCH] initial stab at compiling COMPAT_MACH
5
6(cherry picked from commit 4b74a6db7b2917232414ae57bd2f0cc0c8b443e9)
7Signed-off-by: Scott K <scott@ixsystems.com>
8---
9 sys/compat/mach/Makefile              |  27 +-
10 sys/compat/mach/init_sysent.c         |   5 +
11 sys/compat/mach/mach_bootstrap.c      |  17 +-
12 sys/compat/mach/mach_bootstrap.h      |   2 +-
13 sys/compat/mach/mach_clock.c          |  36 +-
14 sys/compat/mach/mach_clock.h          |   2 +-
15 sys/compat/mach/mach_errno.c          |   4 +-
16 sys/compat/mach/mach_errno.h          |   2 +-
17 sys/compat/mach/mach_exception.c      |  95 ++--
18 sys/compat/mach/mach_exception.h      |   6 +-
19 sys/compat/mach/mach_exec.c           |  36 +-
20 sys/compat/mach/mach_exec.h           |  22 +-
21 sys/compat/mach/mach_host.c           |  25 +-
22 sys/compat/mach/mach_host.h           |   2 +-
23 sys/compat/mach/mach_iokit.c          | 111 +++--
24 sys/compat/mach/mach_iokit.h          |   2 +-
25 sys/compat/mach/mach_message.c        | 176 ++++----
26 sys/compat/mach/mach_message.h        |  24 +-
27 sys/compat/mach/mach_misc.c           |  74 ++--
28 sys/compat/mach/mach_notify.c         |  28 +-
29 sys/compat/mach/mach_notify.h         |   8 +-
30 sys/compat/mach/mach_port.c           | 124 +++---
31 sys/compat/mach/mach_port.h           |  18 +-
32 sys/compat/mach/mach_proto.h          | 276 ++++++++++++
33 sys/compat/mach/mach_semaphore.c      |  61 ++-
34 sys/compat/mach/mach_semaphore.h      |   5 +-
35 sys/compat/mach/mach_services.c       |   1 -
36 sys/compat/mach/mach_services.h       |   1 -
37 sys/compat/mach/mach_services_names.c |   1 -
38 sys/compat/mach/mach_syscall.h        | 136 ++----
39 sys/compat/mach/mach_syscallargs.h    | 258 -----------
40 sys/compat/mach/mach_syscalls.c       | 281 ++++++------
41 sys/compat/mach/mach_sysctl.c         |   3 +-
42 sys/compat/mach/mach_sysctl.h         |   2 +-
43 sys/compat/mach/mach_sysent.c         | 407 ++++++-----------
44 sys/compat/mach/mach_task.c           |  99 +++--
45 sys/compat/mach/mach_task.h           |   2 +-
46 sys/compat/mach/mach_thread.c         |  61 ++-
47 sys/compat/mach/mach_thread.h         |  10 +-
48 sys/compat/mach/mach_types.h          |   8 +-
49 sys/compat/mach/mach_vm.c             | 216 +++++----
50 sys/compat/mach/mach_vm.h             |   6 +-
51 sys/compat/mach/makemachservices.sh   |  20 +-
52 sys/compat/mach/syscalls.c            |   5 +
53 sys/compat/mach/syscalls.conf         |  10 +-
54 sys/compat/mach/syscalls.master       | 301 ++++++-------
55 sys/compat/mach/systrace_args.c       | 804 ++++++++++++++++++++++++++++++++++
56 sys/kern/kern_sig.c                   |  26 +-
57 sys/sys/signal.h                      |  15 +
58 49 files changed, 2223 insertions(+), 1638 deletions(-)
59 create mode 100644 sys/compat/mach/init_sysent.c
60 create mode 100644 sys/compat/mach/mach_proto.h
61 delete mode 100644 sys/compat/mach/mach_syscallargs.h
62 create mode 100644 sys/compat/mach/syscalls.c
63 create mode 100644 sys/compat/mach/systrace_args.c
64
65diff --git a/sys/compat/mach/Makefile b/sys/compat/mach/Makefile
66index 7cc43a8..bbc9ce0 100644
67--- a/sys/compat/mach/Makefile
68+++ b/sys/compat/mach/Makefile
69@@ -1,16 +1,17 @@
70-#	$NetBSD: Makefile,v 1.7 2005/12/11 12:20:20 christos Exp $
71+# Makefile for syscall tables
72+#
73+# $FreeBSD$
74
75-SYSCALL_DEP=	syscalls.conf syscalls.master ../../kern/makesyscalls.sh
76-SYSCALL_OBJS=	mach_sysent.c mach_syscalls.c mach_syscall.h mach_syscallargs.h
77-MACH_DEP=	mach_services.master makemachservices.sh
78-MACH_OBJ=	mach_services.c mach_services.h mach_services_names.c
79+all:
80+	@echo "make sysent only"
81
82-all:	${SYSCALL_OBJS} ${MACH_OBJ}
83+sysent:  mach_sysent.c mach_syscall.h mach_proto.h mach_syscalls.c mach_systrace_args.c
84
85-.include <bsd.sys.mk>		# for HOST_SH
86-
87-${SYSCALL_OBJS}: ${SYSCALL_DEP}
88-	${HOST_SH} ../../kern/makesyscalls.sh syscalls.conf syscalls.master
89-
90-${MACH_OBJ}: ${MACH_DEP}
91-	${HOSH_SH} ./makemachservices.sh
92+mach_sysent.c mach_syscall.h mach_proto.h mach_syscalls.c mach_systrace_args.c: \
93+		../../kern/makesyscalls.sh syscalls.master syscalls.conf
94+	-mv -f mach_sysent.c mach_sysent.c.bak
95+	-mv -f mach_syscall.h mach_syscall.h.bak
96+	-mv -f mach_proto.h mach_proto.h.bak
97+	-mv -f mach_syscalls.c mach_syscalls.c.bak
98+	-mv -f mach_systrace_args.c mach_systrace_args.c.bak
99+	sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf
100diff --git a/sys/compat/mach/init_sysent.c b/sys/compat/mach/init_sysent.c
101new file mode 100644
102index 0000000..68c49ca
103--- /dev/null
104+++ b/sys/compat/mach/init_sysent.c
105@@ -0,0 +1,5 @@
106+/*
107+ * System call switch table.
108+ *
109+ * DO NOT EDIT-- this file is automatically generated.
110+ * $FreeBSD$
111diff --git a/sys/compat/mach/mach_bootstrap.c b/sys/compat/mach/mach_bootstrap.c
112index e40c488..5c21f7d 100644
113--- a/sys/compat/mach/mach_bootstrap.c
114+++ b/sys/compat/mach/mach_bootstrap.c
115@@ -1,5 +1,3 @@
116-/*	$NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin Exp $ */
117-
118 /*-
119  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
120  * All rights reserved.
121@@ -30,14 +28,18 @@
122  */
123
124 #include <sys/cdefs.h>
125-__KERNEL_RCSID(0, "$NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin Exp $");
126+__FBSDID("$FreeBSD$");
127
128-#include <sys/types.h>
129 #include <sys/param.h>
130+#include <sys/types.h>
131+#include <sys/kernel.h>
132+#include <sys/malloc.h>
133+
134 #include <sys/systm.h>
135 #include <sys/signal.h>
136 #include <sys/proc.h>
137
138+
139 #include <compat/mach/mach_types.h>
140 #include <compat/mach/mach_message.h>
141 #include <compat/mach/mach_port.h>
142@@ -45,12 +47,15 @@ __KERNEL_RCSID(0, "$NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin E
143 #include <compat/mach/mach_errno.h>
144 #include <compat/mach/mach_services.h>
145
146+MALLOC_DEFINE(M_MACH, "mach", "mach compatibility subsystem");
147+
148+
149 int
150 mach_bootstrap_look_up(struct mach_trap_args *args)
151 {
152 	mach_bootstrap_look_up_request_t *req = args->smsg;
153 	mach_bootstrap_look_up_reply_t *rep = args->rmsg;
154-	struct lwp *l = args->l;
155+	struct thread *td = args->td;
156 	size_t *msglen = args->rsize;
157 	const char service_name[] = "lookup\021"; /* XXX Why */
158 	int service_name_len;
159@@ -65,7 +70,7 @@ mach_bootstrap_look_up(struct mach_trap_args *args)
160 		return mach_msg_error(args, EINVAL);
161 	*msglen = len;
162
163-	mr = mach_right_get(NULL, l, MACH_PORT_TYPE_DEAD_NAME, 0);
164+	mr = mach_right_get(NULL, td, MACH_PORT_TYPE_DEAD_NAME, 0);
165
166 	mach_set_header(rep, req, *msglen);
167
168diff --git a/sys/compat/mach/mach_bootstrap.h b/sys/compat/mach/mach_bootstrap.h
169index b798ace..536f576 100644
170--- a/sys/compat/mach/mach_bootstrap.h
171+++ b/sys/compat/mach/mach_bootstrap.h
172@@ -1,4 +1,4 @@
173-/*	$NetBSD: mach_bootstrap.h,v 1.5 2008/04/28 20:23:44 martin Exp $ */
174+/*	$FreeBSD$ */
175
176 /*-
177  * Copyright (c) 2002 The NetBSD Foundation, Inc.
178diff --git a/sys/compat/mach/mach_clock.c b/sys/compat/mach/mach_clock.c
179index d802315..f3c9fef 100644
180--- a/sys/compat/mach/mach_clock.c
181+++ b/sys/compat/mach/mach_clock.c
182@@ -1,6 +1,7 @@
183-/*	$NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $ */
184+/*	$FreeBSD$ */
185
186 /*-
187+ * Copyright (c) 2014 Matthew Macy <kmacy@freebsd.org>
188  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
189  * All rights reserved.
190  *
191@@ -30,7 +31,7 @@
192  */
193
194 #include <sys/cdefs.h>
195-__KERNEL_RCSID(0, "$NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $");
196+__FBSDID("$FreeBSD$");
197
198 #include <sys/types.h>
199 #include <sys/param.h>
200@@ -45,10 +46,21 @@ __KERNEL_RCSID(0, "$NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $
201 #include <compat/mach/mach_port.h>
202 #include <compat/mach/mach_clock.h>
203 #include <compat/mach/mach_services.h>
204-#include <compat/mach/mach_syscallargs.h>
205+#include <compat/mach/mach_proto.h>
206+
207+#define timespecsub_netbsd(tsp, usp, vsp)                               \
208+        do {                                                            \
209+                (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;          \
210+                (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;       \
211+                if ((vsp)->tv_nsec < 0) {                               \
212+                        (vsp)->tv_sec--;                                \
213+                        (vsp)->tv_nsec += 1000000000L;                  \
214+                }                                                       \
215+        } while (/* CONSTCOND */ 0)
216+
217
218 int
219-mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_args *uap, register_t *retval)
220+sys_mach_clock_sleep_trap(struct thread *td, struct mach_clock_sleep_trap_args *uap)
221 {
222 	/* {
223 		syscallarg(mach_clock_port_t) clock_name;
224@@ -63,12 +75,12 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_
225 	int error;
226 	int ticks;
227
228-	mts.tv_sec = SCARG(uap, sleep_sec);
229-	mts.tv_nsec = SCARG(uap, sleep_nsec);
230+	mts.tv_sec = uap->sleep_sec;
231+	mts.tv_nsec = uap->sleep_nsec;
232
233-	if (SCARG(uap, sleep_type) == MACH_TIME_ABSOLUTE) {
234+	if (uap->sleep_type == MACH_TIME_ABSOLUTE) {
235 		nanotime(&cts);
236-		timespecsub(&mts, &cts, &tts);
237+		timespecsub_netbsd(&mts, &cts, &tts);
238 	} else {
239 		tts.tv_sec = mts.tv_sec;
240 		tts.tv_nsec = mts.tv_nsec;
241@@ -79,11 +91,11 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_
242
243 	tsleep(&dontcare, PZERO|PCATCH, "sleep", ticks);
244
245-	if (SCARG(uap, wakeup_time) != NULL) {
246+	if (uap->wakeup_time != NULL) {
247 		nanotime(&cts);
248 		mcts.tv_sec = cts.tv_sec;
249 		mcts.tv_nsec = cts.tv_nsec;
250-		error = copyout(&mcts, SCARG(uap, wakeup_time), sizeof(mcts));
251+		error = copyout(&mcts, uap->wakeup_time, sizeof(mcts));
252 		if (error != 0)
253 			return error;
254 	}
255@@ -92,7 +104,7 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_
256 }
257
258 int
259-mach_sys_timebase_info(struct lwp *l, const struct mach_sys_timebase_info_args *uap, register_t *retval)
260+sys_mach_timebase_info(struct thread *td, struct mach_timebase_info_args *uap)
261 {
262 	/* {
263 		syscallarg(mach_timebase_info_t) info;
264@@ -104,7 +116,7 @@ mach_sys_timebase_info(struct lwp *l, const struct mach_sys_timebase_info_args *
265 	info.numer = 4000000000UL;
266 	info.denom = 75189611UL;
267
268-	if ((error = copyout(&info, (void *)SCARG(uap, info),
269+	if ((error = copyout(&info, (void *)uap->info,
270 	    sizeof(info))) != 0)
271 		return error;
272
273diff --git a/sys/compat/mach/mach_clock.h b/sys/compat/mach/mach_clock.h
274index ea3584e..8347837 100644
275--- a/sys/compat/mach/mach_clock.h
276+++ b/sys/compat/mach/mach_clock.h
277@@ -1,4 +1,4 @@
278-/*	$NetBSD: mach_clock.h,v 1.8 2008/04/28 20:23:44 martin Exp $ */
279+/*	$FreeBSD$ */
280
281 /*-
282  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
283diff --git a/sys/compat/mach/mach_errno.c b/sys/compat/mach/mach_errno.c
284index 7e59e98..12919f65 100644
285--- a/sys/compat/mach/mach_errno.c
286+++ b/sys/compat/mach/mach_errno.c
287@@ -1,4 +1,4 @@
288-/*	$NetBSD: mach_errno.c,v 1.18 2008/04/28 20:23:44 martin Exp $ */
289+/*	$FreeBSD$ */
290
291 /*-
292  * Copyright (c) 2002 The NetBSD Foundation, Inc.
293@@ -30,11 +30,9 @@
294  */
295
296 #include <sys/cdefs.h>
297-__KERNEL_RCSID(0, "$NetBSD: mach_errno.c,v 1.18 2008/04/28 20:23:44 martin Exp $");
298
299 #include <sys/types.h>
300 #include <sys/systm.h>
301-#include <sys/null.h>
302 #include <sys/queue.h>
303 #include <sys/errno.h>
304
305diff --git a/sys/compat/mach/mach_errno.h b/sys/compat/mach/mach_errno.h
306index 8a45e5c..d9a54dc 100644
307--- a/sys/compat/mach/mach_errno.h
308+++ b/sys/compat/mach/mach_errno.h
309@@ -1,4 +1,4 @@
310-/*	$NetBSD: mach_errno.h,v 1.9 2008/04/28 20:23:44 martin Exp $ */
311+/*	$FreeBSD$ */
312
313 /*-
314  * Copyright (c) 2002 The NetBSD Foundation, Inc.
315diff --git a/sys/compat/mach/mach_exception.c b/sys/compat/mach/mach_exception.c
316index 907e122..ffda2ef 100644
317--- a/sys/compat/mach/mach_exception.c
318+++ b/sys/compat/mach/mach_exception.c
319@@ -1,5 +1,3 @@
320-/*	$NetBSD: mach_exception.c,v 1.14 2009/03/14 21:04:18 dsl Exp $ */
321-
322 /*-
323  * Copyright (c) 2003 The NetBSD Foundation, Inc.
324  * All rights reserved.
325@@ -30,20 +28,15 @@
326  */
327
328 #include <sys/cdefs.h>
329-__KERNEL_RCSID(0, "$NetBSD: mach_exception.c,v 1.14 2009/03/14 21:04:18 dsl Exp $");
330-
331-#include "opt_compat_darwin.h"
332+__FBSDID("$FreeBSD$");
333
334 #include <sys/types.h>
335 #include <sys/param.h>
336 #include <sys/signal.h>
337+#include <sys/systm.h>
338 #include <sys/proc.h>
339 #include <sys/malloc.h>
340
341-#ifdef COMPAT_DARWIN
342-#include <compat/darwin/darwin_exec.h>
343-#endif
344-
345 #include <compat/mach/mach_types.h>
346 #include <compat/mach/mach_exec.h>
347 #include <compat/mach/mach_errno.h>
348@@ -68,23 +61,23 @@ static void mach_siginfo_to_exception(const struct ksiginfo *, int *);
349  * mach_trapinfo1 and handle signals if it gets a non zero return value.
350  */
351 void
352-mach_trapsignal(struct lwp *l, struct ksiginfo *ksi)
353+mach_trapsignal(struct thread *td, struct ksiginfo *ksi)
354 {
355-	if (mach_trapsignal1(l, ksi) != 0)
356-		trapsignal(l, ksi);
357+	if (mach_trapsignal1(td, ksi) != 0)
358+		trapsignal(td, ksi);
359 	return;
360 }
361
362 int
363-mach_trapsignal1(struct lwp *l, struct ksiginfo *ksi)
364+mach_trapsignal1(struct thread *td, struct ksiginfo *ksi)
365 {
366-	struct proc *p = l->l_proc;
367+	struct proc *p = td->td_proc;
368 	struct mach_emuldata *med;
369 	int exc_no;
370 	int code[2];
371
372 	/* Don't inhinbit non maskable signals */
373-	if (sigprop[ksi->ksi_signo] & SA_CANTMASK)
374+	if (sigprop(ksi->ksi_signo) & SA_CANTMASK)
375 		return EINVAL;
376
377 	med = (struct mach_emuldata *)p->p_emuldata;
378@@ -110,12 +103,12 @@ mach_trapsignal1(struct lwp *l, struct ksiginfo *ksi)
379
380 	mach_siginfo_to_exception(ksi, code);
381
382-	return mach_exception(l, exc_no, code);
383+	return mach_exception(td, exc_no, code);
384 }
385
386 int
387-mach_exception(struct lwp *exc_l, int exc, int *code)
388-	/* exc_l:	 currently running lwp */
389+mach_exception(struct thread *exc_td, int exc, int *code)
390+	/* exc_td:	 currently running thread */
391 {
392 	int behavior, flavor;
393 	mach_msg_header_t *msgh;
394@@ -125,7 +118,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
395 	struct mach_lwp_emuldata *exc_mle;
396 	struct mach_emuldata *catcher_med;
397 	struct mach_right *kernel_mr;
398-	struct lwp *catcher_l;	/* The lwp catching the exception */
399+	struct thread *catcher_td;	/* The lwp catching the exception */
400 	struct mach_right *exc_task;
401 	struct mach_right *exc_thread;
402 	struct mach_port *exc_port;
403@@ -133,14 +126,14 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
404 	int error = 0;
405
406 #ifdef DIAGNOSTIC
407-	if (exc_l == NULL) {
408-		printf("mach_exception: exc_l = %p\n", exc_l);
409+	if (exc_td == NULL) {
410+		printf("mach_exception: exc_td = %p\n", exc_td);
411 		return ESRCH;
412 	}
413 #endif
414 #ifdef DEBUG_MACH
415 	printf("mach_exception: %d.%d, exc %d, code (%d, %d)\n",
416-	    exc_l->l_proc->p_pid, exc_l->l_lid, exc, code[0], code[1]);
417+	    exc_td->td_proc->p_pid, exc_td->td_lid, exc, code[0], code[1]);
418 #endif
419
420 	/*
421@@ -148,24 +141,22 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
422 	 * the process at the time it dies.
423 	 */
424 	if (mach_exception_hang) {
425-		struct proc *p = exc_l->l_proc;
426+		struct proc *p = exc_td->td_proc;
427
428-		sigminusset(&contsigmask, &exc_l->l_sigpendset->sp_set);
429-		lwp_lock(exc_l);
430+		sigminusset(&contsigmask, &exc_td->td_sigpendset->sp_set);
431+		thread_lock(exc_td);
432 		p->p_pptr->p_nstopchild++;
433 		p->p_stat = SSTOP;
434-		exc_l->l_stat = LSSTOP;
435+		exc_td->td_stat = LSSTOP;
436 		p->p_nrlwps--;
437-		KERNEL_UNLOCK_ALL(exc_l, &exc_l->l_biglocks);
438-		mi_switch(exc_l);
439-		KERNEL_LOCK(exc_l->l_biglocks, exc_l);
440+		mi_switch(exc_td);
441 	}
442
443 	/*
444 	 * No exception if there is no exception port or if it has no receiver
445 	 */
446-	exc_mle = exc_l->l_emuldata;
447-	exc_med = exc_l->l_proc->p_emuldata;
448+	exc_mle = exc_td->td_emuldata;
449+	exc_med = exc_td->td_proc->p_emuldata;
450 	if ((exc_port = exc_med->med_exc[exc]) == NULL)
451 		return EINVAL;
452
453@@ -177,14 +168,14 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
454
455 #ifdef DEBUG_MACH
456 	printf("catcher is %d.%d, state %d\n",
457-	    exc_port->mp_recv->mr_lwp->l_proc->p_pid,
458+	    exc_port->mp_recv->mr_lwp->td_proc->p_pid,
459 	    exc_port->mp_recv->mr_lwp->l_lid,
460-	    exc_port->mp_recv->mr_lwp->l_proc->p_stat);
461+	    exc_port->mp_recv->mr_lwp->td_proc->p_stat);
462 #endif
463 	/*
464 	 * Don't send exceptions to dying processes
465 	 */
466-	if (P_ZOMBIE(exc_port->mp_recv->mr_lwp->l_proc)) {
467+	if (P_ZOMBIE(exc_port->mp_recv->mr_lwp->td_proc)) {
468 		error = ESRCH;
469 		goto out;
470 	}
471@@ -209,8 +200,8 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
472 	 * a dying parent, a signal is sent instead of the
473 	 * notification, this fixes the problem.
474 	 */
475-	if ((exc_l->l_proc->p_slflag & PSL_TRACED) &&
476-	    (exc_l->l_proc->p_pptr->p_sflag & PS_WEXIT)) {
477+	if ((exc_td->td_proc->p_slflag & PSL_TRACED) &&
478+	    (exc_td->td_proc->p_pptr->p_sflag & PS_WEXIT)) {
479 #ifdef DEBUG_MACH
480 		printf("mach_exception: deadlock avoided\n");
481 #endif
482@@ -233,22 +224,22 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
483 	 * We want the port names in the target process, that is,
484 	 * the process with receive right for exc_port.
485 	 */
486-	catcher_l = exc_port->mp_recv->mr_lwp;
487-	catcher_med = catcher_l->l_proc->p_emuldata;
488-	exc_mr = mach_right_get(exc_port, catcher_l, MACH_PORT_TYPE_SEND, 0);
489+	catcher_td = exc_port->mp_recv->mr_lwp;
490+	catcher_med = catcher_td->td_proc->p_emuldata;
491+	exc_mr = mach_right_get(exc_port, catcher_td, MACH_PORT_TYPE_SEND, 0);
492 	kernel_mr = mach_right_get(catcher_med->med_kernel,
493-	    catcher_l, MACH_PORT_TYPE_SEND, 0);
494+	    catcher_td, MACH_PORT_TYPE_SEND, 0);
495
496 	exc_task = mach_right_get(exc_med->med_kernel,
497-	    catcher_l, MACH_PORT_TYPE_SEND, 0);
498+	    catcher_td, MACH_PORT_TYPE_SEND, 0);
499 	exc_thread = mach_right_get(exc_mle->mle_kernel,
500-	    catcher_l, MACH_PORT_TYPE_SEND, 0);
501+	    catcher_td, MACH_PORT_TYPE_SEND, 0);
502
503 	switch (behavior) {
504 	case MACH_EXCEPTION_DEFAULT: {
505 		mach_exception_raise_request_t *req;
506
507-		req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
508+		req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
509 		msglen = sizeof(*req);
510 		msgh = (mach_msg_header_t *)req;
511
512@@ -277,7 +268,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
513 		mach_exception_raise_state_request_t *req;
514 		int dc;
515
516-		req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
517+		req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
518 		msglen = sizeof(*req);
519 		msgh = (mach_msg_header_t *)req;
520
521@@ -293,7 +284,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
522 		req->req_codecount = 2;
523 		memcpy(&req->req_code[0], code, sizeof(req->req_code));
524 		req->req_flavor = flavor;
525-		mach_thread_get_state_machdep(exc_l,
526+		mach_thread_get_state_machdep(exc_td,
527 		    flavor, req->req_state, &dc);
528
529 		msglen = msglen -
530@@ -308,7 +299,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
531 		mach_exception_raise_state_identity_request_t *req;
532 		int dc;
533
534-		req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
535+		req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
536 		msglen = sizeof(*req);
537 		msgh = (mach_msg_header_t *)req;
538
539@@ -329,7 +320,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
540 		req->req_codecount = 2;
541 		memcpy(&req->req_code[0], code, sizeof(req->req_code));
542 		req->req_flavor = flavor;
543-		mach_thread_get_state_machdep(exc_l,
544+		mach_thread_get_state_machdep(exc_td,
545 		    flavor, req->req_state, &dc);
546
547 		msglen = msglen -
548@@ -362,7 +353,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
549 	 */
550 	if (((exc_port = exc_med->med_exc[exc]) == NULL) ||
551 	    (exc_port->mp_recv == NULL) ||
552-	    (P_ZOMBIE(exc_port->mp_recv->mr_lwp->l_proc))) {
553+	    (P_ZOMBIE(exc_port->mp_recv->mr_lwp->td_proc))) {
554 		error = ESRCH;
555 		goto out;
556 	}
557@@ -376,12 +367,12 @@ mach_exception(struct lwp *exc_l, int exc, int *code)
558 	 */
559 #ifdef DEBUG_MACH
560 	printf("mach_exception: %d.%d sleep on catcher_med->med_exclock = %p\n",
561-	    exc_l->l_proc->p_pid, exc_l->l_lid, &catcher_med->med_exclock);
562+	    exc_td->td_proc->p_pid, exc_td->td_lid, &catcher_med->med_exclock);
563 #endif
564 	error = tsleep(&catcher_med->med_exclock, PZERO, "mach_exc", 0);
565 #ifdef DEBUG_MACH
566 	printf("mach_exception: %d.%d resumed, error = %d\n",
567-	    exc_l->l_proc->p_pid, exc_l->l_lid, error);
568+	    exc_td->td_proc->p_pid, exc_td->td_lid, error);
569 #endif
570
571 	/*
572@@ -470,7 +461,7 @@ mach_siginfo_to_exception(const struct ksiginfo *ksi, int *code)
573 int
574 mach_exception_raise(struct mach_trap_args *args)
575 {
576-	struct lwp *l = args->l;
577+	struct thread *td = args->td;
578 	mach_exception_raise_reply_t *rep;
579 	struct mach_emuldata *med;
580
581@@ -493,7 +484,7 @@ mach_exception_raise(struct mach_trap_args *args)
582 	if (rep->rep_retval != 0)
583 		return 0;
584
585-	med = l->l_proc->p_emuldata;
586+	med = td->td_proc->p_emuldata;
587
588 	/*
589 	 * Check for unexpected exception acknowledge, whereas
590diff --git a/sys/compat/mach/mach_exception.h b/sys/compat/mach/mach_exception.h
591index de1e630..6ab6ec9 100644
592--- a/sys/compat/mach/mach_exception.h
593+++ b/sys/compat/mach/mach_exception.h
594@@ -152,9 +152,9 @@ struct mach_exc_info {
595 	int mei_behavior;
596 };
597
598-void mach_trapsignal(struct lwp *, struct ksiginfo *);
599-int mach_trapsignal1(struct lwp *, struct ksiginfo *);
600-int mach_exception(struct lwp *, int, int *);
601+void mach_trapsignal(struct thread *, struct ksiginfo *);
602+int mach_trapsignal1(struct thread *, struct ksiginfo *);
603+int mach_exception(struct thread *, int, int *);
604
605 #endif /* _MACH_EXCEPTION_H_ */
606
607diff --git a/sys/compat/mach/mach_exec.c b/sys/compat/mach/mach_exec.c
608index ac46629..d2009b9 100644
609--- a/sys/compat/mach/mach_exec.c
610+++ b/sys/compat/mach/mach_exec.c
611@@ -1,4 +1,4 @@
612-/*	$NetBSD: mach_exec.c,v 1.74 2010/07/25 11:25:57 jym Exp $	 */
613+/*	$FreeBSD$ */
614
615 /*-
616  * Copyright (c) 2001-2003 The NetBSD Foundation, Inc.
617@@ -30,23 +30,17 @@
618  */
619
620 #include <sys/cdefs.h>
621-__KERNEL_RCSID(0, "$NetBSD: mach_exec.c,v 1.74 2010/07/25 11:25:57 jym Exp $");
622-
623-#include "opt_syscall_debug.h"
624+__FBSDID("$FreeBSD$");
625
626 #include <sys/param.h>
627 #include <sys/systm.h>
628 #include <sys/proc.h>
629 #include <sys/exec.h>
630 #include <sys/queue.h>
631-#include <sys/exec_macho.h>
632 #include <sys/malloc.h>
633
634+#include <sys/sysent.h>
635 #include <sys/syscall.h>
636-#include <sys/syscallvar.h>
637-
638-#include <uvm/uvm_extern.h>
639-#include <uvm/uvm_param.h>
640
641 #include <compat/mach/mach_types.h>
642 #include <compat/mach/mach_message.h>
643@@ -125,7 +119,7 @@ struct emul emul_mach = {
644  * emulation, and it probably contains Darwin specific bits.
645  */
646 int
647-exec_mach_copyargs(struct lwp *l, struct exec_package *pack, struct ps_strings *arginfo, char **stackp, void *argp)
648+exec_mach_copyargs(struct thread *l, struct exec_package *pack, struct ps_strings *arginfo, char **stackp, void *argp)
649 {
650 	struct exec_macho_emul_arg *emea;
651 	struct exec_macho_object_header *macho_hdr;
652@@ -189,7 +183,7 @@ mach_e_proc_exec(struct proc *p, struct exec_package *epp)
653 	mach_e_proc_init(p);
654
655 	if (p->p_emul != epp->ep_esch->es_emul) {
656-		struct lwp *l = LIST_FIRST(&p->p_lwps);
657+		struct thread *l = LIST_FIRST(&p->p_lwps);
658 		KASSERT(l != NULL);
659 		mach_e_lwp_fork(NULL, l);
660 	}
661@@ -198,14 +192,14 @@ mach_e_proc_exec(struct proc *p, struct exec_package *epp)
662 }
663
664 void
665-mach_e_proc_fork(struct proc *p2, struct lwp *l1, int forkflags)
666+mach_e_proc_fork(struct proc *p2, struct thread *l1, int forkflags)
667 {
668 	mach_e_proc_fork1(p2, l1, 1);
669 	return;
670 }
671
672 void
673-mach_e_proc_fork1(struct proc *p2, struct lwp *l1, int allocate)
674+mach_e_proc_fork1(struct proc *p2, struct thread *l1, int allocate)
675 {
676 	struct mach_emuldata *med1;
677 	struct mach_emuldata *med2;
678@@ -221,7 +215,7 @@ mach_e_proc_fork1(struct proc *p2, struct lwp *l1, int allocate)
679 	mach_e_proc_init(p2);
680
681 	med1 = p2->p_emuldata;
682-	med2 = l1->l_proc->p_emuldata;
683+	med2 = td1->td_proc->p_emuldata;
684
685 	/*
686 	 * Exception ports are inherited between forks,
687@@ -267,7 +261,7 @@ mach_e_proc_init(struct proc *p)
688 			printf("mach_emuldata allocated for non Mach binary\n");
689 #endif
690 		p->p_emuldata = malloc(sizeof(struct mach_emuldata),
691-		    M_EMULDATA, M_WAITOK | M_ZERO);
692+		    M_MACH, M_WAITOK | M_ZERO);
693 	}
694
695 	med = (struct mach_emuldata *)p->p_emuldata;
696@@ -347,7 +341,7 @@ mach_e_proc_exit(struct proc *p)
697 {
698 	struct mach_emuldata *med;
699 	struct mach_right *mr;
700-	struct lwp *l;
701+	struct thread *l;
702 	int i;
703
704 	/* There is only one lwp remaining... */
705@@ -391,18 +385,18 @@ mach_e_proc_exit(struct proc *p)
706
707 	rw_destroy(&med->med_exclock);
708 	rw_destroy(&med->med_rightlock);
709-	free(med, M_EMULDATA);
710+	free(med, M_MACH);
711 	p->p_emuldata = NULL;
712
713 	return;
714 }
715
716 void
717-mach_e_lwp_fork(struct lwp *l1, struct lwp *l2)
718+mach_e_lwp_fork(struct thread *l1, struct thread *l2)
719 {
720 	struct mach_lwp_emuldata *mle;
721
722-	mle = malloc(sizeof(*mle), M_EMULDATA, M_WAITOK);
723+	mle = malloc(sizeof(*mle), M_MACH, M_WAITOK);
724 	l2->l_emuldata = mle;
725
726 	mle->mle_kernel = mach_port_get();
727@@ -421,7 +415,7 @@ mach_e_lwp_fork(struct lwp *l1, struct lwp *l2)
728 }
729
730 void
731-mach_e_lwp_exit(struct lwp *l)
732+mach_e_lwp_exit(struct thread *l)
733 {
734 	struct mach_lwp_emuldata *mle;
735
736@@ -439,7 +433,7 @@ mach_e_lwp_exit(struct lwp *l)
737 	mle->mle_kernel->mp_datatype = MACH_MP_NONE;
738 	MACH_PORT_UNREF(mle->mle_kernel);
739
740-	free(mle, M_EMULDATA);
741+	free(mle, M_MACH);
742 	l->l_emuldata = NULL;
743
744 	return;
745diff --git a/sys/compat/mach/mach_exec.h b/sys/compat/mach/mach_exec.h
746index 06a8914..28674f1 100644
747--- a/sys/compat/mach/mach_exec.h
748+++ b/sys/compat/mach/mach_exec.h
749@@ -1,4 +1,4 @@
750-/*	$NetBSD: mach_exec.h,v 1.35 2011/03/05 23:51:47 joerg Exp $	 */
751+/*	$FreeBSD$ */
752
753 /*-
754  * Copyright (c) 2001 The NetBSD Foundation, Inc.
755@@ -31,8 +31,8 @@
756
757 #ifndef	_MACH_EXEC_H_
758 #define	_MACH_EXEC_H_
759-
760-#include <uvm/uvm_extern.h>
761+#include <sys/lock.h>
762+#include <sys/rwlock.h>
763
764 #include <compat/mach/mach_types.h>
765 #include <compat/mach/mach_message.h>
766@@ -44,7 +44,7 @@ struct mach_emuldata {
767 	int med_inited;			/* Is this structure initialized? */
768 	int med_thpri;			/* Saved priority */
769 	LIST_HEAD(med_right, mach_right) med_right;
770-	krwlock_t med_rightlock;	/* process right list and lock */
771+	struct rwlock med_rightlock;	/* process right list and lock */
772 	mach_port_t med_nextright;	/* next unused right */
773
774 	struct mach_port *med_bootstrap;/* task bootstrap port */
775@@ -54,24 +54,24 @@ struct mach_emuldata {
776
777 	int med_dirty_thid;		/* Thread id not yet initialized */
778 	int med_suspend;		/* Suspend semaphore */
779-	krwlock_t med_exclock;		/* Process exception handler lock */
780+	struct rwlock med_exclock;		/* Process exception handler lock */
781 };
782
783-struct mach_lwp_emuldata {
784+struct mach_thread_emuldata {
785 	struct mach_port *mle_kernel;	/* Thread's kernel port */
786 };
787
788 struct ps_strings;
789-int exec_mach_copyargs(struct lwp *, struct exec_package *,
790+int exec_mach_copyargs(struct thread *, struct exec_package *,
791     struct ps_strings *, char **, void *);
792 int exec_mach_probe(const char **);
793 void mach_e_proc_init(struct proc *);
794 void mach_e_proc_exit(struct proc *);
795 void mach_e_proc_exec(struct proc *, struct exec_package *);
796-void mach_e_proc_fork(struct proc *, struct lwp *, int);
797-void mach_e_proc_fork1(struct proc *, struct lwp *, int);
798-void mach_e_lwp_fork(struct lwp *, struct lwp *);
799-void mach_e_lwp_exit(struct lwp *);
800+void mach_e_proc_fork(struct proc *, struct thread *, int);
801+void mach_e_proc_fork1(struct proc *, struct thread *, int);
802+void mach_e_lwp_fork(struct thread *, struct thread *);
803+void mach_e_lwp_exit(struct thread *);
804
805 extern struct emul emul_mach;
806
807diff --git a/sys/compat/mach/mach_host.c b/sys/compat/mach/mach_host.c
808index 767348c..c9b7ffc 100644
809--- a/sys/compat/mach/mach_host.c
810+++ b/sys/compat/mach/mach_host.c
811@@ -1,5 +1,3 @@
812-/*	$NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $ */
813-
814 /*-
815  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
816  * All rights reserved.
817@@ -30,7 +28,7 @@
818  */
819
820 #include <sys/cdefs.h>
821-__KERNEL_RCSID(0, "$NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $");
822+__FBSDID("$FreeBSD$");
823
824 #include <sys/types.h>
825 #include <sys/malloc.h>
826@@ -40,9 +38,6 @@ __KERNEL_RCSID(0, "$NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $"
827 #include <sys/signal.h>
828 #include <sys/proc.h>
829
830-#include <uvm/uvm_extern.h>
831-#include <uvm/uvm_param.h>
832-
833 #include <compat/mach/mach_types.h>
834 #include <compat/mach/mach_host.h>
835 #include <compat/mach/mach_port.h>
836@@ -144,10 +139,10 @@ mach_host_get_clock_service(struct mach_trap_args *args)
837 	mach_host_get_clock_service_request_t *req = args->smsg;
838 	mach_host_get_clock_service_reply_t *rep = args->rmsg;
839 	size_t *msglen = args->rsize;
840-	struct lwp *l = args->l;
841+	struct thread *td = args->td;
842 	struct mach_right *mr;
843
844-	mr = mach_right_get(mach_clock_port, l, MACH_PORT_TYPE_SEND, 0);
845+	mr = mach_right_get(mach_clock_port, td, MACH_PORT_TYPE_SEND, 0);
846
847 	*msglen = sizeof(*rep);
848 	mach_set_header(rep, req, *msglen);
849@@ -179,10 +174,10 @@ mach_host_get_io_master(struct mach_trap_args *args)
850 	mach_host_get_io_master_request_t *req = args->smsg;
851 	mach_host_get_io_master_reply_t *rep = args->rmsg;
852 	size_t *msglen = args->rsize;
853-	struct lwp *l = args->l;
854+	struct thread *td = args->td;
855 	struct mach_right *mr;
856
857-	mr = mach_right_get(mach_io_master_port, l, MACH_PORT_TYPE_SEND, 0);
858+	mr = mach_right_get(mach_io_master_port, td, MACH_PORT_TYPE_SEND, 0);
859
860 	*msglen = sizeof(*rep);
861 	mach_set_header(rep, req, *msglen);
862@@ -198,12 +193,12 @@ mach_processor_set_default(struct mach_trap_args *args)
863 	mach_processor_set_default_request_t *req = args->smsg;
864 	mach_processor_set_default_reply_t *rep = args->rmsg;
865 	size_t *msglen = args->rsize;
866-	struct lwp *l = args->l;
867+	struct thread *td = args->td;
868 	struct mach_right *mr;
869 	struct mach_port *mp;
870
871 	mp = mach_port_get();
872-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
873+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
874
875 	*msglen = sizeof(*rep);
876 	mach_set_header(rep, req, *msglen);
877@@ -219,18 +214,18 @@ mach_host_processor_set_priv(struct mach_trap_args *args)
878 	mach_host_processor_set_priv_request_t *req = args->smsg;
879 	mach_host_processor_set_priv_reply_t *rep = args->rmsg;
880 	size_t *msglen = args->rsize;
881-	struct lwp *l = args->l;
882+	struct thread *td = args->td;
883 	mach_port_t mn;
884 	struct mach_right *mr;
885 	struct mach_right *smr;
886 	struct mach_port *smp;
887
888 	mn = req->req_set.name;
889-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
890+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
891 		return mach_msg_error(args, EINVAL);
892
893 	smp = mach_port_get();
894-	smr = mach_right_get(smp, l, MACH_PORT_TYPE_SEND, 0);
895+	smr = mach_right_get(smp, td, MACH_PORT_TYPE_SEND, 0);
896
897 	*msglen = sizeof(*rep);
898 	mach_set_header(rep, req, *msglen);
899diff --git a/sys/compat/mach/mach_host.h b/sys/compat/mach/mach_host.h
900index ed57c90..abbab10 100644
901--- a/sys/compat/mach/mach_host.h
902+++ b/sys/compat/mach/mach_host.h
903@@ -1,4 +1,4 @@
904-/*	$NetBSD: mach_host.h,v 1.17 2008/04/28 20:23:44 martin Exp $ */
905+/*	$FreeBSD$ */
906
907 /*-
908  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
909diff --git a/sys/compat/mach/mach_iokit.c b/sys/compat/mach/mach_iokit.c
910index 502ea2b..df5ec36 100644
911--- a/sys/compat/mach/mach_iokit.c
912+++ b/sys/compat/mach/mach_iokit.c
913@@ -1,5 +1,3 @@
914-/*	$NetBSD: mach_iokit.c,v 1.36 2008/04/28 20:23:44 martin Exp $ */
915-
916 /*-
917  * Copyright (c) 2003 The NetBSD Foundation, Inc.
918  * All rights reserved.
919@@ -29,9 +27,8 @@
920  * POSSIBILITY OF SUCH DAMAGE.
921  */
922
923-#include "opt_compat_darwin.h"
924 #include <sys/cdefs.h>
925-__KERNEL_RCSID(0, "$NetBSD: mach_iokit.c,v 1.36 2008/04/28 20:23:44 martin Exp $");
926+__FBSDID("$FreeBSD$");
927
928 #include <sys/types.h>
929 #include <sys/param.h>
930@@ -87,7 +84,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args)
931 	mach_io_service_get_matching_services_request_t *req = args->smsg;
932 	mach_io_service_get_matching_services_reply_t *rep = args->rmsg;
933 	size_t *msglen = args->rsize;
934-	struct lwp *l = args->l;
935+	struct thread *td = args->td;
936 	struct mach_port *mp;
937 	struct mach_right *mr;
938 	struct mach_iokit_devclass *mid;
939@@ -103,7 +100,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args)
940
941 	mp = mach_port_get();
942 	mp->mp_flags |= MACH_MP_INKERNEL;
943-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
944+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
945
946 	mp->mp_data = NULL;
947 	i = 0;
948@@ -114,7 +111,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args)
949
950 			size = sizeof(*mdi)
951 			    + sizeof(struct mach_device_iterator *);
952-			mdi = malloc(size, M_EMULDATA, M_WAITOK);
953+			mdi = malloc(size, M_MACH, M_WAITOK);
954 			mdi->mdi_devices[0] = mid;
955 			mdi->mdi_devices[1] = NULL;
956 			mdi->mdi_current = 0;
957@@ -141,14 +138,14 @@ mach_io_iterator_next(struct mach_trap_args *args)
958 	mach_io_iterator_next_request_t *req = args->smsg;
959 	mach_io_iterator_next_reply_t *rep = args->rmsg;
960 	size_t *msglen = args->rsize;
961-	struct lwp *l = args->l;
962+	struct thread *td = args->td;
963 	struct mach_port *mp;
964 	struct mach_right *mr;
965 	struct mach_device_iterator *mdi;
966 	mach_port_t mn;
967
968 	mn = req->req_msgh.msgh_remote_port;
969-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
970+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
971 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
972
973 	if (mr->mr_port->mp_datatype != MACH_MP_DEVICE_ITERATOR)
974@@ -165,7 +162,7 @@ mach_io_iterator_next(struct mach_trap_args *args)
975 	mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS;
976 	mp->mp_data = mdi->mdi_devices[mdi->mdi_current++];
977
978-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
979+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
980
981 	*msglen = sizeof(*rep);
982 	mach_set_header(rep, req, *msglen);
983@@ -181,13 +178,13 @@ mach_io_service_open(struct mach_trap_args *args)
984 	mach_io_service_open_request_t *req = args->smsg;
985 	mach_io_service_open_reply_t *rep = args->rmsg;
986 	size_t *msglen = args->rsize;
987-	struct lwp *l = args->l;
988+	struct thread *td = args->td;
989 	struct mach_port *mp;
990 	struct mach_right *mr;
991 	mach_port_t mn;
992
993 	mn = req->req_msgh.msgh_remote_port;
994-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
995+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
996 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
997
998 	mp = mach_port_get();
999@@ -196,7 +193,7 @@ mach_io_service_open(struct mach_trap_args *args)
1000 		mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS;
1001 		mp->mp_data = mr->mr_port->mp_data;
1002 	}
1003-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1004+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1005
1006 	*msglen = sizeof(*rep);
1007 	mach_set_header(rep, req, *msglen);
1008@@ -210,7 +207,7 @@ int
1009 mach_io_connect_method_scalari_scalaro(struct mach_trap_args *args)
1010 {
1011 	mach_io_connect_method_scalari_scalaro_request_t *req = args->smsg;
1012-	struct lwp *l = args->l;
1013+	struct thread *td = args->td;
1014 	mach_port_t mn;
1015 	struct mach_right *mr;
1016 	struct mach_iokit_devclass *mid;
1017@@ -231,7 +228,7 @@ mach_io_connect_method_scalari_scalaro(struct mach_trap_args *args)
1018 		return mach_msg_error(args, EINVAL);
1019
1020 	mn = req->req_msgh.msgh_remote_port;
1021-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1022+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1023 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1024
1025 	if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) {
1026@@ -252,13 +249,13 @@ mach_io_connect_get_service(struct mach_trap_args *args)
1027 	mach_io_connect_get_service_request_t *req = args->smsg;
1028 	mach_io_connect_get_service_reply_t *rep = args->rmsg;
1029 	size_t *msglen = args->rsize;
1030-	struct lwp *l = args->l;
1031+	struct thread *td = args->td;
1032 	struct mach_port *mp;
1033 	struct mach_right *mr;
1034 	mach_port_t mn;
1035
1036 	mn = req->req_msgh.msgh_remote_port;
1037-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1038+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1039 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1040
1041 	mp = mach_port_get();
1042@@ -267,7 +264,7 @@ mach_io_connect_get_service(struct mach_trap_args *args)
1043 		mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS;
1044 		mp->mp_data = mr->mr_port->mp_data;
1045 	}
1046-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1047+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1048
1049 	/*
1050 	 * XXX Bump the refcount to workaround an emulation bug
1051@@ -289,7 +286,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args)
1052 	mach_io_registry_entry_create_iterator_request_t *req = args->smsg;
1053 	mach_io_registry_entry_create_iterator_reply_t *rep = args->rmsg;
1054 	size_t *msglen = args->rsize;
1055-	struct lwp *l = args->l;
1056+	struct thread *td = args->td;
1057 	struct mach_port *mp;
1058 	mach_port_t mn;
1059 	struct mach_right *mr;
1060@@ -310,7 +307,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args)
1061 		return mach_msg_error(args, EINVAL);
1062
1063 	mn = req->req_msgh.msgh_remote_port;
1064-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1065+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1066 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1067 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1068 		return mach_iokit_error(args, MACH_IOKIT_EINVAL);
1069@@ -322,7 +319,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args)
1070
1071 	maxdev = sizeof(mach_iokit_devclasses);
1072 	size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *));
1073-	mdi = malloc(size, M_EMULDATA, M_WAITOK);
1074+	mdi = malloc(size, M_MACH, M_WAITOK);
1075 	mp->mp_data = mdi;
1076
1077 	if (req->req_options & MACH_IOKIT_PARENT_ITERATOR)
1078@@ -344,7 +341,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args)
1079
1080 	mdi->mdi_current = 0;
1081
1082-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1083+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1084
1085 #ifdef DEBUG_MACH
1086 	printf("io_registry_entry_create_iterator\n");
1087@@ -394,7 +391,7 @@ mach_io_service_add_interest_notification(struct mach_trap_args *args)
1088 	mach_io_service_add_interest_notification_request_t *req = args->smsg;
1089 	mach_io_service_add_interest_notification_reply_t *rep = args->rmsg;
1090 	size_t *msglen = args->rsize;
1091-	struct lwp *l = args->l;
1092+	struct thread *td = args->td;
1093 	struct mach_port *mp;
1094 	struct mach_right *mr;
1095 	int end_offset, refcount_offset;
1096@@ -424,7 +421,7 @@ mach_io_service_add_interest_notification(struct mach_trap_args *args)
1097
1098 	mp = mach_port_get();
1099 	mp->mp_flags |= MACH_MP_INKERNEL;
1100-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1101+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1102
1103 #ifdef DEBUG_DARWIN
1104 	uprintf("Unimplemented mach_io_service_add_interest_notification\n");
1105@@ -442,7 +439,7 @@ mach_io_connect_set_notification_port(struct mach_trap_args *args)
1106 {
1107 	mach_io_connect_set_notification_port_request_t *req = args->smsg;
1108 	mach_io_connect_set_notification_port_reply_t *rep = args->rmsg;
1109-	struct lwp *l = args->l;
1110+	struct thread *td = args->td;
1111 	size_t *msglen = args->rsize;
1112 	mach_port_t mnn, mn;
1113 	struct mach_right *mrn;
1114@@ -453,11 +450,11 @@ mach_io_connect_set_notification_port(struct mach_trap_args *args)
1115 	printf("mach_io_connect_set_notification_port\n");
1116 #endif
1117 	mnn = req->req_port.name;
1118-	if ((mrn = mach_right_check(mnn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1119+	if ((mrn = mach_right_check(mnn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1120 		return mach_msg_error(args, EINVAL);
1121
1122 	mn = req->req_msgh.msgh_remote_port;
1123-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1124+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1125 		return mach_msg_error(args, EINVAL);
1126
1127 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1128@@ -485,7 +482,7 @@ mach_io_registry_get_root_entry(struct mach_trap_args *args)
1129 	mach_io_registry_get_root_entry_request_t *req = args->smsg;
1130 	mach_io_registry_get_root_entry_reply_t *rep = args->rmsg;
1131 	size_t *msglen = args->rsize;
1132-	struct lwp *l = args->l;
1133+	struct thread *td = args->td;
1134 	struct mach_port *mp;
1135 	struct mach_right *mr;
1136
1137@@ -494,7 +491,7 @@ mach_io_registry_get_root_entry(struct mach_trap_args *args)
1138 	mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS;
1139 	mp->mp_data = &mach_ioroot_devclass;
1140
1141-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1142+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1143
1144 	*msglen = sizeof(*rep);
1145 	mach_set_header(rep, req, *msglen);
1146@@ -510,7 +507,7 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args)
1147 	mach_io_registry_entry_get_child_iterator_request_t *req = args->smsg;
1148 	mach_io_registry_entry_get_child_iterator_reply_t *rep = args->rmsg;
1149 	size_t *msglen = args->rsize;
1150-	struct lwp *l = args->l;
1151+	struct thread *td = args->td;
1152 	struct mach_port *mp;
1153 	struct mach_right *mr;
1154 	mach_port_t mn;
1155@@ -529,7 +526,7 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args)
1156 		return mach_msg_error(args, EINVAL);
1157
1158 	mn = req->req_msgh.msgh_remote_port;
1159-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1160+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1161 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1162 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1163 		return mach_iokit_error(args, MACH_IOKIT_EINVAL);
1164@@ -541,13 +538,13 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args)
1165
1166 	maxdev = sizeof(mach_iokit_devclasses);
1167 	size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *));
1168-	mdi = malloc(size, M_EMULDATA, M_WAITOK);
1169+	mdi = malloc(size, M_MACH, M_WAITOK);
1170 	mp->mp_data = mdi;
1171
1172 	(void)mach_fill_child_iterator(mdi, maxdev, 0, mid);
1173 	mdi->mdi_current = 0;
1174
1175-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1176+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1177
1178 	*msglen = sizeof(*rep);
1179 	mach_set_header(rep, req, *msglen);
1180@@ -563,7 +560,7 @@ mach_io_registry_entry_get_name_in_plane(struct mach_trap_args *args)
1181 	mach_io_registry_entry_get_name_in_plane_request_t *req = args->smsg;
1182 	mach_io_registry_entry_get_name_in_plane_reply_t *rep = args->rmsg;
1183 	size_t *msglen = args->rsize;
1184-	struct lwp *l = args->l;
1185+	struct thread *td = args->td;
1186 	struct mach_right *mr;
1187 	mach_port_t mn;
1188 	struct mach_iokit_devclass *mid;
1189@@ -578,7 +575,7 @@ mach_io_registry_entry_get_name_in_plane(struct mach_trap_args *args)
1190 		return mach_msg_error(args, EINVAL);
1191
1192 	mn = req->req_msgh.msgh_remote_port;
1193-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1194+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1195 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1196 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1197 		return mach_iokit_error(args, MACH_IOKIT_EINVAL);
1198@@ -655,7 +652,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args)
1199 	mach_io_registry_entry_get_properties_request_t *req = args->smsg;
1200 	mach_io_registry_entry_get_properties_reply_t *rep = args->rmsg;
1201 	size_t *msglen = args->rsize;
1202-	struct lwp *l = args->l;
1203+	struct thread *td = args->td;
1204 	int error;
1205 	void *uaddr;
1206 	size_t size;
1207@@ -664,7 +661,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args)
1208 	struct mach_iokit_devclass *mid;
1209
1210 	mn = req->req_msgh.msgh_remote_port;
1211-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1212+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1213 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1214
1215 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1216@@ -679,7 +676,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args)
1217 	    mid->mid_properties, &uaddr, size, MACH_OOL_TRACE)) != 0) {
1218 #ifdef DEBUG_MACH
1219 		printf("pid %d.%d: copyout iokit properties failed\n",
1220-		    l->l_proc->p_pid, l->l_lid);
1221+		    td->td_proc->p_pid, td->td_lid);
1222 #endif
1223 	}
1224
1225@@ -700,7 +697,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args)
1226 	mach_io_registry_entry_get_property_request_t *req = args->smsg;
1227 	mach_io_registry_entry_get_property_reply_t *rep = args->rmsg;
1228 	size_t *msglen = args->rsize;
1229-	struct lwp *l = args->l;
1230+	struct thread *td = args->td;
1231 	int error;
1232 	void *uaddr;
1233 	size_t size;
1234@@ -720,7 +717,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args)
1235
1236 	/* Find the port */
1237 	mn = req->req_msgh.msgh_remote_port;
1238-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1239+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1240 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1241
1242 	/* Find the devclass information */
1243@@ -746,7 +743,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args)
1244 	    mip->mip_value, &uaddr, size, MACH_OOL_TRACE)) != 0) {
1245 #ifdef DEBUG_MACH
1246 		printf("pid %d.%d: copyout iokit property failed\n",
1247-		    l->l_proc->p_pid, l->l_lid);
1248+		    td->td_proc->p_pid, td->td_lid);
1249 #endif
1250 	}
1251
1252@@ -812,13 +809,13 @@ int
1253 mach_io_connect_map_memory(struct mach_trap_args *args)
1254 {
1255 	mach_io_connect_map_memory_request_t *req = args->smsg;
1256-	struct lwp *l = args->l;
1257+	struct thread *td = args->td;
1258 	mach_port_t mn;
1259 	struct mach_right *mr;
1260 	struct mach_iokit_devclass *mid;
1261
1262 	mn = req->req_msgh.msgh_remote_port;
1263-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1264+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1265 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1266
1267 	if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) {
1268@@ -839,13 +836,13 @@ mach_io_iterator_reset(struct mach_trap_args *args)
1269 	mach_io_iterator_reset_request_t *req = args->smsg;
1270 	mach_io_iterator_reset_reply_t *rep = args->rmsg;
1271 	size_t *msglen = args->rsize;
1272-	struct lwp *l = args->l;
1273+	struct thread *td = args->td;
1274 	mach_port_t mn;
1275 	struct mach_right *mr;
1276 	struct mach_device_iterator *mdi;
1277
1278 	mn = req->req_msgh.msgh_remote_port;
1279-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1280+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1281 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1282
1283 	if (mr->mr_port->mp_datatype != MACH_MP_DEVICE_ITERATOR)
1284@@ -868,7 +865,7 @@ int
1285 mach_io_connect_method_scalari_structo(struct mach_trap_args *args)
1286 {
1287 	mach_io_connect_method_scalari_structo_request_t *req = args->smsg;
1288-	struct lwp *l = args->l;
1289+	struct thread *td = args->td;
1290 	mach_port_t mn;
1291 	struct mach_right *mr;
1292 	struct mach_iokit_devclass *mid;
1293@@ -885,7 +882,7 @@ mach_io_connect_method_scalari_structo(struct mach_trap_args *args)
1294 		return mach_msg_error(args, EINVAL);
1295
1296 	mn = req->req_msgh.msgh_remote_port;
1297-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1298+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1299 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1300
1301 	if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) {
1302@@ -904,7 +901,7 @@ int
1303 mach_io_connect_method_structi_structo(struct mach_trap_args *args)
1304 {
1305 	mach_io_connect_method_structi_structo_request_t *req = args->smsg;
1306-	struct lwp *l = args->l;
1307+	struct thread *td = args->td;
1308 	mach_port_t mn;
1309 	struct mach_right *mr;
1310 	struct mach_iokit_devclass *mid;
1311@@ -923,7 +920,7 @@ mach_io_connect_method_structi_structo(struct mach_trap_args *args)
1312 		return mach_msg_error(args, EINVAL);
1313
1314 	mn = req->req_msgh.msgh_remote_port;
1315-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1316+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1317 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1318
1319 	if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) {
1320@@ -1003,7 +1000,7 @@ int
1321 mach_io_connect_method_scalari_structi(struct mach_trap_args *args)
1322 {
1323 	mach_io_connect_method_scalari_structi_request_t *req = args->smsg;
1324-	struct lwp *l = args->l;
1325+	struct thread *td = args->td;
1326 	mach_port_t mn;
1327 	struct mach_right *mr;
1328 	struct mach_iokit_devclass *mid;
1329@@ -1025,7 +1022,7 @@ mach_io_connect_method_scalari_structi(struct mach_trap_args *args)
1330 		return mach_msg_error(args, EINVAL);
1331
1332 	mn = req->req_msgh.msgh_remote_port;
1333-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1334+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1335 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1336
1337 	if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) {
1338@@ -1046,7 +1043,7 @@ mach_io_registry_entry_from_path(struct mach_trap_args *args)
1339 	mach_io_registry_entry_from_path_request_t *req = args->smsg;
1340 	mach_io_registry_entry_from_path_reply_t *rep = args->rmsg;
1341 	size_t *msglen = args->rsize;
1342-	struct lwp *l = args->l;
1343+	struct thread *td = args->td;
1344 	struct mach_port *mp;
1345 	struct mach_right *mr;
1346 	struct mach_iokit_devclass *mid;
1347@@ -1067,7 +1064,7 @@ mach_io_registry_entry_from_path(struct mach_trap_args *args)
1348
1349 	mp = mach_port_get();
1350 	mp->mp_flags |= MACH_MP_INKERNEL;
1351-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1352+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1353
1354 	i = 0;
1355 	while ((mid = mach_iokit_devclasses[i++]) != NULL) {
1356@@ -1099,7 +1096,7 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args)
1357 	mach_io_registry_entry_get_parent_iterator_request_t *req = args->smsg;
1358 	mach_io_registry_entry_get_parent_iterator_reply_t *rep = args->rmsg;
1359 	size_t *msglen = args->rsize;
1360-	struct lwp *l = args->l;
1361+	struct thread *td = args->td;
1362 	struct mach_port *mp;
1363 	struct mach_right *mr;
1364 	struct mach_iokit_devclass *mid;
1365@@ -1123,7 +1120,7 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args)
1366 #endif
1367
1368 	mn = req->req_msgh.msgh_remote_port;
1369-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1370+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
1371 		return mach_iokit_error(args, MACH_IOKIT_EPERM);
1372
1373 	if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS)
1374@@ -1136,13 +1133,13 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args)
1375
1376 	maxdev = sizeof(mach_iokit_devclasses);
1377 	size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *));
1378-	mdi = malloc(size, M_EMULDATA, M_WAITOK);
1379+	mdi = malloc(size, M_MACH, M_WAITOK);
1380 	mp->mp_data = mdi;
1381
1382 	(void)mach_fill_parent_iterator(mdi, maxdev, 0, mid);
1383 	mdi->mdi_current = 0;
1384
1385-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
1386+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
1387
1388 	*msglen = sizeof(*rep);
1389 	mach_set_header(rep, req, *msglen);
1390diff --git a/sys/compat/mach/mach_iokit.h b/sys/compat/mach/mach_iokit.h
1391index 2981964..8308db5 100644
1392--- a/sys/compat/mach/mach_iokit.h
1393+++ b/sys/compat/mach/mach_iokit.h
1394@@ -1,4 +1,4 @@
1395-/*	$NetBSD: mach_iokit.h,v 1.26 2008/04/28 20:23:44 martin Exp $ */
1396+/*	$FreeBSD$ */
1397
1398 /*-
1399  * Copyright (c) 2003 The NetBSD Foundation, Inc.
1400diff --git a/sys/compat/mach/mach_message.c b/sys/compat/mach/mach_message.c
1401index c7e60a7..0b005e4 100644
1402--- a/sys/compat/mach/mach_message.c
1403+++ b/sys/compat/mach/mach_message.c
1404@@ -1,5 +1,3 @@
1405-/*	$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp $ */
1406-
1407 /*-
1408  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
1409  * All rights reserved.
1410@@ -30,10 +28,9 @@
1411  */
1412
1413 #include <sys/cdefs.h>
1414-__KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp $");
1415+__FBSDID("$FreeBSD$");
1416
1417 #include "opt_compat_mach.h" /* For COMPAT_MACH in <sys/ktrace.h> */
1418-#include "opt_compat_darwin.h"
1419
1420 #include <sys/types.h>
1421 #include <sys/param.h>
1422@@ -46,15 +43,12 @@ __KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp
1423 #include <sys/pool.h>
1424 #include <sys/ktrace.h>
1425
1426-#include <uvm/uvm_extern.h>
1427-#include <uvm/uvm_map.h>
1428-
1429 #include <compat/mach/mach_types.h>
1430 #include <compat/mach/mach_message.h>
1431 #include <compat/mach/mach_port.h>
1432 #include <compat/mach/mach_exec.h>
1433 #include <compat/mach/mach_clock.h>
1434-#include <compat/mach/mach_syscallargs.h>
1435+#include <compat/mach/mach_proto.h>
1436
1437 #ifdef COMPAT_DARWIN
1438 #include <compat/darwin/darwin_exec.h>
1439@@ -64,19 +58,19 @@ __KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp
1440 static struct pool mach_message_pool;
1441
1442 static inline
1443-    int mach_msg_send(struct lwp *, mach_msg_header_t *, int *, size_t);
1444-static inline int mach_msg_recv(struct lwp *, mach_msg_header_t *,
1445+    int mach_msg_send(struct thread *, mach_msg_header_t *, int *, size_t);
1446+static inline int mach_msg_recv(struct thread *, mach_msg_header_t *,
1447     int, size_t, unsigned int, mach_port_t);
1448 static inline
1449-    struct lwp *mach_get_target_task(struct lwp *, struct mach_port *);
1450+    struct thread *mach_get_target_task(struct thread *, struct mach_port *);
1451 static inline void mach_drop_rights(struct mach_right *, int);
1452 static inline
1453-    void mach_trade_rights(struct lwp *, struct lwp *, mach_port_t *, int);
1454+    void mach_trade_rights(struct thread *, struct thread *, mach_port_t *, int);
1455 static inline
1456-    int mach_trade_rights_complex(struct lwp *, struct mach_message *);
1457+    int mach_trade_rights_complex(struct thread *, struct mach_message *);
1458
1459 int
1460-mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_trap_args *uap, register_t *retval)
1461+mach_sys_msg_overwrite_trap(struct thread *td, const struct mach_sys_msg_overwrite_trap_args *uap)
1462 {
1463 	/* {
1464 		syscallarg(mach_msg_header_t *) msg;
1465@@ -93,18 +87,18 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t
1466 	mach_msg_header_t *msg;
1467 	int opt;
1468
1469-	*retval = MACH_MSG_SUCCESS;
1470-	send_size = SCARG(uap, send_size);
1471-	recv_size = SCARG(uap, rcv_size);
1472-	opt = SCARG(uap, option);
1473+	td->td_retval[0] = MACH_MSG_SUCCESS;
1474+	send_size = uap->send_size;
1475+	recv_size = uap->rcv_size;
1476+	opt = uap->option;
1477
1478 	/* XXX not safe enough: lots of big messages will kill us */
1479 	if (send_size > MACH_MAX_MSG_LEN) {
1480-		*retval = MACH_SEND_TOO_LARGE;
1481+		td->td_retval[0] = MACH_SEND_TOO_LARGE;
1482 		return 0;
1483 	}
1484 	if (recv_size > MACH_MAX_MSG_LEN) {
1485-		*retval = MACH_RCV_TOO_LARGE;
1486+		td->td_retval[0] = MACH_RCV_TOO_LARGE;
1487 		return 0;
1488 	}
1489
1490@@ -113,25 +107,25 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t
1491 	 * set, we must send, and then receive. If
1492 	 * send fail, then we skip recieve.
1493 	 */
1494-	msg = SCARG(uap, msg);
1495+	msg = uap->msg;
1496 	if (opt & MACH_SEND_MSG)
1497-		*retval = mach_msg_send(l, msg, &opt, send_size);
1498+		td->td_retval[0] = mach_msg_send(td, msg, &opt, send_size);
1499
1500-	if ((opt & MACH_RCV_MSG) && (*retval == MACH_MSG_SUCCESS)) {
1501+	if ((opt & MACH_RCV_MSG) && (td->td_retval[0] == MACH_MSG_SUCCESS)) {
1502 		/*
1503 		 * Find a buffer for the reply.
1504 		 */
1505-		if (SCARG(uap, rcv_msg) != NULL)
1506-			msg = SCARG(uap, rcv_msg);
1507-		else if (SCARG(uap, msg) != NULL)
1508-			msg = SCARG(uap, msg);
1509+		if (uap->rcv_msg != NULL)
1510+			msg = uap->rcv_msg;
1511+		else if (uap->msg != NULL)
1512+			msg = uap->msg;
1513 		else {
1514-			*retval = MACH_RCV_INVALID_DATA;
1515+			td->td_retval[0] = MACH_RCV_INVALID_DATA;
1516 			return 0;
1517 		}
1518
1519-		*retval = mach_msg_recv(l, msg, opt, recv_size,
1520-		    SCARG(uap, timeout), SCARG(uap, rcv_name));
1521+		td->td_retval[0] = mach_msg_recv(td, msg, opt, recv_size,
1522+		    uap->timeout, uap->rcv_name);
1523 	}
1524
1525 	return 0;
1526@@ -141,11 +135,11 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t
1527  * Send a Mach message. This returns a Mach message error code.
1528  */
1529 static inline int
1530-mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_size)
1531+mach_msg_send(struct thread *td, mach_msg_header_t *msg, int *option, size_t send_size)
1532 {
1533 	struct mach_emuldata *med;
1534 	struct mach_port *mp;
1535-	struct proc *p = l->l_proc;
1536+	struct proc *p = td->td_proc;
1537 	mach_msg_header_t *sm;
1538 	struct mach_service *srv;
1539 	mach_port_t ln;
1540@@ -165,7 +159,7 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si
1541 	 * Allocate memory for the message and its reply,
1542 	 * and copy the whole message in the kernel.
1543 	 */
1544-	sm = malloc(send_size, M_EMULDATA, M_WAITOK);
1545+	sm = malloc(send_size, M_MACH, M_WAITOK);
1546 	if ((error = copyin(msg, sm, send_size)) != 0) {
1547 		ret = MACH_SEND_INVALID_DATA;
1548 		goto out1;
1549@@ -180,8 +174,8 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si
1550 	ln = sm->msgh_local_port;
1551 	rn = sm->msgh_remote_port;
1552
1553-	lr = mach_right_check(ln, l, MACH_PORT_TYPE_ALL_RIGHTS);
1554-	rr = mach_right_check(rn, l, MACH_PORT_TYPE_ALL_RIGHTS);
1555+	lr = mach_right_check(ln, td, MACH_PORT_TYPE_ALL_RIGHTS);
1556+	rr = mach_right_check(rn, td, MACH_PORT_TYPE_ALL_RIGHTS);
1557 	if ((rr == NULL) || (rr->mr_port == NULL)) {
1558 #ifdef DEBUG_MACH
1559 		printf("msg id %d: invalid dest\n", sm->msgh_id);
1560@@ -195,7 +189,7 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si
1561 	 * the remote port.
1562 	 */
1563 	rights = (MACH_PORT_TYPE_SEND | MACH_PORT_TYPE_SEND_ONCE);
1564-	if (mach_right_check(rn, l, rights) == NULL) {
1565+	if (mach_right_check(rn, td, rights) == NULL) {
1566 		ret = MACH_SEND_INVALID_RIGHT;
1567 		goto out1;
1568 	}
1569@@ -295,12 +289,12 @@ skip_null_lr:
1570 		 */
1571 		reply_size = max_replen;
1572 		if (lr != NULL)
1573-			rm = malloc(reply_size, M_EMULDATA, M_WAITOK | M_ZERO);
1574+			rm = malloc(reply_size, M_MACH, M_WAITOK | M_ZERO);
1575 		else
1576 			rm = NULL;
1577
1578 		args.l = l;
1579-		args.tl = mach_get_target_task(l, mp);
1580+		args.tl = mach_get_target_task(td, mp);
1581 		args.smsg = sm;
1582 		args.rmsg = rm;
1583 		args.rsize = &reply_size;
1584@@ -348,7 +342,7 @@ skip_null_lr:
1585 		wakeup(mp->mp_recv->mr_sethead);
1586 		ret = MACH_MSG_SUCCESS;
1587 out1:
1588-		free(sm, M_EMULDATA);
1589+		free(sm, M_MACH);
1590
1591 		return ret;
1592 	}
1593@@ -363,7 +357,7 @@ out1:
1594 #ifdef DEBUG_MACH
1595 		printf("msg id %d: invalid dst\n", sm->msgh_id);
1596 #endif
1597-		free(sm, M_EMULDATA);
1598+		free(sm, M_MACH);
1599 		return MACH_SEND_INVALID_DEST;
1600 	}
1601
1602@@ -398,11 +392,11 @@ out1:
1603  * Receive a Mach message. This returns a Mach message error code.
1604  */
1605 static inline int
1606-mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_size, unsigned int timeout, mach_port_t mn)
1607+mach_msg_recv(struct thread *td, mach_msg_header_t *urm, int option, size_t recv_size, unsigned int timeout, mach_port_t mn)
1608 {
1609 	struct mach_port *mp;
1610 #if defined(DEBUG_MACH_MSG) || defined(KTRACE)
1611-	struct proc *p = l->l_proc;
1612+	struct proc *p = td->td_proc;
1613 #endif
1614 	struct mach_message *mm;
1615 	mach_port_t tmp;
1616@@ -422,13 +416,13 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1617 	/*
1618 	 * Check for receive right on the port.
1619 	 */
1620-	mr = mach_right_check(mn, l, MACH_PORT_TYPE_RECEIVE);
1621+	mr = mach_right_check(mn, td, MACH_PORT_TYPE_RECEIVE);
1622 	if (mr == NULL) {
1623
1624 		/*
1625 		 * Is it a port set?
1626 		 */
1627-		mr = mach_right_check(mn, l, MACH_PORT_TYPE_PORT_SET);
1628+		mr = mach_right_check(mn, td, MACH_PORT_TYPE_PORT_SET);
1629 		if (mr == NULL)
1630 			return MACH_RCV_INVALID_NAME;
1631
1632@@ -438,7 +432,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1633 		 * and check if we have some message.
1634 		 */
1635 		LIST_FOREACH(cmr, &mr->mr_set, mr_setlist) {
1636-			if ((mach_right_check(cmr->mr_name, l,
1637+			if ((mach_right_check(cmr->mr_name, td,
1638 			    MACH_PORT_TYPE_RECEIVE)) == NULL)
1639 				return MACH_RCV_INVALID_NAME;
1640
1641@@ -471,7 +465,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1642 			 * Check we did not loose the receive right
1643 			 * while we were sleeping.
1644 			 */
1645-			if ((mach_right_check(mn, l,
1646+			if ((mach_right_check(mn, td,
1647 			     MACH_PORT_TYPE_PORT_SET)) == NULL)
1648 				return  MACH_RCV_PORT_DIED;
1649
1650@@ -521,7 +515,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1651 			 * Check we did not lose the receive right
1652 			 * while we were sleeping.
1653 			 */
1654-			if ((mach_right_check(mn, l,
1655+			if ((mach_right_check(mn, td,
1656 			     MACH_PORT_TYPE_RECEIVE)) == NULL)
1657 				return MACH_RCV_PORT_DIED;
1658
1659@@ -552,7 +546,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1660 		 * If MACH_RCV_LARGE was not set, destroy the message.
1661 		 */
1662 		if ((option & MACH_RCV_LARGE) == 0) {
1663-			free(mm->mm_msg, M_EMULDATA);
1664+			free(mm->mm_msg, M_MACH);
1665 			mach_message_put_shlocked(mm);
1666 			goto unlock;
1667 		}
1668@@ -593,18 +587,18 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1669 		 */
1670 		bits = MACH_MSGH_LOCAL_BITS(mm->mm_msg->msgh_bits);
1671 		mnp = &mm->mm_msg->msgh_local_port;
1672-		mach_trade_rights(l, mm->mm_l, mnp, bits);
1673+		mach_trade_rights(td, mm->mm_l, mnp, bits);
1674
1675 		bits = MACH_MSGH_REMOTE_BITS(mm->mm_msg->msgh_bits);
1676 		mnp = &mm->mm_msg->msgh_remote_port;
1677-		mach_trade_rights(l, mm->mm_l, mnp, bits);
1678+		mach_trade_rights(td, mm->mm_l, mnp, bits);
1679
1680 		/*
1681 		 * The same operation must be done to all
1682 		 * port descriptors carried with the message.
1683 		 */
1684 		if ((mm->mm_msg->msgh_bits & MACH_MSGH_BITS_COMPLEX) &&
1685-		    ((ret = mach_trade_rights_complex(l, mm)) != 0))
1686+		    ((ret = mach_trade_rights_complex(td, mm)) != 0))
1687 			goto unlock;
1688
1689 		/*
1690@@ -631,7 +625,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz
1691 	/* Dump the Mach message */
1692 	ktrmmsg((char *)mm->mm_msg, mm->mm_size);
1693
1694-	free(mm->mm_msg, M_EMULDATA);
1695+	free(mm->mm_msg, M_MACH);
1696 	mach_message_put_shlocked(mm); /* decrease mp_count */
1697 unlock:
1698 	rw_exit(&mp->mp_msglock);
1699@@ -641,7 +635,7 @@ unlock:
1700
1701
1702 int
1703-mach_sys_msg_trap(struct lwp *l, const struct mach_sys_msg_trap_args *uap, register_t *retval)
1704+mach_sys_msg_trap(struct thread *td, const struct mach_sys_msg_trap_args *uap)
1705 {
1706 	/* {
1707 		syscallarg(mach_msg_header_t *) msg;
1708@@ -654,42 +648,42 @@ mach_sys_msg_trap(struct lwp *l, const struct mach_sys_msg_trap_args *uap, regis
1709 	} */
1710 	struct mach_sys_msg_overwrite_trap_args cup;
1711
1712-	SCARG(&cup, msg) = SCARG(uap, msg);
1713-	SCARG(&cup, option) = SCARG(uap, option);
1714-	SCARG(&cup, send_size) = SCARG(uap, send_size);
1715-	SCARG(&cup, rcv_size) = SCARG(uap, rcv_size);
1716-	SCARG(&cup, rcv_name) = SCARG(uap, rcv_name);
1717-	SCARG(&cup, timeout) = SCARG(uap, timeout);
1718-	SCARG(&cup, notify) = SCARG(uap, notify);
1719-	SCARG(&cup, rcv_msg) = NULL;
1720-	SCARG(&cup, scatter_list_size) = 0;
1721-
1722-	return mach_sys_msg_overwrite_trap(l, &cup, retval);
1723+	cup.msg = uap->msg;
1724+	cup.option = uap->option;
1725+	cup.send_size = uap->send_size;
1726+	cup.rcv_size = uap->rcv_size;
1727+	cup.rcv_name = uap->rcv_name;
1728+	cup.timeout = uap->timeout;
1729+	cup.notify = uap->notify;
1730+	cup.rcv_msg = NULL;
1731+	cup.scatter_list_size = 0;
1732+
1733+	return mach_sys_msg_overwrite_trap(td, &cup);
1734 }
1735
1736-static inline  struct lwp *
1737-mach_get_target_task(struct lwp *l, struct mach_port *mp)
1738+static inline  struct thread *
1739+mach_get_target_task(struct thread *td, struct mach_port *mp)
1740 {
1741 	struct proc *tp;
1742-	struct lwp *tl;
1743+	struct thread *ttd;
1744
1745 	switch (mp->mp_datatype) {
1746 	case MACH_MP_PROC:
1747 		tp = (struct proc *)mp->mp_data;
1748-		tl = LIST_FIRST(&tp->p_lwps);
1749+		ttd = TAILQ_FIRST(&tp->p_threads);
1750 		KASSERT(tl != NULL);
1751 		break;
1752
1753 	case MACH_MP_LWP:
1754-		tl = (struct lwp *)mp->mp_data;
1755+		ttd = (struct thread *)mp->mp_data;
1756 		break;
1757
1758 	default:
1759-		tl = l;
1760+		ttd = td;
1761 		break;
1762 	}
1763
1764-	return tl;
1765+	return ttd;
1766 }
1767
1768 static inline void
1769@@ -726,7 +720,7 @@ mach_drop_rights(struct mach_right *mr, int bits)
1770  * namespace.
1771  */
1772 static inline void
1773-mach_trade_rights(struct lwp *ll, struct lwp *rl, mach_port_t *mnp, int bits)
1774+mach_trade_rights(struct thread *tdl, struct thread *rl, mach_port_t *mnp, int bits)
1775 	/* ll:		 local lwp (receiver, current lwp) */
1776 	/* rl:		 remote lwp (sender) */
1777 	/* mnp:	 pointer to the port name */
1778@@ -794,7 +788,7 @@ mach_trade_rights(struct lwp *ll, struct lwp *rl, mach_port_t *mnp, int bits)
1779  * is not done yet.
1780  */
1781 static inline int
1782-mach_trade_rights_complex(struct lwp *l, struct mach_message *mm)
1783+mach_trade_rights_complex(struct thread *td, struct mach_message *mm)
1784 {
1785 	struct mach_complex_msg *mcm;
1786 	unsigned int i, count;
1787@@ -828,7 +822,7 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm)
1788 			break;
1789
1790 		case MACH_MSG_OOL_PORTS_DESCRIPTOR: {	/* XXX untested */
1791-			struct lwp *rl;		/* remote LWP */
1792+			struct thread *rl;		/* remote LWP */
1793 			void *lumnp;		/* local user address */
1794 			void *rumnp;		/* remote user address */
1795 			int disp;		/* disposition*/
1796@@ -871,7 +865,7 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm)
1797 #endif
1798 			/* FALLTHROUGH */
1799 		case MACH_MSG_OOL_DESCRIPTOR: {	/* XXX untested */
1800-			struct lwp *rl;		/* remote LWP */
1801+			struct thread *rl;		/* remote LWP */
1802 			void *ludata;		/* local user address */
1803 			void *rudata;		/* remote user address */
1804 			size_t size;		/* data size */
1805@@ -915,11 +909,11 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm)
1806 }
1807
1808 inline int
1809-mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int flags)
1810+mach_ool_copyin(struct thread *td, const void *uaddr, void **kaddr, size_t size, int flags)
1811 {
1812 	int error;
1813 	void *kbuf;
1814-	struct proc *p = l->l_proc;
1815+	struct proc *p = td->td_proc;
1816
1817 	/*
1818 	 * Sanity check OOL size to avoid DoS on malloc: useless once
1819@@ -932,13 +926,13 @@ mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int
1820 #endif
1821
1822 	if (*kaddr == NULL)
1823-		kbuf = malloc(size, M_EMULDATA, M_WAITOK);
1824+		kbuf = malloc(size, M_MACH, M_WAITOK);
1825 	else
1826 		kbuf = *kaddr;
1827
1828 	if ((error = copyin_proc(p, uaddr, kbuf, size)) != 0) {
1829 		if (*kaddr == NULL)
1830-			free(kbuf, M_EMULDATA);
1831+			free(kbuf, M_MACH);
1832 		return error;
1833 	}
1834
1835@@ -952,11 +946,11 @@ mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int
1836 }
1837
1838 inline int
1839-mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, int flags)
1840+mach_ool_copyout(struct thread *td, const void *kaddr, void **uaddr, size_t size, int flags)
1841 {
1842-	vaddr_t ubuf;
1843+	vm_offset_t ubuf;
1844 	int error = 0;
1845-	struct proc *p = l->l_proc;
1846+	struct proc *p = td->td_proc;
1847
1848 	/*
1849 	 * Sanity check OOL size to avoid DoS on malloc: useless once
1850@@ -971,12 +965,12 @@ mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, in
1851 #endif
1852
1853 	if (*uaddr == NULL)
1854-		ubuf = (vaddr_t)vm_map_min(&p->p_vmspace->vm_map);
1855+		ubuf = (vm_offset_t)vm_map_min(&p->p_vmspace->vm_map);
1856 	else
1857-		ubuf = (vaddr_t)*uaddr;
1858+		ubuf = (vm_offset_t)*uaddr;
1859
1860 	/* Never map anything at address zero: this is a red zone */
1861-	if (ubuf == (vaddr_t)NULL)
1862+	if (ubuf == (vm_offset_t)NULL)
1863 		ubuf += PAGE_SIZE;
1864
1865 	if ((error = uvm_map(&p->p_vmspace->vm_map, &ubuf,
1866@@ -995,7 +989,7 @@ mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, in
1867
1868 out:
1869 	if (flags & MACH_OOL_FREE)
1870-		free(__UNCONST(kaddr), M_EMULDATA); /*XXXUNCONST*/
1871+		free(__UNCONST(kaddr), M_MACH); /*XXXUNCONST*/
1872
1873 	if (error == 0)
1874 		*uaddr = (void *)ubuf;
1875@@ -1110,7 +1104,7 @@ mach_message_init(void)
1876 }
1877
1878 struct mach_message *
1879-mach_message_get(mach_msg_header_t *msgh, size_t size, struct mach_port *mp, struct lwp *l)
1880+mach_message_get(mach_msg_header_t *msgh, size_t size, struct mach_port *mp, struct thread *td)
1881 {
1882 	struct mach_message *mm;
1883
1884@@ -1180,7 +1174,7 @@ mach_message_put_exclocked(struct mach_message *mm)
1885 void
1886 mach_debug_message(void)
1887 {
1888-	struct lwp *l;
1889+	struct thread *td;
1890 	struct mach_emuldata *med;
1891 	struct mach_right *mr;
1892 	struct mach_right *mrs;
1893@@ -1188,14 +1182,14 @@ mach_debug_message(void)
1894 	struct mach_message *mm;
1895
1896 	LIST_FOREACH(l, &alllwp, l_list) {
1897-		if ((l->l_proc->p_emul != &emul_mach) &&
1898+		if ((td->td_proc->p_emul != &emul_mach) &&
1899 #ifdef COMPAT_DARWIN
1900-		    (l->l_proc->p_emul != &emul_darwin) &&
1901+		    (td->td_proc->p_emul != &emul_darwin) &&
1902 #endif
1903 		    1)
1904 			continue;
1905
1906-		med = l->l_proc->p_emuldata;
1907+		med = td->td_proc->p_emuldata;
1908 		LIST_FOREACH(mr, &med->med_right, mr_list)
1909 			if ((mr->mr_type & MACH_PORT_TYPE_PORT_SET) == 0) {
1910 				mp = mr->mr_port;
1911diff --git a/sys/compat/mach/mach_message.h b/sys/compat/mach/mach_message.h
1912index 570a336..72f6836 100644
1913--- a/sys/compat/mach/mach_message.h
1914+++ b/sys/compat/mach/mach_message.h
1915@@ -1,4 +1,4 @@
1916-/*	$NetBSD: mach_message.h,v 1.30 2008/04/28 20:23:44 martin Exp $	 */
1917+/*	$FreeBSD$ */
1918
1919 /*-
1920  * Copyright (c) 2001-2003 The NetBSD Foundation, Inc.
1921@@ -223,8 +223,8 @@ struct mach_complex_msg {
1922 /* Kernel-private structures */
1923
1924 struct mach_trap_args {
1925-	struct lwp *l;	/* Current task (doing the Mach system call) */
1926-	struct lwp *tl; /* Target task */
1927+	struct thread *td;	/* Current task (doing the Mach system call) */
1928+	struct thread *ttd; /* Target task */
1929 	void *smsg;	/* Sent message */
1930 	void *rmsg;	/* Reply message */
1931 	size_t ssize;	/* Sent message size */
1932@@ -248,7 +248,7 @@ struct mach_message {
1933 	TAILQ_ENTRY(mach_message) mm_list;
1934 					/* List of pending messages */
1935 	struct mach_port *mm_port;	/* The port on which msg is queued */
1936-	struct lwp *mm_l;		/* The thread that sent it */
1937+	struct thread *mm_l;		/* The thread that sent it */
1938 };
1939
1940 /* Flags for mach_ool_copy{in|out} */
1941@@ -256,16 +256,16 @@ struct mach_message {
1942 #define MACH_OOL_FREE	0x1	/* Free kernel buffer after copyout */
1943 #define MACH_OOL_TRACE	0x2	/* ktrace OOL data */
1944
1945-__inline int mach_ool_copyin(struct lwp *, const void *, void **, size_t, int);
1946-__inline int mach_ool_copyout(struct lwp *, const void *, void **, size_t, int);
1947-__inline void mach_set_trailer(void *, size_t);
1948-__inline void mach_set_header(void *, void *, size_t);
1949-__inline void mach_add_port_desc(void *, mach_port_name_t);
1950-__inline void mach_add_ool_ports_desc(void *, void *, int);
1951-__inline void mach_add_ool_desc(void *, void *, size_t);
1952+int mach_ool_copyin(struct thread *, const void *, void **, size_t, int);
1953+int mach_ool_copyout(struct thread *, const void *, void **, size_t, int);
1954+void mach_set_trailer(void *, size_t);
1955+void mach_set_header(void *, void *, size_t);
1956+void mach_add_port_desc(void *, mach_port_name_t);
1957+void mach_add_ool_ports_desc(void *, void *, int);
1958+void mach_add_ool_desc(void *, void *, size_t);
1959 void mach_message_init(void);
1960 struct mach_message *mach_message_get(mach_msg_header_t *,
1961-    size_t, struct mach_port *, struct lwp *);
1962+    size_t, struct mach_port *, struct thread *);
1963 void mach_message_put(struct mach_message *);
1964 void mach_message_put_shlocked(struct mach_message *);
1965 void mach_message_put_exclocked(struct mach_message *);
1966diff --git a/sys/compat/mach/mach_misc.c b/sys/compat/mach/mach_misc.c
1967index 84f9c83..5df2eb1 100644
1968--- a/sys/compat/mach/mach_misc.c
1969+++ b/sys/compat/mach/mach_misc.c
1970@@ -1,5 +1,3 @@
1971-/*	$NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $	 */
1972-
1973 /*-
1974  * Copyright (c) 2001 The NetBSD Foundation, Inc.
1975  * All rights reserved.
1976@@ -36,7 +34,7 @@
1977  */
1978
1979 #include <sys/cdefs.h>
1980-__KERNEL_RCSID(0, "$NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $");
1981+__FBSDID("$FreeBSD$");
1982
1983 #include <sys/param.h>
1984 #include <sys/systm.h>
1985@@ -69,149 +67,135 @@ __KERNEL_RCSID(0, "$NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $"
1986 #include <sys/signalvar.h>
1987
1988 #include <netinet/in.h>
1989-#include <sys/syscallargs.h>
1990+#include <sys/sysproto.h>
1991
1992 #include <miscfs/specfs/specdev.h>
1993
1994 #include <compat/mach/mach_types.h>
1995 #include <compat/mach/mach_message.h>
1996 #include <compat/mach/mach_clock.h>
1997-#include <compat/mach/mach_syscallargs.h>
1998+#include <compat/mach/mach_proto.h>
1999
2000
2001 int
2002-mach_sys_semaphore_timedwait_trap(struct lwp *l, const struct mach_sys_semaphore_timedwait_trap_args *uap, register_t *retval)
2003+mach_sys_semaphore_timedwait_trap(struct thread *td, const struct mach_sys_semaphore_timedwait_trap_args *uap)
2004 {
2005
2006-	*retval = 0;
2007 	DPRINTF(("mach_sys_semaphore_timedwait_trap(0x%x, %d, %d);\n",
2008-	    SCARG(uap, wait_name), SCARG(uap, sec), SCARG(uap, nsec)));
2009+	    uap->wait_name, uap->sec, uap->nsec));
2010 	return 0;
2011 }
2012
2013
2014 int
2015-mach_sys_semaphore_timedwait_signal_trap(struct lwp *l, const struct mach_sys_semaphore_timedwait_signal_trap_args *uap, register_t *retval)
2016+mach_sys_semaphore_timedwait_signal_trap(struct thread *td, const struct mach_sys_semaphore_timedwait_signal_trap_args *uap)
2017 {
2018
2019-	*retval = 0;
2020 	DPRINTF((
2021 	    "mach_sys_semaphore_timedwait_signal_trap(0x%x, 0x%x, %d, %d);\n",
2022-	    SCARG(uap, wait_name), SCARG(uap, signal_name), SCARG(uap, sec),
2023-	    SCARG(uap, nsec)));
2024+	    uap->wait_name, uap->signal_name, uap->sec,
2025+	    uap->nsec));
2026 	return 0;
2027 }
2028
2029
2030 int
2031-mach_sys_init_process(struct lwp *l, const void *v, register_t *retval)
2032+mach_sys_init_process(struct thread *td, const void *v)
2033 {
2034-	*retval = 0;
2035 	DPRINTF(("mach_sys_init_process();\n"));
2036 	return 0;
2037 }
2038
2039
2040 int
2041-mach_sys_pid_for_task(struct lwp *l, const struct mach_sys_pid_for_task_args *uap, register_t *retval)
2042+mach_sys_pid_for_task(struct thread *td, const struct mach_sys_pid_for_task_args *uap)
2043 {
2044
2045-	*retval = 0;
2046 	DPRINTF(("mach_sys_pid_for_task(0x%x, %p);\n",
2047-	    SCARG(uap, t), SCARG(uap, x)));
2048+	    uap->t, uap->x));
2049 	return 0;
2050 }
2051
2052
2053 int
2054-mach_sys_macx_swapon(struct lwp *l, const struct mach_sys_macx_swapon_args *uap, register_t *retval)
2055+mach_sys_macx_swapon(struct thread *td, const struct mach_sys_macx_swapon_args *uap)
2056 {
2057
2058-	*retval = 0;
2059 	DPRINTF(("mach_sys_macx_swapon(%p, %d, %d, %d);\n",
2060-	    SCARG(uap, name), SCARG(uap, flags), SCARG(uap, size),
2061-	    SCARG(uap, priority)));
2062+	    uap->name, uap->flags, uap->size,
2063+			 uap->priority));
2064 	return 0;
2065 }
2066
2067 int
2068-mach_sys_macx_swapoff(struct lwp *l, const struct mach_sys_macx_swapoff_args *uap, register_t *retval)
2069+mach_sys_macx_swapoff(struct thread *td, const struct mach_sys_macx_swapoff_args *uap)
2070 {
2071
2072-	*retval = 0;
2073 	DPRINTF(("mach_sys_macx_swapoff(%p, %d);\n",
2074-	    SCARG(uap, name), SCARG(uap, flags)));
2075+			 uap->name, uap->flags));
2076 	return 0;
2077 }
2078
2079 int
2080-mach_sys_macx_triggers(struct lwp *l, const struct mach_sys_macx_triggers_args *uap, register_t *retval)
2081+mach_sys_macx_triggers(struct thread *td, const struct mach_sys_macx_triggers_args *uap)
2082 {
2083
2084-	*retval = 0;
2085 	DPRINTF(("mach_sys_macx_triggers(%d, %d, %d, 0x%x);\n",
2086-	    SCARG(uap, hi_water), SCARG(uap, low_water), SCARG(uap, flags),
2087-	    SCARG(uap, alert_port)));
2088+	    uap->hi_water, uap->low_water, uap->flags,
2089+			 uap->alert_port));
2090 	return 0;
2091 }
2092
2093
2094 int
2095-mach_sys_wait_until(struct lwp *l, const struct mach_sys_wait_until_args *uap, register_t *retval)
2096+mach_sys_wait_until(struct thread *td, const struct mach_sys_wait_until_args *uap)
2097 {
2098
2099-	*retval = 0;
2100-	DPRINTF(("mach_sys_wait_until(%lld);\n",
2101-	    SCARG(uap, deadline)));
2102+	DPRINTF(("mach_sys_wait_until(%lld);\n", uap->deadline));
2103 	return 0;
2104 }
2105
2106
2107 int
2108-mach_sys_timer_create(struct lwp *l, const void *v, register_t *retval)
2109+mach_sys_timer_create(struct thread *td, const void *v)
2110 {
2111-	*retval = 0;
2112 	DPRINTF(("mach_sys_timer_create();\n"));
2113 	return 0;
2114 }
2115
2116
2117 int
2118-mach_sys_timer_destroy(struct lwp *l, const struct mach_sys_timer_destroy_args *uap, register_t *retval)
2119+mach_sys_timer_destroy(struct thread *td, const struct mach_sys_timer_destroy_args *uap)
2120 {
2121
2122-	*retval = 0;
2123-	DPRINTF(("mach_sys_timer_destroy(0x%x);\n", SCARG(uap, name)));
2124+	DPRINTF(("mach_sys_timer_destroy(0x%x);\n", uap->name));
2125 	return 0;
2126 }
2127
2128
2129 int
2130-mach_sys_timer_arm(struct lwp *l, const struct mach_sys_timer_arm_args *uap, register_t *retval)
2131+mach_sys_timer_arm(struct thread *td, const struct mach_sys_timer_arm_args *uap)
2132 {
2133
2134-	*retval = 0;
2135 	DPRINTF(("mach_sys_timer_arm(0x%x, %d);\n",
2136-	    SCARG(uap, name), SCARG(uap, expire_time)));
2137+	    uap->name, uap->expire_time));
2138 	return 0;
2139 }
2140
2141
2142 int
2143-mach_sys_timer_cancel(struct lwp *l, const struct mach_sys_timer_cancel_args *uap, register_t *retval)
2144+mach_sys_timer_cancel(struct thread *td, const struct mach_sys_timer_cancel_args *uap)
2145 {
2146
2147-	*retval = 0;
2148 	DPRINTF(("mach_sys_timer_cancel(0x%x, %p);\n",
2149-	    SCARG(uap, name), SCARG(uap, result_time)));
2150+	    uap->name, uap->result_time));
2151 	return 0;
2152 }
2153
2154
2155 int
2156-mach_sys_get_time_base_info(struct lwp *l, const void *v, register_t *retval)
2157+mach_sys_get_time_base_info(struct thread *td, const void *v)
2158 {
2159-	*retval = 0;
2160 	DPRINTF(("mach_sys_get_time_base_info();\n"));
2161 	return 0;
2162 }
2163diff --git a/sys/compat/mach/mach_notify.c b/sys/compat/mach/mach_notify.c
2164index 3f5f8fb..6017c9a 100644
2165--- a/sys/compat/mach/mach_notify.c
2166+++ b/sys/compat/mach/mach_notify.c
2167@@ -1,4 +1,4 @@
2168-/*	$NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp $ */
2169+/*	$FreeBSD$ */
2170
2171 /*-
2172  * Copyright (c) 2003 The NetBSD Foundation, Inc.
2173@@ -30,11 +30,11 @@
2174  */
2175
2176 #include <sys/cdefs.h>
2177-__KERNEL_RCSID(0, "$NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp $");
2178
2179 #include <sys/types.h>
2180 #include <sys/param.h>
2181 #include <sys/signal.h>
2182+#include <sys/systm.h>
2183 #include <sys/proc.h>
2184 #include <sys/malloc.h>
2185
2186@@ -46,7 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp
2187 #include <compat/mach/mach_services.h>
2188
2189 void
2190-mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr)
2191+mach_notify_port_destroyed(struct thread *td, struct mach_right *mr)
2192 {
2193 	struct mach_port *mp;
2194 	mach_notify_port_destroyed_request_t *req;
2195@@ -65,7 +65,7 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr)
2196
2197 	MACH_PORT_REF(mp);
2198
2199-	req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
2200+	req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
2201
2202 	req->req_msgh.msgh_bits =
2203 	    MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE);
2204@@ -77,10 +77,10 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr)
2205
2206 	mach_set_trailer(req, sizeof(*req));
2207
2208-	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l);
2209+	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td);
2210 #ifdef DEBUG_MACH_MSG
2211 	printf("pid %d: message queued on port %p (%d) [%p]\n",
2212-	    l->l_proc->p_pid, mp, req->req_msgh.msgh_id,
2213+	    td->td_proc->p_pid, mp, req->req_msgh.msgh_id,
2214 	    mp->mp_recv->mr_sethead);
2215 #endif
2216 	wakeup(mp->mp_recv->mr_sethead);
2217@@ -91,7 +91,7 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr)
2218 }
2219
2220 void
2221-mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr)
2222+mach_notify_port_no_senders(struct thread *td, struct mach_right *mr)
2223 {
2224 	struct mach_port *mp;
2225 	mach_notify_port_no_senders_request_t *req;
2226@@ -113,7 +113,7 @@ mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr)
2227 	if ((int)mp->mp_data >= mr->mr_refcount)
2228 		goto out;
2229
2230-	req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
2231+	req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
2232
2233 	req->req_msgh.msgh_bits =
2234 	    MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE);
2235@@ -124,10 +124,10 @@ mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr)
2236
2237 	mach_set_trailer(req, sizeof(*req));
2238
2239-	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l);
2240+	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td);
2241 #ifdef DEBUG_MACH_MSG
2242 	printf("pid %d: message queued on port %p (%d) [%p]\n",
2243-	    l->l_proc->p_pid, mp, req->req_msgh.msgh_id,
2244+	    td->td_proc->p_pid, mp, req->req_msgh.msgh_id,
2245 	    mp->mp_recv->mr_sethead);
2246 #endif
2247 	wakeup(mp->mp_recv->mr_sethead);
2248@@ -138,7 +138,7 @@ out:
2249 }
2250
2251 void
2252-mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr)
2253+mach_notify_port_dead_name(struct thread *td, struct mach_right *mr)
2254 {
2255 	struct mach_port *mp;
2256 	mach_notify_port_dead_name_request_t *req;
2257@@ -156,7 +156,7 @@ mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr)
2258 #endif
2259 	MACH_PORT_REF(mp);
2260
2261-	req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO);
2262+	req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO);
2263
2264 	req->req_msgh.msgh_bits =
2265 	    MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE);
2266@@ -169,10 +169,10 @@ mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr)
2267
2268 	mr->mr_refcount++;
2269
2270-	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l);
2271+	(void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td);
2272 #ifdef DEBUG_MACH_MSG
2273 	printf("pid %d: message queued on port %p (%d) [%p]\n",
2274-	    l->l_proc->p_pid, mp, req->req_msgh.msgh_id,
2275+	    td->td_proc->p_pid, mp, req->req_msgh.msgh_id,
2276 	    mp->mp_recv->mr_sethead);
2277 #endif
2278 	wakeup(mp->mp_recv->mr_sethead);
2279diff --git a/sys/compat/mach/mach_notify.h b/sys/compat/mach/mach_notify.h
2280index 06b2bd4..a413854 100644
2281--- a/sys/compat/mach/mach_notify.h
2282+++ b/sys/compat/mach/mach_notify.h
2283@@ -1,4 +1,4 @@
2284-/*	$NetBSD: mach_notify.h,v 1.10 2008/04/28 20:23:44 martin Exp $ */
2285+/*	$FreeBSD$ */
2286
2287 /*-
2288  * Copyright (c) 2003 The NetBSD Foundation, Inc.
2289@@ -71,9 +71,9 @@ typedef struct {
2290 	mach_msg_trailer_t req_trailer;
2291 } mach_notify_port_dead_name_request_t;
2292
2293-void mach_notify_port_destroyed(struct lwp *, struct mach_right *);
2294-void mach_notify_port_no_senders(struct lwp *, struct mach_right *);
2295-void mach_notify_port_dead_name(struct lwp *, struct mach_right *);
2296+void mach_notify_port_destroyed(struct thread *, struct mach_right *);
2297+void mach_notify_port_no_senders(struct thread *, struct mach_right *);
2298+void mach_notify_port_dead_name(struct thread *, struct mach_right *);
2299
2300 #endif /* _MACH_NOTIFICATION_H_ */
2301
2302diff --git a/sys/compat/mach/mach_port.c b/sys/compat/mach/mach_port.c
2303index a891600..0b0efc9 100644
2304--- a/sys/compat/mach/mach_port.c
2305+++ b/sys/compat/mach/mach_port.c
2306@@ -1,5 +1,3 @@
2307-/*	$NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $ */
2308-
2309 /*-
2310  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
2311  * All rights reserved.
2312@@ -9,12 +7,12 @@
2313  *
2314  * Redistribution and use in source and binary forms, with or without
2315  * modification, are permitted provided that the following conditions
2316- * are met:
2317- * 1. Redistributions of source code must retain the above copyright
2318- *    notice, this list of conditions and the following disclaimer.
2319- * 2. Redistributions in binary form must reproduce the above copyright
2320- *    notice, this list of conditions and the following disclaimer in the
2321- *    documentation and/or other materials provided with the distribution.
2322+ * are met: 1. Redistributions of source code must retain the above
2323+ * copyright notice, this list of conditions and the following
2324+ * disclaimer.  2. Redistributions in binary form must reproduce the
2325+ * above copyright notice, this list of conditions and the following
2326+ * disclaimer in the documentation and/or other materials provided
2327+ * with the distribution.
2328  *
2329  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
2330  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2331@@ -29,10 +27,8 @@
2332  * POSSIBILITY OF SUCH DAMAGE.
2333  */
2334
2335-#include "opt_compat_darwin.h"
2336-
2337 #include <sys/cdefs.h>
2338-__KERNEL_RCSID(0, "$NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $");
2339+__FBSDID("$FreeBSD$");
2340
2341 #include <sys/types.h>
2342 #include <sys/param.h>
2343@@ -52,7 +48,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $"
2344 #include <compat/mach/mach_errno.h>
2345 #include <compat/mach/mach_notify.h>
2346 #include <compat/mach/mach_services.h>
2347-#include <compat/mach/mach_syscallargs.h>
2348+#include <compat/mach/mach_proto.h>
2349
2350 #ifdef COMPAT_DARWIN
2351 #include <compat/darwin/darwin_exec.h>
2352@@ -68,53 +64,53 @@ struct mach_port *mach_io_master_port;
2353 struct mach_port *mach_saved_bootstrap_port;
2354
2355 int
2356-mach_sys_reply_port(struct lwp *l, const void *v, register_t *retval)
2357+mach_sys_reply_port(struct thread *td, const void *v)
2358 {
2359 	struct mach_right *mr;
2360
2361-	mr = mach_right_get(mach_port_get(), l, MACH_PORT_TYPE_RECEIVE, 0);
2362-	*retval = (register_t)mr->mr_name;
2363+	mr = mach_right_get(mach_port_get(), td, MACH_PORT_TYPE_RECEIVE, 0);
2364+	td->td_retval[0] = (register_t)mr->mr_name;
2365
2366 	return 0;
2367 }
2368
2369 int
2370-mach_sys_thread_self_trap(struct lwp *l, const void *v, register_t *retval)
2371+mach_sys_thread_self_trap(struct thread *td, const void *v)
2372 {
2373 	struct mach_lwp_emuldata *mle;
2374 	struct mach_right *mr;
2375
2376 	mle = l->l_emuldata;
2377-	mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0);
2378-	*retval = (register_t)mr->mr_name;
2379+	mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0);
2380+	td->td_retval[0] = (register_t)mr->mr_name;
2381
2382 	return 0;
2383 }
2384
2385
2386 int
2387-mach_sys_task_self_trap(struct lwp *l, const void *v, register_t *retval)
2388+mach_task_self_trap(struct thread *td, const void *v)
2389 {
2390 	struct mach_emuldata *med;
2391 	struct mach_right *mr;
2392
2393-	med = (struct mach_emuldata *)l->l_proc->p_emuldata;
2394-	mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0);
2395-	*retval = (register_t)mr->mr_name;
2396+	med = (struct mach_emuldata *)td->td_proc->p_emuldata;
2397+	mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0);
2398+	td->td_retval[0] = (register_t)mr->mr_name;
2399
2400 	return 0;
2401 }
2402
2403
2404 int
2405-mach_sys_host_self_trap(struct lwp *l, const void *v, register_t *retval)
2406+mach_sys_host_self_trap(struct thread *td, const void *v)
2407 {
2408 	struct mach_emuldata *med;
2409 	struct mach_right *mr;
2410
2411-	med = (struct mach_emuldata *)l->l_proc->p_emuldata;
2412-	mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0);
2413-	*retval = (register_t)mr->mr_name;
2414+	med = (struct mach_emuldata *)td->td_proc->p_emuldata;
2415+	mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0);
2416+	td->td_retval[0] = (register_t)mr->mr_name;
2417
2418 	return 0;
2419 }
2420@@ -125,12 +121,12 @@ mach_port_deallocate(struct mach_trap_args *args)
2421 	mach_port_deallocate_request_t *req = args->smsg;
2422 	mach_port_deallocate_reply_t *rep = args->rmsg;
2423 	size_t *msglen = args->rsize;
2424-	struct lwp *l = args->l;
2425+	struct thread *td = args->td;
2426 	mach_port_t mn;
2427 	struct mach_right *mr;
2428
2429 	mn = req->req_name;
2430-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_REF_RIGHTS)) != NULL)
2431+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_REF_RIGHTS)) != NULL)
2432 		mach_right_put(mr, MACH_PORT_TYPE_REF_RIGHTS);
2433
2434 	*msglen = sizeof(*rep);
2435@@ -149,7 +145,7 @@ mach_port_destroy(struct mach_trap_args *args)
2436 	mach_port_destroy_request_t *req = args->smsg;
2437 	mach_port_destroy_reply_t *rep = args->rmsg;
2438 	size_t *msglen = args->rsize;
2439-	struct lwp *l = args->l;
2440+	struct thread *td = args->td;
2441 	mach_port_t mn;
2442 	struct mach_right *mr;
2443
2444@@ -158,7 +154,7 @@ mach_port_destroy(struct mach_trap_args *args)
2445 #endif
2446 	mn = req->req_name;
2447 	if ((mr = mach_right_check(mn,
2448-	    l, MACH_PORT_TYPE_ALL_RIGHTS)) != NULL) {
2449+	    td, MACH_PORT_TYPE_ALL_RIGHTS)) != NULL) {
2450 		MACH_PORT_UNREF(mr->mr_port);
2451 		mr->mr_port = NULL;
2452 		mach_right_put(mr, MACH_PORT_TYPE_ALL_RIGHTS);
2453@@ -180,22 +176,22 @@ mach_port_allocate(struct mach_trap_args *args)
2454 	mach_port_allocate_request_t *req = args->smsg;
2455 	mach_port_allocate_reply_t *rep = args->rmsg;
2456 	size_t *msglen = args->rsize;
2457-	struct lwp *l = args->l;
2458+	struct thread *td = args->td;
2459 	struct mach_right *mr;
2460 	struct mach_port *mp;
2461
2462 	switch (req->req_right) {
2463 	case MACH_PORT_RIGHT_RECEIVE:
2464 		mp = mach_port_get();
2465-		mr = mach_right_get(mp, l, MACH_PORT_TYPE_RECEIVE, 0);
2466+		mr = mach_right_get(mp, td, MACH_PORT_TYPE_RECEIVE, 0);
2467 		break;
2468
2469 	case MACH_PORT_RIGHT_DEAD_NAME:
2470-		mr = mach_right_get(NULL, l, MACH_PORT_TYPE_DEAD_NAME, 0);
2471+		mr = mach_right_get(NULL, td, MACH_PORT_TYPE_DEAD_NAME, 0);
2472 		break;
2473
2474 	case MACH_PORT_RIGHT_PORT_SET:
2475-		mr = mach_right_get(NULL, l, MACH_PORT_TYPE_PORT_SET, 0);
2476+		mr = mach_right_get(NULL, td, MACH_PORT_TYPE_PORT_SET, 0);
2477 		break;
2478
2479 	default:
2480@@ -222,7 +218,7 @@ mach_port_insert_right(struct mach_trap_args *args)
2481 	mach_port_insert_right_request_t *req = args->smsg;
2482 	mach_port_insert_right_reply_t *rep = args->rmsg;
2483 	size_t *msglen = args->rsize;
2484-	struct lwp *l = args->l;
2485+	struct thread *td = args->td;
2486 	mach_port_t name;
2487 	mach_port_t right;
2488 	struct mach_right *mr;
2489@@ -232,7 +228,7 @@ mach_port_insert_right(struct mach_trap_args *args)
2490 	right = req->req_poly.name;
2491 	nmr = NULL;
2492
2493-	mr = mach_right_check(right, l, MACH_PORT_TYPE_ALL_RIGHTS);
2494+	mr = mach_right_check(right, td, MACH_PORT_TYPE_ALL_RIGHTS);
2495 	if (mr == NULL)
2496 		return mach_msg_error(args, EPERM);
2497
2498@@ -241,18 +237,18 @@ mach_port_insert_right(struct mach_trap_args *args)
2499 	case MACH_MSG_TYPE_MOVE_SEND:
2500 	case MACH_MSG_TYPE_COPY_SEND:
2501 		nmr = mach_right_get(mr->mr_port,
2502-		    l, MACH_PORT_TYPE_SEND, name);
2503+		    td, MACH_PORT_TYPE_SEND, name);
2504 		break;
2505
2506 	case MACH_MSG_TYPE_MAKE_SEND_ONCE:
2507 	case MACH_MSG_TYPE_MOVE_SEND_ONCE:
2508 		nmr = mach_right_get(mr->mr_port,
2509-		    l, MACH_PORT_TYPE_SEND_ONCE, name);
2510+		    td, MACH_PORT_TYPE_SEND_ONCE, name);
2511 		break;
2512
2513 	case MACH_MSG_TYPE_MOVE_RECEIVE:
2514 		nmr = mach_right_get(mr->mr_port,
2515-		    l, MACH_PORT_TYPE_RECEIVE, name);
2516+		    td, MACH_PORT_TYPE_RECEIVE, name);
2517 		break;
2518
2519 	default:
2520@@ -277,12 +273,12 @@ mach_port_type(struct mach_trap_args *args)
2521 	mach_port_type_request_t *req = args->smsg;
2522 	mach_port_type_reply_t *rep = args->rmsg;
2523 	size_t *msglen = args->rsize;
2524-	struct lwp *l = args->l;
2525+	struct thread *td = args->td;
2526 	mach_port_t mn;
2527 	struct mach_right *mr;
2528
2529 	mn = req->req_name;
2530-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2531+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2532 		return mach_msg_error(args, EPERM);
2533
2534 	*msglen = sizeof(*rep);
2535@@ -336,7 +332,7 @@ mach_port_get_attributes(struct mach_trap_args *args)
2536 	mach_port_get_attributes_request_t *req = args->smsg;
2537 	mach_port_get_attributes_reply_t *rep = args->rmsg;
2538 	size_t *msglen = args->rsize;
2539-	struct lwp *l = args->l;
2540+	struct thread *td = args->td;
2541 	mach_port_t mn;
2542 	struct mach_right *mr;
2543
2544@@ -345,7 +341,7 @@ mach_port_get_attributes(struct mach_trap_args *args)
2545 		return mach_msg_error(args, EINVAL);
2546
2547 	mn = req->req_msgh.msgh_remote_port;
2548-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2549+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2550 		return mach_msg_error(args, EPERM);
2551
2552 	switch (req->req_flavor) {
2553@@ -440,18 +436,18 @@ mach_port_move_member(struct mach_trap_args *args)
2554 	mach_port_move_member_request_t *req = args->smsg;
2555 	mach_port_move_member_reply_t *rep = args->rmsg;
2556 	size_t *msglen = args->rsize;
2557-	struct lwp *l = args->l;
2558-	struct mach_emuldata *med = l->l_proc->p_emuldata;
2559+	struct thread *td = args->td;
2560+	struct mach_emuldata *med = td->td_proc->p_emuldata;
2561 	mach_port_t member = req->req_member;
2562 	mach_port_t after = req->req_after;
2563 	struct mach_right *mrr;
2564 	struct mach_right *mrs;
2565
2566-	mrr = mach_right_check(member, l, MACH_PORT_TYPE_RECEIVE);
2567+	mrr = mach_right_check(member, td, MACH_PORT_TYPE_RECEIVE);
2568 	if (mrr == NULL)
2569 		return mach_msg_error(args, EPERM);
2570
2571-	mrs = mach_right_check(after, l, MACH_PORT_TYPE_PORT_SET);
2572+	mrs = mach_right_check(after, td, MACH_PORT_TYPE_PORT_SET);
2573 	if (mrs == NULL)
2574 		return mach_msg_error(args, EPERM);
2575
2576@@ -482,7 +478,7 @@ mach_port_request_notification(struct mach_trap_args *args)
2577 {
2578 	mach_port_request_notification_request_t *req = args->smsg;
2579 	mach_port_request_notification_reply_t *rep = args->rmsg;
2580-	struct lwp *l = args->l;
2581+	struct thread *td = args->td;
2582 	size_t *msglen = args->rsize;
2583 	mach_port_t mn;
2584 	struct mach_right *nmr;
2585@@ -495,11 +491,11 @@ mach_port_request_notification(struct mach_trap_args *args)
2586 	    req->req_notify.name, mn = req->req_name);
2587 #endif
2588 	mn = req->req_notify.name;
2589-	if ((nmr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2590+	if ((nmr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2591 		return mach_msg_error(args, EINVAL);
2592
2593 	mn = req->req_name;
2594-	if ((tmr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2595+	if ((tmr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
2596 		return mach_msg_error(args, EINVAL);
2597
2598 #ifdef DEBUG_MACH
2599@@ -516,13 +512,13 @@ mach_port_request_notification(struct mach_trap_args *args)
2600 	case MACH_NOTIFY_DESTROYED_MSGID:
2601 		oldnmr = tmr->mr_notify_destroyed;
2602 		tmr->mr_notify_destroyed = mach_right_get(nmr->mr_port,
2603-		    l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2604+		    td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2605 		break;
2606
2607 	case MACH_NOTIFY_NO_SENDERS_MSGID:
2608 		oldnmr = tmr->mr_notify_no_senders;
2609 		tmr->mr_notify_no_senders = mach_right_get(nmr->mr_port,
2610-		    l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2611+		    td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2612 		tmr->mr_notify_no_senders->mr_port->mp_datatype =
2613 		    MACH_MP_NOTIFY_SYNC;
2614 		tmr->mr_notify_no_senders->mr_port->mp_data = (void *)
2615@@ -532,7 +528,7 @@ mach_port_request_notification(struct mach_trap_args *args)
2616 	case MACH_NOTIFY_DEAD_NAME_MSGID:
2617 		oldnmr = tmr->mr_notify_dead_name;
2618 		tmr->mr_notify_dead_name = mach_right_get(nmr->mr_port,
2619-		    l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2620+		    td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name);
2621 		break;
2622
2623 	case MACH_NOTIFY_SEND_ONCE_MSGID:
2624@@ -566,13 +562,13 @@ mach_port_get_refs(struct mach_trap_args *args)
2625 	mach_port_get_refs_request_t *req = args->smsg;
2626 	mach_port_get_refs_reply_t *rep = args->rmsg;
2627 	size_t *msglen = args->rsize;
2628-	struct lwp *l = args->l;
2629+	struct thread *td = args->td;
2630 	mach_port_t mn;
2631 	struct mach_right *mr;
2632 	mach_port_right_t right = req->req_right;
2633
2634 	mn = req->req_name;
2635-	if ((mr = mach_right_check(mn, l, right)) == NULL)
2636+	if ((mr = mach_right_check(mn, td, right)) == NULL)
2637 		return mach_msg_error(args, EINVAL);
2638
2639 	*msglen = sizeof(*rep);
2640@@ -593,13 +589,13 @@ mach_port_mod_refs(struct mach_trap_args *args)
2641 	mach_port_mod_refs_reply_t *rep = args->rmsg;
2642 	size_t *msglen = args->rsize;
2643 #if 0
2644-	struct lwp *l = args->l;
2645+	struct thread *td = args->td;
2646 	mach_port_t mn;
2647 	struct mach_right *mr;
2648 	mach_port_right_t right = req->req_right;
2649
2650 	mn = req->req_name;
2651-	if ((mr = mach_right_check(mn, l, right)) == NULL)
2652+	if ((mr = mach_right_check(mn, td, right)) == NULL)
2653 		return mach_msg_error(args, EINVAL);
2654
2655 	/*
2656@@ -680,7 +676,7 @@ mach_port_put(struct mach_port *mp)
2657 	rw_destroy(&mp->mp_msglock);
2658
2659 	if (mp->mp_flags & MACH_MP_DATA_ALLOCATED)
2660-		free(mp->mp_data, M_EMULDATA);
2661+		free(mp->mp_data, M_MACH);
2662
2663 	pool_put(&mach_port_pool, mp);
2664
2665@@ -688,7 +684,7 @@ mach_port_put(struct mach_port *mp)
2666 }
2667
2668 struct mach_right *
2669-mach_right_get(struct mach_port *mp, struct lwp *l, int type, mach_port_t hint)
2670+mach_right_get(struct mach_port *mp, struct thread *td, int type, mach_port_t hint)
2671 {
2672 	struct mach_right *mr;
2673 	struct mach_emuldata *med;
2674@@ -698,7 +694,7 @@ mach_right_get(struct mach_port *mp, struct lwp *l, int type, mach_port_t hint)
2675 	if (type == 0)
2676 		uprintf("mach_right_get: right = 0\n");
2677 #endif
2678-	med = (struct mach_emuldata *)l->l_proc->p_emuldata;
2679+	med = (struct mach_emuldata *)td->td_proc->p_emuldata;
2680
2681 	if (mp != NULL)
2682 		MACH_PORT_REF(mp);
2683@@ -888,7 +884,7 @@ mach_right_put_exclocked(struct mach_right *mr, int right)
2684  * Check that a process has a given right.
2685  */
2686 struct mach_right *
2687-mach_right_check(mach_port_t mn, struct lwp *l, int type)
2688+mach_right_check(mach_port_t mn, struct thread *td, int type)
2689 {
2690 	struct mach_right *cmr;
2691 	struct mach_emuldata *med;
2692@@ -896,7 +892,7 @@ mach_right_check(mach_port_t mn, struct lwp *l, int type)
2693 	if ((mn == 0) || (mn == -1) || (l == NULL))
2694 		return NULL;
2695
2696-	med = (struct mach_emuldata *)l->l_proc->p_emuldata;
2697+	med = (struct mach_emuldata *)td->td_proc->p_emuldata;
2698
2699 	rw_enter(&med->med_rightlock, RW_READER);
2700
2701@@ -925,13 +921,13 @@ mach_right_check(mach_port_t mn, struct lwp *l, int type)
2702  * Right lists should be locked.
2703  */
2704 mach_port_t
2705-mach_right_newname(struct lwp *l, mach_port_t hint)
2706+mach_right_newname(struct thread *td, mach_port_t hint)
2707 {
2708 	struct mach_emuldata *med;
2709 	struct mach_right *mr;
2710 	mach_port_t newname = -1;
2711
2712-	med = l->l_proc->p_emuldata;
2713+	med = td->td_proc->p_emuldata;
2714
2715 	if (hint == 0)
2716 		hint = med->med_nextright;
2717diff --git a/sys/compat/mach/mach_port.h b/sys/compat/mach/mach_port.h
2718index 8399791..4c9cb6b 100644
2719--- a/sys/compat/mach/mach_port.h
2720+++ b/sys/compat/mach/mach_port.h
2721@@ -1,4 +1,4 @@
2722-/*	$NetBSD: mach_port.h,v 1.40 2008/04/28 20:23:44 martin Exp $ */
2723+/*	$FreeBSD$ */
2724
2725 /*-
2726  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
2727@@ -31,6 +31,8 @@
2728
2729 #ifndef	_MACH_PORT_H_
2730 #define	_MACH_PORT_H_
2731+#include <sys/lock.h>
2732+#include <sys/rwlock.h>
2733
2734 #define MACH_PORT_REF(mp)	(mp)->mp_refcount++
2735 #define MACH_PORT_UNREF(mp)	if (--(mp)->mp_refcount <= 0) mach_port_put(mp)
2736@@ -294,7 +296,7 @@ extern struct mach_port *mach_saved_bootstrap_port;
2737 /* In-kernel Mach port right description */
2738 struct mach_right {
2739 	mach_port_t mr_name;		/* The right name */
2740-	struct lwp *mr_lwp;		/* points back to struct lwp */
2741+	struct thread *mr_lwp;		/* points back to struct thread */
2742 	int mr_type;			/* right type (recv, send, sendonce) */
2743 	LIST_ENTRY(mach_right) mr_list; /* Right list for a process */
2744 	int mr_refcount;		/* Reference count */
2745@@ -314,13 +316,13 @@ struct mach_right {
2746 	struct mach_right *mr_sethead;	/* Points back to right set */
2747 };
2748
2749-mach_port_t mach_right_newname(struct lwp *, mach_port_t);
2750+mach_port_t mach_right_newname(struct thread *, mach_port_t);
2751 struct mach_right *mach_right_get(struct mach_port *,
2752-    struct lwp *, int, mach_port_t);
2753+    struct thread *, int, mach_port_t);
2754 void mach_right_put(struct mach_right *, int);
2755 void mach_right_put_shlocked(struct mach_right *, int);
2756 void mach_right_put_exclocked(struct mach_right *, int);
2757-struct mach_right *mach_right_check(mach_port_t, struct lwp *, int);
2758+struct mach_right *mach_right_check(mach_port_t, struct thread *, int);
2759
2760 /* In-kernel Mach port description */
2761 struct mach_port {
2762@@ -328,7 +330,7 @@ struct mach_port {
2763 	int mp_count;			/* Count of queued messages */
2764 	TAILQ_HEAD(mp_msglist,		/* Queue pending messages */
2765 	    mach_message) mp_msglist;
2766-	krwlock_t mp_msglock;		/* Lock for the queue */
2767+	struct rwlock mp_msglock;		/* Lock for the queue */
2768 	int mp_refcount;		/* Reference count */
2769 	int mp_flags;			/* Flags, see below */
2770 	int mp_datatype;		/* Type of field mp_data, see below */
2771@@ -341,7 +343,7 @@ struct mach_port {
2772
2773 /* mp_datatype for struct mach_port */
2774 #define	MACH_MP_NONE		0x0	/* No data */
2775-#define MACH_MP_LWP		0x1	/* (struct lwp *) */
2776+#define MACH_MP_LWP		0x1	/* (struct thread *) */
2777 #define MACH_MP_DEVICE_ITERATOR	0x2	/* (struct mach_device_iterator *) */
2778 #define MACH_MP_IOKIT_DEVCLASS	0x3	/* (struct mach_iokit_devclass *) */
2779 #define MACH_MP_PROC		0x4	/* (struct proc *) */
2780@@ -354,7 +356,7 @@ void mach_port_init(void);
2781 struct mach_port *mach_port_get(void);
2782 void mach_port_put(struct mach_port *);
2783 void mach_remove_recvport(struct mach_port *);
2784-void mach_add_recvport(struct mach_port *, struct lwp *);
2785+void mach_add_recvport(struct mach_port *, struct thread *);
2786 int mach_port_check(struct mach_port *);
2787 #ifdef DEBUG_MACH
2788 void mach_debug_port(void);
2789diff --git a/sys/compat/mach/mach_proto.h b/sys/compat/mach/mach_proto.h
2790new file mode 100644
2791index 0000000..f19ee38
2792--- /dev/null
2793+++ b/sys/compat/mach/mach_proto.h
2794@@ -0,0 +1,276 @@
2795+/*
2796+ * System call prototypes.
2797+ *
2798+ * DO NOT EDIT-- this file is automatically generated.
2799+ * $FreeBSD$
2800+ * created from	FreeBSD
2801+ */
2802+
2803+#ifndef _MACH_SYSPROTO_H_
2804+#define	_MACH_SYSPROTO_H_
2805+
2806+#include <sys/signal.h>
2807+#include <sys/acl.h>
2808+#include <sys/cpuset.h>
2809+#include <sys/_ffcounter.h>
2810+#include <sys/_semaphore.h>
2811+#include <sys/ucontext.h>
2812+#include <sys/wait.h>
2813+
2814+#include <bsm/audit_kevents.h>
2815+
2816+struct proc;
2817+
2818+struct thread;
2819+
2820+#define	PAD_(t)	(sizeof(register_t) <= sizeof(t) ? \
2821+		0 : sizeof(register_t) - sizeof(t))
2822+
2823+#if BYTE_ORDER == LITTLE_ENDIAN
2824+#define	PADL_(t)	0
2825+#define	PADR_(t)	PAD_(t)
2826+#else
2827+#define	PADL_(t)	PAD_(t)
2828+#define	PADR_(t)	0
2829+#endif
2830+
2831+#if defined(_KERNEL_OPT)
2832+#endif
2833+struct mach_reply_port_args {
2834+	register_t dummy;
2835+};
2836+struct mach_thread_self_trap_args {
2837+	register_t dummy;
2838+};
2839+struct mach_task_self_trap_args {
2840+	register_t dummy;
2841+};
2842+struct mach_host_self_trap_args {
2843+	register_t dummy;
2844+};
2845+struct mach_msg_trap_args {
2846+	char msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * msg; char msg_r_[PADR_(mach_msg_header_t *)];
2847+	char option_l_[PADL_(mach_msg_option_t)]; mach_msg_option_t option; char option_r_[PADR_(mach_msg_option_t)];
2848+	char send_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t send_size; char send_size_r_[PADR_(mach_msg_size_t)];
2849+	char rcv_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t rcv_size; char rcv_size_r_[PADR_(mach_msg_size_t)];
2850+	char rcv_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t rcv_name; char rcv_name_r_[PADR_(mach_port_name_t)];
2851+	char timeout_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t timeout; char timeout_r_[PADR_(mach_msg_timeout_t)];
2852+	char notify_l_[PADL_(mach_port_name_t)]; mach_port_name_t notify; char notify_r_[PADR_(mach_port_name_t)];
2853+};
2854+struct mach_msg_overwrite_trap_args {
2855+	char msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * msg; char msg_r_[PADR_(mach_msg_header_t *)];
2856+	char option_l_[PADL_(mach_msg_option_t)]; mach_msg_option_t option; char option_r_[PADR_(mach_msg_option_t)];
2857+	char send_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t send_size; char send_size_r_[PADR_(mach_msg_size_t)];
2858+	char rcv_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t rcv_size; char rcv_size_r_[PADR_(mach_msg_size_t)];
2859+	char rcv_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t rcv_name; char rcv_name_r_[PADR_(mach_port_name_t)];
2860+	char timeout_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t timeout; char timeout_r_[PADR_(mach_msg_timeout_t)];
2861+	char notify_l_[PADL_(mach_port_name_t)]; mach_port_name_t notify; char notify_r_[PADR_(mach_port_name_t)];
2862+	char rcv_msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * rcv_msg; char rcv_msg_r_[PADR_(mach_msg_header_t *)];
2863+	char scatter_list_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t scatter_list_size; char scatter_list_size_r_[PADR_(mach_msg_size_t)];
2864+};
2865+struct mach_semaphore_signal_trap_args {
2866+	char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)];
2867+};
2868+struct mach_semaphore_signal_all_trap_args {
2869+	char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)];
2870+};
2871+struct mach_semaphore_signal_thread_trap_args {
2872+	char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)];
2873+	char thread_l_[PADL_(mach_port_name_t)]; mach_port_name_t thread; char thread_r_[PADR_(mach_port_name_t)];
2874+};
2875+struct mach_semaphore_wait_trap_args {
2876+	char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)];
2877+};
2878+struct mach_semaphore_wait_signal_trap_args {
2879+	char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)];
2880+	char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)];
2881+};
2882+struct mach_semaphore_timedwait_trap_args {
2883+	char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)];
2884+	char sec_l_[PADL_(unsigned int)]; unsigned int sec; char sec_r_[PADR_(unsigned int)];
2885+	char nsec_l_[PADL_(mach_clock_res_t)]; mach_clock_res_t nsec; char nsec_r_[PADR_(mach_clock_res_t)];
2886+};
2887+struct mach_semaphore_timedwait_signal_trap_args {
2888+	char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)];
2889+	char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)];
2890+	char sec_l_[PADL_(unsigned int)]; unsigned int sec; char sec_r_[PADR_(unsigned int)];
2891+	char nsec_l_[PADL_(mach_clock_res_t)]; mach_clock_res_t nsec; char nsec_r_[PADR_(mach_clock_res_t)];
2892+};
2893+struct mach_init_process_args {
2894+	register_t dummy;
2895+};
2896+struct mach_map_fd_args {
2897+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
2898+	char offset_l_[PADL_(mach_vm_offset_t)]; mach_vm_offset_t offset; char offset_r_[PADR_(mach_vm_offset_t)];
2899+	char va_l_[PADL_(mach_vm_offset_t *)]; mach_vm_offset_t * va; char va_r_[PADR_(mach_vm_offset_t *)];
2900+	char findspace_l_[PADL_(mach_boolean_t)]; mach_boolean_t findspace; char findspace_r_[PADR_(mach_boolean_t)];
2901+	char size_l_[PADL_(mach_vm_size_t)]; mach_vm_size_t size; char size_r_[PADR_(mach_vm_size_t)];
2902+};
2903+struct mach_task_for_pid_args {
2904+	char target_tport_l_[PADL_(mach_port_t)]; mach_port_t target_tport; char target_tport_r_[PADR_(mach_port_t)];
2905+	char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
2906+	char t_l_[PADL_(mach_port_t *)]; mach_port_t * t; char t_r_[PADR_(mach_port_t *)];
2907+};
2908+struct mach_pid_for_task_args {
2909+	char t_l_[PADL_(mach_port_t)]; mach_port_t t; char t_r_[PADR_(mach_port_t)];
2910+	char x_l_[PADL_(int *)]; int * x; char x_r_[PADR_(int *)];
2911+};
2912+struct mach_macx_swapon_args {
2913+	char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)];
2914+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
2915+	char size_l_[PADL_(int)]; int size; char size_r_[PADR_(int)];
2916+	char priority_l_[PADL_(int)]; int priority; char priority_r_[PADR_(int)];
2917+};
2918+struct mach_macx_swapoff_args {
2919+	char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)];
2920+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
2921+};
2922+struct mach_macx_triggers_args {
2923+	char hi_water_l_[PADL_(int)]; int hi_water; char hi_water_r_[PADR_(int)];
2924+	char low_water_l_[PADL_(int)]; int low_water; char low_water_r_[PADR_(int)];
2925+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
2926+	char alert_port_l_[PADL_(mach_port_t)]; mach_port_t alert_port; char alert_port_r_[PADR_(mach_port_t)];
2927+};
2928+struct mach_swtch_pri_args {
2929+	char pri_l_[PADL_(int)]; int pri; char pri_r_[PADR_(int)];
2930+};
2931+struct mach_swtch_args {
2932+	register_t dummy;
2933+};
2934+struct mach_syscall_thread_switch_args {
2935+	char thread_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t thread_name; char thread_name_r_[PADR_(mach_port_name_t)];
2936+	char option_l_[PADL_(int)]; int option; char option_r_[PADR_(int)];
2937+	char option_time_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t option_time; char option_time_r_[PADR_(mach_msg_timeout_t)];
2938+};
2939+struct mach_clock_sleep_trap_args {
2940+	char clock_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t clock_name; char clock_name_r_[PADR_(mach_port_name_t)];
2941+	char sleep_type_l_[PADL_(mach_sleep_type_t)]; mach_sleep_type_t sleep_type; char sleep_type_r_[PADR_(mach_sleep_type_t)];
2942+	char sleep_sec_l_[PADL_(int)]; int sleep_sec; char sleep_sec_r_[PADR_(int)];
2943+	char sleep_nsec_l_[PADL_(int)]; int sleep_nsec; char sleep_nsec_r_[PADR_(int)];
2944+	char wakeup_time_l_[PADL_(mach_timespec_t *)]; mach_timespec_t * wakeup_time; char wakeup_time_r_[PADR_(mach_timespec_t *)];
2945+};
2946+struct mach_timebase_info_args {
2947+	char info_l_[PADL_(mach_timebase_info_t)]; mach_timebase_info_t info; char info_r_[PADR_(mach_timebase_info_t)];
2948+};
2949+struct mach_wait_until_args {
2950+	char deadline_l_[PADL_(uint64_t)]; uint64_t deadline; char deadline_r_[PADR_(uint64_t)];
2951+};
2952+struct mach_timer_create_args {
2953+	register_t dummy;
2954+};
2955+struct mach_timer_destroy_args {
2956+	char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)];
2957+};
2958+struct mach_timer_arm_args {
2959+	char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)];
2960+	char expire_time_l_[PADL_(mach_absolute_time_t)]; mach_absolute_time_t expire_time; char expire_time_r_[PADR_(mach_absolute_time_t)];
2961+};
2962+struct mach_timer_cancel_args {
2963+	char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)];
2964+	char result_time_l_[PADL_(mach_absolute_time_t *)]; mach_absolute_time_t * result_time; char result_time_r_[PADR_(mach_absolute_time_t *)];
2965+};
2966+struct mach_get_time_base_info_args {
2967+	register_t dummy;
2968+};
2969+#if defined(_KERNEL_OPT)
2970+#endif
2971+int	sys_mach_reply_port(struct thread *, struct mach_reply_port_args *);
2972+int	sys_mach_thread_self_trap(struct thread *, struct mach_thread_self_trap_args *);
2973+int	sys_mach_task_self_trap(struct thread *, struct mach_task_self_trap_args *);
2974+int	sys_mach_host_self_trap(struct thread *, struct mach_host_self_trap_args *);
2975+int	sys_mach_msg_trap(struct thread *, struct mach_msg_trap_args *);
2976+int	sys_mach_msg_overwrite_trap(struct thread *, struct mach_msg_overwrite_trap_args *);
2977+int	sys_mach_semaphore_signal_trap(struct thread *, struct mach_semaphore_signal_trap_args *);
2978+int	sys_mach_semaphore_signal_all_trap(struct thread *, struct mach_semaphore_signal_all_trap_args *);
2979+int	sys_mach_semaphore_signal_thread_trap(struct thread *, struct mach_semaphore_signal_thread_trap_args *);
2980+int	sys_mach_semaphore_wait_trap(struct thread *, struct mach_semaphore_wait_trap_args *);
2981+int	sys_mach_semaphore_wait_signal_trap(struct thread *, struct mach_semaphore_wait_signal_trap_args *);
2982+int	sys_mach_semaphore_timedwait_trap(struct thread *, struct mach_semaphore_timedwait_trap_args *);
2983+int	sys_mach_semaphore_timedwait_signal_trap(struct thread *, struct mach_semaphore_timedwait_signal_trap_args *);
2984+int	sys_mach_init_process(struct thread *, struct mach_init_process_args *);
2985+int	sys_mach_map_fd(struct thread *, struct mach_map_fd_args *);
2986+int	sys_mach_task_for_pid(struct thread *, struct mach_task_for_pid_args *);
2987+int	sys_mach_pid_for_task(struct thread *, struct mach_pid_for_task_args *);
2988+int	sys_mach_macx_swapon(struct thread *, struct mach_macx_swapon_args *);
2989+int	sys_mach_macx_swapoff(struct thread *, struct mach_macx_swapoff_args *);
2990+int	sys_mach_macx_triggers(struct thread *, struct mach_macx_triggers_args *);
2991+int	sys_mach_swtch_pri(struct thread *, struct mach_swtch_pri_args *);
2992+int	sys_mach_swtch(struct thread *, struct mach_swtch_args *);
2993+int	sys_mach_syscall_thread_switch(struct thread *, struct mach_syscall_thread_switch_args *);
2994+int	sys_mach_clock_sleep_trap(struct thread *, struct mach_clock_sleep_trap_args *);
2995+int	sys_mach_timebase_info(struct thread *, struct mach_timebase_info_args *);
2996+int	sys_mach_wait_until(struct thread *, struct mach_wait_until_args *);
2997+int	sys_mach_timer_create(struct thread *, struct mach_timer_create_args *);
2998+int	sys_mach_timer_destroy(struct thread *, struct mach_timer_destroy_args *);
2999+int	sys_mach_timer_arm(struct thread *, struct mach_timer_arm_args *);
3000+int	sys_mach_timer_cancel(struct thread *, struct mach_timer_cancel_args *);
3001+int	sys_mach_get_time_base_info(struct thread *, struct mach_get_time_base_info_args *);
3002+
3003+#ifdef COMPAT_43
3004+
3005+#if defined(_KERNEL_OPT)
3006+#endif
3007+
3008+#endif /* COMPAT_43 */
3009+
3010+
3011+#ifdef COMPAT_FREEBSD4
3012+
3013+#if defined(_KERNEL_OPT)
3014+#endif
3015+
3016+#endif /* COMPAT_FREEBSD4 */
3017+
3018+
3019+#ifdef COMPAT_FREEBSD6
3020+
3021+#if defined(_KERNEL_OPT)
3022+#endif
3023+
3024+#endif /* COMPAT_FREEBSD6 */
3025+
3026+
3027+#ifdef COMPAT_FREEBSD7
3028+
3029+#if defined(_KERNEL_OPT)
3030+#endif
3031+
3032+#endif /* COMPAT_FREEBSD7 */
3033+
3034+#define	MACH_SYS_AUE_mach_reply_port	AUE_NULL
3035+#define	MACH_SYS_AUE_mach_thread_self_trap	AUE_NULL
3036+#define	MACH_SYS_AUE_mach_task_self_trap	AUE_NULL
3037+#define	MACH_SYS_AUE_mach_host_self_trap	AUE_NULL
3038+#define	MACH_SYS_AUE_mach_msg_trap	AUE_NULL
3039+#define	MACH_SYS_AUE_mach_msg_overwrite_trap	AUE_NULL
3040+#define	MACH_SYS_AUE_mach_semaphore_signal_trap	AUE_NULL
3041+#define	MACH_SYS_AUE_mach_semaphore_signal_all_trap	AUE_NULL
3042+#define	MACH_SYS_AUE_mach_semaphore_signal_thread_trap	AUE_NULL
3043+#define	MACH_SYS_AUE_mach_semaphore_wait_trap	AUE_NULL
3044+#define	MACH_SYS_AUE_mach_semaphore_wait_signal_trap	AUE_NULL
3045+#define	MACH_SYS_AUE_mach_semaphore_timedwait_trap	AUE_NULL
3046+#define	MACH_SYS_AUE_mach_semaphore_timedwait_signal_trap	AUE_NULL
3047+#define	MACH_SYS_AUE_mach_init_process	AUE_NULL
3048+#define	MACH_SYS_AUE_mach_map_fd	AUE_NULL
3049+#define	MACH_SYS_AUE_mach_task_for_pid	AUE_NULL
3050+#define	MACH_SYS_AUE_mach_pid_for_task	AUE_NULL
3051+#define	MACH_SYS_AUE_mach_macx_swapon	AUE_NULL
3052+#define	MACH_SYS_AUE_mach_macx_swapoff	AUE_NULL
3053+#define	MACH_SYS_AUE_mach_macx_triggers	AUE_NULL
3054+#define	MACH_SYS_AUE_mach_swtch_pri	AUE_NULL
3055+#define	MACH_SYS_AUE_mach_swtch	AUE_NULL
3056+#define	MACH_SYS_AUE_mach_syscall_thread_switch	AUE_NULL
3057+#define	MACH_SYS_AUE_mach_clock_sleep_trap	AUE_NULL
3058+#define	MACH_SYS_AUE_mach_timebase_info	AUE_NULL
3059+#define	MACH_SYS_AUE_mach_wait_until	AUE_NULL
3060+#define	MACH_SYS_AUE_mach_timer_create	AUE_NULL
3061+#define	MACH_SYS_AUE_mach_timer_destroy	AUE_NULL
3062+#define	MACH_SYS_AUE_mach_timer_arm	AUE_NULL
3063+#define	MACH_SYS_AUE_mach_timer_cancel	AUE_NULL
3064+#define	MACH_SYS_AUE_mach_get_time_base_info	AUE_NULL
3065+
3066+#undef PAD_
3067+#undef PADL_
3068+#undef PADR_
3069+
3070+#endif /* !_MACH_SYSPROTO_H_ */
3071diff --git a/sys/compat/mach/mach_semaphore.c b/sys/compat/mach/mach_semaphore.c
3072index 327c893..6953b1a 100644
3073--- a/sys/compat/mach/mach_semaphore.c
3074+++ b/sys/compat/mach/mach_semaphore.c
3075@@ -1,5 +1,3 @@
3076-/*	$NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin Exp $ */
3077-
3078 /*-
3079  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
3080  * All rights reserved.
3081@@ -30,16 +28,17 @@
3082  */
3083
3084 #include <sys/cdefs.h>
3085-__KERNEL_RCSID(0, "$NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin Exp $");
3086+__FBSDID("$FreeBSD$");
3087
3088 #include <sys/types.h>
3089 #include <sys/param.h>
3090 #include <sys/systm.h>
3091 #include <sys/signal.h>
3092-#include <sys/pool.h>
3093-#include <sys/rwlock.h>
3094+#include <sys/lock.h>
3095 #include <sys/malloc.h>
3096+#include <sys/pool.h>
3097 #include <sys/proc.h>
3098+#include <sys/rwlock.h>
3099
3100 #include <compat/mach/mach_types.h>
3101 #include <compat/mach/mach_message.h>
3102@@ -48,7 +47,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin E
3103 #include <compat/mach/mach_errno.h>
3104 #include <compat/mach/mach_port.h>
3105 #include <compat/mach/mach_services.h>
3106-#include <compat/mach/mach_syscallargs.h>
3107+#include <compat/mach/mach_proto.h>
3108
3109 /* Semaphore list, lock, pools */
3110 static LIST_HEAD(mach_semaphore_list, mach_semaphore) mach_semaphore_list;
3111@@ -65,7 +64,7 @@ static void mach_waiting_lwp_put
3112     (struct mach_waiting_lwp *, struct mach_semaphore *, int);
3113
3114 int
3115-mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait_trap_args *uap, register_t *retval)
3116+mach_sys_semaphore_wait_trap(struct thread *td, struct mach_sys_semaphore_wait_trap_args *uap)
3117 {
3118 	/* {
3119 		syscallarg(mach_port_name_t) wait_name;
3120@@ -76,8 +75,8 @@ mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait
3121 	mach_port_t mn;
3122 	int blocked = 0;
3123
3124-	mn = SCARG(uap, wait_name);
3125-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3126+	mn = uap->wait_name);
3127+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3128 		return EPERM;
3129
3130 	if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE)
3131@@ -101,7 +100,7 @@ mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait
3132 }
3133
3134 int
3135-mach_sys_semaphore_signal_trap(struct lwp *l, const struct mach_sys_semaphore_signal_trap_args *uap, register_t *retval)
3136+mach_sys_semaphore_signal_trap(struct thread *td, struct mach_sys_semaphore_signal_trap_args *uap)
3137 {
3138 	/* {
3139 		syscallarg(mach_port_name_t) signal_name;
3140@@ -112,8 +111,8 @@ mach_sys_semaphore_signal_trap(struct lwp *l, const struct mach_sys_semaphore_si
3141 	mach_port_t mn;
3142 	int unblocked = 0;
3143
3144-	mn = SCARG(uap, signal_name);
3145-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3146+	mn = uap->signal_name);
3147+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3148 		return EPERM;
3149
3150 	if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE)
3151@@ -142,7 +141,7 @@ mach_semaphore_create(struct mach_trap_args *args)
3152 	mach_semaphore_create_request_t *req = args->smsg;
3153 	mach_semaphore_create_reply_t *rep = args->rmsg;
3154 	size_t *msglen = args->rsize;
3155-	struct lwp *l = args->l;
3156+	struct thread *td = args->td;
3157 	struct mach_semaphore *ms;
3158 	struct mach_port *mp;
3159 	struct mach_right *mr;
3160@@ -153,7 +152,7 @@ mach_semaphore_create(struct mach_trap_args *args)
3161 	mp->mp_datatype = MACH_MP_SEMAPHORE;
3162 	mp->mp_data = (void *)ms;
3163
3164-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
3165+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
3166
3167 	*msglen = sizeof(*rep);
3168 	mach_set_header(rep, req, *msglen);
3169@@ -168,14 +167,14 @@ mach_semaphore_destroy(struct mach_trap_args *args)
3170 {
3171 	mach_semaphore_destroy_request_t *req = args->smsg;
3172 	mach_semaphore_destroy_reply_t *rep = args->rmsg;
3173-	struct lwp *l = args->l;
3174+	struct thread *td = args->td;
3175 	size_t *msglen = args->rsize;
3176 	struct mach_semaphore *ms;
3177 	struct mach_right *mr;
3178 	mach_port_t mn;
3179
3180 	mn = req->req_sem.name;
3181-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3182+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
3183 		return mach_msg_error(args, EPERM);
3184
3185 	if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE)
3186@@ -248,7 +247,7 @@ mach_semaphore_put(struct mach_semaphore *ms)
3187 }
3188
3189 static struct mach_waiting_lwp *
3190-mach_waiting_lwp_get(struct lwp *l, struct mach_semaphore *ms)
3191+mach_waiting_lwp_get(struct thread *td, struct mach_semaphore *ms)
3192 {
3193 	struct mach_waiting_lwp *mwl;
3194
3195@@ -281,7 +280,7 @@ mach_waiting_lwp_put(struct mach_waiting_lwp *mwl, struct mach_semaphore *ms, in
3196  * can be some memory leaks here.
3197  */
3198 void
3199-mach_semaphore_cleanup(struct lwp *l)
3200+mach_semaphore_cleanup(struct thread *td)
3201 {
3202 	struct mach_semaphore *ms;
3203 	struct mach_waiting_lwp *mwl;
3204@@ -304,7 +303,7 @@ mach_semaphore_cleanup(struct lwp *l)
3205 }
3206
3207 int
3208-mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semaphore_wait_signal_trap_args *uap, register_t *retval)
3209+mach_sys_semaphore_wait_signal_trap(struct thread *td, struct mach_sys_semaphore_wait_signal_trap_args *uap)
3210 {
3211 	/* {
3212 		syscallarg(mach_port_name_t) wait_name;
3213@@ -314,12 +313,12 @@ mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semapho
3214 	struct mach_sys_semaphore_signal_trap_args cupsig;
3215 	int error;
3216
3217-	SCARG(&cupsig, signal_name) = SCARG(uap, signal_name);
3218-	if ((error = mach_sys_semaphore_signal_trap(l, &cupsig, retval)) != 0)
3219+	&cupsig->signal_name = uap->signal_name;
3220+	if ((error = mach_sys_semaphore_signal_trap(td, &cupsig)) != 0)
3221 		return error;
3222
3223-	SCARG(&cupwait, wait_name) = SCARG(uap, wait_name);
3224-	if ((error = mach_sys_semaphore_wait_trap(l, &cupwait, retval)) != 0)
3225+	&cupwait->wait_name = uap->wait_name;
3226+	if ((error = mach_sys_semaphore_wait_trap(td, &cupwait)) != 0)
3227 		return error;
3228
3229 	return 0;
3230@@ -327,7 +326,7 @@ mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semapho
3231
3232
3233 int
3234-mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semaphore_signal_thread_trap_args *uap, register_t *retval)
3235+mach_sys_semaphore_signal_thread_trap(struct thread *td, struct mach_sys_semaphore_signal_thread_trap_args *uap)
3236 {
3237 	/* {
3238 		syscallarg(mach_port_name_t) signal_name;
3239@@ -342,8 +341,8 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap
3240 	/*
3241 	 * Get the semaphore
3242 	 */
3243-	mn = SCARG(uap, signal_name);
3244-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
3245+	mn = uap->signal_name);
3246+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
3247 		return EINVAL;
3248
3249 	if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE)
3250@@ -355,9 +354,9 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap
3251 	 * Get the thread, and check that it is waiting for our semaphore
3252 	 * If no thread was supplied, pick up the first one.
3253 	 */
3254-	mn = SCARG(uap, thread);
3255+	mn = uap->thread);
3256 	if (mn != 0) {
3257-		if ((mr = mach_right_check(mn, l,
3258+		if ((mr = mach_right_check(mn, td,
3259 		    MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
3260 			return EINVAL;
3261
3262@@ -395,7 +394,7 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap
3263
3264
3265 int
3266-mach_sys_semaphore_signal_all_trap(struct lwp *l, const struct mach_sys_semaphore_signal_all_trap_args *uap, register_t *retval)
3267+mach_sys_semaphore_signal_all_trap(struct thread *td, struct mach_sys_semaphore_signal_all_trap_args *uap)
3268 {
3269 	/* {
3270 		syscallarg(mach_port_name_t) signal_name;
3271@@ -409,8 +408,8 @@ mach_sys_semaphore_signal_all_trap(struct lwp *l, const struct mach_sys_semaphor
3272 	/*
3273 	 * Get the semaphore
3274 	 */
3275-	mn = SCARG(uap, signal_name);
3276-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
3277+	mn = uap->signal_name;
3278+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
3279 		return EINVAL;
3280
3281 	if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE)
3282diff --git a/sys/compat/mach/mach_semaphore.h b/sys/compat/mach/mach_semaphore.h
3283index 337ca3e..26b259f 100644
3284--- a/sys/compat/mach/mach_semaphore.h
3285+++ b/sys/compat/mach/mach_semaphore.h
3286@@ -1,4 +1,4 @@
3287-/*	$NetBSD: mach_semaphore.h,v 1.7 2008/04/28 20:23:44 martin Exp $ */
3288+/*	$FreeBSD$ */
3289
3290 /*-
3291  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
3292@@ -32,6 +32,7 @@
3293 #ifndef	_MACH_SEMAPHORE_H_
3294 #define	_MACH_SEMAPHORE_H_
3295
3296+#include <sys/lock.h>
3297 #include <sys/rwlock.h>
3298 #include <sys/queue.h>
3299
3300@@ -47,7 +48,7 @@ struct mach_semaphore {
3301 	int ms_policy;
3302 	LIST_ENTRY(mach_semaphore) ms_list;
3303 	TAILQ_HEAD(ms_waiting, mach_waiting_lwp) ms_waiting;
3304-	krwlock_t ms_lock;
3305+	struct rwlock ms_lock;
3306 };
3307
3308 /* semaphore_create */
3309diff --git a/sys/compat/mach/mach_services.c b/sys/compat/mach/mach_services.c
3310index bf10124..2ce0fd1 100644
3311--- a/sys/compat/mach/mach_services.c
3312+++ b/sys/compat/mach/mach_services.c
3313@@ -8,7 +8,6 @@
3314  */
3315
3316 #include <sys/cdefs.h>
3317-__KERNEL_RCSID(0, "$NetBSD: mach_services.c,v 1.19 2009/01/13 22:33:10 pooka Exp $");
3318
3319 #include <sys/types.h>
3320 #include <sys/param.h>
3321diff --git a/sys/compat/mach/mach_services.h b/sys/compat/mach/mach_services.h
3322index 4894a3a..49ed48b 100644
3323--- a/sys/compat/mach/mach_services.h
3324+++ b/sys/compat/mach/mach_services.h
3325@@ -8,7 +8,6 @@
3326  */
3327
3328 #include <sys/cdefs.h>
3329-__KERNEL_RCSID(0, "$NetBSD: mach_services.h,v 1.19 2009/01/13 22:33:10 pooka Exp $");
3330
3331 #include <compat/mach/mach_types.h>
3332 #include <compat/mach/mach_message.h>
3333diff --git a/sys/compat/mach/mach_services_names.c b/sys/compat/mach/mach_services_names.c
3334index dd0a3c7..877e637 100644
3335--- a/sys/compat/mach/mach_services_names.c
3336+++ b/sys/compat/mach/mach_services_names.c
3337@@ -9,7 +9,6 @@
3338  */
3339
3340 #include <sys/cdefs.h>
3341-__KERNEL_RCSID(0, "$NetBSD: mach_services_names.c,v 1.16 2009/01/13 22:33:10 pooka Exp $");
3342
3343 struct mach_service_name {
3344 	int srv_id;
3345diff --git a/sys/compat/mach/mach_syscall.h b/sys/compat/mach/mach_syscall.h
3346index cbab9dc..7f625ee 100644
3347--- a/sys/compat/mach/mach_syscall.h
3348+++ b/sys/compat/mach/mach_syscall.h
3349@@ -1,110 +1,40 @@
3350-/* $NetBSD: mach_syscall.h,v 1.21 2009/12/14 00:58:37 matt Exp $ */
3351-
3352 /*
3353  * System call numbers.
3354  *
3355  * DO NOT EDIT-- this file is automatically generated.
3356- * created from	NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp
3357+ * $FreeBSD$
3358+ * created from	FreeBSD
3359  */
3360
3361-#ifndef _MACH_SYS_SYSCALL_H_
3362-#define	_MACH_SYS_SYSCALL_H_
3363-
3364-#define	MACH_SYS_MAXSYSARGS	9
3365-
3366-/* syscall: "reply_port" ret: "mach_port_name_t" args: */
3367-#define	MACH_SYS_reply_port	26
3368-
3369-/* syscall: "thread_self_trap" ret: "mach_port_name_t" args: */
3370-#define	MACH_SYS_thread_self_trap	27
3371-
3372-/* syscall: "task_self_trap" ret: "mach_port_name_t" args: */
3373-#define	MACH_SYS_task_self_trap	28
3374-
3375-/* syscall: "host_self_trap" ret: "mach_port_name_t" args: */
3376-#define	MACH_SYS_host_self_trap	29
3377-
3378-/* syscall: "msg_trap" ret: "mach_msg_return_t" args: "mach_msg_header_t *" "mach_msg_option_t" "mach_msg_size_t" "mach_msg_size_t" "mach_port_name_t" "mach_msg_timeout_t" "mach_port_name_t" */
3379-#define	MACH_SYS_msg_trap	31
3380-
3381-/* syscall: "msg_overwrite_trap" ret: "mach_kern_return_t" args: "mach_msg_header_t *" "mach_msg_option_t" "mach_msg_size_t" "mach_msg_size_t" "mach_port_name_t" "mach_msg_timeout_t" "mach_port_name_t" "mach_msg_header_t *" "mach_msg_size_t" */
3382-#define	MACH_SYS_msg_overwrite_trap	32
3383-
3384-/* syscall: "semaphore_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */
3385-#define	MACH_SYS_semaphore_signal_trap	33
3386-
3387-/* syscall: "semaphore_signal_all_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */
3388-#define	MACH_SYS_semaphore_signal_all_trap	34
3389-
3390-/* syscall: "semaphore_signal_thread_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" */
3391-#define	MACH_SYS_semaphore_signal_thread_trap	35
3392-
3393-/* syscall: "semaphore_wait_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */
3394-#define	MACH_SYS_semaphore_wait_trap	36
3395-
3396-/* syscall: "semaphore_wait_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" */
3397-#define	MACH_SYS_semaphore_wait_signal_trap	37
3398-
3399-/* syscall: "semaphore_timedwait_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "unsigned int" "mach_clock_res_t" */
3400-#define	MACH_SYS_semaphore_timedwait_trap	38
3401-
3402-/* syscall: "semaphore_timedwait_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" "unsigned int" "mach_clock_res_t" */
3403-#define	MACH_SYS_semaphore_timedwait_signal_trap	39
3404-
3405-/* syscall: "init_process" ret: "mach_kern_return_t" args: */
3406-#define	MACH_SYS_init_process	41
3407-
3408-/* syscall: "map_fd" ret: "mach_kern_return_t" args: "int" "mach_vm_offset_t" "mach_vm_offset_t *" "mach_boolean_t" "mach_vm_size_t" */
3409-#define	MACH_SYS_map_fd	43
3410-
3411-/* syscall: "task_for_pid" ret: "mach_kern_return_t" args: "mach_port_t" "int" "mach_port_t *" */
3412-#define	MACH_SYS_task_for_pid	45
3413-
3414-/* syscall: "pid_for_task" ret: "mach_kern_return_t" args: "mach_port_t" "int *" */
3415-#define	MACH_SYS_pid_for_task	46
3416-
3417-/* syscall: "macx_swapon" ret: "mach_kern_return_t" args: "char *" "int" "int" "int" */
3418-#define	MACH_SYS_macx_swapon	48
3419-
3420-/* syscall: "macx_swapoff" ret: "mach_kern_return_t" args: "char *" "int" */
3421-#define	MACH_SYS_macx_swapoff	49
3422-
3423-/* syscall: "macx_triggers" ret: "mach_kern_return_t" args: "int" "int" "int" "mach_port_t" */
3424-#define	MACH_SYS_macx_triggers	51
3425-
3426-/* syscall: "swtch_pri" ret: "mach_kern_return_t" args: "int" */
3427-#define	MACH_SYS_swtch_pri	59
3428-
3429-/* syscall: "swtch" ret: "mach_kern_return_t" args: */
3430-#define	MACH_SYS_swtch	60
3431-
3432-/* syscall: "syscall_thread_switch" ret: "mach_kern_return_t" args: "mach_port_name_t" "int" "mach_msg_timeout_t" */
3433-#define	MACH_SYS_syscall_thread_switch	61
3434-
3435-/* syscall: "clock_sleep_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_sleep_type_t" "int" "int" "mach_timespec_t *" */
3436-#define	MACH_SYS_clock_sleep_trap	62
3437-
3438-/* syscall: "timebase_info" ret: "mach_kern_return_t" args: "mach_timebase_info_t" */
3439-#define	MACH_SYS_timebase_info	89
3440-
3441-/* syscall: "wait_until" ret: "mach_kern_return_t" args: "u_int64_t" */
3442-#define	MACH_SYS_wait_until	90
3443-
3444-/* syscall: "timer_create" ret: "mach_port_name_t" args: */
3445-#define	MACH_SYS_timer_create	91
3446-
3447-/* syscall: "timer_destroy" ret: "mach_kern_return_t" args: "mach_port_name_t" */
3448-#define	MACH_SYS_timer_destroy	92
3449-
3450-/* syscall: "timer_arm" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_absolute_time_t" */
3451-#define	MACH_SYS_timer_arm	93
3452-
3453-/* syscall: "timer_cancel" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_absolute_time_t *" */
3454-#define	MACH_SYS_timer_cancel	94
3455-
3456-/* syscall: "get_time_base_info" ret: "mach_kern_return_t" args: */
3457-#define	MACH_SYS_get_time_base_info	95
3458-
3459+#define	MACH_SYS_mach_reply_port	26
3460+#define	MACH_SYS_mach_thread_self_trap	27
3461+#define	MACH_SYS_mach_task_self_trap	28
3462+#define	MACH_SYS_mach_host_self_trap	29
3463+#define	MACH_SYS_mach_msg_trap	31
3464+#define	MACH_SYS_mach_msg_overwrite_trap	32
3465+#define	MACH_SYS_mach_semaphore_signal_trap	33
3466+#define	MACH_SYS_mach_semaphore_signal_all_trap	34
3467+#define	MACH_SYS_mach_semaphore_signal_thread_trap	35
3468+#define	MACH_SYS_mach_semaphore_wait_trap	36
3469+#define	MACH_SYS_mach_semaphore_wait_signal_trap	37
3470+#define	MACH_SYS_mach_semaphore_timedwait_trap	38
3471+#define	MACH_SYS_mach_semaphore_timedwait_signal_trap	39
3472+#define	MACH_SYS_mach_init_process	41
3473+#define	MACH_SYS_mach_map_fd	43
3474+#define	MACH_SYS_mach_task_for_pid	45
3475+#define	MACH_SYS_mach_pid_for_task	46
3476+#define	MACH_SYS_mach_macx_swapon	48
3477+#define	MACH_SYS_mach_macx_swapoff	49
3478+#define	MACH_SYS_mach_macx_triggers	51
3479+#define	MACH_SYS_mach_swtch_pri	59
3480+#define	MACH_SYS_mach_swtch	60
3481+#define	MACH_SYS_mach_syscall_thread_switch	61
3482+#define	MACH_SYS_mach_clock_sleep_trap	62
3483+#define	MACH_SYS_mach_timebase_info	89
3484+#define	MACH_SYS_mach_wait_until	90
3485+#define	MACH_SYS_mach_timer_create	91
3486+#define	MACH_SYS_mach_timer_destroy	92
3487+#define	MACH_SYS_mach_timer_arm	93
3488+#define	MACH_SYS_mach_timer_cancel	94
3489+#define	MACH_SYS_mach_get_time_base_info	95
3490 #define	MACH_SYS_MAXSYSCALL	128
3491-#define	MACH_SYS_NSYSENT	128
3492-#endif /* _MACH_SYS_SYSCALL_H_ */
3493diff --git a/sys/compat/mach/mach_syscallargs.h b/sys/compat/mach/mach_syscallargs.h
3494deleted file mode 100644
3495index 4361eb2..0000000
3496--- a/sys/compat/mach/mach_syscallargs.h
3497+++ /dev/null
3498@@ -1,258 +0,0 @@
3499-/* $NetBSD: mach_syscallargs.h,v 1.21 2009/12/14 00:58:37 matt Exp $ */
3500-
3501-/*
3502- * System call argument lists.
3503- *
3504- * DO NOT EDIT-- this file is automatically generated.
3505- * created from	NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp
3506- */
3507-
3508-#ifndef _MACH_SYS_SYSCALLARGS_H_
3509-#define	_MACH_SYS_SYSCALLARGS_H_
3510-
3511-#define	MACH_SYS_MAXSYSARGS	9
3512-
3513-#undef	syscallarg
3514-#define	syscallarg(x)							\
3515-	union {								\
3516-		register_t pad;						\
3517-		struct { x datum; } le;					\
3518-		struct { /* LINTED zero array dimension */		\
3519-			int8_t pad[  /* CONSTCOND */			\
3520-				(sizeof (register_t) < sizeof (x))	\
3521-				? 0					\
3522-				: sizeof (register_t) - sizeof (x)];	\
3523-			x datum;					\
3524-		} be;							\
3525-	}
3526-
3527-#undef check_syscall_args
3528-#define check_syscall_args(call) \
3529-	typedef char call##_check_args[sizeof (struct call##_args) \
3530-		<= MACH_SYS_MAXSYSARGS * sizeof (register_t) ? 1 : -1];
3531-
3532-struct mach_sys_msg_trap_args {
3533-	syscallarg(mach_msg_header_t *) msg;
3534-	syscallarg(mach_msg_option_t) option;
3535-	syscallarg(mach_msg_size_t) send_size;
3536-	syscallarg(mach_msg_size_t) rcv_size;
3537-	syscallarg(mach_port_name_t) rcv_name;
3538-	syscallarg(mach_msg_timeout_t) timeout;
3539-	syscallarg(mach_port_name_t) notify;
3540-};
3541-check_syscall_args(mach_sys_msg_trap)
3542-
3543-struct mach_sys_msg_overwrite_trap_args {
3544-	syscallarg(mach_msg_header_t *) msg;
3545-	syscallarg(mach_msg_option_t) option;
3546-	syscallarg(mach_msg_size_t) send_size;
3547-	syscallarg(mach_msg_size_t) rcv_size;
3548-	syscallarg(mach_port_name_t) rcv_name;
3549-	syscallarg(mach_msg_timeout_t) timeout;
3550-	syscallarg(mach_port_name_t) notify;
3551-	syscallarg(mach_msg_header_t *) rcv_msg;
3552-	syscallarg(mach_msg_size_t) scatter_list_size;
3553-};
3554-check_syscall_args(mach_sys_msg_overwrite_trap)
3555-
3556-struct mach_sys_semaphore_signal_trap_args {
3557-	syscallarg(mach_port_name_t) signal_name;
3558-};
3559-check_syscall_args(mach_sys_semaphore_signal_trap)
3560-
3561-struct mach_sys_semaphore_signal_all_trap_args {
3562-	syscallarg(mach_port_name_t) signal_name;
3563-};
3564-check_syscall_args(mach_sys_semaphore_signal_all_trap)
3565-
3566-struct mach_sys_semaphore_signal_thread_trap_args {
3567-	syscallarg(mach_port_name_t) signal_name;
3568-	syscallarg(mach_port_name_t) thread;
3569-};
3570-check_syscall_args(mach_sys_semaphore_signal_thread_trap)
3571-
3572-struct mach_sys_semaphore_wait_trap_args {
3573-	syscallarg(mach_port_name_t) wait_name;
3574-};
3575-check_syscall_args(mach_sys_semaphore_wait_trap)
3576-
3577-struct mach_sys_semaphore_wait_signal_trap_args {
3578-	syscallarg(mach_port_name_t) wait_name;
3579-	syscallarg(mach_port_name_t) signal_name;
3580-};
3581-check_syscall_args(mach_sys_semaphore_wait_signal_trap)
3582-
3583-struct mach_sys_semaphore_timedwait_trap_args {
3584-	syscallarg(mach_port_name_t) wait_name;
3585-	syscallarg(unsigned int) sec;
3586-	syscallarg(mach_clock_res_t) nsec;
3587-};
3588-check_syscall_args(mach_sys_semaphore_timedwait_trap)
3589-
3590-struct mach_sys_semaphore_timedwait_signal_trap_args {
3591-	syscallarg(mach_port_name_t) wait_name;
3592-	syscallarg(mach_port_name_t) signal_name;
3593-	syscallarg(unsigned int) sec;
3594-	syscallarg(mach_clock_res_t) nsec;
3595-};
3596-check_syscall_args(mach_sys_semaphore_timedwait_signal_trap)
3597-
3598-struct mach_sys_map_fd_args {
3599-	syscallarg(int) fd;
3600-	syscallarg(mach_vm_offset_t) offset;
3601-	syscallarg(mach_vm_offset_t *) va;
3602-	syscallarg(mach_boolean_t) findspace;
3603-	syscallarg(mach_vm_size_t) size;
3604-};
3605-check_syscall_args(mach_sys_map_fd)
3606-
3607-struct mach_sys_task_for_pid_args {
3608-	syscallarg(mach_port_t) target_tport;
3609-	syscallarg(int) pid;
3610-	syscallarg(mach_port_t *) t;
3611-};
3612-check_syscall_args(mach_sys_task_for_pid)
3613-
3614-struct mach_sys_pid_for_task_args {
3615-	syscallarg(mach_port_t) t;
3616-	syscallarg(int *) x;
3617-};
3618-check_syscall_args(mach_sys_pid_for_task)
3619-
3620-struct mach_sys_macx_swapon_args {
3621-	syscallarg(char *) name;
3622-	syscallarg(int) flags;
3623-	syscallarg(int) size;
3624-	syscallarg(int) priority;
3625-};
3626-check_syscall_args(mach_sys_macx_swapon)
3627-
3628-struct mach_sys_macx_swapoff_args {
3629-	syscallarg(char *) name;
3630-	syscallarg(int) flags;
3631-};
3632-check_syscall_args(mach_sys_macx_swapoff)
3633-
3634-struct mach_sys_macx_triggers_args {
3635-	syscallarg(int) hi_water;
3636-	syscallarg(int) low_water;
3637-	syscallarg(int) flags;
3638-	syscallarg(mach_port_t) alert_port;
3639-};
3640-check_syscall_args(mach_sys_macx_triggers)
3641-
3642-struct mach_sys_swtch_pri_args {
3643-	syscallarg(int) pri;
3644-};
3645-check_syscall_args(mach_sys_swtch_pri)
3646-
3647-struct mach_sys_syscall_thread_switch_args {
3648-	syscallarg(mach_port_name_t) thread_name;
3649-	syscallarg(int) option;
3650-	syscallarg(mach_msg_timeout_t) option_time;
3651-};
3652-check_syscall_args(mach_sys_syscall_thread_switch)
3653-
3654-struct mach_sys_clock_sleep_trap_args {
3655-	syscallarg(mach_port_name_t) clock_name;
3656-	syscallarg(mach_sleep_type_t) sleep_type;
3657-	syscallarg(int) sleep_sec;
3658-	syscallarg(int) sleep_nsec;
3659-	syscallarg(mach_timespec_t *) wakeup_time;
3660-};
3661-check_syscall_args(mach_sys_clock_sleep_trap)
3662-
3663-struct mach_sys_timebase_info_args {
3664-	syscallarg(mach_timebase_info_t) info;
3665-};
3666-check_syscall_args(mach_sys_timebase_info)
3667-
3668-struct mach_sys_wait_until_args {
3669-	syscallarg(u_int64_t) deadline;
3670-};
3671-check_syscall_args(mach_sys_wait_until)
3672-
3673-struct mach_sys_timer_destroy_args {
3674-	syscallarg(mach_port_name_t) name;
3675-};
3676-check_syscall_args(mach_sys_timer_destroy)
3677-
3678-struct mach_sys_timer_arm_args {
3679-	syscallarg(mach_port_name_t) name;
3680-	syscallarg(mach_absolute_time_t) expire_time;
3681-};
3682-check_syscall_args(mach_sys_timer_arm)
3683-
3684-struct mach_sys_timer_cancel_args {
3685-	syscallarg(mach_port_name_t) name;
3686-	syscallarg(mach_absolute_time_t *) result_time;
3687-};
3688-check_syscall_args(mach_sys_timer_cancel)
3689-
3690-/*
3691- * System call prototypes.
3692- */
3693-
3694-int	mach_sys_reply_port(struct lwp *, const void *, register_t *);
3695-
3696-int	mach_sys_thread_self_trap(struct lwp *, const void *, register_t *);
3697-
3698-int	mach_sys_task_self_trap(struct lwp *, const void *, register_t *);
3699-
3700-int	mach_sys_host_self_trap(struct lwp *, const void *, register_t *);
3701-
3702-int	mach_sys_msg_trap(struct lwp *, const struct mach_sys_msg_trap_args *, register_t *);
3703-
3704-int	mach_sys_msg_overwrite_trap(struct lwp *, const struct mach_sys_msg_overwrite_trap_args *, register_t *);
3705-
3706-int	mach_sys_semaphore_signal_trap(struct lwp *, const struct mach_sys_semaphore_signal_trap_args *, register_t *);
3707-
3708-int	mach_sys_semaphore_signal_all_trap(struct lwp *, const struct mach_sys_semaphore_signal_all_trap_args *, register_t *);
3709-
3710-int	mach_sys_semaphore_signal_thread_trap(struct lwp *, const struct mach_sys_semaphore_signal_thread_trap_args *, register_t *);
3711-
3712-int	mach_sys_semaphore_wait_trap(struct lwp *, const struct mach_sys_semaphore_wait_trap_args *, register_t *);
3713-
3714-int	mach_sys_semaphore_wait_signal_trap(struct lwp *, const struct mach_sys_semaphore_wait_signal_trap_args *, register_t *);
3715-
3716-int	mach_sys_semaphore_timedwait_trap(struct lwp *, const struct mach_sys_semaphore_timedwait_trap_args *, register_t *);
3717-
3718-int	mach_sys_semaphore_timedwait_signal_trap(struct lwp *, const struct mach_sys_semaphore_timedwait_signal_trap_args *, register_t *);
3719-
3720-int	mach_sys_init_process(struct lwp *, const void *, register_t *);
3721-
3722-int	mach_sys_map_fd(struct lwp *, const struct mach_sys_map_fd_args *, register_t *);
3723-
3724-int	mach_sys_task_for_pid(struct lwp *, const struct mach_sys_task_for_pid_args *, register_t *);
3725-
3726-int	mach_sys_pid_for_task(struct lwp *, const struct mach_sys_pid_for_task_args *, register_t *);
3727-
3728-int	mach_sys_macx_swapon(struct lwp *, const struct mach_sys_macx_swapon_args *, register_t *);
3729-
3730-int	mach_sys_macx_swapoff(struct lwp *, const struct mach_sys_macx_swapoff_args *, register_t *);
3731-
3732-int	mach_sys_macx_triggers(struct lwp *, const struct mach_sys_macx_triggers_args *, register_t *);
3733-
3734-int	mach_sys_swtch_pri(struct lwp *, const struct mach_sys_swtch_pri_args *, register_t *);
3735-
3736-int	mach_sys_swtch(struct lwp *, const void *, register_t *);
3737-
3738-int	mach_sys_syscall_thread_switch(struct lwp *, const struct mach_sys_syscall_thread_switch_args *, register_t *);
3739-
3740-int	mach_sys_clock_sleep_trap(struct lwp *, const struct mach_sys_clock_sleep_trap_args *, register_t *);
3741-
3742-int	mach_sys_timebase_info(struct lwp *, const struct mach_sys_timebase_info_args *, register_t *);
3743-
3744-int	mach_sys_wait_until(struct lwp *, const struct mach_sys_wait_until_args *, register_t *);
3745-
3746-int	mach_sys_timer_create(struct lwp *, const void *, register_t *);
3747-
3748-int	mach_sys_timer_destroy(struct lwp *, const struct mach_sys_timer_destroy_args *, register_t *);
3749-
3750-int	mach_sys_timer_arm(struct lwp *, const struct mach_sys_timer_arm_args *, register_t *);
3751-
3752-int	mach_sys_timer_cancel(struct lwp *, const struct mach_sys_timer_cancel_args *, register_t *);
3753-
3754-int	mach_sys_get_time_base_info(struct lwp *, const void *, register_t *);
3755-
3756-#endif /* _MACH_SYS_SYSCALLARGS_H_ */
3757diff --git a/sys/compat/mach/mach_syscalls.c b/sys/compat/mach/mach_syscalls.c
3758index f8f7d7b..76aa670 100644
3759--- a/sys/compat/mach/mach_syscalls.c
3760+++ b/sys/compat/mach/mach_syscalls.c
3761@@ -1,159 +1,140 @@
3762-/* $NetBSD: mach_syscalls.c,v 1.22 2009/12/14 00:58:37 matt Exp $ */
3763-
3764 /*
3765  * System call names.
3766  *
3767  * DO NOT EDIT-- this file is automatically generated.
3768- * created from	NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp
3769+ * $FreeBSD$
3770+ * created from	FreeBSD
3771  */
3772
3773-#include <sys/cdefs.h>
3774-__KERNEL_RCSID(0, "$NetBSD: mach_syscalls.c,v 1.22 2009/12/14 00:58:37 matt Exp $");
3775-
3776+const char *mach_syscallnames[] = {
3777 #if defined(_KERNEL_OPT)
3778-#if defined(_KERNEL_OPT)
3779-#include "opt_ntp.h"
3780-#include "opt_sysv.h"
3781 #endif
3782-#include <sys/param.h>
3783-#include <sys/systm.h>
3784-#include <sys/signal.h>
3785-#include <sys/mount.h>
3786-#include <sys/poll.h>
3787-#include <sys/syscallargs.h>
3788-#include <compat/mach/mach_types.h>
3789-#include <compat/mach/mach_message.h>
3790-#include <compat/mach/mach_clock.h>
3791-#include <compat/mach/mach_syscallargs.h>
3792-#endif /* _KERNEL_OPT */
3793-
3794-const char *const mach_syscallnames[] = {
3795-	/*   0 */	"#0 (unimplemented)",
3796-	/*   1 */	"#1 (unimplemented)",
3797-	/*   2 */	"#2 (unimplemented)",
3798-	/*   3 */	"#3 (unimplemented)",
3799-	/*   4 */	"#4 (unimplemented)",
3800-	/*   5 */	"#5 (unimplemented)",
3801-	/*   6 */	"#6 (unimplemented)",
3802-	/*   7 */	"#7 (unimplemented)",
3803-	/*   8 */	"#8 (unimplemented)",
3804-	/*   9 */	"#9 (unimplemented)",
3805-	/*  10 */	"#10 (unimplemented)",
3806-	/*  11 */	"#11 (unimplemented)",
3807-	/*  12 */	"#12 (unimplemented)",
3808-	/*  13 */	"#13 (unimplemented)",
3809-	/*  14 */	"#14 (unimplemented)",
3810-	/*  15 */	"#15 (unimplemented)",
3811-	/*  16 */	"#16 (unimplemented)",
3812-	/*  17 */	"#17 (unimplemented)",
3813-	/*  18 */	"#18 (unimplemented)",
3814-	/*  19 */	"#19 (unimplemented)",
3815-	/*  20 */	"#20 (unimplemented)",
3816-	/*  21 */	"#21 (unimplemented)",
3817-	/*  22 */	"#22 (unimplemented)",
3818-	/*  23 */	"#23 (unimplemented)",
3819-	/*  24 */	"#24 (unimplemented)",
3820-	/*  25 */	"#25 (unimplemented)",
3821-	/*  26 */	"reply_port",
3822-	/*  27 */	"thread_self_trap",
3823-	/*  28 */	"task_self_trap",
3824-	/*  29 */	"host_self_trap",
3825-	/*  30 */	"#30 (unimplemented)",
3826-	/*  31 */	"msg_trap",
3827-	/*  32 */	"msg_overwrite_trap",
3828-	/*  33 */	"semaphore_signal_trap",
3829-	/*  34 */	"semaphore_signal_all_trap",
3830-	/*  35 */	"semaphore_signal_thread_trap",
3831-	/*  36 */	"semaphore_wait_trap",
3832-	/*  37 */	"semaphore_wait_signal_trap",
3833-	/*  38 */	"semaphore_timedwait_trap",
3834-	/*  39 */	"semaphore_timedwait_signal_trap",
3835-	/*  40 */	"#40 (unimplemented)",
3836-	/*  41 */	"init_process",
3837-	/*  42 */	"#42 (unimplemented)",
3838-	/*  43 */	"map_fd",
3839-	/*  44 */	"#44 (unimplemented)",
3840-	/*  45 */	"task_for_pid",
3841-	/*  46 */	"pid_for_task",
3842-	/*  47 */	"#47 (unimplemented)",
3843-	/*  48 */	"macx_swapon",
3844-	/*  49 */	"macx_swapoff",
3845-	/*  50 */	"#50 (unimplemented)",
3846-	/*  51 */	"macx_triggers",
3847-	/*  52 */	"#52 (unimplemented)",
3848-	/*  53 */	"#53 (unimplemented)",
3849-	/*  54 */	"#54 (unimplemented)",
3850-	/*  55 */	"#55 (unimplemented)",
3851-	/*  56 */	"#56 (unimplemented)",
3852-	/*  57 */	"#57 (unimplemented)",
3853-	/*  58 */	"#58 (unimplemented)",
3854-	/*  59 */	"swtch_pri",
3855-	/*  60 */	"swtch",
3856-	/*  61 */	"syscall_thread_switch",
3857-	/*  62 */	"clock_sleep_trap",
3858-	/*  63 */	"#63 (unimplemented)",
3859-	/*  64 */	"#64 (unimplemented)",
3860-	/*  65 */	"#65 (unimplemented)",
3861-	/*  66 */	"#66 (unimplemented)",
3862-	/*  67 */	"#67 (unimplemented)",
3863-	/*  68 */	"#68 (unimplemented)",
3864-	/*  69 */	"#69 (unimplemented)",
3865-	/*  70 */	"#70 (unimplemented)",
3866-	/*  71 */	"#71 (unimplemented)",
3867-	/*  72 */	"#72 (unimplemented)",
3868-	/*  73 */	"#73 (unimplemented)",
3869-	/*  74 */	"#74 (unimplemented)",
3870-	/*  75 */	"#75 (unimplemented)",
3871-	/*  76 */	"#76 (unimplemented)",
3872-	/*  77 */	"#77 (unimplemented)",
3873-	/*  78 */	"#78 (unimplemented)",
3874-	/*  79 */	"#79 (unimplemented)",
3875-	/*  80 */	"#80 (unimplemented)",
3876-	/*  81 */	"#81 (unimplemented)",
3877-	/*  82 */	"#82 (unimplemented)",
3878-	/*  83 */	"#83 (unimplemented)",
3879-	/*  84 */	"#84 (unimplemented)",
3880-	/*  85 */	"#85 (unimplemented)",
3881-	/*  86 */	"#86 (unimplemented)",
3882-	/*  87 */	"#87 (unimplemented)",
3883-	/*  88 */	"#88 (unimplemented)",
3884-	/*  89 */	"timebase_info",
3885-	/*  90 */	"wait_until",
3886-	/*  91 */	"timer_create",
3887-	/*  92 */	"timer_destroy",
3888-	/*  93 */	"timer_arm",
3889-	/*  94 */	"timer_cancel",
3890-	/*  95 */	"get_time_base_info",
3891-	/*  96 */	"#96 (unimplemented)",
3892-	/*  97 */	"#97 (unimplemented)",
3893-	/*  98 */	"#98 (unimplemented)",
3894-	/*  99 */	"#99 (unimplemented)",
3895-	/* 100 */	"#100 (unimplemented)",
3896-	/* 101 */	"#101 (unimplemented)",
3897-	/* 102 */	"#102 (unimplemented)",
3898-	/* 103 */	"#103 (unimplemented)",
3899-	/* 104 */	"#104 (unimplemented)",
3900-	/* 105 */	"#105 (unimplemented)",
3901-	/* 106 */	"#106 (unimplemented)",
3902-	/* 107 */	"#107 (unimplemented)",
3903-	/* 108 */	"#108 (unimplemented)",
3904-	/* 109 */	"#109 (unimplemented)",
3905-	/* 110 */	"#110 (unimplemented)",
3906-	/* 111 */	"#111 (unimplemented)",
3907-	/* 112 */	"#112 (unimplemented)",
3908-	/* 113 */	"#113 (unimplemented)",
3909-	/* 114 */	"#114 (unimplemented)",
3910-	/* 115 */	"#115 (unimplemented)",
3911-	/* 116 */	"#116 (unimplemented)",
3912-	/* 117 */	"#117 (unimplemented)",
3913-	/* 118 */	"#118 (unimplemented)",
3914-	/* 119 */	"#119 (unimplemented)",
3915-	/* 120 */	"#120 (unimplemented)",
3916-	/* 121 */	"#121 (unimplemented)",
3917-	/* 122 */	"#122 (unimplemented)",
3918-	/* 123 */	"#123 (unimplemented)",
3919-	/* 124 */	"#124 (unimplemented)",
3920-	/* 125 */	"#125 (unimplemented)",
3921-	/* 126 */	"#126 (unimplemented)",
3922-	/* 127 */	"#127 (unimplemented)",
3923+	"#0",			/* 0 = nosys */
3924+	"#1",			/* 1 = nosys */
3925+	"#2",			/* 2 = nosys */
3926+	"#3",			/* 3 = nosys */
3927+	"#4",			/* 4 = nosys */
3928+	"#5",			/* 5 = nosys */
3929+	"#6",			/* 6 = nosys */
3930+	"#7",			/* 7 = nosys */
3931+	"#8",			/* 8 = nosys */
3932+	"#9",			/* 9 = nosys */
3933+	"#10",			/* 10 = nosys */
3934+	"#11",			/* 11 = nosys */
3935+	"#12",			/* 12 = nosys */
3936+	"#13",			/* 13 = nosys */
3937+	"#14",			/* 14 = nosys */
3938+	"#15",			/* 15 = nosys */
3939+	"#16",			/* 16 = nosys */
3940+	"#17",			/* 17 = nosys */
3941+	"#18",			/* 18 = nosys */
3942+	"#19",			/* 19 = nosys */
3943+	"#20",			/* 20 = nosys */
3944+	"#21",			/* 21 = nosys */
3945+	"#22",			/* 22 = nosys */
3946+	"#23",			/* 23 = nosys */
3947+	"#24",			/* 24 = nosys */
3948+	"#25",			/* 25 = nosys */
3949+	"mach_reply_port",			/* 26 = mach_reply_port */
3950+	"mach_thread_self_trap",			/* 27 = mach_thread_self_trap */
3951+	"mach_task_self_trap",			/* 28 = mach_task_self_trap */
3952+	"mach_host_self_trap",			/* 29 = mach_host_self_trap */
3953+	"#30",			/* 30 = nosys */
3954+	"mach_msg_trap",			/* 31 = mach_msg_trap */
3955+	"mach_msg_overwrite_trap",			/* 32 = mach_msg_overwrite_trap */
3956+	"mach_semaphore_signal_trap",			/* 33 = mach_semaphore_signal_trap */
3957+	"mach_semaphore_signal_all_trap",			/* 34 = mach_semaphore_signal_all_trap */
3958+	"mach_semaphore_signal_thread_trap",			/* 35 = mach_semaphore_signal_thread_trap */
3959+	"mach_semaphore_wait_trap",			/* 36 = mach_semaphore_wait_trap */
3960+	"mach_semaphore_wait_signal_trap",			/* 37 = mach_semaphore_wait_signal_trap */
3961+	"mach_semaphore_timedwait_trap",			/* 38 = mach_semaphore_timedwait_trap */
3962+	"mach_semaphore_timedwait_signal_trap",			/* 39 = mach_semaphore_timedwait_signal_trap */
3963+	"#40",			/* 40 = nosys */
3964+	"mach_init_process",			/* 41 = mach_init_process */
3965+	"#42",			/* 42 = nosys */
3966+	"mach_map_fd",			/* 43 = mach_map_fd */
3967+	"#44",			/* 44 = nosys */
3968+	"mach_task_for_pid",			/* 45 = mach_task_for_pid */
3969+	"mach_pid_for_task",			/* 46 = mach_pid_for_task */
3970+	"#47",			/* 47 = nosys */
3971+	"mach_macx_swapon",			/* 48 = mach_macx_swapon */
3972+	"mach_macx_swapoff",			/* 49 = mach_macx_swapoff */
3973+	"#50",			/* 50 = nosys */
3974+	"mach_macx_triggers",			/* 51 = mach_macx_triggers */
3975+	"#52",			/* 52 = nosys */
3976+	"#53",			/* 53 = nosys */
3977+	"#54",			/* 54 = nosys */
3978+	"#55",			/* 55 = nosys */
3979+	"#56",			/* 56 = nosys */
3980+	"#57",			/* 57 = nosys */
3981+	"#58",			/* 58 = nosys */
3982+	"mach_swtch_pri",			/* 59 = mach_swtch_pri */
3983+	"mach_swtch",			/* 60 = mach_swtch */
3984+	"mach_syscall_thread_switch",			/* 61 = mach_syscall_thread_switch */
3985+	"mach_clock_sleep_trap",			/* 62 = mach_clock_sleep_trap */
3986+	"#63",			/* 63 = nosys */
3987+	"#64",			/* 64 = nosys */
3988+	"#65",			/* 65 = nosys */
3989+	"#66",			/* 66 = nosys */
3990+	"#67",			/* 67 = nosys */
3991+	"#68",			/* 68 = nosys */
3992+	"#69",			/* 69 = nosys */
3993+	"#70",			/* 70 = nosys */
3994+	"#71",			/* 71 = nosys */
3995+	"#72",			/* 72 = nosys */
3996+	"#73",			/* 73 = nosys */
3997+	"#74",			/* 74 = nosys */
3998+	"#75",			/* 75 = nosys */
3999+	"#76",			/* 76 = nosys */
4000+	"#77",			/* 77 = nosys */
4001+	"#78",			/* 78 = nosys */
4002+	"#79",			/* 79 = nosys */
4003+	"#80",			/* 80 = nosys */
4004+	"#81",			/* 81 = nosys */
4005+	"#82",			/* 82 = nosys */
4006+	"#83",			/* 83 = nosys */
4007+	"#84",			/* 84 = nosys */
4008+	"#85",			/* 85 = nosys */
4009+	"#86",			/* 86 = nosys */
4010+	"#87",			/* 87 = nosys */
4011+	"#88",			/* 88 = nosys */
4012+	"mach_timebase_info",			/* 89 = mach_timebase_info */
4013+	"mach_wait_until",			/* 90 = mach_wait_until */
4014+	"mach_timer_create",			/* 91 = mach_timer_create */
4015+	"mach_timer_destroy",			/* 92 = mach_timer_destroy */
4016+	"mach_timer_arm",			/* 93 = mach_timer_arm */
4017+	"mach_timer_cancel",			/* 94 = mach_timer_cancel */
4018+	"mach_get_time_base_info",			/* 95 = mach_get_time_base_info */
4019+	"#96",			/* 96 = nosys */
4020+	"#97",			/* 97 = nosys */
4021+	"#98",			/* 98 = nosys */
4022+	"#99",			/* 99 = nosys */
4023+	"#100",			/* 100 = nosys */
4024+	"#101",			/* 101 = nosys */
4025+	"#102",			/* 102 = nosys */
4026+	"#103",			/* 103 = nosys */
4027+	"#104",			/* 104 = nosys */
4028+	"#105",			/* 105 = nosys */
4029+	"#106",			/* 106 = nosys */
4030+	"#107",			/* 107 = nosys */
4031+	"#108",			/* 108 = nosys */
4032+	"#109",			/* 109 = nosys */
4033+	"#110",			/* 110 = nosys */
4034+	"#111",			/* 111 = nosys */
4035+	"#112",			/* 112 = nosys */
4036+	"#113",			/* 113 = nosys */
4037+	"#114",			/* 114 = nosys */
4038+	"#115",			/* 115 = nosys */
4039+	"#116",			/* 116 = nosys */
4040+	"#117",			/* 117 = nosys */
4041+	"#118",			/* 118 = nosys */
4042+	"#119",			/* 119 = nosys */
4043+	"#120",			/* 120 = nosys */
4044+	"#121",			/* 121 = nosys */
4045+	"#122",			/* 122 = nosys */
4046+	"#123",			/* 123 = nosys */
4047+	"#124",			/* 124 = nosys */
4048+	"#125",			/* 125 = nosys */
4049+	"#126",			/* 126 = nosys */
4050+	"#127",			/* 127 = nosys */
4051 };
4052diff --git a/sys/compat/mach/mach_sysctl.c b/sys/compat/mach/mach_sysctl.c
4053index 07421ee..e5810bd 100644
4054--- a/sys/compat/mach/mach_sysctl.c
4055+++ b/sys/compat/mach/mach_sysctl.c
4056@@ -1,4 +1,4 @@
4057-/*	$NetBSD: mach_sysctl.c,v 1.4 2008/04/28 20:23:44 martin Exp $ */
4058+/*	$FreeBSD$ */
4059
4060 /*-
4061  * Copyright (c) 2004 The NetBSD Foundation, Inc.
4062@@ -30,7 +30,6 @@
4063  */
4064
4065 #include <sys/cdefs.h>
4066-__KERNEL_RCSID(0, "$NetBSD: mach_sysctl.c,v 1.4 2008/04/28 20:23:44 martin Exp $");
4067
4068 #include <sys/param.h>
4069 #include <sys/types.h>
4070diff --git a/sys/compat/mach/mach_sysctl.h b/sys/compat/mach/mach_sysctl.h
4071index 6f6a422..586bd68 100644
4072--- a/sys/compat/mach/mach_sysctl.h
4073+++ b/sys/compat/mach/mach_sysctl.h
4074@@ -1,4 +1,4 @@
4075-/*	$NetBSD: mach_sysctl.h,v 1.3 2008/04/28 20:23:44 martin Exp $ */
4076+/*	$FreeBSD$ */
4077
4078 /*-
4079  * Copyright (c) 2004 The NetBSD Foundation, Inc.
4080diff --git a/sys/compat/mach/mach_sysent.c b/sys/compat/mach/mach_sysent.c
4081index fc925f6..4ed4baf 100644
4082--- a/sys/compat/mach/mach_sysent.c
4083+++ b/sys/compat/mach/mach_sysent.c
4084@@ -1,289 +1,156 @@
4085-/* $NetBSD: mach_sysent.c,v 1.23 2009/12/14 00:58:37 matt Exp $ */
4086-
4087 /*
4088  * System call switch table.
4089  *
4090  * DO NOT EDIT-- this file is automatically generated.
4091- * created from	NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp
4092+ * $FreeBSD$
4093+ * created from	FreeBSD
4094  */
4095
4096-#include <sys/cdefs.h>
4097-__KERNEL_RCSID(0, "$NetBSD: mach_sysent.c,v 1.23 2009/12/14 00:58:37 matt Exp $");
4098-
4099-#if defined(_KERNEL_OPT)
4100 #include "opt_ntp.h"
4101-#include "opt_sysv.h"
4102-#endif
4103 #include <sys/param.h>
4104 #include <sys/systm.h>
4105 #include <sys/signal.h>
4106 #include <sys/mount.h>
4107 #include <sys/poll.h>
4108-#include <sys/syscallargs.h>
4109+#include <sys/sysent.h>
4110+#include <sys/sysproto.h>
4111 #include <compat/mach/mach_types.h>
4112 #include <compat/mach/mach_message.h>
4113 #include <compat/mach/mach_clock.h>
4114-#include <compat/mach/mach_syscallargs.h>
4115+#include <compat/mach/mach_proto.h>
4116
4117-#define	s(type)	sizeof(type)
4118-#define	n(type)	(sizeof(type)/sizeof (register_t))
4119-#define	ns(type)	n(type), s(type)
4120+#define AS(name) (sizeof(struct name) / sizeof(register_t))
4121
4122+/* The casts are bogus but will do for now. */
4123 struct sysent mach_sysent[] = {
4124-	{ 0, 0, 0,
4125-	    sys_nosys },			/* 0 = unimplemented */
4126-	{ 0, 0, 0,
4127-	    sys_nosys },			/* 1 = unimplemented */
4128-	{ 0, 0, 0,
4129-	    sys_nosys },			/* 2 = unimplemented */
4130-	{ 0, 0, 0,
4131-	    sys_nosys },			/* 3 = unimplemented */
4132-	{ 0, 0, 0,
4133-	    sys_nosys },			/* 4 = unimplemented */
4134-	{ 0, 0, 0,
4135-	    sys_nosys },			/* 5 = unimplemented */
4136-	{ 0, 0, 0,
4137-	    sys_nosys },			/* 6 = unimplemented */
4138-	{ 0, 0, 0,
4139-	    sys_nosys },			/* 7 = unimplemented */
4140-	{ 0, 0, 0,
4141-	    sys_nosys },			/* 8 = unimplemented */
4142-	{ 0, 0, 0,
4143-	    sys_nosys },			/* 9 = unimplemented */
4144-	{ 0, 0, 0,
4145-	    sys_nosys },			/* 10 = unimplemented */
4146-	{ 0, 0, 0,
4147-	    sys_nosys },			/* 11 = unimplemented */
4148-	{ 0, 0, 0,
4149-	    sys_nosys },			/* 12 = unimplemented */
4150-	{ 0, 0, 0,
4151-	    sys_nosys },			/* 13 = unimplemented */
4152-	{ 0, 0, 0,
4153-	    sys_nosys },			/* 14 = unimplemented */
4154-	{ 0, 0, 0,
4155-	    sys_nosys },			/* 15 = unimplemented */
4156-	{ 0, 0, 0,
4157-	    sys_nosys },			/* 16 = unimplemented */
4158-	{ 0, 0, 0,
4159-	    sys_nosys },			/* 17 = unimplemented */
4160-	{ 0, 0, 0,
4161-	    sys_nosys },			/* 18 = unimplemented */
4162-	{ 0, 0, 0,
4163-	    sys_nosys },			/* 19 = unimplemented */
4164-	{ 0, 0, 0,
4165-	    sys_nosys },			/* 20 = unimplemented */
4166-	{ 0, 0, 0,
4167-	    sys_nosys },			/* 21 = unimplemented */
4168-	{ 0, 0, 0,
4169-	    sys_nosys },			/* 22 = unimplemented */
4170-	{ 0, 0, 0,
4171-	    sys_nosys },			/* 23 = unimplemented */
4172-	{ 0, 0, 0,
4173-	    sys_nosys },			/* 24 = unimplemented */
4174-	{ 0, 0, 0,
4175-	    sys_nosys },			/* 25 = unimplemented */
4176-	{ 0, 0, 0,
4177-	    (sy_call_t *)mach_sys_reply_port },	/* 26 = reply_port */
4178-	{ 0, 0, 0,
4179-	    (sy_call_t *)mach_sys_thread_self_trap },/* 27 = thread_self_trap */
4180-	{ 0, 0, 0,
4181-	    (sy_call_t *)mach_sys_task_self_trap },/* 28 = task_self_trap */
4182-	{ 0, 0, 0,
4183-	    (sy_call_t *)mach_sys_host_self_trap },/* 29 = host_self_trap */
4184-	{ 0, 0, 0,
4185-	    sys_nosys },			/* 30 = unimplemented */
4186-	{ ns(struct mach_sys_msg_trap_args), 0,
4187-	    (sy_call_t *)mach_sys_msg_trap },	/* 31 = msg_trap */
4188-	{ ns(struct mach_sys_msg_overwrite_trap_args), 0,
4189-	    (sy_call_t *)mach_sys_msg_overwrite_trap },/* 32 = msg_overwrite_trap */
4190-	{ ns(struct mach_sys_semaphore_signal_trap_args), 0,
4191-	    (sy_call_t *)mach_sys_semaphore_signal_trap },/* 33 = semaphore_signal_trap */
4192-	{ ns(struct mach_sys_semaphore_signal_all_trap_args), 0,
4193-	    (sy_call_t *)mach_sys_semaphore_signal_all_trap },/* 34 = semaphore_signal_all_trap */
4194-	{ ns(struct mach_sys_semaphore_signal_thread_trap_args), 0,
4195-	    (sy_call_t *)mach_sys_semaphore_signal_thread_trap },/* 35 = semaphore_signal_thread_trap */
4196-	{ ns(struct mach_sys_semaphore_wait_trap_args), 0,
4197-	    (sy_call_t *)mach_sys_semaphore_wait_trap },/* 36 = semaphore_wait_trap */
4198-	{ ns(struct mach_sys_semaphore_wait_signal_trap_args), 0,
4199-	    (sy_call_t *)mach_sys_semaphore_wait_signal_trap },/* 37 = semaphore_wait_signal_trap */
4200-	{ ns(struct mach_sys_semaphore_timedwait_trap_args), 0,
4201-	    (sy_call_t *)mach_sys_semaphore_timedwait_trap },/* 38 = semaphore_timedwait_trap */
4202-	{ ns(struct mach_sys_semaphore_timedwait_signal_trap_args), 0,
4203-	    (sy_call_t *)mach_sys_semaphore_timedwait_signal_trap },/* 39 = semaphore_timedwait_signal_trap */
4204-	{ 0, 0, 0,
4205-	    sys_nosys },			/* 40 = unimplemented */
4206-	{ 0, 0, 0,
4207-	    (sy_call_t *)mach_sys_init_process },/* 41 = init_process */
4208-	{ 0, 0, 0,
4209-	    sys_nosys },			/* 42 = unimplemented */
4210-	{ ns(struct mach_sys_map_fd_args), 0,
4211-	    (sy_call_t *)mach_sys_map_fd },	/* 43 = map_fd */
4212-	{ 0, 0, 0,
4213-	    sys_nosys },			/* 44 = unimplemented */
4214-	{ ns(struct mach_sys_task_for_pid_args), 0,
4215-	    (sy_call_t *)mach_sys_task_for_pid },/* 45 = task_for_pid */
4216-	{ ns(struct mach_sys_pid_for_task_args), 0,
4217-	    (sy_call_t *)mach_sys_pid_for_task },/* 46 = pid_for_task */
4218-	{ 0, 0, 0,
4219-	    sys_nosys },			/* 47 = unimplemented */
4220-	{ ns(struct mach_sys_macx_swapon_args), 0,
4221-	    (sy_call_t *)mach_sys_macx_swapon },/* 48 = macx_swapon */
4222-	{ ns(struct mach_sys_macx_swapoff_args), 0,
4223-	    (sy_call_t *)mach_sys_macx_swapoff },/* 49 = macx_swapoff */
4224-	{ 0, 0, 0,
4225-	    sys_nosys },			/* 50 = unimplemented */
4226-	{ ns(struct mach_sys_macx_triggers_args), 0,
4227-	    (sy_call_t *)mach_sys_macx_triggers },/* 51 = macx_triggers */
4228-	{ 0, 0, 0,
4229-	    sys_nosys },			/* 52 = unimplemented */
4230-	{ 0, 0, 0,
4231-	    sys_nosys },			/* 53 = unimplemented */
4232-	{ 0, 0, 0,
4233-	    sys_nosys },			/* 54 = unimplemented */
4234-	{ 0, 0, 0,
4235-	    sys_nosys },			/* 55 = unimplemented */
4236-	{ 0, 0, 0,
4237-	    sys_nosys },			/* 56 = unimplemented */
4238-	{ 0, 0, 0,
4239-	    sys_nosys },			/* 57 = unimplemented */
4240-	{ 0, 0, 0,
4241-	    sys_nosys },			/* 58 = unimplemented */
4242-	{ ns(struct mach_sys_swtch_pri_args), 0,
4243-	    (sy_call_t *)mach_sys_swtch_pri },	/* 59 = swtch_pri */
4244-	{ 0, 0, 0,
4245-	    (sy_call_t *)mach_sys_swtch },	/* 60 = swtch */
4246-	{ ns(struct mach_sys_syscall_thread_switch_args), 0,
4247-	    (sy_call_t *)mach_sys_syscall_thread_switch },/* 61 = syscall_thread_switch */
4248-	{ ns(struct mach_sys_clock_sleep_trap_args), 0,
4249-	    (sy_call_t *)mach_sys_clock_sleep_trap },/* 62 = clock_sleep_trap */
4250-	{ 0, 0, 0,
4251-	    sys_nosys },			/* 63 = unimplemented */
4252-	{ 0, 0, 0,
4253-	    sys_nosys },			/* 64 = unimplemented */
4254-	{ 0, 0, 0,
4255-	    sys_nosys },			/* 65 = unimplemented */
4256-	{ 0, 0, 0,
4257-	    sys_nosys },			/* 66 = unimplemented */
4258-	{ 0, 0, 0,
4259-	    sys_nosys },			/* 67 = unimplemented */
4260-	{ 0, 0, 0,
4261-	    sys_nosys },			/* 68 = unimplemented */
4262-	{ 0, 0, 0,
4263-	    sys_nosys },			/* 69 = unimplemented */
4264-	{ 0, 0, 0,
4265-	    sys_nosys },			/* 70 = unimplemented */
4266-	{ 0, 0, 0,
4267-	    sys_nosys },			/* 71 = unimplemented */
4268-	{ 0, 0, 0,
4269-	    sys_nosys },			/* 72 = unimplemented */
4270-	{ 0, 0, 0,
4271-	    sys_nosys },			/* 73 = unimplemented */
4272-	{ 0, 0, 0,
4273-	    sys_nosys },			/* 74 = unimplemented */
4274-	{ 0, 0, 0,
4275-	    sys_nosys },			/* 75 = unimplemented */
4276-	{ 0, 0, 0,
4277-	    sys_nosys },			/* 76 = unimplemented */
4278-	{ 0, 0, 0,
4279-	    sys_nosys },			/* 77 = unimplemented */
4280-	{ 0, 0, 0,
4281-	    sys_nosys },			/* 78 = unimplemented */
4282-	{ 0, 0, 0,
4283-	    sys_nosys },			/* 79 = unimplemented */
4284-	{ 0, 0, 0,
4285-	    sys_nosys },			/* 80 = unimplemented */
4286-	{ 0, 0, 0,
4287-	    sys_nosys },			/* 81 = unimplemented */
4288-	{ 0, 0, 0,
4289-	    sys_nosys },			/* 82 = unimplemented */
4290-	{ 0, 0, 0,
4291-	    sys_nosys },			/* 83 = unimplemented */
4292-	{ 0, 0, 0,
4293-	    sys_nosys },			/* 84 = unimplemented */
4294-	{ 0, 0, 0,
4295-	    sys_nosys },			/* 85 = unimplemented */
4296-	{ 0, 0, 0,
4297-	    sys_nosys },			/* 86 = unimplemented */
4298-	{ 0, 0, 0,
4299-	    sys_nosys },			/* 87 = unimplemented */
4300-	{ 0, 0, 0,
4301-	    sys_nosys },			/* 88 = unimplemented */
4302-	{ ns(struct mach_sys_timebase_info_args), 0,
4303-	    (sy_call_t *)mach_sys_timebase_info },/* 89 = timebase_info */
4304-	{ ns(struct mach_sys_wait_until_args), 0,
4305-	    (sy_call_t *)mach_sys_wait_until },	/* 90 = wait_until */
4306-	{ 0, 0, 0,
4307-	    (sy_call_t *)mach_sys_timer_create },/* 91 = timer_create */
4308-	{ ns(struct mach_sys_timer_destroy_args), 0,
4309-	    (sy_call_t *)mach_sys_timer_destroy },/* 92 = timer_destroy */
4310-	{ ns(struct mach_sys_timer_arm_args), 0,
4311-	    (sy_call_t *)mach_sys_timer_arm },	/* 93 = timer_arm */
4312-	{ ns(struct mach_sys_timer_cancel_args), 0,
4313-	    (sy_call_t *)mach_sys_timer_cancel },/* 94 = timer_cancel */
4314-	{ 0, 0, 0,
4315-	    (sy_call_t *)mach_sys_get_time_base_info },/* 95 = get_time_base_info */
4316-	{ 0, 0, 0,
4317-	    sys_nosys },			/* 96 = unimplemented */
4318-	{ 0, 0, 0,
4319-	    sys_nosys },			/* 97 = unimplemented */
4320-	{ 0, 0, 0,
4321-	    sys_nosys },			/* 98 = unimplemented */
4322-	{ 0, 0, 0,
4323-	    sys_nosys },			/* 99 = unimplemented */
4324-	{ 0, 0, 0,
4325-	    sys_nosys },			/* 100 = unimplemented */
4326-	{ 0, 0, 0,
4327-	    sys_nosys },			/* 101 = unimplemented */
4328-	{ 0, 0, 0,
4329-	    sys_nosys },			/* 102 = unimplemented */
4330-	{ 0, 0, 0,
4331-	    sys_nosys },			/* 103 = unimplemented */
4332-	{ 0, 0, 0,
4333-	    sys_nosys },			/* 104 = unimplemented */
4334-	{ 0, 0, 0,
4335-	    sys_nosys },			/* 105 = unimplemented */
4336-	{ 0, 0, 0,
4337-	    sys_nosys },			/* 106 = unimplemented */
4338-	{ 0, 0, 0,
4339-	    sys_nosys },			/* 107 = unimplemented */
4340-	{ 0, 0, 0,
4341-	    sys_nosys },			/* 108 = unimplemented */
4342-	{ 0, 0, 0,
4343-	    sys_nosys },			/* 109 = unimplemented */
4344-	{ 0, 0, 0,
4345-	    sys_nosys },			/* 110 = unimplemented */
4346-	{ 0, 0, 0,
4347-	    sys_nosys },			/* 111 = unimplemented */
4348-	{ 0, 0, 0,
4349-	    sys_nosys },			/* 112 = unimplemented */
4350-	{ 0, 0, 0,
4351-	    sys_nosys },			/* 113 = unimplemented */
4352-	{ 0, 0, 0,
4353-	    sys_nosys },			/* 114 = unimplemented */
4354-	{ 0, 0, 0,
4355-	    sys_nosys },			/* 115 = unimplemented */
4356-	{ 0, 0, 0,
4357-	    sys_nosys },			/* 116 = unimplemented */
4358-	{ 0, 0, 0,
4359-	    sys_nosys },			/* 117 = unimplemented */
4360-	{ 0, 0, 0,
4361-	    sys_nosys },			/* 118 = unimplemented */
4362-	{ 0, 0, 0,
4363-	    sys_nosys },			/* 119 = unimplemented */
4364-	{ 0, 0, 0,
4365-	    sys_nosys },			/* 120 = unimplemented */
4366-	{ 0, 0, 0,
4367-	    sys_nosys },			/* 121 = unimplemented */
4368-	{ 0, 0, 0,
4369-	    sys_nosys },			/* 122 = unimplemented */
4370-	{ 0, 0, 0,
4371-	    sys_nosys },			/* 123 = unimplemented */
4372-	{ 0, 0, 0,
4373-	    sys_nosys },			/* 124 = unimplemented */
4374-	{ 0, 0, 0,
4375-	    sys_nosys },			/* 125 = unimplemented */
4376-	{ 0, 0, 0,
4377-	    sys_nosys },			/* 126 = unimplemented */
4378-	{ 0, 0, 0,
4379-	    sys_nosys },			/* 127 = unimplemented */
4380+#if defined(_KERNEL_OPT)
4381+#endif
4382+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 0 = nosys */
4383+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 1 = nosys */
4384+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 2 = nosys */
4385+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 3 = nosys */
4386+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 4 = nosys */
4387+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 5 = nosys */
4388+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 6 = nosys */
4389+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 7 = nosys */
4390+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 8 = nosys */
4391+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 9 = nosys */
4392+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 10 = nosys */
4393+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 11 = nosys */
4394+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 12 = nosys */
4395+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 13 = nosys */
4396+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 14 = nosys */
4397+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 15 = nosys */
4398+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 16 = nosys */
4399+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 17 = nosys */
4400+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 18 = nosys */
4401+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 19 = nosys */
4402+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 20 = nosys */
4403+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 21 = nosys */
4404+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 22 = nosys */
4405+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 23 = nosys */
4406+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 24 = nosys */
4407+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 25 = nosys */
4408+	{ 0, (sy_call_t *)sys_mach_reply_port, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 26 = mach_reply_port */
4409+	{ 0, (sy_call_t *)sys_mach_thread_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 27 = mach_thread_self_trap */
4410+	{ 0, (sy_call_t *)sys_mach_task_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 28 = mach_task_self_trap */
4411+	{ 0, (sy_call_t *)sys_mach_host_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 29 = mach_host_self_trap */
4412+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 30 = nosys */
4413+	{ AS(mach_msg_trap_args), (sy_call_t *)sys_mach_msg_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 31 = mach_msg_trap */
4414+	{ AS(mach_msg_overwrite_trap_args), (sy_call_t *)sys_mach_msg_overwrite_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 32 = mach_msg_overwrite_trap */
4415+	{ AS(mach_semaphore_signal_trap_args), (sy_call_t *)sys_mach_semaphore_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 33 = mach_semaphore_signal_trap */
4416+	{ AS(mach_semaphore_signal_all_trap_args), (sy_call_t *)sys_mach_semaphore_signal_all_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 34 = mach_semaphore_signal_all_trap */
4417+	{ AS(mach_semaphore_signal_thread_trap_args), (sy_call_t *)sys_mach_semaphore_signal_thread_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 35 = mach_semaphore_signal_thread_trap */
4418+	{ AS(mach_semaphore_wait_trap_args), (sy_call_t *)sys_mach_semaphore_wait_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 36 = mach_semaphore_wait_trap */
4419+	{ AS(mach_semaphore_wait_signal_trap_args), (sy_call_t *)sys_mach_semaphore_wait_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 37 = mach_semaphore_wait_signal_trap */
4420+	{ AS(mach_semaphore_timedwait_trap_args), (sy_call_t *)sys_mach_semaphore_timedwait_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 38 = mach_semaphore_timedwait_trap */
4421+	{ AS(mach_semaphore_timedwait_signal_trap_args), (sy_call_t *)sys_mach_semaphore_timedwait_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 39 = mach_semaphore_timedwait_signal_trap */
4422+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 40 = nosys */
4423+	{ 0, (sy_call_t *)sys_mach_init_process, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 41 = mach_init_process */
4424+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 42 = nosys */
4425+	{ AS(mach_map_fd_args), (sy_call_t *)sys_mach_map_fd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 43 = mach_map_fd */
4426+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 44 = nosys */
4427+	{ AS(mach_task_for_pid_args), (sy_call_t *)sys_mach_task_for_pid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 45 = mach_task_for_pid */
4428+	{ AS(mach_pid_for_task_args), (sy_call_t *)sys_mach_pid_for_task, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 46 = mach_pid_for_task */
4429+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 47 = nosys */
4430+	{ AS(mach_macx_swapon_args), (sy_call_t *)sys_mach_macx_swapon, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 48 = mach_macx_swapon */
4431+	{ AS(mach_macx_swapoff_args), (sy_call_t *)sys_mach_macx_swapoff, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 49 = mach_macx_swapoff */
4432+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 50 = nosys */
4433+	{ AS(mach_macx_triggers_args), (sy_call_t *)sys_mach_macx_triggers, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 51 = mach_macx_triggers */
4434+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 52 = nosys */
4435+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 53 = nosys */
4436+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 54 = nosys */
4437+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 55 = nosys */
4438+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 56 = nosys */
4439+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 57 = nosys */
4440+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 58 = nosys */
4441+	{ AS(mach_swtch_pri_args), (sy_call_t *)sys_mach_swtch_pri, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 59 = mach_swtch_pri */
4442+	{ 0, (sy_call_t *)sys_mach_swtch, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 60 = mach_swtch */
4443+	{ AS(mach_syscall_thread_switch_args), (sy_call_t *)sys_mach_syscall_thread_switch, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 61 = mach_syscall_thread_switch */
4444+	{ AS(mach_clock_sleep_trap_args), (sy_call_t *)sys_mach_clock_sleep_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 62 = mach_clock_sleep_trap */
4445+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 63 = nosys */
4446+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 64 = nosys */
4447+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 65 = nosys */
4448+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 66 = nosys */
4449+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 67 = nosys */
4450+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 68 = nosys */
4451+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 69 = nosys */
4452+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 70 = nosys */
4453+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 71 = nosys */
4454+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 72 = nosys */
4455+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 73 = nosys */
4456+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 74 = nosys */
4457+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 75 = nosys */
4458+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 76 = nosys */
4459+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 77 = nosys */
4460+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 78 = nosys */
4461+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 79 = nosys */
4462+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 80 = nosys */
4463+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 81 = nosys */
4464+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 82 = nosys */
4465+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 83 = nosys */
4466+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 84 = nosys */
4467+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 85 = nosys */
4468+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 86 = nosys */
4469+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 87 = nosys */
4470+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 88 = nosys */
4471+	{ AS(mach_timebase_info_args), (sy_call_t *)sys_mach_timebase_info, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 89 = mach_timebase_info */
4472+	{ AS(mach_wait_until_args), (sy_call_t *)sys_mach_wait_until, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 90 = mach_wait_until */
4473+	{ 0, (sy_call_t *)sys_mach_timer_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 91 = mach_timer_create */
4474+	{ AS(mach_timer_destroy_args), (sy_call_t *)sys_mach_timer_destroy, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 92 = mach_timer_destroy */
4475+	{ AS(mach_timer_arm_args), (sy_call_t *)sys_mach_timer_arm, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 93 = mach_timer_arm */
4476+	{ AS(mach_timer_cancel_args), (sy_call_t *)sys_mach_timer_cancel, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 94 = mach_timer_cancel */
4477+	{ 0, (sy_call_t *)sys_mach_get_time_base_info, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 95 = mach_get_time_base_info */
4478+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 96 = nosys */
4479+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 97 = nosys */
4480+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 98 = nosys */
4481+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 99 = nosys */
4482+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 100 = nosys */
4483+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 101 = nosys */
4484+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 102 = nosys */
4485+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 103 = nosys */
4486+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 104 = nosys */
4487+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 105 = nosys */
4488+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 106 = nosys */
4489+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 107 = nosys */
4490+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 108 = nosys */
4491+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 109 = nosys */
4492+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 110 = nosys */
4493+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 111 = nosys */
4494+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 112 = nosys */
4495+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 113 = nosys */
4496+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 114 = nosys */
4497+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 115 = nosys */
4498+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 116 = nosys */
4499+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 117 = nosys */
4500+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 118 = nosys */
4501+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 119 = nosys */
4502+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 120 = nosys */
4503+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 121 = nosys */
4504+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 122 = nosys */
4505+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 123 = nosys */
4506+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 124 = nosys */
4507+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 125 = nosys */
4508+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 126 = nosys */
4509+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 127 = nosys */
4510 };
4511diff --git a/sys/compat/mach/mach_task.c b/sys/compat/mach/mach_task.c
4512index d37c571..b67762f 100644
4513--- a/sys/compat/mach/mach_task.c
4514+++ b/sys/compat/mach/mach_task.c
4515@@ -1,4 +1,4 @@
4516-/*	$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $ */
4517+/*	$FreeBSD$ */
4518
4519 /*-
4520  * Copyright (c) 2002-2003, 2008 The NetBSD Foundation, Inc.
4521@@ -29,10 +29,9 @@
4522  * POSSIBILITY OF SUCH DAMAGE.
4523  */
4524
4525-#include "opt_compat_darwin.h"
4526
4527 #include <sys/cdefs.h>
4528-__KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $");
4529+__FBSDID("$FreeBSD$");
4530
4531 #include <sys/types.h>
4532 #include <sys/param.h>
4533@@ -43,7 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $")
4534 #include <sys/resourcevar.h>
4535 #include <sys/malloc.h>
4536 #include <sys/mount.h>
4537-#include <sys/syscallargs.h>
4538+#include <sys/sysproto.h>
4539 #include <sys/kauth.h>
4540
4541 #include <uvm/uvm_extern.h>
4542@@ -57,7 +56,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $")
4543 #include <compat/mach/mach_port.h>
4544 #include <compat/mach/mach_task.h>
4545 #include <compat/mach/mach_services.h>
4546-#include <compat/mach/mach_syscallargs.h>
4547+#include <compat/mach/mach_proto.h>
4548
4549 #ifdef COMPAT_DARWIN
4550 #include <compat/darwin/darwin_exec.h>
4551@@ -74,25 +73,25 @@ mach_task_get_special_port(struct mach_trap_args *args)
4552 	mach_task_get_special_port_request_t *req = args->smsg;
4553 	mach_task_get_special_port_reply_t *rep = args->rmsg;
4554 	size_t *msglen = args->rsize;
4555-	struct lwp *l = args->l;
4556-	struct lwp *tl = args->tl;
4557+	struct thread *td = args->td;
4558+	struct thread *ttd = args->ttd;
4559 	struct mach_emuldata *med;
4560 	struct mach_right *mr;
4561
4562-	med = (struct mach_emuldata *)tl->l_proc->p_emuldata;
4563+	med = (struct mach_emuldata *)ttd->td_proc->p_emuldata;
4564
4565 	switch (req->req_which_port) {
4566 	case MACH_TASK_KERNEL_PORT:
4567-		mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0);
4568+		mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0);
4569 		break;
4570
4571 	case MACH_TASK_HOST_PORT:
4572-		mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0);
4573+		mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0);
4574 		break;
4575
4576 	case MACH_TASK_BOOTSTRAP_PORT:
4577 		mr = mach_right_get(med->med_bootstrap,
4578-		    l, MACH_PORT_TYPE_SEND, 0);
4579+		    td, MACH_PORT_TYPE_SEND, 0);
4580 		break;
4581
4582 	case MACH_TASK_WIRED_LEDGER_PORT:
4583@@ -118,8 +117,8 @@ mach_ports_lookup(struct mach_trap_args *args)
4584 	mach_ports_lookup_request_t *req = args->smsg;
4585 	mach_ports_lookup_reply_t *rep = args->rmsg;
4586 	size_t *msglen = args->rsize;
4587-	struct lwp *l = args->l;
4588-	struct lwp *tl = args->tl;
4589+	struct thread *td = args->td;
4590+	struct thread *ttd = args->ttd;
4591 	struct mach_emuldata *med;
4592 	struct mach_right *mr;
4593 	mach_port_name_t mnp[7];
4594@@ -133,17 +132,17 @@ mach_ports_lookup(struct mach_trap_args *args)
4595 	 * filled. We have to see more of this in order to fully understand
4596 	 * how this trap works.
4597 	 */
4598-	med = (struct mach_emuldata *)tl->l_proc->p_emuldata;
4599+	med = (struct mach_emuldata *)ttd->td_proc->p_emuldata;
4600 	mnp[0] = (mach_port_name_t)MACH_PORT_DEAD;
4601 	mnp[3] = (mach_port_name_t)MACH_PORT_DEAD;
4602 	mnp[5] = (mach_port_name_t)MACH_PORT_DEAD;
4603 	mnp[6] = (mach_port_name_t)MACH_PORT_DEAD;
4604
4605-	mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0);
4606+	mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0);
4607 	mnp[MACH_TASK_KERNEL_PORT] = mr->mr_name;
4608-	mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0);
4609+	mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0);
4610 	mnp[MACH_TASK_HOST_PORT] = mr->mr_name;
4611-	mr = mach_right_get(med->med_bootstrap, l, MACH_PORT_TYPE_SEND, 0);
4612+	mr = mach_right_get(med->med_bootstrap, td, MACH_PORT_TYPE_SEND, 0);
4613 	mnp[MACH_TASK_BOOTSTRAP_PORT] = mr->mr_name;
4614
4615 	/*
4616@@ -173,8 +172,8 @@ mach_task_set_special_port(struct mach_trap_args *args)
4617 	mach_task_set_special_port_request_t *req = args->smsg;
4618 	mach_task_set_special_port_reply_t *rep = args->rmsg;
4619 	size_t *msglen = args->rsize;
4620-	struct lwp *l = args->l;
4621-	struct lwp *tl = args->tl;
4622+	struct thread *td = args->td;
4623+	struct thread *ttd = args->ttd;
4624 	mach_port_t mn;
4625 	struct mach_right *mr;
4626 	struct mach_port *mp;
4627@@ -187,13 +186,13 @@ mach_task_set_special_port(struct mach_trap_args *args)
4628 		return mach_msg_error(args, 0);
4629
4630 	/* Does the inserted port exists? */
4631-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
4632+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0)
4633 		return mach_msg_error(args, EPERM);
4634
4635 	if (mr->mr_type == MACH_PORT_TYPE_DEAD_NAME)
4636 		return mach_msg_error(args, EINVAL);
4637
4638-	med = (struct mach_emuldata *)tl->l_proc->p_emuldata;
4639+	med = (struct mach_emuldata *)ttd->td_proc->p_emuldata;
4640
4641 	switch (req->req_which_port) {
4642 	case MACH_TASK_KERNEL_PORT:
4643@@ -225,7 +224,7 @@ mach_task_set_special_port(struct mach_trap_args *args)
4644 		{
4645 			struct darwin_emuldata *ded;
4646
4647-			ded = tl->l_proc->p_emuldata;
4648+			ded = ttd->td_proc->p_emuldata;
4649 			if (ded->ded_fakepid == 1) {
4650 				mach_bootstrap_port = med->med_bootstrap;
4651 #ifdef DEBUG_DARWIN
4652@@ -261,9 +260,9 @@ mach_task_threads(struct mach_trap_args *args)
4653 	mach_task_threads_request_t *req = args->smsg;
4654 	mach_task_threads_reply_t *rep = args->rmsg;
4655 	size_t *msglen = args->rsize;
4656-	struct lwp *l = args->l;
4657-	struct lwp *tl = args->tl;
4658-	struct proc *tp = tl->l_proc;
4659+	struct thread *td = args->td;
4660+	struct thread *ttd = args->ttd;
4661+	struct proc *tp = ttd->td_proc;
4662 	struct lwp *cl;
4663 	struct mach_emuldata *med;
4664 	struct mach_lwp_emuldata *mle;
4665@@ -281,7 +280,7 @@ mach_task_threads(struct mach_trap_args *args)
4666
4667 	LIST_FOREACH(cl, &tp->p_lwps, l_sibling) {
4668 		mle = cl->l_emuldata;
4669-		mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0);
4670+		mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0);
4671 		mnp[i++] = mr->mr_name;
4672 	}
4673
4674@@ -306,15 +305,15 @@ mach_task_get_exception_ports(struct mach_trap_args *args)
4675 {
4676 	mach_task_get_exception_ports_request_t *req = args->smsg;
4677 	mach_task_get_exception_ports_reply_t *rep = args->rmsg;
4678-	struct lwp *l = args->l;
4679-	struct lwp *tl = args->tl;
4680+	struct thread *td = args->td;
4681+	struct thread *ttd = args->ttd;
4682 	size_t *msglen = args->rsize;
4683 	struct mach_emuldata *med;
4684 	struct mach_right *mr;
4685 	struct mach_exc_info *mei;
4686 	int i, j, count;
4687
4688-	med = tl->l_proc->p_emuldata;
4689+	med = ttd->td_proc->p_emuldata;
4690
4691 	/* It always returns an array of 32 ports even if only 9 can be used */
4692 	count = sizeof(rep->rep_old_handler) / sizeof(rep->rep_old_handler[0]);
4693@@ -336,7 +335,7 @@ mach_task_get_exception_ports(struct mach_trap_args *args)
4694 		}
4695 		mei = med->med_exc[i]->mp_data;
4696
4697-		mr = mach_right_get(med->med_exc[i], l, MACH_PORT_TYPE_SEND, 0);
4698+		mr = mach_right_get(med->med_exc[i], td, MACH_PORT_TYPE_SEND, 0);
4699
4700 		mach_add_port_desc(rep, mr->mr_name);
4701
4702@@ -369,8 +368,8 @@ mach_task_set_exception_ports(struct mach_trap_args *args)
4703 {
4704 	mach_task_set_exception_ports_request_t *req = args->smsg;
4705 	mach_task_set_exception_ports_reply_t *rep = args->rmsg;
4706-	struct lwp *l = args->l;
4707-	struct lwp *tl = args->tl;
4708+	struct thread *td = args->td;
4709+	struct thread *ttd = args->ttd;
4710 	size_t *msglen = args->rsize;
4711 	struct mach_emuldata *med;
4712 	mach_port_name_t mn;
4713@@ -379,7 +378,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args)
4714 	struct mach_exc_info *mei;
4715
4716 	mn = req->req_new_port.name;
4717-	if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_SEND)) == 0)
4718+	if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_SEND)) == 0)
4719 		return mach_msg_error(args, EPERM);
4720
4721 	mp = mr->mr_port;
4722@@ -388,7 +387,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args)
4723 	    (mp->mp_datatype != MACH_MP_NONE))
4724 		printf("mach_task_set_exception_ports: data exists\n");
4725 #endif
4726-	mei = malloc(sizeof(*mei), M_EMULDATA, M_WAITOK);
4727+	mei = malloc(sizeof(*mei), M_MACH, M_WAITOK);
4728 	mei->mei_flavor = req->req_flavor;
4729 	mei->mei_behavior = req->req_behavior;
4730
4731@@ -396,7 +395,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args)
4732 	mp->mp_flags |= MACH_MP_DATA_ALLOCATED;
4733 	mp->mp_datatype = MACH_MP_EXC_INFO;
4734
4735-	med = tl->l_proc->p_emuldata;
4736+	med = ttd->td_proc->p_emuldata;
4737 	if (req->req_mask & MACH_EXC_MASK_BAD_ACCESS)
4738 		update_exception_port(med, MACH_EXC_BAD_ACCESS, mp);
4739 	if (req->req_mask & MACH_EXC_MASK_BAD_INSTRUCTION)
4740@@ -439,10 +438,10 @@ mach_task_info(struct mach_trap_args *args)
4741 {
4742 	mach_task_info_request_t *req = args->smsg;
4743 	mach_task_info_reply_t *rep = args->rmsg;
4744-	struct lwp *tl = args->tl;
4745+	struct thread *ttd = args->ttd;
4746 	size_t *msglen = args->rsize;
4747 	int count;
4748-	struct proc *tp = tl->l_proc;
4749+	struct proc *tp = ttd->td_proc;
4750
4751 	switch(req->req_flavor) {
4752 	case MACH_TASK_BASIC_INFO: {
4753@@ -542,10 +541,10 @@ mach_task_suspend(struct mach_trap_args *args)
4754 	mach_task_suspend_request_t *req = args->smsg;
4755 	mach_task_suspend_reply_t *rep = args->rmsg;
4756 	size_t *msglen = args->rsize;
4757-	struct lwp *tl = args->tl;
4758-	struct lwp *lp;
4759+	struct thread *ttd = args->ttd;
4760+	struct thread *tdp;
4761 	struct mach_emuldata *med;
4762-	struct proc *tp = tl->l_proc;
4763+	struct proc *tp = ttd->td_proc;
4764
4765 	med = tp->p_emuldata;
4766 	med->med_suspend++; /* XXX Mach also has a per thread semaphore */
4767@@ -585,9 +584,9 @@ mach_task_resume(struct mach_trap_args *args)
4768 	mach_task_resume_request_t *req = args->smsg;
4769 	mach_task_resume_reply_t *rep = args->rmsg;
4770 	size_t *msglen = args->rsize;
4771-	struct lwp *tl = args->tl;
4772+	struct thread *ttd = args->ttd;
4773 	struct mach_emuldata *med;
4774-	struct proc *tp = tl->l_proc;
4775+	struct proc *tp = ttd->td_proc;
4776
4777 	med = tp->p_emuldata;
4778 	med->med_suspend--; /* XXX Mach also has a per thread semaphore */
4779@@ -622,13 +621,13 @@ mach_task_terminate(struct mach_trap_args *args)
4780 	mach_task_resume_request_t *req = args->smsg;
4781 	mach_task_resume_reply_t *rep = args->rmsg;
4782 	size_t *msglen = args->rsize;
4783-	struct lwp *tl = args->tl;
4784+	struct thread *ttd = args->ttd;
4785 	struct sys_exit_args cup;
4786 	register_t retval;
4787 	int error;
4788
4789
4790-	SCARG(&cup, rval) = 0;
4791+	&cup->rval = 0;
4792 	error = sys_exit(tl, &cup, &retval);
4793
4794 	*msglen = sizeof(*rep);
4795@@ -642,7 +641,7 @@ mach_task_terminate(struct mach_trap_args *args)
4796 }
4797
4798 int
4799-mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *uap, register_t *retval)
4800+mach_sys_task_for_pid(struct thread *td, struct mach_sys_task_for_pid_args *uap)
4801 {
4802 	/* {
4803 		syscallarg(mach_port_t) target_tport;
4804@@ -661,12 +660,12 @@ mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *ua
4805 	 * yet, so this parameter should be useless.
4806 	 * However, we still validate it.
4807 	 */
4808-	if ((mr = mach_right_check(SCARG(uap, target_tport),
4809-	    l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
4810+	if ((mr = mach_right_check(uap->target_tport,
4811+	    td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL)
4812 		return EPERM;
4813
4814 	mutex_enter(proc_lock);
4815-	if ((t = proc_find(SCARG(uap, pid))) == NULL) {
4816+	if ((t = proc_find(uap->pid)) == NULL) {
4817 		mutex_exit(proc_lock);
4818 		return ESRCH;
4819 	}
4820@@ -694,9 +693,9 @@ mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *ua
4821
4822 	/* XXX: Unlocked, broken. */
4823 	med = t->p_emuldata;
4824-	mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0);
4825+	mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0);
4826 	if (mr) {
4827-		error = copyout(&mr->mr_name, SCARG(uap, t),
4828+		error = copyout(&mr->mr_name, uap->t,
4829 		    sizeof(mr->mr_name));
4830 	} else {
4831 		error = EINVAL;
4832diff --git a/sys/compat/mach/mach_task.h b/sys/compat/mach/mach_task.h
4833index e0ea1f8..ed5e8ff 100644
4834--- a/sys/compat/mach/mach_task.h
4835+++ b/sys/compat/mach/mach_task.h
4836@@ -1,4 +1,4 @@
4837-/*	$NetBSD: mach_task.h,v 1.16 2008/04/28 20:23:44 martin Exp $ */
4838+/*	$FreeBSD$ */
4839
4840 /*-
4841  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
4842diff --git a/sys/compat/mach/mach_thread.c b/sys/compat/mach/mach_thread.c
4843index a5abd61..36bccba 100644
4844--- a/sys/compat/mach/mach_thread.c
4845+++ b/sys/compat/mach/mach_thread.c
4846@@ -1,5 +1,3 @@
4847-/*	$NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $ */
4848-
4849 /*-
4850  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
4851  * All rights reserved.
4852@@ -30,13 +28,14 @@
4853  */
4854
4855 #include <sys/cdefs.h>
4856-__KERNEL_RCSID(0, "$NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $");
4857+__FBSDID("$FreeBSD$");
4858
4859 #include <sys/types.h>
4860 #include <sys/param.h>
4861 #include <sys/kernel.h>
4862 #include <sys/systm.h>
4863 #include <sys/signal.h>
4864+#include <sys/lock.h>
4865 #include <sys/rwlock.h>
4866 #include <sys/queue.h>
4867 #include <sys/proc.h>
4868@@ -54,10 +53,10 @@ __KERNEL_RCSID(0, "$NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $"
4869 #include <compat/mach/mach_thread.h>
4870 #include <compat/mach/mach_errno.h>
4871 #include <compat/mach/mach_services.h>
4872-#include <compat/mach/mach_syscallargs.h>
4873+#include <compat/mach/mach_proto.h>
4874
4875 int
4876-mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thread_switch_args *uap, register_t *retval)
4877+mach_sys_syscall_thread_switch(struct thread *td, const struct mach_sys_syscall_thread_switch_args *uap)
4878 {
4879 	/* {
4880 		syscallarg(mach_port_name_t) thread_name;
4881@@ -67,15 +66,15 @@ mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thre
4882 	int timeout;
4883 	struct mach_emuldata *med;
4884
4885-	med = (struct mach_emuldata *)l->l_proc->p_emuldata;
4886-	timeout = SCARG(uap, option_time) * hz / 1000;
4887+	med = (struct mach_emuldata *)td->td_proc->p_emuldata;
4888+	timeout = uap->option_time * hz / 1000;
4889
4890 	/*
4891 	 * The day we will be able to find out the struct proc from
4892 	 * the port number, try to use preempt() to call the right thread.
4893 	 * [- but preempt() is for _involuntary_ context switches.]
4894 	 */
4895-	switch(SCARG(uap, option)) {
4896+	switch(uap->option) {
4897 	case MACH_SWITCH_OPTION_NONE:
4898 		yield();
4899 		break;
4900@@ -95,14 +94,14 @@ mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thre
4901 		break;
4902
4903 	default:
4904-		uprintf("mach_sys_syscall_thread_switch(): unknown option %d\n",		    SCARG(uap, option));
4905+		uprintf("mach_sys_syscall_thread_switch(): unknown option %d\n",		    uap->option);
4906 		break;
4907 	}
4908 	return 0;
4909 }
4910
4911 int
4912-mach_sys_swtch_pri(struct lwp *l, const struct mach_sys_swtch_pri_args *uap, register_t *retval)
4913+mach_sys_swtch_pri(struct thread *td, struct mach_sys_swtch_pri_args *uap)
4914 {
4915 	/* {
4916 		syscallarg(int) pri;
4917@@ -115,21 +114,21 @@ mach_sys_swtch_pri(struct lwp *l, const struct mach_sys_swtch_pri_args *uap, reg
4918 	KERNEL_UNLOCK_ALL(l, &l->l_biglocks);
4919 	lwp_lock(l);
4920 	if (l->l_stat == LSONPROC)
4921-		l->l_proc->p_stats->p_ru.ru_nivcsw++;	/* XXXSMP */
4922-	*retval = mi_switch(l);
4923+		td->td_proc->p_stats->p_ru.ru_nivcsw++;	/* XXXSMP */
4924+	td->td_retval[0] = mi_switch(td);
4925 	KERNEL_LOCK(l->l_biglocks, l);
4926
4927 	return 0;
4928 }
4929
4930 int
4931-mach_sys_swtch(struct lwp *l, const void *v, register_t *retval)
4932+mach_sys_swtch(struct thread *td, const void *v)
4933 {
4934 	struct mach_sys_swtch_pri_args cup;
4935
4936-	SCARG(&cup, pri) = 0;
4937+	cup.pri = 0;
4938
4939-	return mach_sys_swtch_pri(l, &cup, retval);
4940+	return mach_sys_swtch_pri(td, &cup, retval);
4941 }
4942
4943
4944@@ -166,12 +165,12 @@ mach_thread_create_running(struct mach_trap_args *args)
4945 	mach_thread_create_running_request_t *req = args->smsg;
4946 	mach_thread_create_running_reply_t *rep = args->rmsg;
4947 	size_t *msglen = args->rsize;
4948-	struct lwp *l = args->l;
4949-	struct proc *p = l->l_proc;
4950+	struct thread *td = args->td;
4951+	struct proc *p = td->td_proc;
4952 	struct mach_create_thread_child_args mctc;
4953 	struct mach_right *child_mr;
4954 	struct mach_lwp_emuldata *mle;
4955-	vaddr_t uaddr;
4956+	vm_offset_t uaddr;
4957 	int flags;
4958 	int error;
4959 	int end_offset;
4960@@ -217,7 +216,7 @@ mach_thread_create_running(struct mach_trap_args *args)
4961 	 * Get the child's kernel port
4962 	 */
4963 	mle = mctc.mctc_lwp->l_emuldata;
4964-	child_mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0);
4965+	child_mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0);
4966
4967 	/*
4968 	 * The child relies on some values in mctc, so we should not
4969@@ -243,9 +242,9 @@ mach_thread_info(struct mach_trap_args *args)
4970 	mach_thread_info_request_t *req = args->smsg;
4971 	mach_thread_info_reply_t *rep = args->rmsg;
4972 	size_t *msglen = args->rsize;
4973-	struct lwp *l = args->l;
4974-	struct lwp *tl = args->tl;
4975-	struct proc *tp = tl->l_proc;
4976+	struct thread *td = args->td;
4977+	struct thread *ttd = args->ttd;
4978+	struct proc *tp = ttd->td_proc;
4979
4980 	/* Sanity check req->req_count */
4981 	if (req->req_count > 12)
4982@@ -335,7 +334,7 @@ mach_thread_get_state(struct mach_trap_args *args)
4983 	mach_thread_get_state_request_t *req = args->smsg;
4984 	mach_thread_get_state_reply_t *rep = args->rmsg;
4985 	size_t *msglen = args->rsize;
4986-	struct lwp *tl = args->tl;
4987+	struct thread *ttd = args->ttd;
4988 	int error;
4989 	int size;
4990
4991@@ -361,7 +360,7 @@ mach_thread_set_state(struct mach_trap_args *args)
4992 	mach_thread_set_state_request_t *req = args->smsg;
4993 	mach_thread_set_state_reply_t *rep = args->rmsg;
4994 	size_t *msglen = args->rsize;
4995-	struct lwp *tl = args->tl;
4996+	struct thread *ttd = args->ttd;
4997 	int error;
4998 	int end_offset;
4999
5000@@ -390,9 +389,9 @@ mach_thread_suspend(struct mach_trap_args *args)
5001 	mach_thread_suspend_request_t *req = args->smsg;
5002 	mach_thread_suspend_reply_t *rep = args->rmsg;
5003 	size_t *msglen = args->rsize;
5004-	struct lwp *l = args->l;
5005-	struct lwp *tl = args->tl;
5006-	struct proc *p = tl->l_proc;
5007+	struct thread *td = args->td;
5008+	struct thread *ttd = args->ttd;
5009+	struct proc *p = ttd->td_proc;
5010 	int error;
5011
5012 	mutex_enter(p->p_lock);
5013@@ -414,8 +413,8 @@ mach_thread_resume(struct mach_trap_args *args)
5014 	mach_thread_resume_request_t *req = args->smsg;
5015 	mach_thread_resume_reply_t *rep = args->rmsg;
5016 	size_t *msglen = args->rsize;
5017-	struct lwp *tl = args->tl;
5018-	struct proc *p = tl->l_proc;
5019+	struct thread *ttd = args->ttd;
5020+	struct proc *p = ttd->td_proc;
5021
5022 	mutex_enter(p->p_lock);
5023 	lwp_lock(tl);
5024@@ -436,7 +435,7 @@ mach_thread_abort(struct mach_trap_args *args)
5025 	mach_thread_abort_request_t *req = args->smsg;
5026 	mach_thread_abort_reply_t *rep = args->rmsg;
5027 	size_t *msglen = args->rsize;
5028-	struct lwp *tl = args->tl;
5029+	struct thread *ttd = args->ttd;
5030
5031 	lwp_exit(tl);
5032
5033@@ -454,7 +453,7 @@ mach_thread_set_policy(struct mach_trap_args *args)
5034 	mach_thread_set_policy_request_t *req = args->smsg;
5035 	mach_thread_set_policy_reply_t *rep = args->rmsg;
5036 	size_t *msglen = args->rsize;
5037-	struct lwp *tl = args->tl;
5038+	struct thread *ttd = args->ttd;
5039 	mach_port_t mn;
5040 	struct mach_right *mr;
5041 	int limit_count_offset, limit_offset;
5042diff --git a/sys/compat/mach/mach_thread.h b/sys/compat/mach/mach_thread.h
5043index 9a10ebb..30ef758 100644
5044--- a/sys/compat/mach/mach_thread.h
5045+++ b/sys/compat/mach/mach_thread.h
5046@@ -1,4 +1,4 @@
5047-/*	$NetBSD: mach_thread.h,v 1.19 2008/04/28 20:23:44 martin Exp $ */
5048+/*	$FreeBSD$ */
5049
5050 /*-
5051  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
5052@@ -42,8 +42,8 @@
5053
5054 /* For mach_create_thread_child() */
5055 struct mach_create_thread_child_args {
5056-	struct lwp *mctc_lwp;
5057-	struct lwp *mctc_oldlwp;
5058+	struct thread *mctc_lwp;
5059+	struct thread *mctc_oldlwp;
5060 	mach_natural_t *mctc_state;
5061 	int mctc_flavor;
5062 	int mctc_child_done;
5063@@ -242,8 +242,8 @@ typedef struct {
5064 } mach_thread_set_policy_reply_t;
5065
5066 /* These are machine dependent functions */
5067-int mach_thread_get_state_machdep(struct lwp *, int, void *, int *);
5068-int mach_thread_set_state_machdep(struct lwp *, int, void *);
5069+int mach_thread_get_state_machdep(struct thread *, int, void *, int *);
5070+int mach_thread_set_state_machdep(struct thread *, int, void *);
5071 void mach_create_thread_child(void *);
5072
5073 #endif /* _MACH_THREAD_H_ */
5074diff --git a/sys/compat/mach/mach_types.h b/sys/compat/mach/mach_types.h
5075index 7a2617b..6ef1603 100644
5076--- a/sys/compat/mach/mach_types.h
5077+++ b/sys/compat/mach/mach_types.h
5078@@ -1,5 +1,4 @@
5079-/*	$NetBSD: mach_types.h,v 1.24 2008/04/28 20:23:44 martin Exp $	 */
5080-
5081+/*	$FreeBSD$ */
5082 /*-
5083  * Copyright (c) 2001-2003 The NetBSD Foundation, Inc.
5084  * All rights reserved.
5085@@ -32,6 +31,10 @@
5086 #ifndef	_MACH_TYPES_H_
5087 #define	_MACH_TYPES_H_
5088
5089+#include <sys/param.h>
5090+#include <sys/kernel.h>
5091+#include <sys/malloc.h>
5092+
5093 typedef int mach_port_t;
5094 typedef int mach_port_name_t;
5095 typedef int mach_port_type_t;
5096@@ -73,6 +76,7 @@ typedef unsigned int mach_vm_machine_attribute_t;
5097 typedef mach_natural_t mach_port_urefs_t;
5098 typedef int mach_port_delta_t;
5099
5100+MALLOC_DECLARE(M_MACH);
5101
5102 /*
5103  * This is called cproc_t in Mach (cthread_t in Darwin). It is a pointer to
5104diff --git a/sys/compat/mach/mach_vm.c b/sys/compat/mach/mach_vm.c
5105index b495add..aeb3588 100644
5106--- a/sys/compat/mach/mach_vm.c
5107+++ b/sys/compat/mach/mach_vm.c
5108@@ -1,5 +1,3 @@
5109-/*	$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $ */
5110-
5111 /*-
5112  * Copyright (c) 2002-2003, 2008 The NetBSD Foundation, Inc.
5113  * All rights reserved.
5114@@ -30,7 +28,7 @@
5115  */
5116
5117 #include <sys/cdefs.h>
5118-__KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $");
5119+__FBSDID("$FreeBSD$");
5120
5121 #include <sys/types.h>
5122 #include <sys/param.h>
5123@@ -44,11 +42,11 @@ __KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $")
5124 #include <sys/filedesc.h>
5125 #include <sys/ktrace.h>
5126 #include <sys/exec.h>
5127-#include <sys/syscallargs.h>
5128+#include <sys/sysproto.h>
5129
5130-#include <uvm/uvm_prot.h>
5131-#include <uvm/uvm_map.h>
5132-#include <uvm/uvm_extern.h>
5133+#include <vm/pmap.h>
5134+#include <vm/vm_map.h>
5135+#include <vm/vm_extern.h>
5136
5137 #include <compat/mach/mach_types.h>
5138 #include <compat/mach/mach_message.h>
5139@@ -57,7 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $")
5140 #include <compat/mach/mach_errno.h>
5141 #include <compat/mach/mach_port.h>
5142 #include <compat/mach/mach_services.h>
5143-#include <compat/mach/mach_syscallargs.h>
5144+#include <compat/mach/mach_proto.h>
5145
5146 int
5147 mach_vm_map(struct mach_trap_args *args)
5148@@ -65,10 +63,10 @@ mach_vm_map(struct mach_trap_args *args)
5149 	mach_vm_map_request_t *req = args->smsg;
5150 	mach_vm_map_reply_t *rep = args->rmsg;
5151 	size_t *msglen = args->rsize;
5152-	struct lwp *tl = args->tl;
5153-	struct proc *tp = tl->l_proc;
5154+	struct thread *ttd = args->ttd;
5155+	struct proc *tp = ttd->td_proc;
5156 	struct sys_mmap_args cup;
5157-	vaddr_t addr;
5158+	vm_offset_t addr;
5159 	int error, flags;
5160 	void *ret;
5161
5162@@ -95,10 +93,10 @@ mach_vm_map(struct mach_trap_args *args)
5163 		req->req_mask += 1;
5164
5165 	if (req->req_flags & MACH_VM_FLAGS_ANYWHERE) {
5166-		SCARG(&cup, flags) = MAP_ANON;
5167+		cup.flags = MAP_ANON;
5168 		flags = 0;
5169 	} else {
5170-		SCARG(&cup, flags) = MAP_ANON | MAP_FIXED;
5171+		cup.flags = MAP_ANON | MAP_FIXED;
5172 		flags = MAP_FIXED;
5173 	}
5174
5175@@ -107,7 +105,7 @@ mach_vm_map(struct mach_trap_args *args)
5176 	 * requested alignement.
5177 	 */
5178 	vm_map_lock(&tp->p_vmspace->vm_map);
5179-	ret = uvm_map_findspace(&tp->p_vmspace->vm_map,
5180+	ret = vm_map_findspace(&tp->p_vmspace->vm_map,
5181 	    trunc_page(req->req_address), req->req_size, &addr,
5182 	    NULL, 0, req->req_mask, flags);
5183 	vm_map_unlock(&tp->p_vmspace->vm_map);
5184@@ -117,27 +115,27 @@ mach_vm_map(struct mach_trap_args *args)
5185
5186 	switch(req->req_inherance) {
5187 	case MACH_VM_INHERIT_SHARE:
5188-		SCARG(&cup, flags) |= MAP_INHERIT;
5189+		cup.flags |= MAP_INHERIT_SHARE;
5190 		break;
5191 	case MACH_VM_INHERIT_COPY:
5192-		SCARG(&cup, flags) |= MAP_COPY;
5193+		cup.flags) |= MAP_COPY_ON_WRITE;
5194 		break;
5195 	case MACH_VM_INHERIT_NONE:
5196 		break;
5197 	case MACH_VM_INHERIT_DONATE_COPY:
5198 	default:
5199-		uprintf("mach_vm_map: unsupported inherance flag %d\n",
5200+		uprintf("mach_vm_map: unsupported inheritance flag %d\n",
5201 		    req->req_inherance);
5202 		break;
5203 	}
5204
5205-	SCARG(&cup, addr) = (void *)addr;
5206-	SCARG(&cup, len) = req->req_size;
5207-	SCARG(&cup, prot) = req->req_cur_protection;
5208-	SCARG(&cup, fd) = -1;		/* XXX For now, no object mapping */
5209-	SCARG(&cup, pos) = req->req_offset;
5210+	cup.addr) = (void *)addr;
5211+	cup.len) = req->req_size;
5212+	cup.prot) = req->req_cur_protection;
5213+	cup.fd) = -1;		/* XXX For now, no object mapping */
5214+	cup.pos) = req->req_offset;
5215
5216-	if ((error = sys_mmap(tl, &cup, &rep->rep_retval)) != 0)
5217+	if ((error = sys_mmap(ttd, &cup, &rep->rep_retval)) != 0)
5218 		return mach_msg_error(args, error);
5219
5220 	*msglen = sizeof(*rep);
5221@@ -153,10 +151,10 @@ mach_vm_allocate(struct mach_trap_args *args)
5222 	mach_vm_allocate_request_t *req = args->smsg;
5223 	mach_vm_allocate_reply_t *rep = args->rmsg;
5224 	size_t *msglen = args->rsize;
5225-	struct lwp *tl = args->tl;
5226-	struct proc *tp = tl->l_proc;
5227+	struct thread *ttd = args->ttd;
5228+	struct proc *tp = ttd->td_proc;
5229 	struct sys_mmap_args cup;
5230-	vaddr_t addr;
5231+	vm_offset_t addr;
5232 	size_t size;
5233 	int error;
5234
5235@@ -195,16 +193,16 @@ mach_vm_allocate(struct mach_trap_args *args)
5236 	if (size == 0)
5237 		goto out;
5238
5239-	SCARG(&cup, addr) = (void *)addr;
5240-	SCARG(&cup, len) = size;
5241-	SCARG(&cup, prot) = PROT_READ | PROT_WRITE;
5242-	SCARG(&cup, flags) = MAP_ANON;
5243+	cup.addr) = (void *)addr;
5244+	cup.len) = size;
5245+	cup.prot) = PROT_READ | PROT_WRITE;
5246+	cup.flags) = MAP_ANON;
5247 	if ((req->req_flags & MACH_VM_FLAGS_ANYWHERE) == 0)
5248-		SCARG(&cup, flags) |= MAP_FIXED;
5249-	SCARG(&cup, fd) = -1;
5250-	SCARG(&cup, pos) = 0;
5251+		cup.flags) |= MAP_FIXED;
5252+	cup.fd) = -1;
5253+	cup.pos) = 0;
5254
5255-	if ((error = sys_mmap(tl, &cup, &rep->rep_address)) != 0)
5256+	if ((error = sys_mmap(ttd, &cup, &rep->rep_address)) != 0)
5257 		return mach_msg_error(args, error);
5258 #ifdef DEBUG_MACH_VM
5259 	printf("vm_allocate: success at %p\n", (void *)rep->rep_address);
5260@@ -227,7 +225,7 @@ mach_vm_deallocate(struct mach_trap_args *args)
5261 	mach_vm_deallocate_request_t *req = args->smsg;
5262 	mach_vm_deallocate_reply_t *rep = args->rmsg;
5263 	size_t *msglen = args->rsize;
5264-	struct lwp *tl = args->tl;
5265+	struct thread *ttd = args->ttd;
5266 	struct sys_munmap_args cup;
5267 	int error;
5268
5269@@ -236,10 +234,10 @@ mach_vm_deallocate(struct mach_trap_args *args)
5270 	    (void *)req->req_address, (long)req->req_size);
5271 #endif
5272
5273-	SCARG(&cup, addr) = (void *)req->req_address;
5274-	SCARG(&cup, len) = req->req_size;
5275+	cup.addr) = (void *)req->req_address;
5276+	cup.len) = req->req_size;
5277
5278-	if ((error = sys_munmap(tl, &cup, &rep->rep_retval)) != 0)
5279+	if ((error = sys_munmap(ttd, &cup, &rep->rep_retval)) != 0)
5280 		return mach_msg_error(args, error);
5281
5282 	*msglen = sizeof(*rep);
5283@@ -260,7 +258,7 @@ mach_vm_wire(struct mach_trap_args *args)
5284 	mach_vm_wire_request_t *req = args->smsg;
5285 	mach_vm_wire_reply_t *rep = args->rmsg;
5286 	size_t *msglen = args->rsize;
5287-	struct lwp *tl = args->tl;
5288+	struct thread *ttd = args->ttd;
5289 	register_t retval;
5290 	int error;
5291
5292@@ -281,20 +279,20 @@ mach_vm_wire(struct mach_trap_args *args)
5293 	if (req->req_access == 0) {
5294 		struct sys_munlock_args cup;
5295
5296-		SCARG(&cup, addr) = (void *)req->req_address;
5297-		SCARG(&cup, len) = req->req_size;
5298-		error = sys_munlock(tl, &cup, &retval);
5299+		cup.addr) = (void *)req->req_address;
5300+		cup.len) = req->req_size;
5301+		error = sys_munlock(ttd, &cup, &retval);
5302 	} else {
5303 		struct sys_mlock_args cup;
5304
5305-		SCARG(&cup, addr) = (void *)req->req_address;
5306-		SCARG(&cup, len) = req->req_size;
5307-		error = sys_mlock(tl, &cup, &retval);
5308+		cup.addr) = (void *)req->req_address;
5309+		cup.len) = req->req_size;
5310+		error = sys_mlock(ttd, &cup, &retval);
5311 	}
5312 	if (error != 0)
5313 		return mach_msg_error(args, error);
5314
5315-	if ((error = uvm_map_protect(&tl->l_proc->p_vmspace->vm_map,
5316+	if ((error = vm_map_protect(&ttd->td_proc->p_vmspace->vm_map,
5317 	    req->req_address, req->req_address + req->req_size,
5318 	    req->req_access, 0)) != 0)
5319 		return mach_msg_error(args, error);
5320@@ -313,16 +311,16 @@ mach_vm_protect(struct mach_trap_args *args)
5321 	mach_vm_protect_request_t *req = args->smsg;
5322 	mach_vm_protect_reply_t *rep = args->rmsg;
5323 	size_t *msglen = args->rsize;
5324-	struct lwp *tl = args->tl;
5325+	struct thread *ttd = args->ttd;
5326 	struct sys_mprotect_args cup;
5327 	register_t retval;
5328 	int error;
5329
5330-	SCARG(&cup, addr) = (void *)req->req_addr;
5331-	SCARG(&cup, len) = req->req_size;
5332-	SCARG(&cup, prot) = req->req_prot;
5333+	cup.addr) = (void *)req->req_addr;
5334+	cup.len) = req->req_size;
5335+	cup.prot) = req->req_prot;
5336
5337-	if ((error = sys_mprotect(tl, &cup, &retval)) != 0)
5338+	if ((error = sys_mprotect(ttd, &cup, &retval)) != 0)
5339 		return mach_msg_error(args, error);
5340
5341 	*msglen = sizeof(*rep);
5342@@ -333,7 +331,7 @@ mach_vm_protect(struct mach_trap_args *args)
5343 }
5344
5345 int
5346-mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_t *retval)
5347+mach_sys_map_fd(struct thread *td, const struct mach_sys_map_fd_args *uap)
5348 {
5349 	/* {
5350 		syscallarg(int) fd;
5351@@ -346,23 +344,23 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_
5352 	struct vnode *vp;
5353 	struct exec_vmcmd evc;
5354 	struct vm_map_entry *ret;
5355-	struct proc *p = l->l_proc;
5356+	struct proc *p = td->td_proc;
5357 	register_t dontcare;
5358 	struct sys_munmap_args cup;
5359 	void *va;
5360 	int error;
5361
5362-	if ((error = copyin(SCARG(uap, va), (void *)&va, sizeof(va))) != 0)
5363+	if ((error = copyin(uap->va, (void *)&va, sizeof(va))) != 0)
5364 		return error;
5365
5366-	if (SCARG(uap, findspace) == 0) {
5367+	if (uap->findspace == 0) {
5368 		/* Make some free space XXX probably not The Right Way */
5369-		SCARG(&cup, addr) = va;
5370-		SCARG(&cup, len) = SCARG(uap, size);
5371-		(void)sys_munmap(l, &cup, &dontcare);
5372+		cup.addr = va;
5373+		cup.len = uap->size;
5374+		(void)sys_munmap(td, &cup, &dontcare);
5375 	}
5376
5377-	fp = fd_getfile(SCARG(uap, fd));
5378+	fp = fd_getfile(uap->fd);
5379 	if (fp == NULL)
5380 		return EBADF;
5381
5382@@ -371,32 +369,32 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_
5383
5384 #ifdef DEBUG_MACH_VM
5385 	printf("vm_map_fd: addr = %p len = 0x%08lx\n",
5386-	    va, (long)SCARG(uap, size));
5387+		   va, (long)uap->size);
5388 #endif
5389 	memset(&evc, 0, sizeof(evc));
5390 	evc.ev_addr = (u_long)va;
5391-	evc.ev_len = SCARG(uap, size);
5392+	evc.ev_len = uap->size;
5393 	evc.ev_prot = VM_PROT_ALL;
5394-	evc.ev_flags = SCARG(uap, findspace) ? 0 : VMCMD_FIXED;
5395+	evc.ev_flags = uap->findspace ? 0 : VMCMD_FIXED;
5396 	evc.ev_proc = vmcmd_map_readvn;
5397-	evc.ev_offset = SCARG(uap, offset);
5398+	evc.ev_offset = uap->offset;
5399 	evc.ev_vp = vp;
5400
5401 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
5402-	if ((error = (*evc.ev_proc)(l, &evc)) != 0) {
5403+	if ((error = (*evc.ev_proc)(td, &evc)) != 0) {
5404 		VOP_UNLOCK(vp);
5405
5406 #ifdef DEBUG_MACH_VM
5407 		printf("mach_sys_map_fd: mapping at %p failed\n", va);
5408 #endif
5409
5410-		if (SCARG(uap, findspace) == 0)
5411+		if (uap->findspace == 0)
5412 			goto bad2;
5413
5414 		vm_map_lock(&p->p_vmspace->vm_map);
5415-		if ((ret = uvm_map_findspace(&p->p_vmspace->vm_map,
5416+		if ((ret = vm_map_findspace(&p->p_vmspace->vm_map,
5417 		    vm_map_min(&p->p_vmspace->vm_map), evc.ev_len,
5418-		    (vaddr_t *)&evc.ev_addr, NULL, 0, PAGE_SIZE, 0)) == NULL) {
5419+		    (vm_offset_t *)&evc.ev_addr, NULL, 0, PAGE_SIZE, 0)) == NULL) {
5420 			vm_map_unlock(&p->p_vmspace->vm_map);
5421 			goto bad2;
5422 		}
5423@@ -406,30 +404,30 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_
5424
5425 		memset(&evc, 0, sizeof(evc));
5426 		evc.ev_addr = (u_long)va;
5427-		evc.ev_len = SCARG(uap, size);
5428+		evc.ev_len = uap->size;
5429 		evc.ev_prot = VM_PROT_ALL;
5430 		evc.ev_flags = 0;
5431 		evc.ev_proc = vmcmd_map_readvn;
5432-		evc.ev_offset = SCARG(uap, offset);
5433+		evc.ev_offset = uap->offset;
5434 		evc.ev_vp = vp;
5435
5436 #ifdef DEBUG_MACH_VM
5437 		printf("mach_sys_map_fd: trying at %p\n", va);
5438 #endif
5439 		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
5440-		if ((error = (*evc.ev_proc)(l, &evc)) != 0)
5441+		if ((error = (*evc.ev_proc)(td, &evc)) != 0)
5442 			goto bad1;
5443 	}
5444
5445 	vput(vp);
5446-	fd_putfile(SCARG(uap, fd));
5447+	fd_putfile(uap->fd);
5448 #ifdef DEBUG_MACH_VM
5449 	printf("mach_sys_map_fd: mapping at %p\n", (void *)evc.ev_addr);
5450 #endif
5451
5452 	va = (mach_vm_offset_t *)evc.ev_addr;
5453
5454-	if ((error = copyout((void *)&va, SCARG(uap, va), sizeof(va))) != 0)
5455+	if ((error = copyout((void *)&va, uap->va, sizeof(va))) != 0)
5456 		return error;
5457
5458 	return 0;
5459@@ -438,7 +436,7 @@ bad1:
5460 	VOP_UNLOCK(vp);
5461 bad2:
5462 	vrele(vp);
5463-	fd_putfile(SCARG(uap, fd));
5464+	fd_putfile(uap->fd);
5465 #ifdef DEBUG_MACH_VM
5466 	printf("mach_sys_map_fd: mapping at %p failed, error = %d\n",
5467 	    (void *)evc.ev_addr, error);
5468@@ -452,17 +450,17 @@ mach_vm_inherit(struct mach_trap_args *args)
5469 	mach_vm_inherit_request_t *req = args->smsg;
5470 	mach_vm_inherit_reply_t *rep = args->rmsg;
5471 	size_t *msglen = args->rsize;
5472-	struct lwp *tl = args->tl;
5473+	struct thread *ttd = args->ttd;
5474 	struct sys_minherit_args cup;
5475 	register_t retval;
5476 	int error;
5477
5478-	SCARG(&cup, addr) = (void *)req->req_addr;
5479-	SCARG(&cup, len) = req->req_size;
5480+	cup.addr) = (void *)req->req_addr;
5481+	cup.len) = req->req_size;
5482 	/* Flags map well between Mach and NetBSD */
5483-	SCARG(&cup, inherit) = req->req_inh;
5484+	cup.inherit) = req->req_inh;
5485
5486-	if ((error = sys_minherit(tl, &cup, &retval)) != 0)
5487+	if ((error = sys_minherit(ttd, &cup, &retval)) != 0)
5488 		return mach_msg_error(args, error);
5489
5490 	*msglen = sizeof(*rep);
5491@@ -478,8 +476,8 @@ mach_make_memory_entry_64(struct mach_trap_args *args)
5492 	mach_make_memory_entry_64_request_t *req = args->smsg;
5493 	mach_make_memory_entry_64_reply_t *rep = args->rmsg;
5494 	size_t *msglen = args->rsize;
5495-	struct lwp *l = args->l;
5496-	struct lwp *tl = args->tl;
5497+	struct thread *td = args->td;
5498+	struct thread *ttd = args->ttd;
5499 	struct mach_port *mp;
5500 	struct mach_right *mr;
5501 	struct mach_memory_entry *mme;
5502@@ -491,13 +489,13 @@ mach_make_memory_entry_64(struct mach_trap_args *args)
5503 	mp->mp_flags |= (MACH_MP_INKERNEL | MACH_MP_DATA_ALLOCATED);
5504 	mp->mp_datatype = MACH_MP_MEMORY_ENTRY;
5505
5506-	mme = malloc(sizeof(*mme), M_EMULDATA, M_WAITOK);
5507-	mme->mme_proc = tl->l_proc;
5508+	mme = malloc(sizeof(*mme), M_MACH, M_WAITOK);
5509+	mme->mme_proc = td->td_proc;
5510 	mme->mme_offset = req->req_offset;
5511 	mme->mme_size = req->req_size;
5512 	mp->mp_data = mme;
5513
5514-	mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0);
5515+	mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0);
5516
5517 	*msglen = sizeof(*rep);
5518 	mach_set_header(rep, req, *msglen);
5519@@ -516,7 +514,7 @@ mach_vm_region(struct mach_trap_args *args)
5520 	mach_vm_region_request_t *req = args->smsg;
5521 	mach_vm_region_reply_t *rep = args->rmsg;
5522 	size_t *msglen = args->rsize;
5523-	struct lwp *tl = args->tl;
5524+	struct thread *ttd = args->ttd;
5525 	struct mach_vm_region_basic_info *rbi;
5526 	struct vm_map *map;
5527 	struct vm_map_entry *vme;
5528@@ -536,10 +534,10 @@ mach_vm_region(struct mach_trap_args *args)
5529 		return mach_msg_error(args, EINVAL);
5530 	*msglen = sizeof(*rep) + ((req->req_count - 9) * sizeof(int));
5531
5532-	map = &tl->l_proc->p_vmspace->vm_map;
5533+	map = &td->td_proc->p_vmspace->vm_map;
5534
5535 	vm_map_lock(map);
5536-	error = uvm_map_lookup_entry(map, req->req_addr, &vme);
5537+	error = vm_map_lookup_entry(map, req->req_addr, &vme);
5538 	vm_map_unlock(map);
5539
5540 	if (error == 0)
5541@@ -574,7 +572,7 @@ mach_vm_region_64(struct mach_trap_args *args)
5542 	mach_vm_region_64_request_t *req = args->smsg;
5543 	mach_vm_region_64_reply_t *rep = args->rmsg;
5544 	size_t *msglen = args->rsize;
5545-	struct lwp *tl = args->tl;
5546+	struct thread *ttd = args->ttd;
5547 	struct mach_vm_region_basic_info_64 *rbi;
5548 	struct vm_map *map;
5549 	struct vm_map_entry *vme;
5550@@ -594,10 +592,10 @@ mach_vm_region_64(struct mach_trap_args *args)
5551 		return mach_msg_error(args, EINVAL);
5552 	*msglen = sizeof(*rep) + ((req->req_count - 9) * sizeof(int));
5553
5554-	map = &tl->l_proc->p_vmspace->vm_map;
5555+	map = &td->td_proc->p_vmspace->vm_map;
5556
5557 	vm_map_lock(map);
5558-	error = uvm_map_lookup_entry(map, req->req_addr, &vme);
5559+	error = vm_map_lookup_entry(map, req->req_addr, &vme);
5560 	vm_map_unlock(map);
5561
5562 	if (error == 0)
5563@@ -631,22 +629,22 @@ mach_vm_msync(struct mach_trap_args *args)
5564 	mach_vm_msync_request_t *req = args->smsg;
5565 	mach_vm_msync_reply_t *rep = args->rmsg;
5566 	size_t *msglen = args->rsize;
5567-	struct lwp *tl = args->tl;
5568+	struct thread *ttd = args->ttd;
5569 	struct sys___msync13_args cup;
5570 	int error;
5571 	register_t dontcare;
5572
5573-	SCARG(&cup, addr) = (void *)req->req_addr;
5574-	SCARG(&cup, len) = req->req_size;
5575-	SCARG(&cup, flags) = 0;
5576+	cup.addr = (void *)req->req_addr;
5577+	cup.len = req->req_size;
5578+	cup.flags = 0;
5579 	if (req->req_flags & MACH_VM_SYNC_ASYNCHRONOUS)
5580-		SCARG(&cup, flags) |= MS_ASYNC;
5581+		cup.flags |= MS_ASYNC;
5582 	if (req->req_flags & MACH_VM_SYNC_SYNCHRONOUS)
5583-		SCARG(&cup, flags) |= MS_SYNC;
5584+		cup.flags |= MS_SYNC;
5585 	if (req->req_flags & MACH_VM_SYNC_INVALIDATE)
5586-		SCARG(&cup, flags) |= MS_INVALIDATE;
5587+		cup.flags |= MS_INVALIDATE;
5588
5589-	error = sys___msync13(tl, &cup, &dontcare);
5590+	error = sys___msync13(ttd, &cup, &dontcare);
5591
5592 	*msglen = sizeof(*rep);
5593 	mach_set_header(rep, req, *msglen);
5594@@ -719,17 +717,17 @@ mach_vm_read(struct mach_trap_args *args)
5595 	mach_vm_read_request_t *req = args->smsg;
5596 	mach_vm_read_reply_t *rep = args->rmsg;
5597 	size_t *msglen = args->rsize;
5598-	struct lwp *l = args->l;
5599-	struct lwp *tl = args->tl;
5600+	struct thread *td = args->td;
5601+	struct thread *ttd = args->ttd;
5602 	char *tbuf;
5603 	void *addr;
5604-	vaddr_t va;
5605+	vm_offset_t va;
5606 	size_t size;
5607 	int error;
5608
5609 	size = req->req_size;
5610-	va = vm_map_min(&l->l_proc->p_vmspace->vm_map);
5611-	if ((error = uvm_map(&l->l_proc->p_vmspace->vm_map, &va,
5612+	va = vm_map_min(&td->td_proc->p_vmspace->vm_map);
5613+	if ((error = vm_map(&td->td_proc->p_vmspace->vm_map, &va,
5614 	    round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0,
5615 	    UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_ALL,
5616 	    UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_COPYONW))) != 0) {
5617@@ -742,10 +740,10 @@ mach_vm_read(struct mach_trap_args *args)
5618 	 * This is reasonable for small chunk of data, but we should
5619 	 * remap COW for areas bigger than a page.
5620 	 */
5621-	tbuf = malloc(size, M_EMULDATA, M_WAITOK);
5622+	tbuf = malloc(size, M_MACH, M_WAITOK);
5623
5624 	addr = (void *)req->req_addr;
5625-	if ((error = copyin_proc(tl->l_proc, addr, tbuf, size)) != 0) {
5626+	if ((error = copyin_proc(td->td_proc, addr, tbuf, size)) != 0) {
5627 		printf("copyin_proc error = %d, addr = %p, size = %x\n", error, addr, size);
5628 		free(tbuf, M_WAITOK);
5629 		return mach_msg_error(args, EFAULT);
5630@@ -779,7 +777,7 @@ mach_vm_write(struct mach_trap_args *args)
5631 	mach_vm_write_request_t *req = args->smsg;
5632 	mach_vm_write_reply_t *rep = args->rmsg;
5633 	size_t *msglen = args->rsize;
5634-	struct lwp *tl = args->tl;
5635+	struct thread *ttd = args->ttd;
5636 	size_t size;
5637 	void *addr;
5638 	char *tbuf;
5639@@ -796,7 +794,7 @@ mach_vm_write(struct mach_trap_args *args)
5640 	 * remap COW for areas bigger than a page.
5641 	 */
5642 	size = req->req_data.size;
5643-	tbuf = malloc(size, M_EMULDATA, M_WAITOK);
5644+	tbuf = malloc(size, M_MACH, M_WAITOK);
5645
5646 	if ((error = copyin(req->req_data.address, tbuf, size)) != 0) {
5647 		printf("copyin error = %d\n", error);
5648@@ -805,7 +803,7 @@ mach_vm_write(struct mach_trap_args *args)
5649 	}
5650
5651 	addr = (void *)req->req_addr;
5652-	if ((error = copyout_proc(tl->l_proc, tbuf, addr, size)) != 0) {
5653+	if ((error = copyout_proc(td->td_proc, tbuf, addr, size)) != 0) {
5654 		printf("copyout_proc error = %d\n", error);
5655 		free(tbuf, M_WAITOK);
5656 		return mach_msg_error(args, EFAULT);
5657@@ -832,7 +830,7 @@ mach_vm_machine_attribute(struct mach_trap_args *args)
5658 	mach_vm_machine_attribute_request_t *req = args->smsg;
5659 	mach_vm_machine_attribute_reply_t *rep = args->rmsg;
5660 	size_t *msglen = args->rsize;
5661-	struct lwp *tl = args->tl;
5662+	struct thread *ttd = args->ttd;
5663 	int error = 0;
5664 	int attribute, value;
5665
5666@@ -846,7 +844,7 @@ mach_vm_machine_attribute(struct mach_trap_args *args)
5667 		case MACH_MATTR_VAL_DCACHE_FLUSH:
5668 		case MACH_MATTR_VAL_ICACHE_FLUSH:
5669 		case MACH_MATTR_VAL_CACHE_SYNC:
5670-			error = mach_vm_machine_attribute_machdep(tl,
5671+			error = mach_vm_machine_attribute_machdep(ttd,
5672 			    req->req_addr, req->req_size, &value);
5673 			break;
5674 		default:
5675diff --git a/sys/compat/mach/mach_vm.h b/sys/compat/mach/mach_vm.h
5676index 0c887d9..8f277f7 100644
5677--- a/sys/compat/mach/mach_vm.h
5678+++ b/sys/compat/mach/mach_vm.h
5679@@ -1,4 +1,4 @@
5680-/*	$NetBSD: mach_vm.h,v 1.30 2008/04/28 20:23:45 martin Exp $ */
5681+/*	$FreeBSD$ */
5682
5683 /*-
5684  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
5685@@ -381,11 +381,11 @@ typedef struct {
5686
5687 struct mach_memory_entry {
5688 	struct proc *mme_proc;
5689-	vaddr_t	mme_offset;
5690+	vm_offset_t	mme_offset;
5691 	size_t mme_size;
5692 };
5693
5694 /* These are machine dependent functions */
5695-int mach_vm_machine_attribute_machdep(struct lwp *, vaddr_t, size_t, int *);
5696+int mach_vm_machine_attribute_machdep(struct td *, vm_offset_t, size_t, int *);
5697
5698 #endif /* _MACH_VM_H_ */
5699diff --git a/sys/compat/mach/makemachservices.sh b/sys/compat/mach/makemachservices.sh
5700index 34c2be6..005eace 100755
5701--- a/sys/compat/mach/makemachservices.sh
5702+++ b/sys/compat/mach/makemachservices.sh
5703@@ -1,5 +1,5 @@
5704 #!/bin/sh
5705-#	$NetBSD: makemachservices.sh,v 1.8 2008/05/04 00:43:55 martin Exp $
5706+#	$FreeBSD$
5707 #
5708 # Copyright (c) 2003 The NetBSD Foundation, Inc.
5709 # All rights reserved.
5710@@ -47,17 +47,17 @@ BEGIN{
5711 	headers = "'$headers'";
5712 	names = "'$names'";
5713
5714-	printf("/* \$NetBSD\$ *\/\n\n") > table;
5715+	printf("/* \$FreeBSD\$ *\/\n\n") > table;
5716 	printf("/*\n * Mach services table.\n *\n") > table;
5717 	printf(" * DO NOT EDIT -- this file is automatically generated.\n") > \
5718 	    table;
5719
5720-	printf("/* \$NetBSD\$ *\/\n\n") > headers;
5721+	printf("/* \$FreeBSD\$ *\/\n\n") > headers;
5722 	printf("/*\n * Mach services prototypes.\n *\n") > headers;
5723 	printf(" * DO NOT EDIT -- this file is automatically generated.\n") > \
5724 	    headers;
5725
5726-	printf("/* \$NetBSD\$ *\/\n\n") > names;
5727+	printf("/* \$FreeBSD\$ *\/\n\n") > names;
5728 	printf("/*\n * Mach services names. This file is not built\n") > names;
5729 	printf(" * by the kernel, it is included by kdump sources.\n *\n") > \
5730 	    names;
5731@@ -69,18 +69,18 @@ BEGIN{
5732 	gsub(/\$.*$/, "", $0);
5733 	sub(/ $/, "");
5734 	printf(" * created from %s\n */\n\n", $0) > table;
5735-	printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \
5736-	    "\"\$NetBSD\$\");\n\n") > table;
5737+	printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \
5738+	    "\"\$FreeBSD\$\");\n\n") > table;
5739
5740 	printf(" * created from %s\n */\n\n", $0) > headers;
5741-	printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \
5742-	    "\"\$NetBSD\$\");\n\n") > headers;
5743+	printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \
5744+	    "\"\$FreeBSD\$\");\n\n") > headers;
5745 	printf("#include <compat/mach/mach_types.h>\n") > headers;
5746 	printf("#include <compat/mach/mach_message.h>\n") > headers;
5747
5748 	printf(" * created from %s\n */\n\n", $0) > names;
5749-	printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \
5750-	    "\"\$NetBSD\$\");\n\n") > names;
5751+	printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \
5752+	    "\"\$FreeBSD\$\");\n\n") > names;
5753 	printf("struct mach_service_name {\n") > names;
5754 	printf("	int srv_id;\n") > names;
5755 	printf("	const char *srv_name;\n") > names;
5756diff --git a/sys/compat/mach/syscalls.c b/sys/compat/mach/syscalls.c
5757new file mode 100644
5758index 0000000..70639e0
5759--- /dev/null
5760+++ b/sys/compat/mach/syscalls.c
5761@@ -0,0 +1,5 @@
5762+/*
5763+ * System call names.
5764+ *
5765+ * DO NOT EDIT-- this file is automatically generated.
5766+ * $FreeBSD$
5767diff --git a/sys/compat/mach/syscalls.conf b/sys/compat/mach/syscalls.conf
5768index c416d08..86dfb98f 100644
5769--- a/sys/compat/mach/syscalls.conf
5770+++ b/sys/compat/mach/syscalls.conf
5771@@ -1,14 +1,18 @@
5772-#	$NetBSD: syscalls.conf,v 1.2 2007/12/10 22:32:15 dsl Exp $
5773+#	$FreeBSD$
5774
5775 sysnames="mach_syscalls.c"
5776-sysnumhdr="mach_syscall.h"
5777+sysproto="mach_proto.h"
5778+sysproto_h=_MACH_SYSPROTO_H_
5779+syshdr="mach_syscall.h"
5780 syssw="mach_sysent.c"
5781-sysarghdr="mach_syscallargs.h"
5782+sysmk="/dev/null"
5783+syscallprefix="MACH_SYS_"
5784 compatopts=""
5785 libcompatopts=""
5786
5787 switchname="mach_sysent"
5788 namesname="mach_syscallnames"
5789+systracte="mach_systrace_args.c"
5790 constprefix="MACH_SYS_"
5791 nsysent=128
5792 maxsysargs=9
5793diff --git a/sys/compat/mach/syscalls.master b/sys/compat/mach/syscalls.master
5794index 001a094..9a0433e 100644
5795--- a/sys/compat/mach/syscalls.master
5796+++ b/sys/compat/mach/syscalls.master
5797@@ -1,4 +1,4 @@
5798-	$NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp $
5799+	$FreeBSD$
5800
5801 ;	@(#)syscalls.master	8.1 (Berkeley) 7/19/93
5802
5803@@ -34,7 +34,6 @@
5804
5805 #if defined(_KERNEL_OPT)
5806 #include "opt_ntp.h"
5807-#include "opt_sysv.h"
5808 #endif
5809
5810 #include <sys/param.h>
5811@@ -42,54 +41,54 @@
5812 #include <sys/signal.h>
5813 #include <sys/mount.h>
5814 #include <sys/poll.h>
5815-#include <sys/syscallargs.h>
5816+#include <sys/sysent.h>
5817+#include <sys/sysproto.h>
5818
5819 #include <compat/mach/mach_types.h>
5820 #include <compat/mach/mach_message.h>
5821 #include <compat/mach/mach_clock.h>
5822-#include <compat/mach/mach_syscallargs.h>
5823-%%
5824+#include <compat/mach/mach_proto.h>
5825+;;
5826
5827-0	UNIMPL
5828-1	UNIMPL
5829-2	UNIMPL
5830-3	UNIMPL
5831-4	UNIMPL
5832-5	UNIMPL
5833-6	UNIMPL
5834-7	UNIMPL
5835-8	UNIMPL
5836-9	UNIMPL
5837-10	UNIMPL
5838-11	UNIMPL
5839-12	UNIMPL
5840-13	UNIMPL
5841-14	UNIMPL
5842-15	UNIMPL
5843-16	UNIMPL
5844-17	UNIMPL
5845-18	UNIMPL
5846-19	UNIMPL
5847-20	UNIMPL
5848-21	UNIMPL
5849-22	UNIMPL
5850-23	UNIMPL
5851-24	UNIMPL
5852-25	UNIMPL
5853-26	STD		{ mach_port_name_t|mach_sys||reply_port(void); }
5854-27	STD		{ mach_port_name_t|mach_sys||thread_self_trap(void); }
5855-28	STD		{ mach_port_name_t|mach_sys||task_self_trap(void); }
5856-29	STD		{ mach_port_name_t|mach_sys||host_self_trap(void); }
5857-30	UNIMPL
5858-31	STD		{ mach_msg_return_t|mach_sys||msg_trap( \
5859-			    mach_msg_header_t	*msg, \
5860+0  AUE_NULL	UNIMPL	nosys
5861+1  AUE_NULL	UNIMPL	nosys
5862+2  AUE_NULL	UNIMPL	nosys
5863+3  AUE_NULL	UNIMPL	nosys
5864+4  AUE_NULL	UNIMPL	nosys
5865+5  AUE_NULL	UNIMPL	nosys
5866+6  AUE_NULL	UNIMPL	nosys
5867+7  AUE_NULL	UNIMPL	nosys
5868+8  AUE_NULL	UNIMPL	nosys
5869+9  AUE_NULL	UNIMPL	nosys
5870+10  AUE_NULL	UNIMPL	nosys
5871+11  AUE_NULL	UNIMPL	nosys
5872+12  AUE_NULL	UNIMPL	nosys
5873+13  AUE_NULL	UNIMPL	nosys
5874+14  AUE_NULL	UNIMPL	nosys
5875+15  AUE_NULL	UNIMPL	nosys
5876+16  AUE_NULL	UNIMPL	nosys
5877+17  AUE_NULL	UNIMPL	nosys
5878+18  AUE_NULL	UNIMPL	nosys
5879+19  AUE_NULL	UNIMPL	nosys
5880+20  AUE_NULL	UNIMPL	nosys
5881+21  AUE_NULL	UNIMPL	nosys
5882+22  AUE_NULL	UNIMPL	nosys
5883+23  AUE_NULL	UNIMPL	nosys
5884+24  AUE_NULL	UNIMPL	nosys
5885+25  AUE_NULL	UNIMPL	nosys
5886+26	AUE_NULL	STD		{ int mach_reply_port(void); }
5887+27	AUE_NULL	STD		{ int mach_thread_self_trap(void); }
5888+28	AUE_NULL	STD		{ int mach_task_self_trap(void); }
5889+29	AUE_NULL	STD		{ int mach_host_self_trap(void); }
5890+30  AUE_NULL	UNIMPL	nosys
5891+31	AUE_NULL	STD		{ int mach_msg_trap(mach_msg_header_t	*msg, \
5892 			    mach_msg_option_t	option, \
5893 			    mach_msg_size_t	send_size, \
5894 			    mach_msg_size_t	rcv_size, \
5895 			    mach_port_name_t	rcv_name, \
5896 			    mach_msg_timeout_t	timeout, \
5897 			    mach_port_name_t	notify); }
5898-32	STD		{ mach_kern_return_t|mach_sys||msg_overwrite_trap( \
5899+32	AUE_NULL	STD		{ int mach_msg_overwrite_trap( \
5900 			    mach_msg_header_t	*msg, \
5901 			    mach_msg_option_t	option, \
5902 			    mach_msg_size_t	send_size, \
5903@@ -99,143 +98,129 @@
5904 			    mach_port_name_t	notify, \
5905 			    mach_msg_header_t	*rcv_msg, \
5906 			    mach_msg_size_t	scatter_list_size); }
5907-33	STD		{ mach_kern_return_t|\
5908-			    mach_sys||semaphore_signal_trap( \
5909-			    mach_port_name_t signal_name); }
5910-34	STD		{ mach_kern_return_t|\
5911-			    mach_sys||semaphore_signal_all_trap( \
5912-			    mach_port_name_t signal_name); }
5913-35	STD		{ mach_kern_return_t|\
5914-			    mach_sys||semaphore_signal_thread_trap( \
5915-			    mach_port_name_t signal_name, \
5916-			    mach_port_name_t thread); }
5917-36	STD		{ mach_kern_return_t|\
5918-			    mach_sys||semaphore_wait_trap( \
5919-			    mach_port_name_t wait_name); }
5920-37	STD		{ mach_kern_return_t|\
5921-			    mach_sys||semaphore_wait_signal_trap( \
5922-			    mach_port_name_t wait_name, \
5923-			    mach_port_name_t signal_name); }
5924-38	STD		{ mach_kern_return_t|\
5925-			    mach_sys||semaphore_timedwait_trap( \
5926+33	AUE_NULL	STD		{ int mach_semaphore_signal_trap( \
5927+			  mach_port_name_t signal_name); }
5928+34	AUE_NULL	STD		{ int mach_semaphore_signal_all_trap( \
5929+			      mach_port_name_t signal_name); }
5930+35	AUE_NULL	STD		{ int mach_semaphore_signal_thread_trap( \
5931+			      	mach_port_name_t signal_name, \
5932+			    	mach_port_name_t thread); }
5933+36	AUE_NULL	STD		{ int mach_semaphore_wait_trap( \
5934+			      mach_port_name_t wait_name); }
5935+37	AUE_NULL	STD		{ int mach_semaphore_wait_signal_trap( \
5936+			      mach_port_name_t wait_name, \
5937+			      mach_port_name_t signal_name); }
5938+38	AUE_NULL	STD		{ int mach_semaphore_timedwait_trap( \
5939 			    mach_port_name_t wait_name, \
5940 			    unsigned int sec, \
5941 			    mach_clock_res_t nsec); }
5942-39	STD		{ mach_kern_return_t|\
5943-			    mach_sys||semaphore_timedwait_signal_trap( \
5944+39	AUE_NULL	STD		{ int mach_semaphore_timedwait_signal_trap( \
5945 			    mach_port_name_t wait_name, \
5946 			    mach_port_name_t signal_name, \
5947 			    unsigned int sec, \
5948 			    mach_clock_res_t nsec); }
5949-40	UNIMPL
5950-41	STD		{ mach_kern_return_t|mach_sys||init_process(void); }
5951-42	UNIMPL
5952-43	STD		{ mach_kern_return_t|mach_sys||map_fd(int fd, \
5953+40  AUE_NULL	UNIMPL	nosys
5954+41	AUE_NULL	STD		{ int mach_init_process(void); }
5955+42  AUE_NULL	UNIMPL	nosys
5956+43	AUE_NULL	STD		{ int mach_map_fd(int fd, \
5957 			    mach_vm_offset_t offset, mach_vm_offset_t *va, \
5958 			    mach_boolean_t findspace, mach_vm_size_t size); }
5959-44	UNIMPL
5960-45	STD		{ mach_kern_return_t|mach_sys||task_for_pid( \
5961+44  AUE_NULL	UNIMPL	nosys
5962+45	AUE_NULL	STD		{ int mach_task_for_pid( \
5963 			    mach_port_t target_tport, int pid, \
5964 			    mach_port_t *t); }
5965-46	STD		{ mach_kern_return_t|mach_sys||pid_for_task( \
5966+46	AUE_NULL	STD		{ int mach_pid_for_task( \
5967 			    mach_port_t t, int *x); }
5968-47	UNIMPL
5969-48	STD		{ mach_kern_return_t|mach_sys||macx_swapon( \
5970+47  AUE_NULL	UNIMPL	nosys
5971+48	AUE_NULL	STD		{ int mach_macx_swapon( \
5972 			    char *name, int flags, int size, int priority); }
5973-49	STD		{ mach_kern_return_t|mach_sys||macx_swapoff( \
5974+49	AUE_NULL	STD		{ int mach_macx_swapoff( \
5975 			    char *name, int flags); }
5976-50	UNIMPL
5977-51	STD		{ mach_kern_return_t|mach_sys||macx_triggers( \
5978-			    int hi_water, int low_water, int flags, \
5979-			    mach_port_t alert_port); }
5980-52	UNIMPL
5981-53	UNIMPL
5982-54	UNIMPL
5983-55	UNIMPL
5984-56	UNIMPL
5985-57	UNIMPL
5986-58	UNIMPL
5987-59	STD		{ mach_kern_return_t|mach_sys||swtch_pri( \
5988-			    int pri); }
5989-60	STD		{ mach_kern_return_t|mach_sys||swtch(void); }
5990-61	STD		{ mach_kern_return_t|mach_sys||syscall_thread_switch( \
5991+50  AUE_NULL	UNIMPL	nosys
5992+51	AUE_NULL	STD		{ int mach_macx_triggers(int hi_water, int low_water, \
5993+			  	  int flags, mach_port_t alert_port); }
5994+52  AUE_NULL	UNIMPL	nosys
5995+53  AUE_NULL	UNIMPL	nosys
5996+54  AUE_NULL	UNIMPL	nosys
5997+55  AUE_NULL	UNIMPL	nosys
5998+56  AUE_NULL	UNIMPL	nosys
5999+57  AUE_NULL	UNIMPL	nosys
6000+58  AUE_NULL	UNIMPL	nosys
6001+59	AUE_NULL	STD		{ int mach_swtch_pri(int pri); }
6002+60	AUE_NULL	STD		{ int mach_swtch(void); }
6003+61	AUE_NULL	STD		{ int mach_syscall_thread_switch( \
6004 			    mach_port_name_t thread_name, \
6005 			    int option, \
6006 			    mach_msg_timeout_t option_time); }
6007-62	STD		{ mach_kern_return_t|mach_sys||clock_sleep_trap( \
6008+62	AUE_NULL	STD		{ int mach_clock_sleep_trap( \
6009 			    mach_port_name_t clock_name, \
6010 			    mach_sleep_type_t sleep_type, \
6011 			    int sleep_sec, int sleep_nsec, \
6012 			    mach_timespec_t *wakeup_time); }
6013-63	UNIMPL
6014-64	UNIMPL
6015-65	UNIMPL
6016-66	UNIMPL
6017-67	UNIMPL
6018-68	UNIMPL
6019-69	UNIMPL
6020-70	UNIMPL
6021-71	UNIMPL
6022-72	UNIMPL
6023-73	UNIMPL
6024-74	UNIMPL
6025-75	UNIMPL
6026-76	UNIMPL
6027-77	UNIMPL
6028-78	UNIMPL
6029-79	UNIMPL
6030-80	UNIMPL
6031-81	UNIMPL
6032-82	UNIMPL
6033-83	UNIMPL
6034-84	UNIMPL
6035-85	UNIMPL
6036-86	UNIMPL
6037-87	UNIMPL
6038-88	UNIMPL
6039-89	STD		{ mach_kern_return_t|mach_sys||timebase_info( \
6040-			    mach_timebase_info_t info); }
6041-90	STD		{ mach_kern_return_t|mach_sys||wait_until( \
6042-			    u_int64_t deadline); }
6043-91	STD		{ mach_port_name_t|mach_sys||timer_create(void); }
6044-92	STD		{ mach_kern_return_t|mach_sys||timer_destroy( \
6045-			    mach_port_name_t name); }
6046-93	STD		{ mach_kern_return_t|mach_sys||timer_arm( \
6047-			    mach_port_name_t name, \
6048-			    mach_absolute_time_t expire_time); }
6049-94	STD		{ mach_kern_return_t|mach_sys||timer_cancel( \
6050-			    mach_port_name_t name, \
6051-			    mach_absolute_time_t *result_time); }
6052-95	STD		{ mach_kern_return_t|mach_sys||get_time_base_info(void); }
6053-96	UNIMPL
6054-97	UNIMPL
6055-98	UNIMPL
6056-99	UNIMPL
6057-100	UNIMPL
6058-101	UNIMPL
6059-102	UNIMPL
6060-103	UNIMPL
6061-104	UNIMPL
6062-105	UNIMPL
6063-106	UNIMPL
6064-107	UNIMPL
6065-108	UNIMPL
6066-109	UNIMPL
6067-110	UNIMPL
6068-111	UNIMPL
6069-112	UNIMPL
6070-113	UNIMPL
6071-114	UNIMPL
6072-115	UNIMPL
6073-116	UNIMPL
6074-117	UNIMPL
6075-118	UNIMPL
6076-119	UNIMPL
6077-120	UNIMPL
6078-121	UNIMPL
6079-122	UNIMPL
6080-123	UNIMPL
6081-124	UNIMPL
6082-125	UNIMPL
6083-126	UNIMPL
6084-127	UNIMPL
6085+63  AUE_NULL	UNIMPL	nosys
6086+64  AUE_NULL	UNIMPL	nosys
6087+65  AUE_NULL	UNIMPL	nosys
6088+66  AUE_NULL	UNIMPL	nosys
6089+67  AUE_NULL	UNIMPL	nosys
6090+68  AUE_NULL	UNIMPL	nosys
6091+69  AUE_NULL	UNIMPL	nosys
6092+70  AUE_NULL	UNIMPL	nosys
6093+71  AUE_NULL	UNIMPL	nosys
6094+72  AUE_NULL	UNIMPL	nosys
6095+73  AUE_NULL	UNIMPL	nosys
6096+74  AUE_NULL	UNIMPL	nosys
6097+75  AUE_NULL	UNIMPL	nosys
6098+76  AUE_NULL	UNIMPL	nosys
6099+77  AUE_NULL	UNIMPL	nosys
6100+78  AUE_NULL	UNIMPL	nosys
6101+79  AUE_NULL	UNIMPL	nosys
6102+80  AUE_NULL	UNIMPL	nosys
6103+81  AUE_NULL	UNIMPL	nosys
6104+82  AUE_NULL	UNIMPL	nosys
6105+83  AUE_NULL	UNIMPL	nosys
6106+84  AUE_NULL	UNIMPL	nosys
6107+85  AUE_NULL	UNIMPL	nosys
6108+86  AUE_NULL	UNIMPL	nosys
6109+87  AUE_NULL	UNIMPL	nosys
6110+88  AUE_NULL	UNIMPL	nosys
6111+89	AUE_NULL	STD		{ int mach_timebase_info(mach_timebase_info_t info); }
6112+90	AUE_NULL	STD		{ int mach_wait_until(uint64_t deadline); }
6113+91	AUE_NULL	STD		{ int mach_timer_create(void); }
6114+92	AUE_NULL	STD		{ int mach_timer_destroy(mach_port_name_t name); }
6115+93	AUE_NULL	STD		{ int mach_timer_arm(mach_port_name_t name, \
6116+			      			mach_absolute_time_t expire_time); }
6117+94	AUE_NULL	STD		{ int mach_timer_cancel(mach_port_name_t name, \
6118+			    		mach_absolute_time_t *result_time); }
6119+95	AUE_NULL	STD		{ int mach_get_time_base_info(void); }
6120+96  AUE_NULL	UNIMPL	nosys
6121+97  AUE_NULL	UNIMPL	nosys
6122+98  AUE_NULL	UNIMPL	nosys
6123+99  AUE_NULL	UNIMPL	nosys
6124+100  AUE_NULL	UNIMPL	nosys
6125+101  AUE_NULL	UNIMPL	nosys
6126+102  AUE_NULL	UNIMPL	nosys
6127+103  AUE_NULL	UNIMPL	nosys
6128+104  AUE_NULL	UNIMPL	nosys
6129+105  AUE_NULL	UNIMPL	nosys
6130+106  AUE_NULL	UNIMPL	nosys
6131+107  AUE_NULL	UNIMPL	nosys
6132+108  AUE_NULL	UNIMPL	nosys
6133+109  AUE_NULL	UNIMPL	nosys
6134+110  AUE_NULL	UNIMPL	nosys
6135+111  AUE_NULL	UNIMPL	nosys
6136+112  AUE_NULL	UNIMPL	nosys
6137+113  AUE_NULL	UNIMPL	nosys
6138+114  AUE_NULL	UNIMPL	nosys
6139+115  AUE_NULL	UNIMPL	nosys
6140+116  AUE_NULL	UNIMPL	nosys
6141+117  AUE_NULL	UNIMPL	nosys
6142+118  AUE_NULL	UNIMPL	nosys
6143+119  AUE_NULL	UNIMPL	nosys
6144+120  AUE_NULL	UNIMPL	nosys
6145+121  AUE_NULL	UNIMPL	nosys
6146+122  AUE_NULL	UNIMPL	nosys
6147+123  AUE_NULL	UNIMPL	nosys
6148+124  AUE_NULL	UNIMPL	nosys
6149+125  AUE_NULL	UNIMPL	nosys
6150+126  AUE_NULL	UNIMPL	nosys
6151+127  AUE_NULL	UNIMPL	nosys
6152diff --git a/sys/compat/mach/systrace_args.c b/sys/compat/mach/systrace_args.c
6153new file mode 100644
6154index 0000000..29b05e5
6155--- /dev/null
6156+++ b/sys/compat/mach/systrace_args.c
6157@@ -0,0 +1,804 @@
6158+/*
6159+ * System call argument to DTrace register array converstion.
6160+ *
6161+ * DO NOT EDIT-- this file is automatically generated.
6162+ * $FreeBSD$
6163+ * This file is part of the DTrace syscall provider.
6164+ */
6165+
6166+static void
6167+systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
6168+{
6169+	int64_t *iarg  = (int64_t *) uarg;
6170+	switch (sysnum) {
6171+#if defined(_KERNEL_OPT)
6172+#endif
6173+	/* mach_reply_port */
6174+	case 26: {
6175+		*n_args = 0;
6176+		break;
6177+	}
6178+	/* mach_thread_self_trap */
6179+	case 27: {
6180+		*n_args = 0;
6181+		break;
6182+	}
6183+	/* mach_task_self_trap */
6184+	case 28: {
6185+		*n_args = 0;
6186+		break;
6187+	}
6188+	/* mach_host_self_trap */
6189+	case 29: {
6190+		*n_args = 0;
6191+		break;
6192+	}
6193+	/* mach_msg_trap */
6194+	case 31: {
6195+		struct mach_msg_trap_args *p = params;
6196+		uarg[0] = (intptr_t) p->msg; /* mach_msg_header_t * */
6197+		iarg[1] = p->option; /* mach_msg_option_t */
6198+		iarg[2] = p->send_size; /* mach_msg_size_t */
6199+		iarg[3] = p->rcv_size; /* mach_msg_size_t */
6200+		iarg[4] = p->rcv_name; /* mach_port_name_t */
6201+		iarg[5] = p->timeout; /* mach_msg_timeout_t */
6202+		iarg[6] = p->notify; /* mach_port_name_t */
6203+		*n_args = 7;
6204+		break;
6205+	}
6206+	/* mach_msg_overwrite_trap */
6207+	case 32: {
6208+		struct mach_msg_overwrite_trap_args *p = params;
6209+		uarg[0] = (intptr_t) p->msg; /* mach_msg_header_t * */
6210+		iarg[1] = p->option; /* mach_msg_option_t */
6211+		iarg[2] = p->send_size; /* mach_msg_size_t */
6212+		iarg[3] = p->rcv_size; /* mach_msg_size_t */
6213+		iarg[4] = p->rcv_name; /* mach_port_name_t */
6214+		iarg[5] = p->timeout; /* mach_msg_timeout_t */
6215+		iarg[6] = p->notify; /* mach_port_name_t */
6216+		uarg[7] = (intptr_t) p->rcv_msg; /* mach_msg_header_t * */
6217+		iarg[8] = p->scatter_list_size; /* mach_msg_size_t */
6218+		*n_args = 9;
6219+		break;
6220+	}
6221+	/* mach_semaphore_signal_trap */
6222+	case 33: {
6223+		struct mach_semaphore_signal_trap_args *p = params;
6224+		iarg[0] = p->signal_name; /* mach_port_name_t */
6225+		*n_args = 1;
6226+		break;
6227+	}
6228+	/* mach_semaphore_signal_all_trap */
6229+	case 34: {
6230+		struct mach_semaphore_signal_all_trap_args *p = params;
6231+		iarg[0] = p->signal_name; /* mach_port_name_t */
6232+		*n_args = 1;
6233+		break;
6234+	}
6235+	/* mach_semaphore_signal_thread_trap */
6236+	case 35: {
6237+		struct mach_semaphore_signal_thread_trap_args *p = params;
6238+		iarg[0] = p->signal_name; /* mach_port_name_t */
6239+		iarg[1] = p->thread; /* mach_port_name_t */
6240+		*n_args = 2;
6241+		break;
6242+	}
6243+	/* mach_semaphore_wait_trap */
6244+	case 36: {
6245+		struct mach_semaphore_wait_trap_args *p = params;
6246+		iarg[0] = p->wait_name; /* mach_port_name_t */
6247+		*n_args = 1;
6248+		break;
6249+	}
6250+	/* mach_semaphore_wait_signal_trap */
6251+	case 37: {
6252+		struct mach_semaphore_wait_signal_trap_args *p = params;
6253+		iarg[0] = p->wait_name; /* mach_port_name_t */
6254+		iarg[1] = p->signal_name; /* mach_port_name_t */
6255+		*n_args = 2;
6256+		break;
6257+	}
6258+	/* mach_semaphore_timedwait_trap */
6259+	case 38: {
6260+		struct mach_semaphore_timedwait_trap_args *p = params;
6261+		iarg[0] = p->wait_name; /* mach_port_name_t */
6262+		uarg[1] = p->sec; /* unsigned int */
6263+		iarg[2] = p->nsec; /* mach_clock_res_t */
6264+		*n_args = 3;
6265+		break;
6266+	}
6267+	/* mach_semaphore_timedwait_signal_trap */
6268+	case 39: {
6269+		struct mach_semaphore_timedwait_signal_trap_args *p = params;
6270+		iarg[0] = p->wait_name; /* mach_port_name_t */
6271+		iarg[1] = p->signal_name; /* mach_port_name_t */
6272+		uarg[2] = p->sec; /* unsigned int */
6273+		iarg[3] = p->nsec; /* mach_clock_res_t */
6274+		*n_args = 4;
6275+		break;
6276+	}
6277+	/* mach_init_process */
6278+	case 41: {
6279+		*n_args = 0;
6280+		break;
6281+	}
6282+	/* mach_map_fd */
6283+	case 43: {
6284+		struct mach_map_fd_args *p = params;
6285+		iarg[0] = p->fd; /* int */
6286+		iarg[1] = p->offset; /* mach_vm_offset_t */
6287+		uarg[2] = (intptr_t) p->va; /* mach_vm_offset_t * */
6288+		iarg[3] = p->findspace; /* mach_boolean_t */
6289+		iarg[4] = p->size; /* mach_vm_size_t */
6290+		*n_args = 5;
6291+		break;
6292+	}
6293+	/* mach_task_for_pid */
6294+	case 45: {
6295+		struct mach_task_for_pid_args *p = params;
6296+		iarg[0] = p->target_tport; /* mach_port_t */
6297+		iarg[1] = p->pid; /* int */
6298+		uarg[2] = (intptr_t) p->t; /* mach_port_t * */
6299+		*n_args = 3;
6300+		break;
6301+	}
6302+	/* mach_pid_for_task */
6303+	case 46: {
6304+		struct mach_pid_for_task_args *p = params;
6305+		iarg[0] = p->t; /* mach_port_t */
6306+		uarg[1] = (intptr_t) p->x; /* int * */
6307+		*n_args = 2;
6308+		break;
6309+	}
6310+	/* mach_macx_swapon */
6311+	case 48: {
6312+		struct mach_macx_swapon_args *p = params;
6313+		uarg[0] = (intptr_t) p->name; /* char * */
6314+		iarg[1] = p->flags; /* int */
6315+		iarg[2] = p->size; /* int */
6316+		iarg[3] = p->priority; /* int */
6317+		*n_args = 4;
6318+		break;
6319+	}
6320+	/* mach_macx_swapoff */
6321+	case 49: {
6322+		struct mach_macx_swapoff_args *p = params;
6323+		uarg[0] = (intptr_t) p->name; /* char * */
6324+		iarg[1] = p->flags; /* int */
6325+		*n_args = 2;
6326+		break;
6327+	}
6328+	/* mach_macx_triggers */
6329+	case 51: {
6330+		struct mach_macx_triggers_args *p = params;
6331+		iarg[0] = p->hi_water; /* int */
6332+		iarg[1] = p->low_water; /* int */
6333+		iarg[2] = p->flags; /* int */
6334+		iarg[3] = p->alert_port; /* mach_port_t */
6335+		*n_args = 4;
6336+		break;
6337+	}
6338+	/* mach_swtch_pri */
6339+	case 59: {
6340+		struct mach_swtch_pri_args *p = params;
6341+		iarg[0] = p->pri; /* int */
6342+		*n_args = 1;
6343+		break;
6344+	}
6345+	/* mach_swtch */
6346+	case 60: {
6347+		*n_args = 0;
6348+		break;
6349+	}
6350+	/* mach_syscall_thread_switch */
6351+	case 61: {
6352+		struct mach_syscall_thread_switch_args *p = params;
6353+		iarg[0] = p->thread_name; /* mach_port_name_t */
6354+		iarg[1] = p->option; /* int */
6355+		iarg[2] = p->option_time; /* mach_msg_timeout_t */
6356+		*n_args = 3;
6357+		break;
6358+	}
6359+	/* mach_clock_sleep_trap */
6360+	case 62: {
6361+		struct mach_clock_sleep_trap_args *p = params;
6362+		iarg[0] = p->clock_name; /* mach_port_name_t */
6363+		iarg[1] = p->sleep_type; /* mach_sleep_type_t */
6364+		iarg[2] = p->sleep_sec; /* int */
6365+		iarg[3] = p->sleep_nsec; /* int */
6366+		uarg[4] = (intptr_t) p->wakeup_time; /* mach_timespec_t * */
6367+		*n_args = 5;
6368+		break;
6369+	}
6370+	/* mach_timebase_info */
6371+	case 89: {
6372+		struct mach_timebase_info_args *p = params;
6373+		iarg[0] = p->info; /* mach_timebase_info_t */
6374+		*n_args = 1;
6375+		break;
6376+	}
6377+	/* mach_wait_until */
6378+	case 90: {
6379+		struct mach_wait_until_args *p = params;
6380+		uarg[0] = p->deadline; /* uint64_t */
6381+		*n_args = 1;
6382+		break;
6383+	}
6384+	/* mach_timer_create */
6385+	case 91: {
6386+		*n_args = 0;
6387+		break;
6388+	}
6389+	/* mach_timer_destroy */
6390+	case 92: {
6391+		struct mach_timer_destroy_args *p = params;
6392+		iarg[0] = p->name; /* mach_port_name_t */
6393+		*n_args = 1;
6394+		break;
6395+	}
6396+	/* mach_timer_arm */
6397+	case 93: {
6398+		struct mach_timer_arm_args *p = params;
6399+		iarg[0] = p->name; /* mach_port_name_t */
6400+		iarg[1] = p->expire_time; /* mach_absolute_time_t */
6401+		*n_args = 2;
6402+		break;
6403+	}
6404+	/* mach_timer_cancel */
6405+	case 94: {
6406+		struct mach_timer_cancel_args *p = params;
6407+		iarg[0] = p->name; /* mach_port_name_t */
6408+		uarg[1] = (intptr_t) p->result_time; /* mach_absolute_time_t * */
6409+		*n_args = 2;
6410+		break;
6411+	}
6412+	/* mach_get_time_base_info */
6413+	case 95: {
6414+		*n_args = 0;
6415+		break;
6416+	}
6417+	default:
6418+		*n_args = 0;
6419+		break;
6420+	};
6421+}
6422+static void
6423+systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
6424+{
6425+	const char *p = NULL;
6426+	switch (sysnum) {
6427+#if defined(_KERNEL_OPT)
6428+#endif
6429+	/* mach_reply_port */
6430+	case 26:
6431+		break;
6432+	/* mach_thread_self_trap */
6433+	case 27:
6434+		break;
6435+	/* mach_task_self_trap */
6436+	case 28:
6437+		break;
6438+	/* mach_host_self_trap */
6439+	case 29:
6440+		break;
6441+	/* mach_msg_trap */
6442+	case 31:
6443+		switch(ndx) {
6444+		case 0:
6445+			p = "mach_msg_header_t *";
6446+			break;
6447+		case 1:
6448+			p = "mach_msg_option_t";
6449+			break;
6450+		case 2:
6451+			p = "mach_msg_size_t";
6452+			break;
6453+		case 3:
6454+			p = "mach_msg_size_t";
6455+			break;
6456+		case 4:
6457+			p = "mach_port_name_t";
6458+			break;
6459+		case 5:
6460+			p = "mach_msg_timeout_t";
6461+			break;
6462+		case 6:
6463+			p = "mach_port_name_t";
6464+			break;
6465+		default:
6466+			break;
6467+		};
6468+		break;
6469+	/* mach_msg_overwrite_trap */
6470+	case 32:
6471+		switch(ndx) {
6472+		case 0:
6473+			p = "mach_msg_header_t *";
6474+			break;
6475+		case 1:
6476+			p = "mach_msg_option_t";
6477+			break;
6478+		case 2:
6479+			p = "mach_msg_size_t";
6480+			break;
6481+		case 3:
6482+			p = "mach_msg_size_t";
6483+			break;
6484+		case 4:
6485+			p = "mach_port_name_t";
6486+			break;
6487+		case 5:
6488+			p = "mach_msg_timeout_t";
6489+			break;
6490+		case 6:
6491+			p = "mach_port_name_t";
6492+			break;
6493+		case 7:
6494+			p = "mach_msg_header_t *";
6495+			break;
6496+		case 8:
6497+			p = "mach_msg_size_t";
6498+			break;
6499+		default:
6500+			break;
6501+		};
6502+		break;
6503+	/* mach_semaphore_signal_trap */
6504+	case 33:
6505+		switch(ndx) {
6506+		case 0:
6507+			p = "mach_port_name_t";
6508+			break;
6509+		default:
6510+			break;
6511+		};
6512+		break;
6513+	/* mach_semaphore_signal_all_trap */
6514+	case 34:
6515+		switch(ndx) {
6516+		case 0:
6517+			p = "mach_port_name_t";
6518+			break;
6519+		default:
6520+			break;
6521+		};
6522+		break;
6523+	/* mach_semaphore_signal_thread_trap */
6524+	case 35:
6525+		switch(ndx) {
6526+		case 0:
6527+			p = "mach_port_name_t";
6528+			break;
6529+		case 1:
6530+			p = "mach_port_name_t";
6531+			break;
6532+		default:
6533+			break;
6534+		};
6535+		break;
6536+	/* mach_semaphore_wait_trap */
6537+	case 36:
6538+		switch(ndx) {
6539+		case 0:
6540+			p = "mach_port_name_t";
6541+			break;
6542+		default:
6543+			break;
6544+		};
6545+		break;
6546+	/* mach_semaphore_wait_signal_trap */
6547+	case 37:
6548+		switch(ndx) {
6549+		case 0:
6550+			p = "mach_port_name_t";
6551+			break;
6552+		case 1:
6553+			p = "mach_port_name_t";
6554+			break;
6555+		default:
6556+			break;
6557+		};
6558+		break;
6559+	/* mach_semaphore_timedwait_trap */
6560+	case 38:
6561+		switch(ndx) {
6562+		case 0:
6563+			p = "mach_port_name_t";
6564+			break;
6565+		case 1:
6566+			p = "unsigned int";
6567+			break;
6568+		case 2:
6569+			p = "mach_clock_res_t";
6570+			break;
6571+		default:
6572+			break;
6573+		};
6574+		break;
6575+	/* mach_semaphore_timedwait_signal_trap */
6576+	case 39:
6577+		switch(ndx) {
6578+		case 0:
6579+			p = "mach_port_name_t";
6580+			break;
6581+		case 1:
6582+			p = "mach_port_name_t";
6583+			break;
6584+		case 2:
6585+			p = "unsigned int";
6586+			break;
6587+		case 3:
6588+			p = "mach_clock_res_t";
6589+			break;
6590+		default:
6591+			break;
6592+		};
6593+		break;
6594+	/* mach_init_process */
6595+	case 41:
6596+		break;
6597+	/* mach_map_fd */
6598+	case 43:
6599+		switch(ndx) {
6600+		case 0:
6601+			p = "int";
6602+			break;
6603+		case 1:
6604+			p = "mach_vm_offset_t";
6605+			break;
6606+		case 2:
6607+			p = "mach_vm_offset_t *";
6608+			break;
6609+		case 3:
6610+			p = "mach_boolean_t";
6611+			break;
6612+		case 4:
6613+			p = "mach_vm_size_t";
6614+			break;
6615+		default:
6616+			break;
6617+		};
6618+		break;
6619+	/* mach_task_for_pid */
6620+	case 45:
6621+		switch(ndx) {
6622+		case 0:
6623+			p = "mach_port_t";
6624+			break;
6625+		case 1:
6626+			p = "int";
6627+			break;
6628+		case 2:
6629+			p = "mach_port_t *";
6630+			break;
6631+		default:
6632+			break;
6633+		};
6634+		break;
6635+	/* mach_pid_for_task */
6636+	case 46:
6637+		switch(ndx) {
6638+		case 0:
6639+			p = "mach_port_t";
6640+			break;
6641+		case 1:
6642+			p = "int *";
6643+			break;
6644+		default:
6645+			break;
6646+		};
6647+		break;
6648+	/* mach_macx_swapon */
6649+	case 48:
6650+		switch(ndx) {
6651+		case 0:
6652+			p = "char *";
6653+			break;
6654+		case 1:
6655+			p = "int";
6656+			break;
6657+		case 2:
6658+			p = "int";
6659+			break;
6660+		case 3:
6661+			p = "int";
6662+			break;
6663+		default:
6664+			break;
6665+		};
6666+		break;
6667+	/* mach_macx_swapoff */
6668+	case 49:
6669+		switch(ndx) {
6670+		case 0:
6671+			p = "char *";
6672+			break;
6673+		case 1:
6674+			p = "int";
6675+			break;
6676+		default:
6677+			break;
6678+		};
6679+		break;
6680+	/* mach_macx_triggers */
6681+	case 51:
6682+		switch(ndx) {
6683+		case 0:
6684+			p = "int";
6685+			break;
6686+		case 1:
6687+			p = "int";
6688+			break;
6689+		case 2:
6690+			p = "int";
6691+			break;
6692+		case 3:
6693+			p = "mach_port_t";
6694+			break;
6695+		default:
6696+			break;
6697+		};
6698+		break;
6699+	/* mach_swtch_pri */
6700+	case 59:
6701+		switch(ndx) {
6702+		case 0:
6703+			p = "int";
6704+			break;
6705+		default:
6706+			break;
6707+		};
6708+		break;
6709+	/* mach_swtch */
6710+	case 60:
6711+		break;
6712+	/* mach_syscall_thread_switch */
6713+	case 61:
6714+		switch(ndx) {
6715+		case 0:
6716+			p = "mach_port_name_t";
6717+			break;
6718+		case 1:
6719+			p = "int";
6720+			break;
6721+		case 2:
6722+			p = "mach_msg_timeout_t";
6723+			break;
6724+		default:
6725+			break;
6726+		};
6727+		break;
6728+	/* mach_clock_sleep_trap */
6729+	case 62:
6730+		switch(ndx) {
6731+		case 0:
6732+			p = "mach_port_name_t";
6733+			break;
6734+		case 1:
6735+			p = "mach_sleep_type_t";
6736+			break;
6737+		case 2:
6738+			p = "int";
6739+			break;
6740+		case 3:
6741+			p = "int";
6742+			break;
6743+		case 4:
6744+			p = "mach_timespec_t *";
6745+			break;
6746+		default:
6747+			break;
6748+		};
6749+		break;
6750+	/* mach_timebase_info */
6751+	case 89:
6752+		switch(ndx) {
6753+		case 0:
6754+			p = "mach_timebase_info_t";
6755+			break;
6756+		default:
6757+			break;
6758+		};
6759+		break;
6760+	/* mach_wait_until */
6761+	case 90:
6762+		switch(ndx) {
6763+		case 0:
6764+			p = "uint64_t";
6765+			break;
6766+		default:
6767+			break;
6768+		};
6769+		break;
6770+	/* mach_timer_create */
6771+	case 91:
6772+		break;
6773+	/* mach_timer_destroy */
6774+	case 92:
6775+		switch(ndx) {
6776+		case 0:
6777+			p = "mach_port_name_t";
6778+			break;
6779+		default:
6780+			break;
6781+		};
6782+		break;
6783+	/* mach_timer_arm */
6784+	case 93:
6785+		switch(ndx) {
6786+		case 0:
6787+			p = "mach_port_name_t";
6788+			break;
6789+		case 1:
6790+			p = "mach_absolute_time_t";
6791+			break;
6792+		default:
6793+			break;
6794+		};
6795+		break;
6796+	/* mach_timer_cancel */
6797+	case 94:
6798+		switch(ndx) {
6799+		case 0:
6800+			p = "mach_port_name_t";
6801+			break;
6802+		case 1:
6803+			p = "mach_absolute_time_t *";
6804+			break;
6805+		default:
6806+			break;
6807+		};
6808+		break;
6809+	/* mach_get_time_base_info */
6810+	case 95:
6811+		break;
6812+	default:
6813+		break;
6814+	};
6815+	if (p != NULL)
6816+		strlcpy(desc, p, descsz);
6817+}
6818+static void
6819+systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
6820+{
6821+	const char *p = NULL;
6822+	switch (sysnum) {
6823+#if defined(_KERNEL_OPT)
6824+#endif
6825+	/* mach_reply_port */
6826+	case 26:
6827+	/* mach_thread_self_trap */
6828+	case 27:
6829+	/* mach_task_self_trap */
6830+	case 28:
6831+	/* mach_host_self_trap */
6832+	case 29:
6833+	/* mach_msg_trap */
6834+	case 31:
6835+		if (ndx == 0 || ndx == 1)
6836+			p = "int";
6837+		break;
6838+	/* mach_msg_overwrite_trap */
6839+	case 32:
6840+		if (ndx == 0 || ndx == 1)
6841+			p = "int";
6842+		break;
6843+	/* mach_semaphore_signal_trap */
6844+	case 33:
6845+		if (ndx == 0 || ndx == 1)
6846+			p = "int";
6847+		break;
6848+	/* mach_semaphore_signal_all_trap */
6849+	case 34:
6850+		if (ndx == 0 || ndx == 1)
6851+			p = "int";
6852+		break;
6853+	/* mach_semaphore_signal_thread_trap */
6854+	case 35:
6855+		if (ndx == 0 || ndx == 1)
6856+			p = "int";
6857+		break;
6858+	/* mach_semaphore_wait_trap */
6859+	case 36:
6860+		if (ndx == 0 || ndx == 1)
6861+			p = "int";
6862+		break;
6863+	/* mach_semaphore_wait_signal_trap */
6864+	case 37:
6865+		if (ndx == 0 || ndx == 1)
6866+			p = "int";
6867+		break;
6868+	/* mach_semaphore_timedwait_trap */
6869+	case 38:
6870+		if (ndx == 0 || ndx == 1)
6871+			p = "int";
6872+		break;
6873+	/* mach_semaphore_timedwait_signal_trap */
6874+	case 39:
6875+		if (ndx == 0 || ndx == 1)
6876+			p = "int";
6877+		break;
6878+	/* mach_init_process */
6879+	case 41:
6880+	/* mach_map_fd */
6881+	case 43:
6882+		if (ndx == 0 || ndx == 1)
6883+			p = "int";
6884+		break;
6885+	/* mach_task_for_pid */
6886+	case 45:
6887+		if (ndx == 0 || ndx == 1)
6888+			p = "int";
6889+		break;
6890+	/* mach_pid_for_task */
6891+	case 46:
6892+		if (ndx == 0 || ndx == 1)
6893+			p = "int";
6894+		break;
6895+	/* mach_macx_swapon */
6896+	case 48:
6897+		if (ndx == 0 || ndx == 1)
6898+			p = "int";
6899+		break;
6900+	/* mach_macx_swapoff */
6901+	case 49:
6902+		if (ndx == 0 || ndx == 1)
6903+			p = "int";
6904+		break;
6905+	/* mach_macx_triggers */
6906+	case 51:
6907+		if (ndx == 0 || ndx == 1)
6908+			p = "int";
6909+		break;
6910+	/* mach_swtch_pri */
6911+	case 59:
6912+		if (ndx == 0 || ndx == 1)
6913+			p = "int";
6914+		break;
6915+	/* mach_swtch */
6916+	case 60:
6917+	/* mach_syscall_thread_switch */
6918+	case 61:
6919+		if (ndx == 0 || ndx == 1)
6920+			p = "int";
6921+		break;
6922+	/* mach_clock_sleep_trap */
6923+	case 62:
6924+		if (ndx == 0 || ndx == 1)
6925+			p = "int";
6926+		break;
6927+	/* mach_timebase_info */
6928+	case 89:
6929+		if (ndx == 0 || ndx == 1)
6930+			p = "int";
6931+		break;
6932+	/* mach_wait_until */
6933+	case 90:
6934+		if (ndx == 0 || ndx == 1)
6935+			p = "int";
6936+		break;
6937+	/* mach_timer_create */
6938+	case 91:
6939+	/* mach_timer_destroy */
6940+	case 92:
6941+		if (ndx == 0 || ndx == 1)
6942+			p = "int";
6943+		break;
6944+	/* mach_timer_arm */
6945+	case 93:
6946+		if (ndx == 0 || ndx == 1)
6947+			p = "int";
6948+		break;
6949+	/* mach_timer_cancel */
6950+	case 94:
6951+		if (ndx == 0 || ndx == 1)
6952+			p = "int";
6953+		break;
6954+	/* mach_get_time_base_info */
6955+	case 95:
6956+	default:
6957+		break;
6958+	};
6959+	if (p != NULL)
6960+		strlcpy(desc, p, descsz);
6961+}
6962diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
6963index 4ada0e4..d3a4acd 100644
6964--- a/sys/kern/kern_sig.c
6965+++ b/sys/kern/kern_sig.c
6966@@ -105,7 +105,6 @@ static int	coredump(struct thread *);
6967 static int	killpg1(struct thread *td, int sig, int pgid, int all,
6968 		    ksiginfo_t *ksi);
6969 static int	issignal(struct thread *td);
6970-static int	sigprop(int sig);
6971 static void	tdsigwakeup(struct thread *, int, sig_t, int);
6972 static void	sig_suspend_threads(struct thread *, struct proc *, int);
6973 static int	filt_sigattach(struct knote *kn);
6974@@ -607,7 +606,7 @@ sigonstack(size_t sp)
6975 }
6976
6977 static __inline int
6978-sigprop(int sig)
6979+__sigprop(int sig)
6980 {
6981
6982 	if (sig > 0 && sig < NSIG)
6983@@ -616,6 +615,13 @@ sigprop(int sig)
6984 }
6985
6986 int
6987+sigprop(int sig)
6988+{
6989+
6990+	return (__sigprop(sig));
6991+}
6992+
6993+int
6994 sig_ffs(sigset_t *set)
6995 {
6996 	int i;
6997@@ -757,7 +763,7 @@ kern_sigaction(td, sig, act, oact, flags)
6998 		 * have to restart the process.
6999 		 */
7000 		if (ps->ps_sigact[_SIG_IDX(sig)] == SIG_IGN ||
7001-		    (sigprop(sig) & SA_IGNORE &&
7002+		    (__sigprop(sig) & SA_IGNORE &&
7003 		     ps->ps_sigact[_SIG_IDX(sig)] == SIG_DFL)) {
7004 			/* never to be seen again */
7005 			sigqueue_delete_proc(p, sig);
7006@@ -925,7 +931,7 @@ siginit(p)
7007 	ps = p->p_sigacts;
7008 	mtx_lock(&ps->ps_mtx);
7009 	for (i = 1; i <= NSIG; i++) {
7010-		if (sigprop(i) & SA_IGNORE && i != SIGCONT) {
7011+		if (__sigprop(i) & SA_IGNORE && i != SIGCONT) {
7012 			SIGADDSET(ps->ps_sigignore, i);
7013 		}
7014 	}
7015@@ -942,7 +948,7 @@ sigdflt(struct sigacts *ps, int sig)
7016
7017 	mtx_assert(&ps->ps_mtx, MA_OWNED);
7018 	SIGDELSET(ps->ps_sigcatch, sig);
7019-	if ((sigprop(sig) & SA_IGNORE) != 0 && sig != SIGCONT)
7020+	if ((__sigprop(sig) & SA_IGNORE) != 0 && sig != SIGCONT)
7021 		SIGADDSET(ps->ps_sigignore, sig);
7022 	ps->ps_sigact[_SIG_IDX(sig)] = SIG_DFL;
7023 	SIGDELSET(ps->ps_siginfo, sig);
7024@@ -970,7 +976,7 @@ execsigs(struct proc *p)
7025 	while (SIGNOTEMPTY(ps->ps_sigcatch)) {
7026 		sig = sig_ffs(&ps->ps_sigcatch);
7027 		sigdflt(ps, sig);
7028-		if ((sigprop(sig) & SA_IGNORE) != 0)
7029+		if ((__sigprop(sig) & SA_IGNORE) != 0)
7030 			sigqueue_delete_proc(p, sig);
7031 	}
7032 	/*
7033@@ -2100,7 +2106,7 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi)
7034
7035 	ps = p->p_sigacts;
7036 	KNOTE_LOCKED(&p->p_klist, NOTE_SIGNAL | sig);
7037-	prop = sigprop(sig);
7038+	prop = __sigprop(sig);
7039
7040 	if (td == NULL) {
7041 		td = sigtd(p, sig, prop);
7042@@ -2365,7 +2371,7 @@ tdsigwakeup(struct thread *td, int sig, sig_t action, int intrval)
7043
7044 	wakeup_swapper = 0;
7045 	PROC_LOCK_ASSERT(p, MA_OWNED);
7046-	prop = sigprop(sig);
7047+	prop = __sigprop(sig);
7048
7049 	PROC_SLOCK(p);
7050 	thread_lock(td);
7051@@ -2722,7 +2728,7 @@ issignal(struct thread *td)
7052 				continue;
7053 		}
7054
7055-		prop = sigprop(sig);
7056+		prop = __sigprop(sig);
7057
7058 		/*
7059 		 * Decide whether the signal should be returned.
7060@@ -2946,7 +2952,7 @@ sigexit(td, sig)
7061 	 * XXX If another thread attempts to single-thread before us
7062 	 *     (e.g. via fork()), we won't get a dump at all.
7063 	 */
7064-	if ((sigprop(sig) & SA_CORE) && thread_single(p, SINGLE_NO_EXIT) == 0) {
7065+	if ((__sigprop(sig) & SA_CORE) && (thread_single(SINGLE_NO_EXIT) == 0)) {
7066 		p->p_sig = sig;
7067 		/*
7068 		 * Log signals which would cause core dumps
7069diff --git a/sys/sys/signal.h b/sys/sys/signal.h
7070index 81e06a8..84e20b8 100644
7071--- a/sys/sys/signal.h
7072+++ b/sys/sys/signal.h
7073@@ -420,6 +420,21 @@ struct sigstack {
7074 #define	sigmask(m)	(1 << ((m)-1))
7075 #endif
7076
7077+/*
7078+ * Signal properties and actions.
7079+ * The array below categorizes the signals and their default actions
7080+ * according to the following properties:
7081+ */
7082+#define	SA_KILL		0x01		/* terminates process by default */
7083+#define	SA_CORE		0x02		/* ditto and coredumps */
7084+#define	SA_STOP		0x04		/* suspend process */
7085+#define	SA_TTYSTOP	0x08		/* ditto, from tty */
7086+#define	SA_IGNORE	0x10		/* ignore by default */
7087+#define	SA_CONT		0x20		/* continue if suspended */
7088+#define	SA_CANTMASK	0x40		/* non-maskable, catchable */
7089+
7090+int sigprop(int);
7091+
7092 #if __BSD_VISIBLE
7093 #define	BADSIG		SIG_ERR
7094 #endif
7095--
70961.8.4.2
7097
7098