Module Name:    src
Committed By:   pgoyette
Date:           Thu Dec  3 10:38:21 UTC 2015

Modified Files:
        src/distrib/sets/lists/modules: ad.arm ad.mips md.amd64
        src/sys/compat/netbsd32: netbsd32_compat_10.c netbsd32_compat_14.c
            netbsd32_compat_50.c netbsd32_ipc.c syscalls.master
        src/sys/modules: Makefile
        src/sys/modules/compat_netbsd32: Makefile
Added Files:
        src/sys/compat/netbsd32: netbsd32_compat_50_sysv.c
        src/sys/modules/compat_netbsd32_sysvipc: Makefile

Log Message:
Split out the SYSV IPC stuff into its own compat_netbsd32_sysvipc
module.  Adjust dependencies as needed.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/distrib/sets/lists/modules/ad.arm \
    src/distrib/sets/lists/modules/ad.mips
cvs rdiff -u -r1.65 -r1.66 src/distrib/sets/lists/modules/md.amd64
cvs rdiff -u -r1.24 -r1.25 src/sys/compat/netbsd32/netbsd32_compat_10.c
cvs rdiff -u -r1.21 -r1.22 src/sys/compat/netbsd32/netbsd32_compat_14.c
cvs rdiff -u -r1.31 -r1.32 src/sys/compat/netbsd32/netbsd32_compat_50.c
cvs rdiff -u -r0 -r1.1 src/sys/compat/netbsd32/netbsd32_compat_50_sysv.c
cvs rdiff -u -r1.17 -r1.18 src/sys/compat/netbsd32/netbsd32_ipc.c
cvs rdiff -u -r1.111 -r1.112 src/sys/compat/netbsd32/syscalls.master
cvs rdiff -u -r1.161 -r1.162 src/sys/modules/Makefile
cvs rdiff -u -r1.17 -r1.18 src/sys/modules/compat_netbsd32/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/modules/compat_netbsd32_sysvipc/Makefile

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

Modified files:

Index: src/distrib/sets/lists/modules/ad.arm
diff -u src/distrib/sets/lists/modules/ad.arm:1.7 src/distrib/sets/lists/modules/ad.arm:1.8
--- src/distrib/sets/lists/modules/ad.arm:1.7	Tue Dec  1 23:59:16 2015
+++ src/distrib/sets/lists/modules/ad.arm	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-# $NetBSD: ad.arm,v 1.7 2015/12/01 23:59:16 pgoyette Exp $
+# $NetBSD: ad.arm,v 1.8 2015/12/03 10:38:21 pgoyette Exp $
 
 ./@MODULEDIR@/compat_netbsd32			base-kernel-modules	kmod
 ./@MODULEDIR@/compat_netbsd32/compat_netbsd32.kmod	base-kernel-modules	kmod
@@ -6,5 +6,7 @@
 ./@MODULEDIR@/compat_netbsd32_mqueue/compat_netbsd32_mqueue.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/compat_netbsd32_nfssrv		base-kernel-modules	kmod
 ./@MODULEDIR@/compat_netbsd32_nfssrv/compat_netbsd32_nfssrv.kmod	base-kernel-modules	kmod
+./@MODULEDIR@/compat_netbsd32_sysvipc		base-kernel-modules	kmod
+./@MODULEDIR@/compat_netbsd32_sysvipc/compat_netbsd32_sysvipc.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/exec_elf32			base-kernel-modules	kmod
 ./@MODULEDIR@/exec_elf32/exec_elf32.kmod	base-kernel-modules	kmod
Index: src/distrib/sets/lists/modules/ad.mips
diff -u src/distrib/sets/lists/modules/ad.mips:1.7 src/distrib/sets/lists/modules/ad.mips:1.8
--- src/distrib/sets/lists/modules/ad.mips:1.7	Tue Dec  1 23:59:16 2015
+++ src/distrib/sets/lists/modules/ad.mips	Thu Dec  3 10:38:21 2015
@@ -1,9 +1,11 @@
-# $NetBSD: ad.mips,v 1.7 2015/12/01 23:59:16 pgoyette Exp $
+# $NetBSD: ad.mips,v 1.8 2015/12/03 10:38:21 pgoyette Exp $
 ./@MODULEDIR@/compat_netbsd32			base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/compat_netbsd32/compat_netbsd32.kmod	base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/compat_netbsd32_mqueue			base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/compat_netbsd32_mqueue/compat_netbsd32_mqueue.kmod	base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/compat_netbsd32_nfssrv			base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/compat_netbsd32_nfssrv/compat_netbsd32_nfssrv.kmod	base-kernel-modules	kmod,arch64,nocompatmodules
+./@MODULEDIR@/compat_netbsd32_sysvipc			base-kernel-modules	kmod,arch64,nocompatmodules
+./@MODULEDIR@/compat_netbsd32_sysvipc/compat_netbsd32_sysvipc.kmod	base-kernel-modules	kmod,arch64,nocompatmodules
 ./@MODULEDIR@/exec_elf32			base-kernel-modules	kmod
 ./@MODULEDIR@/exec_elf32/exec_elf32.kmod	base-kernel-modules	kmod

