Module Name:    src
Committed By:   matt
Date:           Mon Dec 14 00:47:12 UTC 2009

Modified Files:
        src/sys/compat/common: Makefile.inc
        src/sys/compat/irix: files.irix irix_exec.c irix_exec.h
            irix_exec_elf32.c irix_fcntl.c irix_prctl.c irix_signal.c
            irix_sysmp.c irix_syssgi.c irix_types.h
        src/sys/compat/linux/arch/mips: linux_machdep.c
        src/sys/compat/netbsd32: netbsd32.h netbsd32_exec_elf32.c netbsd32_fs.c
            netbsd32_netbsd.c netbsd32_syscall.h netbsd32_syscallargs.h
            netbsd32_syscalls.c netbsd32_sysent.c syscalls.master
        src/sys/compat/ultrix: ultrix_flock.h ultrix_fs.c ultrix_ioctl.c
            ultrix_pathname.c ultrix_tty.h
Added Files:
        src/sys/compat/irix: irix_exec_elf64.c

Log Message:
Merge from matt-nb5-mips64


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/compat/common/Makefile.inc
cvs rdiff -u -r1.26 -r1.27 src/sys/compat/irix/files.irix
cvs rdiff -u -r1.55 -r1.56 src/sys/compat/irix/irix_exec.c
cvs rdiff -u -r1.27 -r1.28 src/sys/compat/irix/irix_exec.h \
    src/sys/compat/irix/irix_fcntl.c
cvs rdiff -u -r1.15 -r1.16 src/sys/compat/irix/irix_exec_elf32.c
cvs rdiff -u -r0 -r1.2 src/sys/compat/irix/irix_exec_elf64.c
cvs rdiff -u -r1.49 -r1.50 src/sys/compat/irix/irix_prctl.c \
    src/sys/compat/irix/irix_syssgi.c
cvs rdiff -u -r1.52 -r1.53 src/sys/compat/irix/irix_signal.c
cvs rdiff -u -r1.22 -r1.23 src/sys/compat/irix/irix_sysmp.c
cvs rdiff -u -r1.18 -r1.19 src/sys/compat/irix/irix_types.h
cvs rdiff -u -r1.39 -r1.40 src/sys/compat/linux/arch/mips/linux_machdep.c
cvs rdiff -u -r1.83 -r1.84 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.30 -r1.31 src/sys/compat/netbsd32/netbsd32_exec_elf32.c
cvs rdiff -u -r1.57 -r1.58 src/sys/compat/netbsd32/netbsd32_fs.c
cvs rdiff -u -r1.162 -r1.163 src/sys/compat/netbsd32/netbsd32_netbsd.c
cvs rdiff -u -r1.88 -r1.89 src/sys/compat/netbsd32/netbsd32_syscall.h \
    src/sys/compat/netbsd32/netbsd32_syscallargs.h
cvs rdiff -u -r1.87 -r1.88 src/sys/compat/netbsd32/netbsd32_syscalls.c \
    src/sys/compat/netbsd32/netbsd32_sysent.c
cvs rdiff -u -r1.80 -r1.81 src/sys/compat/netbsd32/syscalls.master
cvs rdiff -u -r1.1 -r1.2 src/sys/compat/ultrix/ultrix_flock.h
cvs rdiff -u -r1.50 -r1.51 src/sys/compat/ultrix/ultrix_fs.c
cvs rdiff -u -r1.35 -r1.36 src/sys/compat/ultrix/ultrix_ioctl.c
cvs rdiff -u -r1.37 -r1.38 src/sys/compat/ultrix/ultrix_pathname.c
cvs rdiff -u -r1.2 -r1.3 src/sys/compat/ultrix/ultrix_tty.h

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

Modified files:

