From owner-svn-src-projects@FreeBSD.ORG Sun Nov 15 07:25:24 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A2D401065670; Sun, 15 Nov 2009 07:25:24 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 906DF8FC14; Sun, 15 Nov 2009 07:25:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nAF7PO38027144; Sun, 15 Nov 2009 07:25:24 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nAF7POCV027125; Sun, 15 Nov 2009 07:25:24 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200911150725.nAF7POCV027125@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 15 Nov 2009 07:25:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r199285 - in projects/ppc64/sys: amd64/conf compat/freebsd32 compat/ia32 conf kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Nov 2009 07:25:24 -0000 Author: nwhitehorn Date: Sun Nov 15 07:25:24 2009 New Revision: 199285 URL: http://svn.freebsd.org/changeset/base/199285 Log: Make 32-bit compatibility a little more MI. This separates the COMPAT_IA32 kernel option into an architectural component (COMPAT_IA32 for that arch) and an OS component like COMPAT_LINUX[32] (COMPAT_FREEBSD32). Not yet fully tested. Most of the changes are rototilling source code and making things marked "XXX: might be MI" actually be MI. Discussed with: Warner Losh Modified: projects/ppc64/sys/amd64/conf/GENERIC projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h projects/ppc64/sys/compat/ia32/ia32_sysvec.c projects/ppc64/sys/conf/files.amd64 projects/ppc64/sys/conf/files.ia64 projects/ppc64/sys/conf/options.amd64 projects/ppc64/sys/conf/options.ia64 projects/ppc64/sys/kern/imgact_elf.c projects/ppc64/sys/kern/kern_jail.c projects/ppc64/sys/kern/kern_module.c projects/ppc64/sys/kern/kern_thr.c projects/ppc64/sys/kern/kern_umtx.c projects/ppc64/sys/kern/sys_process.c projects/ppc64/sys/kern/uipc_socket.c projects/ppc64/sys/kern/vfs_aio.c projects/ppc64/sys/sys/ptrace.h projects/ppc64/sys/sys/sysctl.h Modified: projects/ppc64/sys/amd64/conf/GENERIC ============================================================================== --- projects/ppc64/sys/amd64/conf/GENERIC Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/amd64/conf/GENERIC Sun Nov 15 07:25:24 2009 (r199285) @@ -55,6 +55,7 @@ options GEOM_PART_GPT # GUID Partition options GEOM_LABEL # Provides labelization options COMPAT_43TTY # BSD 4.3 TTY compat (sgtty) options COMPAT_IA32 # Compatible with i386 binaries +options COMPAT_FREEBSD32 options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options COMPAT_FREEBSD5 # Compatible with FreeBSD5 options COMPAT_FREEBSD6 # Compatible with FreeBSD6 Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c Sun Nov 15 07:25:24 2009 (r199285) @@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" #include "opt_inet6.h" +#define __ELF_WORD_SIZE 32 + #include #include #include @@ -44,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* Must come after sys/malloc.h */ +#include #include #include #include @@ -91,6 +94,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include @@ -3072,3 +3076,123 @@ syscall32_module_handler(struct module * return (error); } } + +register_t * +freebsd32_copyout_strings(struct image_params *imgp) +{ + int argc, envc; + u_int32_t *vectp; + char *stringp, *destp; + u_int32_t *stack_base; + struct freebsd32_ps_strings *arginfo; + size_t execpath_len; + int szsigcode; + + /* + * Calculate string base and vector table pointers. + * Also deal with signal trampoline code for this exec type. + */ + if (imgp->execpath != NULL && imgp->auxargs != NULL) + execpath_len = strlen(imgp->execpath) + 1; + else + execpath_len = 0; + arginfo = (struct freebsd32_ps_strings *)FREEBSD32_PS_STRINGS; + szsigcode = *(imgp->proc->p_sysent->sv_szsigcode); + destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE - + roundup(execpath_len, sizeof(char *)) - + roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); + + /* + * install sigcode + */ + if (szsigcode) + copyout(imgp->proc->p_sysent->sv_sigcode, + ((caddr_t)arginfo - szsigcode), szsigcode); + + /* + * Copy the image path for the rtld. + */ + if (execpath_len != 0) { + imgp->execpathp = (uintptr_t)arginfo - szsigcode - execpath_len; + copyout(imgp->execpath, (void *)imgp->execpathp, + execpath_len); + } + + /* + * If we have a valid auxargs ptr, prepare some room + * on the stack. + */ + if (imgp->auxargs) { + /* + * 'AT_COUNT*2' is size for the ELF Auxargs data. This is for + * lower compatibility. + */ + imgp->auxarg_size = (imgp->auxarg_size) ? imgp->auxarg_size + : (AT_COUNT * 2); + /* + * The '+ 2' is for the null pointers at the end of each of + * the arg and env vector sets,and imgp->auxarg_size is room + * for argument of Runtime loader. + */ + vectp = (u_int32_t *) (destp - (imgp->args->argc + + imgp->args->envc + 2 + imgp->auxarg_size + execpath_len) * + sizeof(u_int32_t)); + } else + /* + * The '+ 2' is for the null pointers at the end of each of + * the arg and env vector sets + */ + vectp = (u_int32_t *) + (destp - (imgp->args->argc + imgp->args->envc + 2) * sizeof(u_int32_t)); + + /* + * vectp also becomes our initial stack base + */ + stack_base = vectp; + + stringp = imgp->args->begin_argv; + argc = imgp->args->argc; + envc = imgp->args->envc; + /* + * Copy out strings - arguments and environment. + */ + copyout(stringp, destp, ARG_MAX - imgp->args->stringspace); + + /* + * Fill in "ps_strings" struct for ps, w, etc. + */ + suword32(&arginfo->ps_argvstr, (u_int32_t)(intptr_t)vectp); + suword32(&arginfo->ps_nargvstr, argc); + + /* + * Fill in argument portion of vector table. + */ + for (; argc > 0; --argc) { + suword32(vectp++, (u_int32_t)(intptr_t)destp); + while (*stringp++ != 0) + destp++; + destp++; + } + + /* a null vector table pointer separates the argp's from the envp's */ + suword32(vectp++, 0); + + suword32(&arginfo->ps_envstr, (u_int32_t)(intptr_t)vectp); + suword32(&arginfo->ps_nenvstr, envc); + + /* + * Fill in environment portion of vector table. + */ + for (; envc > 0; --envc) { + suword32(vectp++, (u_int32_t)(intptr_t)destp); + while (*stringp++ != 0) + destp++; + destp++; + } + + /* end of vector table is a null pointer */ + suword32(vectp, 0); + + return ((register_t *)stack_base); +} + Modified: projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h Sun Nov 15 07:25:24 2009 (r199285) @@ -17,8 +17,8 @@ #include +struct image_params; struct proc; - struct thread; #define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \ @@ -545,6 +545,7 @@ int freebsd32_semctl(struct thread *, st int freebsd32_msgctl(struct thread *, struct freebsd32_msgctl_args *); int freebsd32_shmctl(struct thread *, struct freebsd32_shmctl_args *); int freebsd32_pselect(struct thread *, struct freebsd32_pselect_args *); +register_t *freebsd32_copyout_strings(struct image_params *imgp); #ifdef COMPAT_43 Modified: projects/ppc64/sys/compat/ia32/ia32_sysvec.c ============================================================================== --- projects/ppc64/sys/compat/ia32/ia32_sysvec.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/compat/ia32/ia32_sysvec.c Sun Nov 15 07:25:24 2009 (r199285) @@ -93,7 +93,6 @@ CTASSERT(sizeof(struct ia32_ucontext4) = CTASSERT(sizeof(struct ia32_sigframe4) == 408); #endif -static register_t *ia32_copyout_strings(struct image_params *imgp); static void ia32_fixlimit(struct rlimit *rl, int which); SYSCTL_NODE(_compat, OID_AUTO, ia32, CTLFLAG_RW, 0, "ia32 mode"); @@ -132,7 +131,7 @@ struct sysentvec ia32_freebsd_sysvec = { .sv_usrstack = FREEBSD32_USRSTACK, .sv_psstrings = FREEBSD32_PS_STRINGS, .sv_stackprot = VM_PROT_ALL, - .sv_copyout_strings = ia32_copyout_strings, + .sv_copyout_strings = freebsd32_copyout_strings, .sv_setregs = ia32_setregs, .sv_fixlimit = ia32_fixlimit, .sv_maxssiz = &ia32_maxssiz, @@ -194,127 +193,6 @@ elf32_dump_thread(struct thread *td __un { } - -/* XXX may be freebsd32 MI */ -static register_t * -ia32_copyout_strings(struct image_params *imgp) -{ - int argc, envc; - u_int32_t *vectp; - char *stringp, *destp; - u_int32_t *stack_base; - struct freebsd32_ps_strings *arginfo; - size_t execpath_len; - int szsigcode; - - /* - * Calculate string base and vector table pointers. - * Also deal with signal trampoline code for this exec type. - */ - if (imgp->execpath != NULL && imgp->auxargs != NULL) - execpath_len = strlen(imgp->execpath) + 1; - else - execpath_len = 0; - arginfo = (struct freebsd32_ps_strings *)FREEBSD32_PS_STRINGS; - szsigcode = *(imgp->proc->p_sysent->sv_szsigcode); - destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE - - roundup(execpath_len, sizeof(char *)) - - roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); - - /* - * install sigcode - */ - if (szsigcode) - copyout(imgp->proc->p_sysent->sv_sigcode, - ((caddr_t)arginfo - szsigcode), szsigcode); - - /* - * Copy the image path for the rtld. - */ - if (execpath_len != 0) { - imgp->execpathp = (uintptr_t)arginfo - szsigcode - execpath_len; - copyout(imgp->execpath, (void *)imgp->execpathp, - execpath_len); - } - - /* - * If we have a valid auxargs ptr, prepare some room - * on the stack. - */ - if (imgp->auxargs) { - /* - * 'AT_COUNT*2' is size for the ELF Auxargs data. This is for - * lower compatibility. - */ - imgp->auxarg_size = (imgp->auxarg_size) ? imgp->auxarg_size - : (AT_COUNT * 2); - /* - * The '+ 2' is for the null pointers at the end of each of - * the arg and env vector sets,and imgp->auxarg_size is room - * for argument of Runtime loader. - */ - vectp = (u_int32_t *) (destp - (imgp->args->argc + - imgp->args->envc + 2 + imgp->auxarg_size + execpath_len) * - sizeof(u_int32_t)); - } else - /* - * The '+ 2' is for the null pointers at the end of each of - * the arg and env vector sets - */ - vectp = (u_int32_t *) - (destp - (imgp->args->argc + imgp->args->envc + 2) * sizeof(u_int32_t)); - - /* - * vectp also becomes our initial stack base - */ - stack_base = vectp; - - stringp = imgp->args->begin_argv; - argc = imgp->args->argc; - envc = imgp->args->envc; - /* - * Copy out strings - arguments and environment. - */ - copyout(stringp, destp, ARG_MAX - imgp->args->stringspace); - - /* - * Fill in "ps_strings" struct for ps, w, etc. - */ - suword32(&arginfo->ps_argvstr, (u_int32_t)(intptr_t)vectp); - suword32(&arginfo->ps_nargvstr, argc); - - /* - * Fill in argument portion of vector table. - */ - for (; argc > 0; --argc) { - suword32(vectp++, (u_int32_t)(intptr_t)destp); - while (*stringp++ != 0) - destp++; - destp++; - } - - /* a null vector table pointer separates the argp's from the envp's */ - suword32(vectp++, 0); - - suword32(&arginfo->ps_envstr, (u_int32_t)(intptr_t)vectp); - suword32(&arginfo->ps_nenvstr, envc); - - /* - * Fill in environment portion of vector table. - */ - for (; envc > 0; --envc) { - suword32(vectp++, (u_int32_t)(intptr_t)destp); - while (*stringp++ != 0) - destp++; - destp++; - } - - /* end of vector table is a null pointer */ - suword32(vectp, 0); - - return ((register_t *)stack_base); -} - static void ia32_fixlimit(struct rlimit *rl, int which) { Modified: projects/ppc64/sys/conf/files.amd64 ============================================================================== --- projects/ppc64/sys/conf/files.amd64 Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/conf/files.amd64 Sun Nov 15 07:25:24 2009 (r199285) @@ -241,10 +241,10 @@ amd64/ia32/ia32_signal.c optional compat amd64/ia32/ia32_sigtramp.S optional compat_ia32 amd64/ia32/ia32_syscall.c optional compat_ia32 amd64/ia32/ia32_misc.c optional compat_ia32 -compat/freebsd32/freebsd32_ioctl.c optional compat_ia32 -compat/freebsd32/freebsd32_misc.c optional compat_ia32 -compat/freebsd32/freebsd32_syscalls.c optional compat_ia32 -compat/freebsd32/freebsd32_sysent.c optional compat_ia32 +compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 +compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 +compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 +compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 compat/ia32/ia32_sysvec.c optional compat_ia32 compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs Modified: projects/ppc64/sys/conf/files.ia64 ============================================================================== --- projects/ppc64/sys/conf/files.ia64 Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/conf/files.ia64 Sun Nov 15 07:25:24 2009 (r199285) @@ -28,10 +28,10 @@ ukbdmap.h optional ukbd_dflt_keymap \ no-obj no-implicit-rule before-depend \ clean "ukbdmap.h" # -compat/freebsd32/freebsd32_ioctl.c optional compat_ia32 -compat/freebsd32/freebsd32_misc.c optional compat_ia32 -compat/freebsd32/freebsd32_syscalls.c optional compat_ia32 -compat/freebsd32/freebsd32_sysent.c optional compat_ia32 +compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 +compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 +compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 +compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 compat/ia32/ia32_sysvec.c optional compat_ia32 contrib/ia64/libuwx/src/uwx_bstream.c standard contrib/ia64/libuwx/src/uwx_context.c standard Modified: projects/ppc64/sys/conf/options.amd64 ============================================================================== --- projects/ppc64/sys/conf/options.amd64 Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/conf/options.amd64 Sun Nov 15 07:25:24 2009 (r199285) @@ -12,6 +12,7 @@ MP_WATCHDOG # they are handled like options for static filesystems # (see src/sys/conf/options), except for broken debugging options. COMPAT_IA32 opt_compat.h +COMPAT_FREEBSD32 opt_compat.h #IBCS2 opt_dontuse.h #COMPAT_LINUX opt_dontuse.h COMPAT_LINUX32 opt_compat.h Modified: projects/ppc64/sys/conf/options.ia64 ============================================================================== --- projects/ppc64/sys/conf/options.ia64 Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/conf/options.ia64 Sun Nov 15 07:25:24 2009 (r199285) @@ -10,6 +10,7 @@ LOG2_PAGE_SIZE opt_global.h UWX_TRACE_ENABLE opt_global.h COMPAT_IA32 opt_compat.h +COMPAT_FREEBSD32 opt_compat.h EXCEPTION_TRACING opt_xtrace.h Modified: projects/ppc64/sys/kern/imgact_elf.c ============================================================================== --- projects/ppc64/sys/kern/imgact_elf.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/imgact_elf.c Sun Nov 15 07:25:24 2009 (r199285) @@ -1210,7 +1210,7 @@ __elfN(corehdr)(td, vp, cred, numsegs, h td)); } -#if defined(COMPAT_IA32) && __ELF_WORD_SIZE == 32 +#if defined(COMPAT_FREEBSD32) && __ELF_WORD_SIZE == 32 typedef struct prstatus32 elf_prstatus_t; typedef struct prpsinfo32 elf_prpsinfo_t; typedef struct fpreg32 elf_prfpregset_t; @@ -1294,7 +1294,7 @@ __elfN(puthdr)(struct thread *td, void * status->pr_osreldate = osreldate; status->pr_cursig = p->p_sig; status->pr_pid = thr->td_tid; -#if defined(COMPAT_IA32) && __ELF_WORD_SIZE == 32 +#if defined(COMPAT_FREEBSD32) && __ELF_WORD_SIZE == 32 fill_regs32(thr, &status->pr_reg); fill_fpregs32(thr, fpregset); #else @@ -1346,7 +1346,7 @@ __elfN(puthdr)(struct thread *td, void * ehdr->e_ident[EI_ABIVERSION] = 0; ehdr->e_ident[EI_PAD] = 0; ehdr->e_type = ET_CORE; -#if defined(COMPAT_IA32) && __ELF_WORD_SIZE == 32 +#if defined(COMPAT_FREEBSD32) && __ELF_WORD_SIZE == 32 ehdr->e_machine = EM_386; #else ehdr->e_machine = ELF_ARCH; Modified: projects/ppc64/sys/kern/kern_jail.c ============================================================================== --- projects/ppc64/sys/kern/kern_jail.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/kern_jail.c Sun Nov 15 07:25:24 2009 (r199285) @@ -707,7 +707,7 @@ kern_jail_set(struct thread *td, struct } } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (td->td_proc->p_sysent->sv_flags & SV_IA32) { uint32_t hid32; @@ -1929,7 +1929,7 @@ kern_jail_get(struct thread *td, struct error = vfs_setopts(opts, "host.hostuuid", pr->pr_hostuuid); if (error != 0 && error != ENOENT) goto done_deref; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (td->td_proc->p_sysent->sv_flags & SV_IA32) { uint32_t hid32 = pr->pr_hostid; Modified: projects/ppc64/sys/kern/kern_module.c ============================================================================== --- projects/ppc64/sys/kern/kern_module.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/kern_module.c Sun Nov 15 07:25:24 2009 (r199285) @@ -446,7 +446,7 @@ modfind(struct thread *td, struct modfin MODULE_VERSION(kernel, __FreeBSD_version); -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 #include #include #include Modified: projects/ppc64/sys/kern/kern_thr.c ============================================================================== --- projects/ppc64/sys/kern/kern_thr.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/kern_thr.c Sun Nov 15 07:25:24 2009 (r199285) @@ -55,7 +55,7 @@ __FBSDID("$FreeBSD$"); #include -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 static inline int suword_lwpid(void *addr, lwpid_t lwpid) Modified: projects/ppc64/sys/kern/kern_umtx.c ============================================================================== --- projects/ppc64/sys/kern/kern_umtx.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/kern_umtx.c Sun Nov 15 07:25:24 2009 (r199285) @@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$"); #include -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 #include #endif @@ -751,7 +751,7 @@ do_unlock_umtx(struct thread *td, struct return (0); } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 /* * Lock a umtx object. @@ -3063,7 +3063,7 @@ _umtx_op(struct thread *td, struct _umtx return (EINVAL); } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 int freebsd32_umtx_lock(struct thread *td, struct freebsd32_umtx_lock_args *uap) /* struct umtx *umtx */ Modified: projects/ppc64/sys/kern/sys_process.c ============================================================================== --- projects/ppc64/sys/kern/sys_process.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/sys_process.c Sun Nov 15 07:25:24 2009 (r199285) @@ -61,10 +61,13 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 #include + +#ifdef COMPAT_IA32 #include #include +#endif struct ptrace_io_desc32 { int piod_op; @@ -157,7 +160,7 @@ proc_write_fpregs(struct thread *td, str PROC_ACTION(set_fpregs(td, fpregs)); } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 /* For 32 bit binaries, we need to expose the 32 bit regs layouts. */ int proc_read_regs32(struct thread *td, struct reg32 *regs32) @@ -355,7 +358,7 @@ struct ptrace_args { }; #endif -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 /* * This CPP subterfuge is to try and reduce the number of ifdefs in * the body of the code. @@ -389,7 +392,7 @@ ptrace(struct thread *td, struct ptrace_ struct dbreg dbreg; struct fpreg fpreg; struct reg reg; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 struct dbreg32 dbreg32; struct fpreg32 fpreg32; struct reg32 reg32; @@ -398,7 +401,7 @@ ptrace(struct thread *td, struct ptrace_ } r; void *addr; int error = 0; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 int wrap32 = 0; if (SV_CURPROC_FLAG(SV_ILP32)) @@ -460,7 +463,7 @@ ptrace(struct thread *td, struct ptrace_ #undef COPYIN #undef COPYOUT -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 /* * PROC_READ(regs, td2, addr); * becomes either: @@ -494,7 +497,7 @@ kern_ptrace(struct thread *td, int req, int error, write, tmp, num; int proctree_locked = 0; lwpid_t tid = 0, *buf; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 int wrap32 = 0, safe = 0; struct ptrace_io_desc32 *piod32 = NULL; #endif @@ -582,7 +585,7 @@ kern_ptrace(struct thread *td, int req, tid = td2->td_tid; } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 /* * Test if we're a 32 bit client and what the target is. * Set the wrap controls accordingly. @@ -849,7 +852,7 @@ kern_ptrace(struct thread *td, int req, break; case PT_IO: -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (wrap32) { piod32 = addr; iov.iov_base = (void *)(uintptr_t)piod32->piod_addr; @@ -869,7 +872,7 @@ kern_ptrace(struct thread *td, int req, uio.uio_iovcnt = 1; uio.uio_segflg = UIO_USERSPACE; uio.uio_td = td; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 tmp = wrap32 ? piod32->piod_op : piod->piod_op; #else tmp = piod->piod_op; @@ -889,7 +892,7 @@ kern_ptrace(struct thread *td, int req, } PROC_UNLOCK(p); error = proc_rwmem(p, &uio); -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (wrap32) piod32->piod_len -= uio.uio_resid; else Modified: projects/ppc64/sys/kern/uipc_socket.c ============================================================================== --- projects/ppc64/sys/kern/uipc_socket.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/uipc_socket.c Sun Nov 15 07:25:24 2009 (r199285) @@ -136,7 +136,7 @@ __FBSDID("$FreeBSD$"); #include -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 #include #include #include @@ -2506,7 +2506,7 @@ sosetopt(struct socket *so, struct socko case SO_SNDTIMEO: case SO_RCVTIMEO: -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (SV_CURPROC_FLAG(SV_ILP32)) { struct timeval32 tv32; @@ -2687,7 +2687,7 @@ integer: tv.tv_sec = optval / hz; tv.tv_usec = (optval % hz) * tick; -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 if (SV_CURPROC_FLAG(SV_ILP32)) { struct timeval32 tv32; Modified: projects/ppc64/sys/kern/vfs_aio.c ============================================================================== --- projects/ppc64/sys/kern/vfs_aio.c Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/kern/vfs_aio.c Sun Nov 15 07:25:24 2009 (r199285) @@ -2532,7 +2532,7 @@ filt_lio(struct knote *kn, long hint) return (lj->lioj_flags & LIOJ_KEVENT_POSTED); } -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 #include #include #include Modified: projects/ppc64/sys/sys/ptrace.h ============================================================================== --- projects/ppc64/sys/sys/ptrace.h Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/sys/ptrace.h Sun Nov 15 07:25:24 2009 (r199285) @@ -34,6 +34,7 @@ #define _SYS_PTRACE_H_ #include +#include #define PT_TRACE_ME 0 /* child declares it's being traced */ #define PT_READ_I 1 /* read word in child's I space */ @@ -139,7 +140,7 @@ int proc_read_dbregs(struct thread *_td, int proc_write_dbregs(struct thread *_td, struct dbreg *_dbreg); int proc_sstep(struct thread *_td); int proc_rwmem(struct proc *_p, struct uio *_uio); -#ifdef COMPAT_IA32 +#ifdef COMPAT_FREEBSD32 struct reg32; struct fpreg32; struct dbreg32; Modified: projects/ppc64/sys/sys/sysctl.h ============================================================================== --- projects/ppc64/sys/sys/sysctl.h Sun Nov 15 03:09:50 2009 (r199284) +++ projects/ppc64/sys/sys/sysctl.h Sun Nov 15 07:25:24 2009 (r199285) @@ -123,7 +123,7 @@ struct ctlname { #define REQ_WIRED 2 /* locked and wired */ /* definitions for sysctl_req 'flags' member */ -#if defined(__amd64__) || defined(__ia64__) +#if defined(__amd64__) || defined(__ia64__) || defined(__powerpc64__) #define SCTL_MASK32 1 /* 32 bit emulation */ #endif