Index: src/distrib/sets/lists/modules/md.amd64
diff -u src/distrib/sets/lists/modules/md.amd64:1.65 src/distrib/sets/lists/modules/md.amd64:1.66
--- src/distrib/sets/lists/modules/md.amd64:1.65	Tue Dec  1 23:59:16 2015
+++ src/distrib/sets/lists/modules/md.amd64	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-# $NetBSD: md.amd64,v 1.65 2015/12/01 23:59:16 pgoyette Exp $
+# $NetBSD: md.amd64,v 1.66 2015/12/03 10:38:21 pgoyette Exp $
 #
 # NOTE that there are two sets of files here:
 # @MODULEDIR@ and amd64-xen
@@ -55,6 +55,8 @@
 ./@MODULEDIR@/compat_netbsd32_mqueue/compat_netbsd32_mqueue.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/compat_netbsd32_nfssrv		base-kernel-modules	kmod
 ./@MODULEDIR@/compat_netbsd32_nfssrv/compat_netbsd32_nfssrv.kmod	base-kernel-modules	kmod
+./@MODULEDIR@/compat_netbsd32_sysvipc		base-kernel-modules	kmod
+./@MODULEDIR@/compat_netbsd32_sysvipc/compat_netbsd32_sysvipc.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/coram				base-kernel-modules	kmod
 ./@MODULEDIR@/coram/coram.kmod			base-kernel-modules	kmod
 ./@MODULEDIR@/coretemp				base-kernel-modules	kmod

Index: src/sys/compat/netbsd32/netbsd32_compat_10.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_10.c:1.24 src/sys/compat/netbsd32/netbsd32_compat_10.c:1.25
--- src/sys/compat/netbsd32/netbsd32_compat_10.c:1.24	Fri Apr 23 15:19:20 2010
+++ src/sys/compat/netbsd32/netbsd32_compat_10.c	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_10.c,v 1.24 2010/04/23 15:19:20 rmind Exp $	*/
+/*	$NetBSD: netbsd32_compat_10.c,v 1.25 2015/12/03 10:38:21 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1994 Adam Glass and Charles M. Hannum.  All rights reserved.
@@ -31,10 +31,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_10.c,v 1.24 2010/04/23 15:19:20 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_10.c,v 1.25 2015/12/03 10:38:21 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_sysv.h"
+#include "opt_compat_netbsd.h"
 #endif
 
 #include <sys/param.h>
@@ -50,7 +51,8 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/sys/shm.h>
 
-#if defined(SYSVSEM) || !defined(_KERNEL_OPT)
+#if defined(COMPAT_10)
+#if defined(SYSVSEM)
 int
 compat_10_netbsd32_semsys(struct lwp *l, const struct compat_10_netbsd32_semsys_args *uap, register_t *retval)
 {
@@ -112,7 +114,7 @@ compat_10_netbsd32_semsys(struct lwp *l,
 }
 #endif
 
-#if defined(SYSVSHM) || !defined(_KERNEL_OPT)
+#if defined(SYSVSHM)
 int
 compat_10_netbsd32_shmsys(struct lwp *l, const struct compat_10_netbsd32_shmsys_args *uap, register_t *retval)
 {
@@ -170,7 +172,7 @@ compat_10_netbsd32_shmsys(struct lwp *l,
 }
 #endif
 
-#if defined(SYSVMSG) || !defined(_KERNEL)
+#if defined(SYSVMSG)
 int
 compat_10_netbsd32_msgsys(struct lwp *l, const struct compat_10_netbsd32_msgsys_args *uap, register_t *retval)
 {
@@ -237,3 +239,4 @@ compat_10_netbsd32_msgsys(struct lwp *l,
 	}
 }
 #endif
+#endif /* COMPAT_10 */

Index: src/sys/compat/netbsd32/netbsd32_compat_14.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_14.c:1.21 src/sys/compat/netbsd32/netbsd32_compat_14.c:1.22
--- src/sys/compat/netbsd32/netbsd32_compat_14.c:1.21	Thu Dec 20 23:03:01 2007
+++ src/sys/compat/netbsd32/netbsd32_compat_14.c	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_14.c,v 1.21 2007/12/20 23:03:01 dsl Exp $	*/
+/*	$NetBSD: netbsd32_compat_14.c,v 1.22 2015/12/03 10:38:21 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1999 Eduardo E. Horvath
@@ -29,7 +29,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_14.c,v 1.21 2007/12/20 23:03:01 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_14.c,v 1.22 2015/12/03 10:38:21 pgoyette Exp $");
+
+#ifdef _KERNEL_OPT
+#include "opt_sysv.h"
+#include "opt_compat_netbsd.h"
+#endif
 
 #include <sys/param.h>
 #include <sys/ipc.h>
@@ -41,21 +46,13 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 #include <sys/sem.h>
 #include <sys/shm.h>
 
-#ifndef	SYSVMSG
-#define	SYSVMSG
-#endif
-#ifndef	SYSVSEM
-#define	SYSVSEM
-#endif
-#ifndef	SYSVSHM
-#define	SYSVSHM
-#endif
-
 #include <sys/syscallargs.h>
 #include <compat/netbsd32/netbsd32.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/sys/shm.h>
 
+#if defined(COMPAT_14)
+
 static inline void
 netbsd32_ipc_perm14_to_native(struct netbsd32_ipc_perm14 *, struct ipc_perm *);
 static inline void
@@ -207,6 +204,7 @@ native_to_netbsd32_shmid_ds14(struct shm
 /*
  * the compat_14 system calls
  */