Index: src/sys/compat/common/Makefile.inc
diff -u src/sys/compat/common/Makefile.inc:1.19 src/sys/compat/common/Makefile.inc:1.20
--- src/sys/compat/common/Makefile.inc:1.19	Sat Nov  2 07:49:57 2002
+++ src/sys/compat/common/Makefile.inc	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.19 2002/11/02 07:49:57 perry Exp $
+#	$NetBSD: Makefile.inc,v 1.20 2009/12/14 00:47:10 matt Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -41,7 +41,8 @@
 	    LORDER=${LORDER:Q} \
 	    TSORT=${TSORT:Q} \
 	    RANLIB=${RANLIB:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
+	    LD=${LD:Q} LDFLAGS=${LDFLAGS:Q} \
+	    STRIP=${STRIP:Q} \
 	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
 	    COMPATCPPFLAGS=${CPPFLAGS:s...@^-i.@-i${compatdotd...@g:Q} \
 	    LINTFLAGS=${KERNLINTFLAGS:Q} \

Index: src/sys/compat/irix/files.irix
diff -u src/sys/compat/irix/files.irix:1.26 src/sys/compat/irix/files.irix:1.27
--- src/sys/compat/irix/files.irix:1.26	Wed Nov 19 18:36:03 2008
+++ src/sys/compat/irix/files.irix	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: files.irix,v 1.26 2008/11/19 18:36:03 ad Exp $
+#	$NetBSD: files.irix,v 1.27 2009/12/14 00:47:10 matt Exp $
 #
 
 file	arch/mips/mips/irix_syscall.c		compat_irix
@@ -7,6 +7,7 @@
 file	compat/irix/irix_errno.c		compat_irix
 file	compat/irix/irix_exec.c			compat_irix
 file	compat/irix/irix_exec_elf32.c		compat_irix & exec_elf32
+file	compat/irix/irix_exec_elf64.c		compat_irix & exec_elf64
 file	compat/irix/irix_fcntl.c		compat_irix
 file	compat/irix/irix_ioctl.c		compat_irix
 file	compat/irix/irix_kmem.c			compat_irix

Index: src/sys/compat/irix/irix_exec.c
diff -u src/sys/compat/irix/irix_exec.c:1.55 src/sys/compat/irix/irix_exec.c:1.56
--- src/sys/compat/irix/irix_exec.c:1.55	Thu Dec 10 14:13:53 2009
+++ src/sys/compat/irix/irix_exec.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_exec.c,v 1.55 2009/12/10 14:13:53 matt Exp $ */
+/*	$NetBSD: irix_exec.c,v 1.56 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001-2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_exec.c,v 1.55 2009/12/10 14:13:53 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_exec.c,v 1.56 2009/12/14 00:47:10 matt Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_syscall_debug.h"
@@ -124,10 +124,13 @@
 void
 irix_n32_setregs(struct lwp *l, struct exec_package *pack, vaddr_t stack)
 {
-	struct frame *f = (struct frame *)l->l_md.md_regs;
+	struct frame *f = l->l_md.md_regs;
 
 	/* Enable 64 bit instructions (eg: sd) */
-	f->f_regs[_R_SR] |= MIPS3_SR_UX;
+	f->f_regs[_R_SR] |= MIPS3_SR_UX | MIPS3_SR_FR;
+#ifdef _LP64
+	f->f_regs[_R_SR] |= MIPS3_SR_KX;
+#endif
 }
 
 /*

Index: src/sys/compat/irix/irix_exec.h
diff -u src/sys/compat/irix/irix_exec.h:1.27 src/sys/compat/irix/irix_exec.h:1.28
--- src/sys/compat/irix/irix_exec.h:1.27	Thu Dec 10 14:13:53 2009
+++ src/sys/compat/irix/irix_exec.h	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_exec.h,v 1.27 2009/12/10 14:13:53 matt Exp $ */
+/*	$NetBSD: irix_exec.h,v 1.28 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001-2002 The NetBSD Foundation, Inc.
@@ -93,7 +93,7 @@
 int irix_elf64_copyargs(struct lwp *, struct exec_package *,
     struct ps_strings *, char **, void *);
 
-int irix_elf64_probe(struct lwp *, struct exec_package *, void *,
+int irix_elf64_probe_n64(struct lwp *, struct exec_package *, void *,
     char *, vaddr_t *);
 #endif
 
Index: src/sys/compat/irix/irix_fcntl.c
diff -u src/sys/compat/irix/irix_fcntl.c:1.27 src/sys/compat/irix/irix_fcntl.c:1.28
--- src/sys/compat/irix/irix_fcntl.c:1.27	Mon Aug 31 05:34:16 2009
+++ src/sys/compat/irix/irix_fcntl.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_fcntl.c,v 1.27 2009/08/31 05:34:16 dholland Exp $ */
+/*	$NetBSD: irix_fcntl.c,v 1.28 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001-2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_fcntl.c,v 1.27 2009/08/31 05:34:16 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_fcntl.c,v 1.28 2009/12/14 00:47:10 matt Exp $");
 
 #include <sys/types.h>
 #include <sys/signal.h>

Index: src/sys/compat/irix/irix_exec_elf32.c
diff -u src/sys/compat/irix/irix_exec_elf32.c:1.15 src/sys/compat/irix/irix_exec_elf32.c:1.16
--- src/sys/compat/irix/irix_exec_elf32.c:1.15	Mon Apr 28 20:23:41 2008
+++ src/sys/compat/irix/irix_exec_elf32.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_exec_elf32.c,v 1.15 2008/04/28 20:23:41 martin Exp $ */
+/*	$NetBSD: irix_exec_elf32.c,v 1.16 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -30,12 +30,14 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_exec_elf32.c,v 1.15 2008/04/28 20:23:41 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_exec_elf32.c,v 1.16 2009/12/14 00:47:10 matt Exp $");
 
 #ifndef ELFSIZE
 #define ELFSIZE		32	/* XXX should die */
 #endif
 
+#include "opt_execfmt.h"
+
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/systm.h>
@@ -56,16 +58,13 @@
 
 #include <compat/irix/irix_exec.h>
 
+#if ELFSIZE == 32
 /*
  * IRIX o32 ABI probe function
  */
 int
-ELFNAME2(irix,probe_o32)(l, epp, eh, itp, pos)
-	struct lwp *l;
-	struct exec_package *epp;
-	void *eh;
-	char *itp;
-	vaddr_t *pos;
+ELFNAME2(irix,probe_o32)(struct lwp *l, struct exec_package *epp, void *eh,
+	char *itp, vaddr_t *pos)
 {
 	int error = 0;
 
@@ -90,6 +89,7 @@
 	printf("epp->ep_vm_minaddr = 0x%lx\n", epp->ep_vm_minaddr);
 #endif
 	epp->ep_vm_minaddr = epp->ep_vm_minaddr & ~0xfUL;
+	l->l_proc->p_md.md_abi = _MIPS_BSD_API_O32;
 	return 0;
 }
 
@@ -97,12 +97,8 @@
  * IRIX n32 ABI probe function
  */
 int
-ELFNAME2(irix,probe_n32)(l, epp, eh, itp, pos)
-	struct lwp *l;
-	struct exec_package *epp;
-	void *eh;
-	char *itp;
-	vaddr_t *pos;
+ELFNAME2(irix,probe_n32)(struct lwp *l, struct exec_package *epp, void *eh,
+	char *itp, vaddr_t *pos)
 {
 	int error = 0;
 
@@ -126,8 +122,45 @@
 	printf("epp->ep_vm_minaddr = 0x%lx\n", epp->ep_vm_minaddr);
 #endif
 	epp->ep_vm_minaddr = epp->ep_vm_minaddr & ~0xfUL;
+	l->l_proc->p_md.md_abi = _MIPS_BSD_API_N32;
+	return 0;
+}
+#endif /* ELFSIZE == 32 */
+
+#if ELFSIZE == 64
+/*
+ * IRIX n64 ABI probe function
+ */
+int
+irix_elf64_probe_n64(struct lwp *l, struct exec_package *epp, void *eh,
+	char *itp, vaddr_t *pos)
+{
+	int error = 0;
+
+#ifdef DEBUG_IRIX
+	printf("irix_probe_n64()\n");
+#endif
+	if ((((Elf_Ehdr *)epp->ep_hdr)->e_flags & IRIX_EF_IRIX_ABI_MASK) !=
+	    IRIX_EF_IRIX_ABI64)
+		return error;
+
+	if (itp) {
+		/* n32 binaries use /lib64/libc.so.1 */
+		if (strncmp(itp, "/lib64/libc.so", 14) &&
+		    strncmp(itp, "/usr/lib64/libc.so", 18))
+			return ENOEXEC;
+		if ((error = emul_find_interp(l, epp, itp)))
+			return error;
+	}
+#ifdef DEBUG_IRIX
+	printf("irix_probe_n32: returning 0\n");
+	printf("epp->ep_vm_minaddr = 0x%lx\n", epp->ep_vm_minaddr);
+#endif
+	epp->ep_vm_minaddr = epp->ep_vm_minaddr & ~0xfUL;
+	l->l_proc->p_md.md_abi = _MIPS_BSD_API_N32;
 	return 0;
 }
+#endif /* ELFSIZE == 64 */
 
 int
 ELFNAME2(irix,copyargs)(l, pack, arginfo, stackp, argp)
@@ -152,7 +185,7 @@
 	 * the code that sets up the stack in copyargs():
 	 */
 #ifdef DEBUG_IRIX
-	printf("irix_elf32_copyargs(): *stackp = %p\n", *stackp);
+	printf("%s(): *stackp = %p\n", __func__, *stackp);
 #endif
 	/*
 	 * This is borrowed from sys/kern/kern_exec.c:copyargs()

Index: src/sys/compat/irix/irix_prctl.c
diff -u src/sys/compat/irix/irix_prctl.c:1.49 src/sys/compat/irix/irix_prctl.c:1.50
--- src/sys/compat/irix/irix_prctl.c:1.49	Wed Mar 18 16:00:16 2009
+++ src/sys/compat/irix/irix_prctl.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_prctl.c,v 1.49 2009/03/18 16:00:16 cegger Exp $ */
+/*	$NetBSD: irix_prctl.c,v 1.50 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001-2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_prctl.c,v 1.49 2009/03/18 16:00:16 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_prctl.c,v 1.50 2009/12/14 00:47:10 matt Exp $");
 
 #include <sys/errno.h>
 #include <sys/types.h>
@@ -101,9 +101,9 @@
 		int shmask = 0;
 		struct irix_emuldata *ied;
 
-		p2 = pfind((pid_t)SCARG(uap, arg1));
+		p2 = pfind((pid_t)(uintptr_t)SCARG(uap, arg1));
 
-		if (p2 == p || SCARG(uap, arg1) == 0) {
+		if (p2 == p || SCARG(uap, arg1) == NULL) {
 			/* XXX return our own shmask */
 			return 0;
 		}
@@ -160,7 +160,7 @@
 	}
 
 	case IRIX_PR_ISBLOCKED: {	/* Is process blocked? */
-		pid_t pid = (pid_t)SCARG(uap, arg1);
+		pid_t pid = (pid_t)(uintptr_t)SCARG(uap, arg1);
 		struct irix_emuldata *ied;
 		struct proc *target;
 
Index: src/sys/compat/irix/irix_syssgi.c
diff -u src/sys/compat/irix/irix_syssgi.c:1.49 src/sys/compat/irix/irix_syssgi.c:1.50
--- src/sys/compat/irix/irix_syssgi.c:1.49	Sun Jan 11 20:00:06 2009
+++ src/sys/compat/irix/irix_syssgi.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_syssgi.c,v 1.49 2009/01/11 20:00:06 rumble Exp $ */
+/*	$NetBSD: irix_syssgi.c,v 1.50 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001, 2002, 2008 The NetBSD Foundation, Inc.
@@ -30,15 +30,19 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_syssgi.c,v 1.49 2009/01/11 20:00:06 rumble Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_syssgi.c,v 1.50 2009/12/14 00:47:10 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ddb.h"
 #endif
 
 #ifndef ELFSIZE
+#ifdef _LP64
+#define ELFSIZE 64
+#else
 #define ELFSIZE 32
 #endif
+#endif
 
 /* round up and down to page boundaries. Borrowed from sys/kern/exec_elf32.c */
 #define ELF_ROUND(a, b)         (((a) + (b) - 1) & ~((b) - 1))
@@ -109,7 +113,7 @@
 	case IRIX_SGI_SETGROUPS: {	/* setgroups(2) */
 		struct sys_setgroups_args cup;
 
-		SCARG(&cup, gidsetsize) = (int)SCARG(uap, arg1);
+		SCARG(&cup, gidsetsize) = (intptr_t)SCARG(uap, arg1);
 		SCARG(&cup, gidset) = (gid_t *)SCARG(uap, arg2);
 		return (sys_setgroups(l, &cup, retval));
 		break;
@@ -118,7 +122,7 @@
 	case IRIX_SGI_GETGROUPS: {	/* getgroups(2) */
 		struct sys_getgroups_args cup;
 
-		SCARG(&cup, gidsetsize) = (int)SCARG(uap, arg1);
+		SCARG(&cup, gidsetsize) = (intptr_t)SCARG(uap, arg1);
 		SCARG(&cup, gidset) = (gid_t *)SCARG(uap, arg2);
 		return (sys_getgroups(l, &cup, retval));
 		break;
@@ -131,7 +135,7 @@
 	case IRIX_SGI_GETSID: {	/* Get session ID: getsid(2) */
 		struct sys_getsid_args cup;
 
-		SCARG(&cup, pid) = (pid_t)SCARG(uap, arg1);
+		SCARG(&cup, pid) = (pid_t)(intptr_t)SCARG(uap, arg1);
 		return (sys_getsid(l, &cup, retval));
 		break;
 	}
@@ -139,7 +143,7 @@
 	case IRIX_SGI_GETPGID: {/* Get parent process GID: getpgid(2) */
 		struct sys_getpgid_args cup;
 
-		SCARG(&cup, pid) = (pid_t)SCARG(uap, arg1);
+		SCARG(&cup, pid) = (pid_t)(intptr_t)SCARG(uap, arg1);
 		return (sys_getpgid(l, &cup, retval));
 		break;
 	}
@@ -147,24 +151,23 @@
 	case IRIX_SGI_SETPGID: {/* Get parent process GID: setpgid(2) */
 		struct sys_setpgid_args cup;
 
-		SCARG(&cup, pid) = (pid_t)SCARG(uap, arg1);
-		SCARG(&cup, pgid) = (pid_t)SCARG(uap, arg2);
+		SCARG(&cup, pid) = (pid_t)(intptr_t)SCARG(uap, arg1);
+		SCARG(&cup, pgid) = (pid_t)(intptr_t)SCARG(uap, arg2);
 		return (sys_setpgid(l, &cup, retval));
 		break;
 	}
 
 	case IRIX_SGI_PATHCONF: /* Get file limits: pathconf(3) */
 		return irix_syssgi_pathconf((char *)SCARG(uap, arg1),
-		    (int)SCARG(uap, arg2), l, retval);
+		    (intptr_t)SCARG(uap, arg2), l, retval);
 		break;
 
 	case IRIX_SGI_RUSAGE: {	/* BSD getrusage(2) */
 		struct compat_50_sys_getrusage_args cup;
 
-		SCARG(&cup, who) = (int)SCARG(uap, arg1);
+		SCARG(&cup, who) = (intptr_t)SCARG(uap, arg1);
 		SCARG(&cup, rusage) = (struct rusage50 *)SCARG(uap, arg2);
 		return compat_50_sys_getrusage(l, &cup, retval);
-		break;
 	}
 
 	case IRIX_SGI_NUM_MODULES: /* <sys/systeminfo.h> get_num_modules() */
@@ -173,9 +176,9 @@
 		break;
 
 	case IRIX_SGI_MODULE_INFO: { /* <sys/systeminfo.h> get_module_info() */
-		int module_num = (int)SCARG(uap, arg1);
+		int module_num = (intptr_t)SCARG(uap, arg1);
 		struct irix_module_info_s *imip = SCARG(uap, arg2);
-		int mss = (int)SCARG(uap, arg3);
+		int mss = (intptr_t)SCARG(uap, arg3);
 		struct irix_module_info_s imi;
 		char *idx;
 
@@ -206,7 +209,7 @@
 		arg1 = SCARG(uap, arg1); /* PID of the process */
 		arg2 = SCARG(uap, arg2); /* Address of user buffer */
 		arg3 = SCARG(uap, arg3); /* Length of user buffer */
-		tp = pfind((pid_t)arg1);
+		tp = pfind((pid_t)(intptr_t)arg1);
 		if (tp == NULL || \
 		    tp->p_psstr == NULL || \
 		    tp->p_psstr->ps_argvstr == NULL || \
@@ -231,8 +234,8 @@
 		 arg1 = SCARG(uap, arg1); /* file descriptor  */
 		 arg2 = SCARG(uap, arg2); /* ptr to ELF program header array */
 		 arg3 = SCARG(uap, arg3); /* array's length */
-		return irix_syssgi_mapelf((int)arg1, (Elf_Phdr *)arg2,
-		    (int)arg3, l, retval);
+		return irix_syssgi_mapelf((intptr_t)arg1, (Elf_Phdr *)arg2,
+		    (intptr_t)arg3, l, retval);
 		break;
 
 	case IRIX_SGI_USE_FP_BCOPY:	/* bcopy and bzero can use FPU or not */
@@ -250,7 +253,7 @@
 
 	case IRIX_SGI_SYSCONF:		/* POSIX sysconf */
 		arg1 = SCARG(uap, arg1); /* system variable name */
-		return irix_syssgi_sysconf((int)arg1, l, retval);
+		return irix_syssgi_sysconf((intptr_t)arg1, l, retval);
 		break;
 
 	case IRIX_SGI_SATCTL:		/* control audit stream */

Index: src/sys/compat/irix/irix_signal.c
diff -u src/sys/compat/irix/irix_signal.c:1.52 src/sys/compat/irix/irix_signal.c:1.53
--- src/sys/compat/irix/irix_signal.c:1.52	Mon Nov 23 00:46:06 2009
+++ src/sys/compat/irix/irix_signal.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_signal.c,v 1.52 2009/11/23 00:46:06 rmind Exp $ */
+/*	$NetBSD: irix_signal.c,v 1.53 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 1994, 2001-2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_signal.c,v 1.52 2009/11/23 00:46:06 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_signal.c,v 1.53 2009/12/14 00:47:10 matt Exp $");
 
 #include <sys/types.h>
 #include <sys/signal.h>
@@ -140,7 +140,7 @@
 	}
 	isi->isi_signo = native_to_svr4_signo[sig];
 	isi->isi_errno = 0;
-	isi->isi_addr = (irix_app32_ptr_t)addr;
+	isi->isi_addr = (intptr_t)addr;
 
 	switch (code) {
 	case T_TLB_MOD:
@@ -244,20 +244,19 @@
 	struct lwp *l = curlwp;
 	struct proc *p = l->l_proc;
 	void *sp;
-	struct frame *f;
+	struct frame *f = l->l_md.md_regs;
 	int onstack;
 	int error;
 	sig_t catcher = SIGACTION(p, ksi->ksi_signo).sa_handler;
 	struct irix_sigframe sf;
 
-	f = (struct frame *)l->l_md.md_regs;
 #ifdef DEBUG_IRIX
 	printf("irix_sendsig()\n");
 	printf("catcher = %p, sig = %d, code = 0x%x\n",
 	    (void *)catcher, ksi->ksi_signo, ksi->ksi_trap);
-	printf("irix_sendsig(): starting [PC=%p SP=%p SR=0x%08lx]\n",
-	    (void *)f->f_regs[_R_PC], (void *)f->f_regs[_R_SP],
-	    f->f_regs[_R_SR]);
+	printf("irix_sendsig(): starting [PC=0x%#"PRIxREGISTER
+	    " SP=%#"PRIxREGISTER" SR=0x%08lx]\n",
+	    f->f_regs[_R_PC], f->f_regs[_R_SP], f->f_regs[_R_SR]);
 #endif /* DEBUG_IRIX */
 
 	/*
@@ -277,8 +276,8 @@
 		sp = (void *)((char *)l->l_sigstk.ss_sp
 		    + l->l_sigstk.ss_size);
 	else
-		/* cast for _MIPS_BSD_API == _MIPS_BSD_API_LP32_64CLEAN case */
-		sp = (void *)(u_int32_t)f->f_regs[_R_SP];
+		/* cast for O64 case */
+		sp = (void *)(intptr_t)f->f_regs[_R_SP];
 
 	/*
 	 * Build the signal frame
@@ -295,8 +294,8 @@
 	/*
 	 * Compute the new stack address after copying sigframe
 	 */
-	sp = (void *)((unsigned long)sp - sizeof(sf.isf_ctx));
-	sp = (void *)((unsigned long)sp & ~0xfUL); /* 16 bytes alignement */
+	sp = (void *)((intptr_t)sp - sizeof(sf.isf_ctx));
+	sp = (void *)((intptr_t)sp & ~0xfUL); /* 16 bytes alignement */
 
 	/*
 	 * Install the sigframe onto the stack
@@ -324,8 +323,8 @@
 	 */
 	f->f_regs[_R_A0] = native_to_svr4_signo[ksi->ksi_signo];/* signo */
 	f->f_regs[_R_A1] = 0;			/* NULL */
-	f->f_regs[_R_A2] = (unsigned long)sp;	/* ucontext/sigcontext */
-	f->f_regs[_R_A3] = (unsigned long)catcher;/* signal handler address */
+	f->f_regs[_R_A2] = (intptr_t)sp;	/* ucontext/sigcontext */
+	f->f_regs[_R_A3] = (intptr_t)catcher;	/* signal handler address */
 
 	/*
 	 * When siginfo is selected, the higher bit of A0 is set
@@ -335,14 +334,14 @@
 	 */
 	if (SIGACTION(p, ksi->ksi_signo).sa_flags & SA_SIGINFO) {
 		f->f_regs[_R_A0] |= 0x80000000;
-		f->f_regs[_R_A1] = (u_long)sp +
-		    ((u_long)&sf.isf_ctx.iss.iis - (u_long)&sf);
+		f->f_regs[_R_A1] = (intptr_t)sp +
+		    ((intptr_t)&sf.isf_ctx.iss.iis - (intptr_t)&sf);
 	}
 
 	/*
 	 * Set up the new stack pointer
 	 */
-	f->f_regs[_R_SP] = (unsigned long)sp;
+	f->f_regs[_R_SP] = (intptr_t)sp;
 #ifdef DEBUG_IRIX
 	printf("stack pointer at %p, A1 = %p\n", sp, (void *)f->f_regs[_R_A1]);
 #endif /* DEBUG_IRIX */
@@ -353,7 +352,7 @@
 	 * see irix_sys_sigaction for details about how we get
 	 * the signal trampoline address.
 	 */
-	f->f_regs[_R_PC] = (unsigned long)
+	f->f_regs[_R_PC] = (intptr_t)
 	    (((struct irix_emuldata *)(p->p_emuldata))->ied_sigtramp[ksi->ksi_signo]);
 
 	/*
@@ -365,7 +364,6 @@
 #ifdef DEBUG_IRIX
 	printf("returning from irix_sendsig()\n");
 #endif
-	return;
 }
 
 static void
@@ -391,7 +389,7 @@
 	}
 	scp->isc_regs[0] = 0;
 	scp->isc_fp_rounded_result = 0;
-	scp->isc_regmask = ~0x1UL;
+	scp->isc_regmask = -2;
 	scp->isc_mdhi = f->f_regs[_R_MULHI];
 	scp->isc_mdlo = f->f_regs[_R_MULLO];
 	scp->isc_pc = f->f_regs[_R_PC];

Index: src/sys/compat/irix/irix_sysmp.c
diff -u src/sys/compat/irix/irix_sysmp.c:1.22 src/sys/compat/irix/irix_sysmp.c:1.23
--- src/sys/compat/irix/irix_sysmp.c:1.22	Sat Nov 28 20:09:56 2009
+++ src/sys/compat/irix/irix_sysmp.c	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_sysmp.c,v 1.22 2009/11/28 20:09:56 dsl Exp $ */
+/*	$NetBSD: irix_sysmp.c,v 1.23 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001-2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: irix_sysmp.c,v 1.22 2009/11/28 20:09:56 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irix_sysmp.c,v 1.23 2009/12/14 00:47:10 matt Exp $");
 
 #include <sys/errno.h>
 #include <sys/param.h>
@@ -89,16 +89,16 @@
 		break;
 
 	case IRIX_MP_KERNADDR: 	/* Kernel structure addresses */
-		return irix_sysmp_kernaddr((int)SCARG(uap, arg1), retval);
+		return irix_sysmp_kernaddr((intptr_t)SCARG(uap, arg1), retval);
 		break;
 
 	case IRIX_MP_SASZ: 	/* System accounting structure size */
-		return irix_sysmp_sasz((int)SCARG(uap, arg1), retval);
+		return irix_sysmp_sasz((intptr_t)SCARG(uap, arg1), retval);
 		break;
 
 	case IRIX_MP_SAGET1: /* Get system accounting structure for one CPU */
 	case IRIX_MP_SAGET:  /* Get system accounting structure for all CPU */
-		return irix_sysmp_saget((int)SCARG(uap, arg1),
+		return irix_sysmp_saget((intptr_t)SCARG(uap, arg1),
 		    (char *)SCARG(uap, arg2), (size_t)SCARG(uap, arg3));
 		break;
 

Index: src/sys/compat/irix/irix_types.h
diff -u src/sys/compat/irix/irix_types.h:1.18 src/sys/compat/irix/irix_types.h:1.19
--- src/sys/compat/irix/irix_types.h:1.18	Mon Apr 28 20:23:42 2008
+++ src/sys/compat/irix/irix_types.h	Mon Dec 14 00:47:10 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: irix_types.h,v 1.18 2008/04/28 20:23:42 martin Exp $ */
+/*	$NetBSD: irix_types.h,v 1.19 2009/12/14 00:47:10 matt Exp $ */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
 typedef __uint32_t irix_app32_ptr_t;
 typedef __uint64_t irix_k_sigset_t;
 
-#if 1 /* _MIPS_SZLONG == 32 */
+#if _MIPS_SZLONG == 32
 typedef unsigned long irix_mode_t;
 typedef unsigned long irix_dev_t;
 typedef long irix_uid_t;
@@ -65,17 +65,17 @@
 typedef unsigned long irix_nlink_t;
 typedef long irix_pid_t;
 typedef long irix_time_t;
-typedef unsigned int irix_size_t;
+typedef unsigned long irix_size_t;
 #endif
-#if 0 /* _MIPS_SZLONG == 64 */
+#if _MIPS_SZLONG == 64
 typedef __uint32_t irix_dev_t;
 typedef __uint32_t irix_mode_t;
 typedef __int32_t irix_uid_t;
 typedef __int32_t irix_gid_t;
 typedef __uint32_t irix_nlink_t;
 typedef __int32_t irix_pid_t;
-typedef int irix_time_t;
-typedef unsigned long irix_size_t;
+typedef __int32_t irix_time_t;
+typedef __uint32_t irix_size_t;
 #endif
 typedef __int32_t irix_blkcnt_t;
 typedef __uint64_t irix_ino64_t;
@@ -107,46 +107,46 @@
 #define IRIX__STAT64_VER 3
 struct irix_stat {
 	irix_dev_t	ist_dev;
-	long		ist_pad1[3];
+	__uint32_t	ist_pad1[3];
 	irix_ino_t	ist_ino;
 	irix_mode_t	ist_mode;
 	irix_nlink_t	ist_nlink;
 	irix_uid_t	ist_uid;
 	irix_gid_t	ist_gid;
 	irix_dev_t	ist_rdev;
-	long		ist_pad2[2];
+	__uint32_t	ist_pad2[2];
 	irix_off_t	ist_size;
-	long		ist_pad3;
+	__uint32_t	ist_pad3;
 	irix_timespec_t	ist_atim;
 	irix_timespec_t	ist_mtim;
 	irix_timespec_t	ist_ctim;
-	long		ist_blksize;
+	__int32_t	ist_blksize;
 	irix_blkcnt_t	ist_blocks;
 	char		ist_fstype[16];
-	long		ist_projid;
-	long		ist_pad4[7];
+	__int32_t	ist_projid;
+	__uint32_t	ist_pad4[7];
 };
 
 struct irix_stat64 {
 	irix_dev_t	ist_dev;
-	long		ist_pad1[3];
+	__uint32_t	ist_pad1[3];
 	irix_ino64_t	ist_ino;
 	irix_mode_t	ist_mode;
 	irix_nlink_t	ist_nlink;
 	irix_uid_t	ist_uid;
 	irix_gid_t	ist_gid;
 	irix_dev_t	ist_rdev;
-	long		ist_pad2[2];
+	__uint32_t	ist_pad2[2];
 	irix_off64_t	ist_size;
-	long		ist_pad3;
+	__uint32_t	ist_pad3;
 	irix_timespec_t	ist_atim;
 	irix_timespec_t	ist_mtim;
 	irix_timespec_t	ist_ctim;
-	long		ist_blksize;
+	__int32_t	ist_blksize;
 	irix_blkcnt64_t	ist_blocks;
 	char		ist_fstype[16];
-	long		ist_projid;
-	long		ist_pad4[7];
+	__int32_t	ist_projid;
+	__uint32_t	ist_pad4[7];
 };
 
 /* From IRIX's <sys/mount.h> */

Index: src/sys/compat/linux/arch/mips/linux_machdep.c
diff -u src/sys/compat/linux/arch/mips/linux_machdep.c:1.39 src/sys/compat/linux/arch/mips/linux_machdep.c:1.40
--- src/sys/compat/linux/arch/mips/linux_machdep.c:1.39	Mon Nov 23 00:46:07 2009
+++ src/sys/compat/linux/arch/mips/linux_machdep.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_machdep.c,v 1.39 2009/11/23 00:46:07 rmind Exp $ */
+/*	$NetBSD: linux_machdep.c,v 1.40 2009/12/14 00:47:11 matt Exp $ */
 
 /*-
  * Copyright (c) 1995, 2000, 2001 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.39 2009/11/23 00:46:07 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.40 2009/12/14 00:47:11 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -144,11 +144,11 @@
 	 */
 	if (onstack)
 		fp = (struct linux_sigframe *)
-		    ((uint8_t *)l->l_sigstk.ss_sp
+		    ((uintptr_t)l->l_sigstk.ss_sp
 		    + l->l_sigstk.ss_size);
 	else
-		/* cast for _MIPS_BSD_API == _MIPS_BSD_API_LP32_64CLEAN case */
-		fp = (struct linux_sigframe *)(u_int32_t)f->f_regs[_R_SP];
+		/* cast for O64 ABI case */
+		fp = (struct linux_sigframe *)(uintptr_t)f->f_regs[_R_SP];
 
 	/*
 	 * Build stack frame for signal trampoline.

Index: src/sys/compat/netbsd32/netbsd32.h
diff -u src/sys/compat/netbsd32/netbsd32.h:1.83 src/sys/compat/netbsd32/netbsd32.h:1.84
--- src/sys/compat/netbsd32/netbsd32.h:1.83	Sat Dec 12 10:32:26 2009
+++ src/sys/compat/netbsd32/netbsd32.h	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.83 2009/12/12 10:32:26 njoly Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.84 2009/12/14 00:47:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008 Matthew R. Green
@@ -44,6 +44,7 @@
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #include <sys/ucontext.h>
+#include <sys/ucred.h>
 #include <compat/sys/ucontext.h>
 #include <compat/sys/mount.h>
 
@@ -252,6 +253,17 @@
 	char	f_mntfromname[MNAMELEN];  /* mounted file system */
 };
 
+struct netbsd32_export_args30 {
+	int	ex_flags;		/* export related flags */
+	uid_t	ex_root;		/* mapping for root uid */
+	struct	uucred ex_anon;		/* mapping for anonymous user */
+	netbsd32_pointer_t ex_addr;	/* net address to which exported */
+	int	ex_addrlen;		/* and the net address length */
+	netbsd32_pointer_t ex_mask;	/* mask of valid bits in saddr */
+	int	ex_masklen;		/* and the smask length */
+	netbsd32_charp ex_indexfile;	/* index file for WebNFS URLs */ 
+};
+
 /* from <sys/poll.h> */
 typedef netbsd32_pointer_t netbsd32_pollfdp_t;
 
@@ -813,6 +825,25 @@
 typedef netbsd32_pointer_t netbsd32_sched_paramp_t;
 typedef netbsd32_pointer_t netbsd32_cpusetp_t;
 
+/* from <fs/cd9660/cd9660_mount.h> */
+struct netbsd32_iso_args {
+	netbsd32_charp fspec;
+	struct export_args30 _pad1;
+	int	flags;
+};
+
+/* from <ufs/ufs/ufs_mount.h> */
+struct netbsd32_ufs_args {
+	netbsd32_charp		fspec;
+};
+
+struct netbsd32_mfs_args {
+	netbsd32_charp		fspec;
+	struct netbsd32_export_args30	_pad1;
+	netbsd32_voidp		base;
+	netbsd32_u_long		size;
+};
+
 #if 0
 int	netbsd32_kevent(struct lwp *, void *, register_t *);
 #endif

Index: src/sys/compat/netbsd32/netbsd32_exec_elf32.c
diff -u src/sys/compat/netbsd32/netbsd32_exec_elf32.c:1.30 src/sys/compat/netbsd32/netbsd32_exec_elf32.c:1.31
--- src/sys/compat/netbsd32/netbsd32_exec_elf32.c:1.30	Mon Jun 29 05:08:16 2009
+++ src/sys/compat/netbsd32/netbsd32_exec_elf32.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_exec_elf32.c,v 1.30 2009/06/29 05:08:16 dholland Exp $	*/
+/*	$NetBSD: netbsd32_exec_elf32.c,v 1.31 2009/12/14 00:47:11 matt Exp $	*/
 /*	from: NetBSD: exec_aout.c,v 1.15 1996/09/26 23:34:46 cgd Exp */
 
 /*
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_exec_elf32.c,v 1.30 2009/06/29 05:08:16 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_exec_elf32.c,v 1.31 2009/12/14 00:47:11 matt Exp $");
 
 #define	ELFSIZE		32
 
@@ -77,7 +77,6 @@
 #include <compat/netbsd32/netbsd32.h>
 #include <compat/netbsd32/netbsd32_exec.h>
 
-#include <machine/frame.h>
 #include <machine/netbsd32_machdep.h>
 
 int netbsd32_copyinargs(struct exec_package *, struct ps_strings *,
@@ -96,6 +95,13 @@
 	if ((error = ELFNAME2(netbsd,signature)(l, epp, eh)) != 0)
 		return error;
 
+#ifdef ELF_MD_PROBE_FUNC
+	if ((error = ELF_MD_PROBE_FUNC(l, epp, eh, itp, pos)) != 0)
+		return error;
+#elif defined(ELF_INTERP_NON_RELOCATABLE)
+	*pos = ELF_LINK_ADDR;
+#endif
+
 	return ELFNAME2(netbsd32,probe_noteless)(l, epp, eh, itp, pos);
 }
 

Index: src/sys/compat/netbsd32/netbsd32_fs.c
diff -u src/sys/compat/netbsd32/netbsd32_fs.c:1.57 src/sys/compat/netbsd32/netbsd32_fs.c:1.58
--- src/sys/compat/netbsd32/netbsd32_fs.c:1.57	Mon Jan 26 13:00:05 2009
+++ src/sys/compat/netbsd32/netbsd32_fs.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_fs.c,v 1.57 2009/01/26 13:00:05 njoly Exp $	*/
+/*	$NetBSD: netbsd32_fs.c,v 1.58 2009/12/14 00:47:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.57 2009/01/26 13:00:05 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.58 2009/12/14 00:47:11 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -50,6 +50,9 @@
 #include <sys/kauth.h>
 #include <sys/vfs_syscalls.h>
 
+#include <fs/cd9660/cd9660_mount.h>
+#include <ufs/ufs/ufsmount.h>
+
 #include <compat/netbsd32/netbsd32.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/netbsd32/netbsd32_conv.h>
@@ -751,3 +754,130 @@
 	free(path, M_TEMP);
 	return error;
 }
+
+int
+netbsd32___mount50(struct lwp *l, const struct netbsd32___mount50_args *uap,
+	register_t *retval) 
+{
+	/* {
+		syscallarg(netbsd32_charp) type;
+		syscallarg(netbsd32_charp) path;
+		syscallarg(int) flags;
+		syscallarg(netbsd32_voidp) data;
+		syscallarg(netbsd32_size_t) data_len;
+	} */
+	char mtype[MNAMELEN];
+	union {
+		struct netbsd32_ufs_args ufs_args;
+		struct netbsd32_mfs_args mfs_args;
+		struct netbsd32_iso_args iso_args;
+	} fs_args32;
+	union {
+		struct ufs_args ufs_args;
+		struct mfs_args mfs_args;
+		struct iso_args iso_args;
+	} fs_args;
+	const char *type = SCARG_P32(uap, type);
+	const char *path = SCARG_P32(uap, path);
+	int flags = SCARG(uap, flags);
+	void *data = SCARG_P32(uap, data);
+	size_t data_len = SCARG(uap, data_len);
+	enum uio_seg data_seg;
+	size_t len;
+	int error;
+ 
+	error = copyinstr(type, mtype, sizeof(mtype), &len);
+	if (error)
+		return error;
+	if (strcmp(mtype, MOUNT_MFS) == 0) {
+		if (data_len != sizeof(fs_args32.mfs_args))
+			return EINVAL;
+		if ((flags & MNT_GETARGS) == 0) {
+			error = copyin(data, &fs_args32.mfs_args, 
+			    sizeof(fs_args32.mfs_args));
+			if (error)
+				return error;
+			fs_args.mfs_args.fspec =
+			    NETBSD32PTR64(fs_args32.mfs_args.fspec);
+			memset(&fs_args.mfs_args._pad1, 0,
+			    sizeof(fs_args.mfs_args._pad1));
+			fs_args.mfs_args.base =
+			    NETBSD32PTR64(fs_args32.mfs_args.base);
+			fs_args.mfs_args.size = fs_args32.mfs_args.size;
+		}
+		data_seg = UIO_SYSSPACE;
+		data = &fs_args.mfs_args;
+		data_len = sizeof(fs_args.mfs_args);
+	} else if (strcmp(mtype, MOUNT_UFS) == 0) {
+		if (data_len > sizeof(fs_args32.ufs_args))
+			return EINVAL;
+		if ((flags & MNT_GETARGS) == 0) {
+			error = copyin(data, &fs_args32.ufs_args, 
+			    sizeof(fs_args32.ufs_args));
+			if (error)
+				return error;
+			fs_args.ufs_args.fspec =
+			    NETBSD32PTR64(fs_args32.ufs_args.fspec);
+		}
+		data_seg = UIO_SYSSPACE;
+		data = &fs_args.ufs_args;
+		data_len = sizeof(fs_args.ufs_args);
+	} else if (strcmp(mtype, MOUNT_CD9660) == 0) {
+		if (data_len != sizeof(fs_args32.iso_args))
+			return EINVAL;
+		if ((flags & MNT_GETARGS) == 0) {
+			error = copyin(data, &fs_args32.iso_args, 
+			    sizeof(fs_args32.iso_args));
+			if (error)
+				return error;
+			fs_args.iso_args.fspec =
+			    NETBSD32PTR64(fs_args32.iso_args.fspec);
+			memset(&fs_args.iso_args._pad1, 0,
+			    sizeof(fs_args.iso_args._pad1));
+			fs_args.iso_args.flags = fs_args32.iso_args.flags;
+		}
+		data_seg = UIO_SYSSPACE;
+		data = &fs_args.iso_args;
+		data_len = sizeof(fs_args.iso_args);
+	} else {
+		data_seg = UIO_USERSPACE;
+	}
+	error = do_sys_mount(l, NULL, type, path, flags, data, data_seg,
+	    data_len, retval);
+	if (error)
+		return error;
+	if (flags & MNT_GETARGS) {
+		data_len = *retval;
+		if (strcmp(mtype, MOUNT_MFS) == 0) {
+			if (data_len != sizeof(fs_args.mfs_args))
+				return EINVAL;
+			NETBSD32PTR32(fs_args32.mfs_args.fspec,
+			    fs_args.mfs_args.fspec);
+			memset(&fs_args32.mfs_args._pad1, 0,
+			    sizeof(fs_args32.mfs_args._pad1));
+			NETBSD32PTR32(fs_args32.mfs_args.base,
+			    fs_args.mfs_args.base);
+			fs_args32.mfs_args.size = fs_args.mfs_args.size;
+			error = copyout(&fs_args32.mfs_args, data,
+				    sizeof(fs_args32.mfs_args));
+		} else if (strcmp(mtype, MOUNT_UFS) == 0) {
+			if (data_len != sizeof(fs_args.ufs_args))
+				return EINVAL;
+			NETBSD32PTR32(fs_args32.ufs_args.fspec,
+			    fs_args.ufs_args.fspec);
+			error = copyout(&fs_args32.ufs_args, data, 
+			    sizeof(fs_args32.ufs_args));
+		} else if (strcmp(mtype, MOUNT_CD9660) == 0) {
+			if (data_len != sizeof(fs_args.iso_args))
+				return EINVAL;
+			NETBSD32PTR32(fs_args32.iso_args.fspec,
+			    fs_args.iso_args.fspec);
+			memset(&fs_args32.iso_args._pad1, 0,
+			    sizeof(fs_args32.iso_args._pad1));
+			fs_args32.iso_args.flags = fs_args.iso_args.flags;
+			error = copyout(&fs_args32.iso_args, data,
+				    sizeof(fs_args32.iso_args));
+		}
+	}
+	return error;
+}

Index: src/sys/compat/netbsd32/netbsd32_netbsd.c
diff -u src/sys/compat/netbsd32/netbsd32_netbsd.c:1.162 src/sys/compat/netbsd32/netbsd32_netbsd.c:1.163
--- src/sys/compat/netbsd32/netbsd32_netbsd.c:1.162	Sat Dec 12 10:30:09 2009
+++ src/sys/compat/netbsd32/netbsd32_netbsd.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_netbsd.c,v 1.162 2009/12/12 10:30:09 njoly Exp $	*/
+/*	$NetBSD: netbsd32_netbsd.c,v 1.163 2009/12/14 00:47:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.162 2009/12/12 10:30:09 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.163 2009/12/14 00:47:11 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ddb.h"
@@ -92,8 +92,6 @@
 #include <compat/netbsd32/netbsd32_conv.h>
 #include <compat/netbsd32/netbsd32_sa.h>
 
-#include <machine/frame.h>
-
 #if defined(DDB)
 #include <ddb/ddbvar.h>
 #endif

Index: src/sys/compat/netbsd32/netbsd32_syscall.h
diff -u src/sys/compat/netbsd32/netbsd32_syscall.h:1.88 src/sys/compat/netbsd32/netbsd32_syscall.h:1.89
--- src/sys/compat/netbsd32/netbsd32_syscall.h:1.88	Sun May 17 05:55:42 2009
+++ src/sys/compat/netbsd32/netbsd32_syscall.h	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscall.h,v 1.88 2009/05/17 05:55:42 pooka Exp $ */
+/* $NetBSD: netbsd32_syscall.h,v 1.89 2009/12/14 00:47:11 matt Exp $ */
 
 /*
  * System call numbers.
@@ -1095,6 +1095,9 @@
 /* syscall: "compat_50_netbsd32___fhstat40" ret: "int" args: "netbsd32_pointer_t" "netbsd32_size_t" "netbsd32_stat50p_t" */
 #define	NETBSD32_SYS_compat_50_netbsd32___fhstat40	398
 
+/* syscall: "netbsd32___mount50" ret: "int" args: "netbsd32_charp" "netbsd32_charp" "int" "netbsd32_voidp" "netbsd32_size_t" */
+#define	NETBSD32_SYS_netbsd32___mount50	410
+
 /* syscall: "netbsd32_mremap" ret: "netbsd32_voidp" args: "netbsd32_voidp" "netbsd32_size_t" "netbsd32_voidp" "netbsd32_size_t" "int" */
 #define	NETBSD32_SYS_netbsd32_mremap	411
 
Index: src/sys/compat/netbsd32/netbsd32_syscallargs.h
diff -u src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.88 src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.89
--- src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.88	Sun May 17 05:55:42 2009
+++ src/sys/compat/netbsd32/netbsd32_syscallargs.h	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscallargs.h,v 1.88 2009/05/17 05:55:42 pooka Exp $ */
+/* $NetBSD: netbsd32_syscallargs.h,v 1.89 2009/12/14 00:47:11 matt Exp $ */
 
 /*
  * System call argument lists.
@@ -2087,6 +2087,15 @@
 };
 check_syscall_args(compat_50_netbsd32___fhstat40)
 
+struct netbsd32___mount50_args {
+	syscallarg(netbsd32_charp) type;
+	syscallarg(netbsd32_charp) path;
+	syscallarg(int) flags;
+	syscallarg(netbsd32_voidp) data;
+	syscallarg(netbsd32_size_t) data_len;
+};
+check_syscall_args(netbsd32___mount50)
+
 struct netbsd32_mremap_args {
 	syscallarg(netbsd32_voidp) old_address;
 	syscallarg(netbsd32_size_t) old_size;
@@ -3047,6 +3056,8 @@
 
 int	compat_50_netbsd32___fhstat40(struct lwp *, const struct compat_50_netbsd32___fhstat40_args *, register_t *);
 
+int	netbsd32___mount50(struct lwp *, const struct netbsd32___mount50_args *, register_t *);
+
 int	netbsd32_mremap(struct lwp *, const struct netbsd32_mremap_args *, register_t *);
 
 int	netbsd32___posix_fadvise50(struct lwp *, const struct netbsd32___posix_fadvise50_args *, register_t *);

Index: src/sys/compat/netbsd32/netbsd32_syscalls.c
diff -u src/sys/compat/netbsd32/netbsd32_syscalls.c:1.87 src/sys/compat/netbsd32/netbsd32_syscalls.c:1.88
--- src/sys/compat/netbsd32/netbsd32_syscalls.c:1.87	Sun May 17 05:55:42 2009
+++ src/sys/compat/netbsd32/netbsd32_syscalls.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_syscalls.c,v 1.87 2009/05/17 05:55:42 pooka Exp $ */
+/* $NetBSD: netbsd32_syscalls.c,v 1.88 2009/12/14 00:47:11 matt Exp $ */
 
 /*
  * System call names.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.87 2009/05/17 05:55:42 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.88 2009/12/14 00:47:11 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #if defined(_KERNEL_OPT)
@@ -514,7 +514,7 @@
 	/* 407 */	"#407 (unimplemented)",
 	/* 408 */	"#408 (unimplemented)",
 	/* 409 */	"#409 (unimplemented)",
-	/* 410 */	"#410 (unimplemented sys___mount50)",
+	/* 410 */	"netbsd32___mount50",
 	/* 411 */	"netbsd32_mremap",
 	/* 412 */	"#412 (unimplemented)",
 	/* 413 */	"#413 (unimplemented)",
Index: src/sys/compat/netbsd32/netbsd32_sysent.c
diff -u src/sys/compat/netbsd32/netbsd32_sysent.c:1.87 src/sys/compat/netbsd32/netbsd32_sysent.c:1.88
--- src/sys/compat/netbsd32/netbsd32_sysent.c:1.87	Sun May 17 05:55:42 2009
+++ src/sys/compat/netbsd32/netbsd32_sysent.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_sysent.c,v 1.87 2009/05/17 05:55:42 pooka Exp $ */
+/* $NetBSD: netbsd32_sysent.c,v 1.88 2009/12/14 00:47:11 matt Exp $ */
 
 /*
  * System call switch table.
@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.87 2009/05/17 05:55:42 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.88 2009/12/14 00:47:11 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -471,9 +471,9 @@
 #endif
 	{ 0, 0, 0,
 	    sys_nosys },			/* 172 = unimplemented */
-	{ ns(struct netbsd32_pread_args), 0,
+	{ ns(struct netbsd32_pread_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)netbsd32_pread },	/* 173 = netbsd32_pread */
-	{ ns(struct netbsd32_pwrite_args), 0,
+	{ ns(struct netbsd32_pwrite_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)netbsd32_pwrite },	/* 174 = netbsd32_pwrite */
 #if defined(NTP) || !defined(_KERNEL_OPT)
 	{ ns(struct compat_30_netbsd32_ntp_gettime_args), 0,
@@ -537,15 +537,15 @@
 	    (sy_call_t *)netbsd32_setrlimit },	/* 195 = netbsd32_setrlimit */
 	{ ns(struct compat_12_netbsd32_getdirentries_args), 0,
 	    (sy_call_t *)compat_12(netbsd32_getdirentries) },/* 196 = compat_12_netbsd32_getdirentries */
-	{ ns(struct netbsd32_mmap_args), 0,
+	{ ns(struct netbsd32_mmap_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG6_64,
 	    (sy_call_t *)netbsd32_mmap },	/* 197 = netbsd32_mmap */
-	{ ns(struct netbsd32____syscall_args), SYCALL_INDIRECT,
+	{ ns(struct netbsd32____syscall_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG0_64 | SYCALL_RET_64 | SYCALL_INDIRECT,
 	    (sy_call_t *)netbsd32____syscall },	/* 198 = netbsd32____syscall */
-	{ ns(struct netbsd32_lseek_args), 0,
+	{ ns(struct netbsd32_lseek_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64 | SYCALL_RET_64,
 	    (sy_call_t *)netbsd32_lseek },	/* 199 = netbsd32_lseek */
-	{ ns(struct netbsd32_truncate_args), 0,
+	{ ns(struct netbsd32_truncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64,
 	    (sy_call_t *)netbsd32_truncate },	/* 200 = netbsd32_truncate */
-	{ ns(struct netbsd32_ftruncate_args), 0,
+	{ ns(struct netbsd32_ftruncate_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG2_64,
 	    (sy_call_t *)netbsd32_ftruncate },	/* 201 = netbsd32_ftruncate */
 	{ ns(struct netbsd32___sysctl_args), 0,
 	    (sy_call_t *)netbsd32___sysctl },	/* 202 = netbsd32___sysctl */
@@ -777,9 +777,9 @@
 	    (sy_call_t *)netbsd32___clone },	/* 287 = netbsd32___clone */
 	{ ns(struct netbsd32_fktrace_args), 0,
 	    (sy_call_t *)netbsd32_fktrace },	/* 288 = netbsd32_fktrace */
-	{ ns(struct netbsd32_preadv_args), 0,
+	{ ns(struct netbsd32_preadv_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)netbsd32_preadv },	/* 289 = netbsd32_preadv */
-	{ ns(struct netbsd32_pwritev_args), 0,
+	{ ns(struct netbsd32_pwritev_args), SYCALL_NARGS64_VAL(1) | SYCALL_ARG4_64,
 	    (sy_call_t *)netbsd32_pwritev },	/* 290 = netbsd32_pwritev */
 	{ ns(struct netbsd32___sigaction14_args), 0,
 	    (sy_call_t *)netbsd32___sigaction14 },/* 291 = netbsd32___sigaction14 */
@@ -922,7 +922,7 @@
 	    sys_nosys },			/* 352 = unimplemented */
 	{ 0, 0, 0,
 	    sys_nosys },			/* 353 = unimplemented */
-	{ ns(struct netbsd32_fsync_range_args), 0,
+	{ ns(struct netbsd32_fsync_range_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64,
 	    (sy_call_t *)netbsd32_fsync_range },/* 354 = netbsd32_fsync_range */
 	{ ns(struct netbsd32_uuidgen_args), 0,
 	    (sy_call_t *)netbsd32_uuidgen },	/* 355 = netbsd32_uuidgen */
@@ -1039,8 +1039,8 @@
 	    sys_nosys },			/* 408 = unimplemented */
 	{ 0, 0, 0,
 	    sys_nosys },			/* 409 = unimplemented */
-	{ 0, 0, 0,
-	    sys_nosys },			/* 410 = unimplemented sys___mount50 */
+	{ ns(struct netbsd32___mount50_args), 0,
+	    (sy_call_t *)netbsd32___mount50 },	/* 410 = netbsd32___mount50 */
 	{ ns(struct netbsd32_mremap_args), 0,
 	    (sy_call_t *)netbsd32_mremap },	/* 411 = netbsd32_mremap */
 	{ 0, 0, 0,
@@ -1051,7 +1051,7 @@
 	    sys_nosys },			/* 414 = unimplemented */
 	{ 0, 0, 0,
 	    sys_nosys },			/* 415 = unimplemented */
-	{ ns(struct netbsd32___posix_fadvise50_args), 0,
+	{ ns(struct netbsd32___posix_fadvise50_args), SYCALL_NARGS64_VAL(2) | SYCALL_ARG3_64 | SYCALL_ARG2_64,
 	    (sy_call_t *)netbsd32___posix_fadvise50 },/* 416 = netbsd32___posix_fadvise50 */
 	{ ns(struct netbsd32___select50_args), 0,
 	    (sy_call_t *)netbsd32___select50 },	/* 417 = netbsd32___select50 */

Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.80 src/sys/compat/netbsd32/syscalls.master:1.81
--- src/sys/compat/netbsd32/syscalls.master:1.80	Sun May 17 05:54:22 2009
+++ src/sys/compat/netbsd32/syscalls.master	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.80 2009/05/17 05:54:22 pooka Exp $
+	$NetBSD: syscalls.master,v 1.81 2009/12/14 00:47:11 matt Exp $
 
 ;	from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
@@ -866,7 +866,9 @@
 408	UNIMPL
 409	UNIMPL
 
-410	UNIMPL		sys___mount50
+410	STD		{ int|netbsd32||__mount50(netbsd32_charp type, \
+			    netbsd32_charp path, int flags, \
+			    netbsd32_voidp data, netbsd32_size_t data_len); }
 411	STD 		{ netbsd32_voidp|netbsd32||mremap( \
 			    netbsd32_voidp old_address, \
 			    netbsd32_size_t old_size, \

Index: src/sys/compat/ultrix/ultrix_flock.h
diff -u src/sys/compat/ultrix/ultrix_flock.h:1.1 src/sys/compat/ultrix/ultrix_flock.h:1.2
--- src/sys/compat/ultrix/ultrix_flock.h:1.1	Fri Jul 30 16:03:49 1999
+++ src/sys/compat/ultrix/ultrix_flock.h	Mon Dec 14 00:47:11 2009
@@ -1,12 +1,12 @@
-/* $NetBSD: ultrix_flock.h,v 1.1 1999/07/30 16:03:49 drochner Exp $ */
+/* $NetBSD: ultrix_flock.h,v 1.2 2009/12/14 00:47:11 matt Exp $ */
 
 struct ultrix_flock {
-	short l_type;
+	int16_t l_type;
 #define ULTRIX_F_RDLCK 1
 #define ULTRIX_F_WRLCK 2
 #define ULTRIX_F_UNLCK 3
-	short l_whence;
-	long l_start;
-	long l_len;
-	int l_pid;
+	int16_t l_whence;
+	int32_t l_start;
+	int32_t l_len;
+	int32_t l_pid;
 };

Index: src/sys/compat/ultrix/ultrix_fs.c
diff -u src/sys/compat/ultrix/ultrix_fs.c:1.50 src/sys/compat/ultrix/ultrix_fs.c:1.51
--- src/sys/compat/ultrix/ultrix_fs.c:1.50	Wed Dec 17 20:51:34 2008
+++ src/sys/compat/ultrix/ultrix_fs.c	Mon Dec 14 00:47:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ultrix_fs.c,v 1.50 2008/12/17 20:51:34 cegger Exp $	*/
+/*	$NetBSD: ultrix_fs.c,v 1.51 2009/12/14 00:47:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1995, 1997 Jonathan Stone
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ultrix_fs.c,v 1.50 2008/12/17 20:51:34 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ultrix_fs.c,v 1.51 2009/12/14 00:47:11 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -75,24 +75,24 @@
  * compatibility with the size the Ultrix kernel and user apps expect.
  */
 struct ultrix_fs_data {
-	u_int32_t	ufsd_flags;	/* how mounted */
-	u_int32_t	ufsd_mtsize;	/* max transfer size in bytes */
-	u_int32_t	ufsd_otsize;	/* optimal transfer size in bytes */
-	u_int32_t	ufsd_bsize;	/* fs block size (bytes) for vm code */
-	u_int32_t	ufsd_fstype;	/* see ../h/fs_types.h  */
-	u_int32_t	ufsd_gtot;	/* total number of gnodes */
-	u_int32_t	ufsd_gfree;	/* # of free gnodes */
-	u_int32_t	ufsd_btot;	/* total number of 1K blocks */
-	u_int32_t	ufsd_bfree;	/* # of free 1K blocks */
-	u_int32_t	ufsd_bfreen;	/* user consumable 1K blocks */
-	u_int32_t	ufsd_pgthresh;	/* min size in bytes before paging*/
+	uint32_t	ufsd_flags;	/* how mounted */
+	uint32_t	ufsd_mtsize;	/* max transfer size in bytes */
+	uint32_t	ufsd_otsize;	/* optimal transfer size in bytes */
+	uint32_t	ufsd_bsize;	/* fs block size (bytes) for vm code */
+	uint32_t	ufsd_fstype;	/* see ../h/fs_types.h  */
+	uint32_t	ufsd_gtot;	/* total number of gnodes */
+	uint32_t	ufsd_gfree;	/* # of free gnodes */
+	uint32_t	ufsd_btot;	/* total number of 1K blocks */
+	uint32_t	ufsd_bfree;	/* # of free 1K blocks */
+	uint32_t	ufsd_bfreen;	/* user consumable 1K blocks */
+	uint32_t	ufsd_pgthresh;	/* min size in bytes before paging*/
 	int32_t		ufsd_uid;	/* uid that mounted me */
 	int16_t		ufsd_dev;	/* major/minor of fs */
 	int16_t		ufsd_exroot;	/* root mapping from exports */
 	char		ufsd_devname[ULTRIX_MAXPATHLEN + 4]; /* name of dev */
 	char		ufsd_path[ULTRIX_MAXPATHLEN + 4]; /* name of mnt point */
-	u_int32_t	ufsd_nupdate;	/* number of writes */
-	u_int32_t	ufsd_pad[112];	/* pad to 2560 bytes. */
+	uint32_t	ufsd_nupdate;	/* number of writes */
+	uint32_t	ufsd_pad[112];	/* pad to 2560 bytes. */
 };
 
 /*
@@ -337,8 +337,8 @@
  * mounting local (4.2bsd FFS) filesystems
  */
 struct ultrix_ufs_args {
-	u_long ufs_flags;		/* mount flags?*/
-	u_long ufs_pgthresh;		/* minimum file size to page */
+	uint32_t ufs_flags;		/* mount flags?*/
+	uint32_t ufs_pgthresh;		/* minimum file size to page */
 };
 
 int

Index: src/sys/compat/ultrix/ultrix_ioctl.c
diff -u src/sys/compat/ultrix/ultrix_ioctl.c:1.35 src/sys/compat/ultrix/ultrix_ioctl.c:1.36
--- src/sys/compat/ultrix/ultrix_ioctl.c:1.35	Fri Mar 21 21:54:59 2008
+++ src/sys/compat/ultrix/ultrix_ioctl.c	Mon Dec 14 00:47:12 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ultrix_ioctl.c,v 1.35 2008/03/21 21:54:59 ad Exp $ */
+/*	$NetBSD: ultrix_ioctl.c,v 1.36 2009/12/14 00:47:12 matt Exp $ */
 /*	from : NetBSD: sunos_ioctl.c,v 1.21 1995/10/07 06:27:31 mycroft Exp */
 
 /*
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ultrix_ioctl.c,v 1.35 2008/03/21 21:54:59 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ultrix_ioctl.c,v 1.36 2009/12/14 00:47:12 matt Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_ultrix.h"
@@ -87,7 +87,7 @@
 	{ -1, -1 }
 };
 
-static const u_long s2btab[] = {
+static const uint16_t s2btab[] = {
 	0,
 	50,
 	75,
@@ -143,7 +143,7 @@
 static void
 stios2btios(struct emul_termios *st, struct termios *bt)
 {
-	u_long l, r;
+	uint32_t l, r;
 
 	l = st->c_iflag;
 	r = 	((l & 0x00000001) ? IGNBRK	: 0);
@@ -273,7 +273,7 @@
 static void
 btios2stios(struct termios *bt, struct emul_termios *st)
 {
-	u_long l, r;
+	uint32_t l, r;
 	int speed;
 
 	l = bt->c_iflag;

Index: src/sys/compat/ultrix/ultrix_pathname.c
diff -u src/sys/compat/ultrix/ultrix_pathname.c:1.37 src/sys/compat/ultrix/ultrix_pathname.c:1.38
--- src/sys/compat/ultrix/ultrix_pathname.c:1.37	Mon Jun 29 05:08:16 2009
+++ src/sys/compat/ultrix/ultrix_pathname.c	Mon Dec 14 00:47:12 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ultrix_pathname.c,v 1.37 2009/06/29 05:08:16 dholland Exp $	*/
+/*	$NetBSD: ultrix_pathname.c,v 1.38 2009/12/14 00:47:12 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ultrix_pathname.c,v 1.37 2009/06/29 05:08:16 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ultrix_pathname.c,v 1.38 2009/12/14 00:47:12 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -191,15 +191,15 @@
 
 
 struct ultrix_statfs {
-	long	f_type;		/* type of info, zero for now */
-	long	f_bsize;	/* fundamental file system block size */
-	long	f_blocks;	/* total blocks in file system */
-	long	f_bfree;	/* free blocks */
-	long	f_bavail;	/* free blocks available to non-super-user */
-	long	f_files;	/* total file nodes in file system */
-	long	f_ffree;	/* free file nodes in fs */
+	int32_t	f_type;		/* type of info, zero for now */
+	int32_t	f_bsize;	/* fundamental file system block size */
+	int32_t	f_blocks;	/* total blocks in file system */
+	int32_t	f_bfree;	/* free blocks */
+	int32_t	f_bavail;	/* free blocks available to non-super-user */
+	int32_t	f_files;	/* total file nodes in file system */
+	int32_t	f_ffree;	/* free file nodes in fs */
 	fsid_t	f_fsid;		/* file system id */
-	long	f_spare[7];	/* spare for later */
+	int32_t	f_spare[7];	/* spare for later */
 };
 
 /*

Index: src/sys/compat/ultrix/ultrix_tty.h
diff -u src/sys/compat/ultrix/ultrix_tty.h:1.2 src/sys/compat/ultrix/ultrix_tty.h:1.3
--- src/sys/compat/ultrix/ultrix_tty.h:1.2	Thu Jan  4 19:03:36 1996
+++ src/sys/compat/ultrix/ultrix_tty.h	Mon Dec 14 00:47:12 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: ultrix_tty.h,v 1.2 1996/01/04 19:03:36 jonathan Exp $	*/
+/*	$NetBSD: ultrix_tty.h,v 1.3 2009/12/14 00:47:12 matt Exp $	*/
 
 /* From:  NetBSD sunos.h,v 1.4 1995/03/04 09:50:00 pk Exp 	*/
 
@@ -31,10 +31,10 @@
  * Very similar to SunOS but with more c_cc entries (gag)
  */
 struct ultrix_termios {
-	u_long	c_iflag;
-	u_long	c_oflag;
-	u_long	c_cflag;
-	u_long	c_lflag;
+	__uint32_t	c_iflag;
+	__uint32_t	c_oflag;
+	__uint32_t	c_cflag;
+	__uint32_t	c_lflag;
 	u_char	c_cc[19]; /* 17 for Sun */
 	u_char	c_line;
 };

Added files:

Index: src/sys/compat/irix/irix_exec_elf64.c
diff -u /dev/null src/sys/compat/irix/irix_exec_elf64.c:1.2
--- /dev/null	Mon Dec 14 00:47:12 2009
+++ src/sys/compat/irix/irix_exec_elf64.c	Mon Dec 14 00:47:10 2009
@@ -0,0 +1,5 @@
+/* $NetBSD: irix_exec_elf64.c,v 1.2 2009/12/14 00:47:10 matt Exp $ */
+
+#define ELFSIZE 64
+
+#include "irix_exec_elf32.c"

Reply via email to