+#if defined(SYSVMSG)
 int
 compat_14_netbsd32_msgctl(struct lwp *l, const struct compat_14_netbsd32_msgctl_args *uap, register_t *retval)
 {
@@ -240,7 +238,9 @@ compat_14_netbsd32_msgctl(struct lwp *l,
 
 	return (error);
 }
+#endif
 
+#if defined(SYSVSEM)
 int
 compat_14_netbsd32___semctl(struct lwp *l, const struct compat_14_netbsd32___semctl_args *uap, register_t *retval)
 {
@@ -294,7 +294,9 @@ compat_14_netbsd32___semctl(struct lwp *
 
 	return (error);
 }
+#endif
 
+#if defined(SYSVSHM)
 int
 compat_14_netbsd32_shmctl(struct lwp *l, const struct compat_14_netbsd32_shmctl_args *uap, register_t *retval)
 {
@@ -326,3 +328,5 @@ compat_14_netbsd32_shmctl(struct lwp *l,
 
 	return (error);
 }
+#endif
+#endif /* COMPAT_14 */

Index: src/sys/compat/netbsd32/netbsd32_compat_50.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.31 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32
--- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.31	Tue Dec  1 23:56:43 2015
+++ src/sys/compat/netbsd32/netbsd32_compat_50.c	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_50.c,v 1.31 2015/12/01 23:56:43 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_compat_50.c,v 1.32 2015/12/03 10:38:21 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,10 +36,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.31 2015/12/01 23:56:43 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.32 2015/12/03 10:38:21 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
-#include "opt_sysv.h"
+#include "opt_compat_netbsd.h"
 #endif
 
 #include <sys/param.h>
@@ -63,10 +63,6 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 #include <sys/dirent.h>
 #include <sys/kauth.h>
 #include <sys/vfs_syscalls.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include <sys/sem.h>
-#include <sys/shm.h>
 
 #include <compat/netbsd32/netbsd32.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
@@ -74,6 +70,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 #include <compat/sys/mount.h>
 #include <compat/sys/time.h>
 
+#if defined(COMPAT_50)
 
 /*
  * Common routine to set access and modification times given a vnode.
@@ -909,158 +906,6 @@ compat_50_netbsd32_getitimer(struct lwp 
 	return copyout(&s32it, SCARG_P32(uap, itv), sizeof(s32it));
 }
 
-#if defined(SYSVSEM)
-
-int
-compat_50_netbsd32___semctl14(struct lwp *l, const struct compat_50_netbsd32___semctl14_args *uap, register_t *retval)
-{
-	return do_netbsd32___semctl14(l, uap, retval, NULL);
-}
-
-int
-do_netbsd32___semctl14(struct lwp *l, const struct compat_50_netbsd32___semctl14_args *uap, register_t *retval, void *vkarg)
-{
-	/* {
-		syscallarg(int) semid;
-		syscallarg(int) semnum;
-		syscallarg(int) cmd;
-		syscallarg(netbsd32_semun50p_t) arg;
-	} */
-	struct semid_ds sembuf;
-	struct netbsd32_semid_ds50 sembuf32;
-	int cmd, error;
-	void *pass_arg;
-	union __semun karg;
-	union netbsd32_semun50 karg32;
-
-	cmd = SCARG(uap, cmd);
-
-	switch (cmd) {
-	case IPC_SET:
-	case IPC_STAT:
-		pass_arg = &sembuf;
-		break;
-
-	case GETALL:
-	case SETVAL:
-	case SETALL:
-		pass_arg = &karg;
-		break;
-	default:
-		pass_arg = NULL;
-		break;
-	}
-
-	if (pass_arg) {
-		if (vkarg != NULL)
-			karg32 = *(union netbsd32_semun50 *)vkarg;
-		else {
-			error = copyin(SCARG_P32(uap, arg), &karg32,
-					sizeof(karg32));
-			if (error)
-				return error;
-		}
-		if (pass_arg == &karg) {
-			switch (cmd) {
-			case GETALL:
-			case SETALL:
-				karg.array = NETBSD32PTR64(karg32.array);
-				break;
-			case SETVAL:
-				karg.val = karg32.val;
-				break;
-			}
-		}
-		if (cmd == IPC_SET) {
-			error = copyin(NETBSD32PTR64(karg32.buf), &sembuf32,
-			    sizeof(sembuf32));
-			if (error)
-				return (error);
-			netbsd32_to_semid_ds50(&sembuf32, &sembuf);
-		}
-	}
-
-	error = semctl1(l, SCARG(uap, semid), SCARG(uap, semnum), cmd,
-	    pass_arg, retval);
-
-	if (error == 0 && cmd == IPC_STAT) {
-		netbsd32_from_semid_ds50(&sembuf, &sembuf32);
-		error = copyout(&sembuf32, NETBSD32PTR64(karg32.buf),
-		    sizeof(sembuf32));
-	}
-
-	return (error);
-}
-#endif
-
-#if defined(SYSVMSG)
-
-int
-compat_50_netbsd32___msgctl13(struct lwp *l, const struct compat_50_netbsd32___msgctl13_args *uap, register_t *retval)
-{
-	/* {
-		syscallarg(int) msqid;
-		syscallarg(int) cmd;
-		syscallarg(netbsd32_msqid_ds50p_t) buf;
-	} */
-	struct msqid_ds ds;
-	struct netbsd32_msqid_ds50 ds32;
-	int error, cmd;
-
-	cmd = SCARG(uap, cmd);
-	if (cmd == IPC_SET) {
-		error = copyin(SCARG_P32(uap, buf), &ds32, sizeof(ds32));
-		if (error)
-			return error;
-		netbsd32_to_msqid_ds50(&ds32, &ds);
-	}
-
-	error = msgctl1(l, SCARG(uap, msqid), cmd,
-	    (cmd == IPC_SET || cmd == IPC_STAT) ? &ds : NULL);
-
-	if (error == 0 && cmd == IPC_STAT) {
-		netbsd32_from_msqid_ds50(&ds, &ds32);
-		error = copyout(&ds32, SCARG_P32(uap, buf), sizeof(ds32));
-	}
-
-	return error;
-}
-#endif
-
-#if defined(SYSVSHM)
-
-int
-compat_50_netbsd32___shmctl13(struct lwp *l, const struct compat_50_netbsd32___shmctl13_args *uap, register_t *retval)
-{
-	/* {
-		syscallarg(int) shmid;
-		syscallarg(int) cmd;
-		syscallarg(netbsd32_shmid_ds50p_t) buf;
-	} */
-	struct shmid_ds ds;
-	struct netbsd32_shmid_ds50 ds32;
-	int error, cmd;
-
-	cmd = SCARG(uap, cmd);
-	if (cmd == IPC_SET) {
-		error = copyin(SCARG_P32(uap, buf), &ds32, sizeof(ds32));
-		if (error)
-			return error;
-		netbsd32_to_shmid_ds50(&ds32, &ds);
-	}
-
-	error = shmctl1(l, SCARG(uap, shmid), cmd,
-	    (cmd == IPC_SET || cmd == IPC_STAT) ? &ds : NULL);
-
-	if (error == 0 && cmd == IPC_STAT) {
-		netbsd32_from_shmid_ds50(&ds, &ds32);
-		error = copyout(&ds32, SCARG_P32(uap, buf), sizeof(ds32));
-	}
-
-	return error;
-}
-#endif
-
 int
 compat_50_netbsd32_quotactl(struct lwp *l, const struct compat_50_netbsd32_quotactl_args *uap, register_t *retval)
 {
@@ -1079,3 +924,4 @@ compat_50_netbsd32_quotactl(struct lwp *
 	return (compat_50_sys_quotactl(l, &ua, retval));
 }
 
+#endif /* COMPAT_50 */

Index: src/sys/compat/netbsd32/netbsd32_ipc.c
diff -u src/sys/compat/netbsd32/netbsd32_ipc.c:1.17 src/sys/compat/netbsd32/netbsd32_ipc.c:1.18
--- src/sys/compat/netbsd32/netbsd32_ipc.c:1.17	Sat Dec 12 10:30:09 2009
+++ src/sys/compat/netbsd32/netbsd32_ipc.c	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_ipc.c,v 1.17 2009/12/12 10:30:09 njoly Exp $	*/
+/*	$NetBSD: netbsd32_ipc.c,v 1.18 2015/12/03 10:38:21 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ipc.c,v 1.17 2009/12/12 10:30:09 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ipc.c,v 1.18 2015/12/03 10:38:21 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_sysv.h"
@@ -40,15 +40,101 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_ipc
 #include <sys/sem.h>
 #include <sys/shm.h>
 #include <sys/mount.h>
+#include <sys/module.h>
 #include <sys/dirent.h>
+#include <sys/syscallvar.h>
 
 #include <sys/syscallargs.h>
 #include <sys/proc.h>
 
 #include <compat/netbsd32/netbsd32.h>
+#include <compat/netbsd32/netbsd32_syscall.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/netbsd32/netbsd32_conv.h>
 
+extern struct emul emul_netbsd32;
+
+#define _PKG_ENTRY(name)	\
+	{ NETBSD32_SYS_ ## name, 0, (sy_call_t *)name }
+
+#define _PKG_ENTRY2(code, name)	\
+	{ NETBSD32_SYS_ ## code, 0, (sy_call_t *)name }
+
+static const struct syscall_package compat_sysvipc_syscalls[] = {
+#if defined(SYSVSEM)
+	_PKG_ENTRY(netbsd32_____semctl50),
+	_PKG_ENTRY(netbsd32_semget),
+	_PKG_ENTRY(netbsd32_semop),
+	_PKG_ENTRY(netbsd32_semconfig),
+#if defined(COMPAT_10)
+	_PKG_ENTRY2(compat_10_osemsys, compat_10_netbsd32_semsys),
+#endif
+#if defined(COMPAT_14)
+	_PKG_ENTRY(compat_14_netbsd32___semctl),
+#endif
+#if defined(COMPAT_50)
+	_PKG_ENTRY(compat_50_netbsd32___semctl14),
+#endif
+#endif /* SYSVSEM */
+
+#if defined(SYSVSHM)
+	_PKG_ENTRY(netbsd32_shmat),
+	_PKG_ENTRY(netbsd32___shmctl50),
+	_PKG_ENTRY(netbsd32_shmdt),
+	_PKG_ENTRY(netbsd32_shmget),
+#if defined(COMPAT_10)
+	_PKG_ENTRY2(compat_10_oshmsys, compat_10_netbsd32_shmsys),
+#endif
+#if defined(COMPAT_14)
+	_PKG_ENTRY(compat_14_netbsd32_shmctl),
+#endif
+#if defined(COMPAT_50)
+	_PKG_ENTRY(compat_50_netbsd32___shmctl13),
+#endif
+#endif /* SYSVSHM */
+
+#if defined(SYSVMSG)
+	_PKG_ENTRY(netbsd32___msgctl50),
+	_PKG_ENTRY(netbsd32_msgget),
+	_PKG_ENTRY(netbsd32_msgsnd),
+	_PKG_ENTRY(netbsd32_msgrcv),
+#if defined(COMPAT_10)
+	_PKG_ENTRY2(compat_10_omsgsys, compat_10_netbsd32_msgsys),
+#endif
+#if defined(COMPAT_14)
+	_PKG_ENTRY(compat_14_netbsd32_msgctl),
+#endif
+#if defined(COMPAT_50)
+	_PKG_ENTRY(compat_50_netbsd32___msgctl13),
+#endif
+#endif /* SYSVMSG */
+	{ 0, 0, NULL }
+};
+
+MODULE(MODULE_CLASS_EXEC, compat_netbsd32_sysvipc, "sysv_ipc,compat_netbsd32");
+
+static int
+compat_netbsd32_sysvipc_modcmd(modcmd_t cmd, void *arg)
+{
+	int error;
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		error = syscall_establish(&emul_netbsd32,
+		    compat_sysvipc_syscalls);
+		break;
+	case MODULE_CMD_FINI:
+		error = syscall_disestablish(&emul_netbsd32,
+		    compat_sysvipc_syscalls);
+		break;
+	default:
+		error = ENOTTY;
+		break;
+	}
+	return error;
+}
+
+
 #if defined(SYSVSEM)
 
 int

Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.111 src/sys/compat/netbsd32/syscalls.master:1.112
--- src/sys/compat/netbsd32/syscalls.master:1.111	Tue Dec  1 23:56:43 2015
+++ src/sys/compat/netbsd32/syscalls.master	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.111 2015/12/01 23:56:43 pgoyette Exp $
+	$NetBSD: syscalls.master,v 1.112 2015/12/03 10:38:21 pgoyette Exp $
 
 ;	from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
@@ -39,7 +39,6 @@
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
 #include "opt_ntp.h"
-#include "opt_sysv.h"
 #include "opt_compat_43.h"
 #endif
 
@@ -339,24 +338,15 @@
 166	UNIMPL
 167	UNIMPL
 168	UNIMPL
-#if defined(SYSVSEM) || !defined(_KERNEL_OPT)
-169	COMPAT_10	{ int|netbsd32||semsys(int which, int a2, int a3, \
+169	COMPAT_10 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||semsys(int which, int a2, int a3, \
 			    int a4, int a5); } osemsys
-#else
-169	EXCL		netbsd32_semsys
-#endif
-#if defined(SYSVMSG) || !defined(_KERNEL_OPT)
-170	COMPAT_10	{ int|netbsd32||msgsys(int which, int a2, int a3, \
+170	COMPAT_10 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||msgsys(int which, int a2, int a3, \
 			    int a4, int a5, int a6); } omsgsys
-#else
-170	EXCL		netbsd32_msgsys
-#endif
-#if defined(SYSVSHM) || !defined(_KERNEL_OPT)
-171	COMPAT_10	{ int|netbsd32||shmsys(int which, int a2, int a3, \
+171	COMPAT_10 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||shmsys(int which, int a2, int a3, \
 			    int a4); } oshmsys
-#else
-171	EXCL		netbsd32_shmsys
-#endif
 172	UNIMPL
 173	STD		{ netbsd32_ssize_t|netbsd32||pread(int fd, \
 			    netbsd32_voidp buf, netbsd32_size_t nbyte, \
@@ -440,49 +430,40 @@
 218	UNIMPL
 219	UNIMPL
 ; System calls 220-300 are reserved for use by NetBSD
-#if defined(SYSVSEM) || !defined(_KERNEL_OPT)
-220	COMPAT_14	{ int|netbsd32||__semctl(int semid, int semnum, \
+220	COMPAT_14 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||__semctl(int semid, int semnum, \
 			    int cmd, netbsd32_semunu_t arg); }
-221	STD		{ int|netbsd32||semget(netbsd32_key_t key, int nsems, \
+221	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||semget(netbsd32_key_t key, int nsems, \
 			    int semflg); }
-222	STD		{ int|netbsd32||semop(int semid, \
+222	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||semop(int semid, \
 			    netbsd32_sembufp_t sops, netbsd32_size_t nsops); }
-223	STD		{ int|netbsd32||semconfig(int flag); }
-#else
-220	EXCL		compat_14_netbsd32_semctl
-221	EXCL		netbsd32_semget
-222	EXCL		netbsd32_semop
-223	EXCL		netbsd32_semconfig
-#endif
-#if defined(SYSVMSG) || !defined(_KERNEL_OPT)
-224	COMPAT_14	{ int|netbsd32||msgctl(int msqid, int cmd, \
+223	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||semconfig(int flag); }
+224	COMPAT_14 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||msgctl(int msqid, int cmd, \
 			    netbsd32_msqid_ds14p_t buf); }
-225	STD		{ int|netbsd32||msgget(netbsd32_key_t key, int msgflg); }
-226	STD		{ int|netbsd32||msgsnd(int msqid, netbsd32_voidp msgp, \
+225	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||msgget(netbsd32_key_t key, int msgflg); }
+226	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||msgsnd(int msqid, netbsd32_voidp msgp, \
 			    netbsd32_size_t msgsz, int msgflg); }
-227	STD		{ netbsd32_ssize_t|netbsd32||msgrcv(int msqid, \
+227	STD MODULAR compat_netbsd32_sysvipc	\
+			{ netbsd32_ssize_t|netbsd32||msgrcv(int msqid, \
 			    netbsd32_voidp msgp, netbsd32_size_t msgsz, \
 			    netbsd32_long msgtyp, int msgflg); }
-#else
-224	EXCL		compat_14_netbsd32_msgctl
-225	EXCL		netbsd32_msgget
-226	EXCL		netbsd32_msgsnd
-227	EXCL		netbsd32_msgrcv
-#endif
-#if defined(SYSVSHM) || !defined(_KERNEL_OPT)
-228	STD		{ netbsd32_voidp|netbsd32||shmat(int shmid, \
+228	STD MODULAR compat_netbsd32_sysvipc	\
+			{ netbsd32_voidp|netbsd32||shmat(int shmid, \
 			    netbsd32_voidp shmaddr, int shmflg); }
-229	COMPAT_14	{ int|netbsd32||shmctl(int shmid, int cmd, \
+229	COMPAT_14 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||shmctl(int shmid, int cmd, \
 			    netbsd32_shmid_dsp_t buf); }
-230	STD		{ int|netbsd32||shmdt(netbsd32_voidp shmaddr); }
-231	STD		{ int|netbsd32||shmget(netbsd32_key_t key, \
+230	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||shmdt(netbsd32_voidp shmaddr); }
+231	STD MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32||shmget(netbsd32_key_t key, \
 			    netbsd32_size_t size, int shmflg); }
-#else
-228	EXCL		netbsd32_shmat
-229	EXCL		compat_14_netbsd32_shmctl
-230	EXCL		netbsd32_shmdt
-231	EXCL		netbsd32_shmget
-#endif
 232	COMPAT_50	{ int|netbsd32||clock_gettime( \
 			    netbsd32_clockid_t clock_id, \
 			    netbsd32_timespec50p_t tp); }
@@ -637,24 +618,15 @@
 			    netbsd32_stat13p_t sb); }
 300	COMPAT_20	{ int|netbsd32||fhstatfs(netbsd32_fhandlep_t fhp, \
 			    netbsd32_stat50p_t buf); }
-#if defined(SYSVSEM) || !defined(_KERNEL_OPT)
-301	COMPAT_50	{ int|netbsd32|14|semctl(int semid, int semnum, \
+301	COMPAT_50 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32|14|semctl(int semid, int semnum, \
 			    int cmd, ... netbsd32_semun50p_t arg); }
-#else
-301	EXCL		__semctl14
-#endif
-#if defined(SYSVMSG) || !defined(_KERNEL_OPT)
-302	COMPAT_50	{ int|netbsd32|13|msgctl(int msqid, int cmd, \
+302	COMPAT_50 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32|13|msgctl(int msqid, int cmd, \
 			    netbsd32_msqid_ds50p_t buf); }
-#else
-302	EXCL		__msgctl13
-#endif
-#if defined(SYSVSHM) || !defined(_KERNEL_OPT)
-303	COMPAT_50	{ int|netbsd32|13|shmctl(int shmid, int cmd, \
+303	COMPAT_50 MODULAR compat_netbsd32_sysvipc	\
+			{ int|netbsd32|13|shmctl(int shmid, int cmd, \
 			    netbsd32_shmid_ds50p_t buf); }
-#else
-303	EXCL		__shmctl13
-#endif
 304	STD		{ int|netbsd32||lchflags(netbsd32_charp path, \
 			    netbsd32_u_long flags); }
 305	NOARGS 		{ int|sys||issetugid(void); }
@@ -957,24 +929,15 @@
 440	STD 		{ int|netbsd32|50|fstat(int fd, netbsd32_statp_t sb); }
 441	STD 		{ int|netbsd32|50|lstat(const netbsd32_charp path, \
 			    netbsd32_statp_t ub); }
-#if defined(SYSVSEM) || !defined(_KERNEL_OPT)
-442	STD 		{ int|netbsd32|50|__semctl(int semid, int semnum, \
+442	STD MODULAR compat_netbsd32_sysvipc	\
+	 		{ int|netbsd32|50|__semctl(int semid, int semnum, \
 			    int cmd, ... netbsd32_semunp_t arg); }
-#else
-442	EXCL		____semctl50
-#endif
-#if defined(SYSVSHM) || !defined(_KERNEL_OPT)
-443	STD 		{ int|netbsd32|50|shmctl(int shmid, int cmd, \
+443	STD MODULAR compat_netbsd32_sysvipc	\
+	 		{ int|netbsd32|50|shmctl(int shmid, int cmd, \
 			    netbsd32_shmid_dsp_t buf); }
-#else
-443	EXCL 		____shmctl50
-#endif
-#if defined(SYSVMSG) || !defined(_KERNEL_OPT)
-444	STD 		{ int|netbsd32|50|msgctl(int msqid, int cmd, \
+444	STD MODULAR compat_netbsd32_sysvipc	\
+	 		{ int|netbsd32|50|msgctl(int msqid, int cmd, \
 			    netbsd32_msqid_dsp_t buf); }
-#else
-444	EXCL 		____msgctl50
-#endif
 445	STD 		{ int|netbsd32|50|getrusage(int who, \
 			    netbsd32_rusagep_t rusage); }
 446	STD		{ int|netbsd32|50|timer_settime(timer_t timerid, \

Index: src/sys/modules/Makefile
diff -u src/sys/modules/Makefile:1.161 src/sys/modules/Makefile:1.162
--- src/sys/modules/Makefile:1.161	Thu Dec  3 02:51:01 2015
+++ src/sys/modules/Makefile	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.161 2015/12/03 02:51:01 pgoyette Exp $
+#	$NetBSD: Makefile,v 1.162 2015/12/03 10:38:21 pgoyette Exp $
 
 .include <bsd.own.mk>
 
@@ -211,6 +211,7 @@ SUBDIR+=	wmimsi
 SUBDIR+=	compat_netbsd32
 SUBDIR+=	compat_netbsd32_nfssrv
 SUBDIR+=	compat_netbsd32_mqueue
+SUBDIR+=	compat_netbsd32_sysvipc
 .endif
 
 .if ${MACHINE_ARCH} == "x86_64"
@@ -218,6 +219,7 @@ SUBDIR+=	compat_linux32
 SUBDIR+=	compat_netbsd32
 SUBDIR+=	compat_netbsd32_nfssrv
 SUBDIR+=	compat_netbsd32_mqueue
+SUBDIR+=	compat_netbsd32_sysvipc
 .endif
 
 .if ${MACHINE_ARCH} == "i386"

Index: src/sys/modules/compat_netbsd32/Makefile
diff -u src/sys/modules/compat_netbsd32/Makefile:1.17 src/sys/modules/compat_netbsd32/Makefile:1.18
--- src/sys/modules/compat_netbsd32/Makefile:1.17	Tue Dec  1 23:58:19 2015
+++ src/sys/modules/compat_netbsd32/Makefile	Thu Dec  3 10:38:21 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.17 2015/12/01 23:58:19 pgoyette Exp $
+#	$NetBSD: Makefile,v 1.18 2015/12/03 10:38:21 pgoyette Exp $
 
 .include "../Makefile.inc"
 .include "../Makefile.assym"
@@ -18,7 +18,7 @@ CPPFLAGS+=	-DCOMPAT_20
 CPPFLAGS+=	-DCOMPAT_30 -DCOMPAT_40 -DCOMPAT_50
 CPPFLAGS+=	-DCOMPAT_60 -DCOMPAT_70 -DCOMPAT_80
 CPPFLAGS+=	-DCOMPAT_43
-CPPFLAGS+=	-DSYSVSHM -DSYSVSEM -DSYSVMSG -DCOMPAT_NETBSD32
+CPPFLAGS+=	-DCOMPAT_NETBSD32
 CPPFLAGS+=	-DEXEC_ELF32 -DEXEC_ELF64
 CPPFLAGS+=	-DCOREDUMP -DNTP -DVMSWAP
 CPPFLAGS+=	-DNTP
@@ -32,7 +32,7 @@ SRCS+=	netbsd32_compat_50.c netbsd32_com
 SRCS+=	netbsd32_core.c netbsd32_event.c
 SRCS+=	netbsd32_exec_elf32.c
 SRCS+=	netbsd32_execve.c netbsd32_fs.c
-SRCS+=	netbsd32_ioctl.c netbsd32_ipc.c
+SRCS+=	netbsd32_ioctl.c
 SRCS+=	netbsd32_lwp.c netbsd32_netbsd.c
 SRCS+=	netbsd32_select.c
 SRCS+=	netbsd32_sem.c netbsd32_signal.c

Added files:

Index: src/sys/compat/netbsd32/netbsd32_compat_50_sysv.c
diff -u /dev/null src/sys/compat/netbsd32/netbsd32_compat_50_sysv.c:1.1
--- /dev/null	Thu Dec  3 10:38:21 2015
+++ src/sys/compat/netbsd32/netbsd32_compat_50_sysv.c	Thu Dec  3 10:38:21 2015
@@ -0,0 +1,210 @@
+/*	$NetBSD: netbsd32_compat_50_sysv.c,v 1.1 2015/12/03 10:38:21 pgoyette Exp $	*/
+
+/*-
+ * Copyright (c) 2008 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50_sysv.c,v 1.1 2015/12/03 10:38:21 pgoyette Exp $");
+
+#if defined(_KERNEL_OPT)
+#include "opt_sysv.h"
+#include "opt_compat_netbsd.h"
+#endif
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/msg.h>
+#include <sys/sem.h>
+#include <sys/shm.h>
+
+#include <compat/netbsd32/netbsd32.h>
+#include <compat/netbsd32/netbsd32_syscallargs.h>
+#include <compat/netbsd32/netbsd32_conv.h>
+
+#if defined(COMPAT_50)
+
+#if defined(SYSVSEM)
+
+int
+compat_50_netbsd32___semctl14(struct lwp *l, const struct compat_50_netbsd32___semctl14_args *uap, register_t *retval)
+{
+	return do_netbsd32___semctl14(l, uap, retval, NULL);
+}
+
+int
+do_netbsd32___semctl14(struct lwp *l, const struct compat_50_netbsd32___semctl14_args *uap, register_t *retval, void *vkarg)
+{
+	/* {
+		syscallarg(int) semid;
+		syscallarg(int) semnum;
+		syscallarg(int) cmd;
+		syscallarg(netbsd32_semun50p_t) arg;
+	} */
+	struct semid_ds sembuf;
+	struct netbsd32_semid_ds50 sembuf32;
+	int cmd, error;
+	void *pass_arg;
+	union __semun karg;
+	union netbsd32_semun50 karg32;
+
+	cmd = SCARG(uap, cmd);
+
+	switch (cmd) {
+	case IPC_SET:
+	case IPC_STAT:
+		pass_arg = &sembuf;
+		break;
+
+	case GETALL:
+	case SETVAL:
+	case SETALL:
+		pass_arg = &karg;
+		break;
+	default:
+		pass_arg = NULL;
+		break;
+	}
+
+	if (pass_arg) {
+		if (vkarg != NULL)
+			karg32 = *(union netbsd32_semun50 *)vkarg;
+		else {
+			error = copyin(SCARG_P32(uap, arg), &karg32,
+					sizeof(karg32));
+			if (error)
+				return error;
+		}
+		if (pass_arg == &karg) {
+			switch (cmd) {
+			case GETALL:
+			case SETALL:
+				karg.array = NETBSD32PTR64(karg32.array);
+				break;
+			case SETVAL:
+				karg.val = karg32.val;
+				break;
+			}
+		}
+		if (cmd == IPC_SET) {
+			error = copyin(NETBSD32PTR64(karg32.buf), &sembuf32,
+			    sizeof(sembuf32));
+			if (error)
+				return (error);
+			netbsd32_to_semid_ds50(&sembuf32, &sembuf);
+		}
+	}
+
+	error = semctl1(l, SCARG(uap, semid), SCARG(uap, semnum), cmd,
+	    pass_arg, retval);
+
+	if (error == 0 && cmd == IPC_STAT) {
+		netbsd32_from_semid_ds50(&sembuf, &sembuf32);
+		error = copyout(&sembuf32, NETBSD32PTR64(karg32.buf),
+		    sizeof(sembuf32));
+	}
+
+	return (error);
+}
+#endif
+
+#if defined(SYSVMSG)
+
+int
+compat_50_netbsd32___msgctl13(struct lwp *l, const struct compat_50_netbsd32___msgctl13_args *uap, register_t *retval)
+{
+	/* {
+		syscallarg(int) msqid;
+		syscallarg(int) cmd;
+		syscallarg(netbsd32_msqid_ds50p_t) buf;
+	} */
+	struct msqid_ds ds;
+	struct netbsd32_msqid_ds50 ds32;
+	int error, cmd;
+
+	cmd = SCARG(uap, cmd);
+	if (cmd == IPC_SET) {
+		error = copyin(SCARG_P32(uap, buf), &ds32, sizeof(ds32));
+		if (error)
+			return error;
+		netbsd32_to_msqid_ds50(&ds32, &ds);
+	}
+
+	error = msgctl1(l, SCARG(uap, msqid), cmd,
+	    (cmd == IPC_SET || cmd == IPC_STAT) ? &ds : NULL);
+
+	if (error == 0 && cmd == IPC_STAT) {
+		netbsd32_from_msqid_ds50(&ds, &ds32);
+		error = copyout(&ds32, SCARG_P32(uap, buf), sizeof(ds32));
+	}
+
+	return error;
+}
+#endif
+
+#if defined(SYSVSHM)
+
+int
+compat_50_netbsd32___shmctl13(struct lwp *l, const struct compat_50_netbsd32___shmctl13_args *uap, register_t *retval)
+{
+	/* {
+		syscallarg(int) shmid;
+		syscallarg(int) cmd;
+		syscallarg(netbsd32_shmid_ds50p_t) buf;
+	} */
+	struct shmid_ds ds;
+	struct netbsd32_shmid_ds50 ds32;
+	int error, cmd;
+
+	cmd = SCARG(uap, cmd);
+	if (cmd == IPC_SET) {
+		error = copyin(SCARG_P32(uap, buf), &ds32, sizeof(ds32));
+		if (error)
+			return error;
+		netbsd32_to_shmid_ds50(&ds32, &ds);
+	}
+
+	error = shmctl1(l, SCARG(uap, shmid), cmd,
+	    (cmd == IPC_SET || cmd == IPC_STAT) ? &ds : NULL);
+
+	if (error == 0 && cmd == IPC_STAT) {
+		netbsd32_from_shmid_ds50(&ds, &ds32);
+		error = copyout(&ds32, SCARG_P32(uap, buf), sizeof(ds32));
+	}
+
+	return error;
+}
+#endif
+
+#endif /* COMPAT_50 */

Index: src/sys/modules/compat_netbsd32_sysvipc/Makefile
diff -u /dev/null src/sys/modules/compat_netbsd32_sysvipc/Makefile:1.1
--- /dev/null	Thu Dec  3 10:38:21 2015
+++ src/sys/modules/compat_netbsd32_sysvipc/Makefile	Thu Dec  3 10:38:21 2015
@@ -0,0 +1,19 @@
+#	$NetBSD: Makefile,v 1.1 2015/12/03 10:38:21 pgoyette Exp $
+
+.include "../Makefile.inc"
+.include "../Makefile.assym"
+
+KMOD=	compat_netbsd32_sysvipc
+
+CPPFLAGS+=	-DCOMPAT_NETBSD32
+CPPFLAGS+=	-DCOMPAT_10 -DCOMPAT_13 -DCOMPAT_14 -DCOMPAT_50
+CPPFLAGS+=	-DSYSVSHM -DSYSVSEM -DSYSVMSG
+
+.PATH:	${S}/compat/netbsd32
+
+SRCS+=	netbsd32_ipc.c
+SRCS+=	netbsd32_compat_10.c
+SRCS+=	netbsd32_compat_14.c
+SRCS+=	netbsd32_compat_50_sysv.c
+
+.include <bsd.kmodule.mk>

Reply via email to