Module Name: src Committed By: rmind Date: Mon Nov 23 00:46:07 UTC 2009
Modified Files: src/sys/compat/common: kern_sig_43.c src/sys/compat/freebsd: freebsd_ptrace.c src/sys/compat/irix: irix_signal.c src/sys/compat/linux/arch/alpha: linux_machdep.c src/sys/compat/linux/arch/amd64: linux_machdep.c src/sys/compat/linux/arch/arm: linux_machdep.c src/sys/compat/linux/arch/i386: linux_exec_machdep.c linux_machdep.c src/sys/compat/linux/arch/mips: linux_machdep.c src/sys/compat/linux/arch/powerpc: linux_machdep.c src/sys/compat/linux32/arch/amd64: linux32_machdep.c src/sys/compat/osf1: osf1_misc.c src/sys/compat/svr4: svr4_lwp.c src/sys/compat/svr4_32: svr4_32_lwp.c Log Message: Use lwp_getpcb() in compat code, clean from struct user. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/compat/common/kern_sig_43.c cvs rdiff -u -r1.18 -r1.19 src/sys/compat/freebsd/freebsd_ptrace.c cvs rdiff -u -r1.51 -r1.52 src/sys/compat/irix/irix_signal.c cvs rdiff -u -r1.44 -r1.45 src/sys/compat/linux/arch/alpha/linux_machdep.c cvs rdiff -u -r1.36 -r1.37 src/sys/compat/linux/arch/amd64/linux_machdep.c cvs rdiff -u -r1.27 -r1.28 src/sys/compat/linux/arch/arm/linux_machdep.c cvs rdiff -u -r1.13 -r1.14 \ src/sys/compat/linux/arch/i386/linux_exec_machdep.c cvs rdiff -u -r1.145 -r1.146 src/sys/compat/linux/arch/i386/linux_machdep.c cvs rdiff -u -r1.38 -r1.39 src/sys/compat/linux/arch/mips/linux_machdep.c cvs rdiff -u -r1.39 -r1.40 src/sys/compat/linux/arch/powerpc/linux_machdep.c cvs rdiff -u -r1.22 -r1.23 \ src/sys/compat/linux32/arch/amd64/linux32_machdep.c cvs rdiff -u -r1.83 -r1.84 src/sys/compat/osf1/osf1_misc.c cvs rdiff -u -r1.18 -r1.19 src/sys/compat/svr4/svr4_lwp.c cvs rdiff -u -r1.16 -r1.17 src/sys/compat/svr4_32/svr4_32_lwp.c 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/kern_sig_43.c diff -u src/sys/compat/common/kern_sig_43.c:1.32 src/sys/compat/common/kern_sig_43.c:1.33 --- src/sys/compat/common/kern_sig_43.c:1.32 Mon Apr 28 20:23:41 2008 +++ src/sys/compat/common/kern_sig_43.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_sig_43.c,v 1.32 2008/04/28 20:23:41 martin Exp $ */ +/* $NetBSD: kern_sig_43.c,v 1.33 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_sig_43.c,v 1.32 2008/04/28 20:23:41 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_sig_43.c,v 1.33 2009/11/23 00:46:06 rmind Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -61,8 +61,6 @@ #include <sys/cpu.h> -#include <sys/user.h> /* for coredump */ - #include <compat/sys/signal.h> void compat_43_sigmask_to_sigset(const int *, sigset_t *); Index: src/sys/compat/freebsd/freebsd_ptrace.c diff -u src/sys/compat/freebsd/freebsd_ptrace.c:1.18 src/sys/compat/freebsd/freebsd_ptrace.c:1.19 --- src/sys/compat/freebsd/freebsd_ptrace.c:1.18 Wed Nov 12 12:36:10 2008 +++ src/sys/compat/freebsd/freebsd_ptrace.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: freebsd_ptrace.c,v 1.18 2008/11/12 12:36:10 ad Exp $ */ +/* $NetBSD: freebsd_ptrace.c,v 1.19 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 @@ -71,7 +71,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: freebsd_ptrace.c,v 1.18 2008/11/12 12:36:10 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: freebsd_ptrace.c,v 1.19 2009/11/23 00:46:06 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -79,7 +79,6 @@ #include <sys/errno.h> #include <sys/ptrace.h> #include <sys/uio.h> -#include <sys/user.h> #include <sys/mount.h> #include <sys/syscall.h> #include <sys/syscallargs.h> Index: src/sys/compat/irix/irix_signal.c diff -u src/sys/compat/irix/irix_signal.c:1.51 src/sys/compat/irix/irix_signal.c:1.52 --- src/sys/compat/irix/irix_signal.c:1.51 Wed Nov 4 21:23:02 2009 +++ src/sys/compat/irix/irix_signal.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: irix_signal.c,v 1.51 2009/11/04 21:23:02 rmind Exp $ */ +/* $NetBSD: irix_signal.c,v 1.52 2009/11/23 00:46:06 rmind 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.51 2009/11/04 21:23:02 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: irix_signal.c,v 1.52 2009/11/23 00:46:06 rmind Exp $"); #include <sys/types.h> #include <sys/signal.h> @@ -43,7 +43,6 @@ #include <sys/systm.h> #include <sys/vnode.h> #include <sys/wait.h> -#include <sys/user.h> #include <machine/regnum.h> #include <machine/trap.h> @@ -370,10 +369,12 @@ } static void -irix_set_sigcontext (struct irix_sigcontext *scp, const sigset_t *mask, int code, struct lwp *l) +irix_set_sigcontext (struct irix_sigcontext *scp, const sigset_t *mask, + int code, struct lwp *l) { - int i; struct frame *f; + struct pcb *pcb; + int i; KASSERT(mutex_owned(l->l_proc->p_lock)); @@ -400,19 +401,19 @@ /* * Save the floating-pointstate, if necessary, then copy it. */ + pcb = lwp_getpcb(l); #ifndef SOFTFLOAT scp->isc_ownedfp = l->l_md.md_flags & MDP_FPUSED; if (scp->isc_ownedfp) { /* if FPU has current state, save it first */ if (l == fpcurlwp) savefpregs(l); - (void)memcpy(&scp->isc_fpregs, &l->l_addr->u_pcb.pcb_fpregs, + memcpy(&scp->isc_fpregs, &pcb->pcb_fpregs, sizeof(scp->isc_fpregs)); - scp->isc_fpc_csr = l->l_addr->u_pcb.pcb_fpregs.r_regs[32]; + scp->isc_fpc_csr = pcb->pcb_fpregs.r_regs[32]; } #else - (void)memcpy(&scp->isc_fpregs, &l->l_addr->u_pcb.pcb_fpregs, - sizeof(scp->isc_fpregs)); + memcpy(&scp->isc_fpregs, &pcb->pcb_fpregs, sizeof(scp->isc_fpregs)); #endif /* * Save signal stack @@ -424,9 +425,11 @@ } void -irix_set_ucontext(struct irix_ucontext *ucp, const sigset_t *mask, int code, struct lwp *l) +irix_set_ucontext(struct irix_ucontext *ucp, const sigset_t *mask, + int code, struct lwp *l) { struct frame *f; + struct pcb *pcb; KASSERT(mutex_owned(l->l_proc->p_lock)); @@ -450,21 +453,20 @@ /* * Save the floating-pointstate, if necessary, then copy it. */ + pcb = lwp_getpcb(l); #ifndef SOFTFLOAT if (l->l_md.md_flags & MDP_FPUSED) { /* if FPU has current state, save it first */ if (l == fpcurlwp) savefpregs(l); - (void)memcpy(&ucp->iuc_mcontext.svr4___fpregs, - &l->l_addr->u_pcb.pcb_fpregs, - sizeof(ucp->iuc_mcontext.svr4___fpregs)); + memcpy(&ucp->iuc_mcontext.svr4___fpregs, + &pcb->pcb_fpregs, sizeof(ucp->iuc_mcontext.svr4___fpregs)); ucp->iuc_mcontext.svr4___fpregs.svr4___fp_csr = - l->l_addr->u_pcb.pcb_fpregs.r_regs[32]; + pcb->pcb_fpregs.r_regs[32]; } #else - (void)memcpy(&ucp->iuc_mcontext.svr4___fpregs, - &l->l_addr->u_pcb.pcb_fpregs, - sizeof(ucp->iuc_mcontext.svr4___fpregs)); + memcpy(&ucp->iuc_mcontext.svr4___fpregs, + &pcb->pcb_fpregs, sizeof(ucp->iuc_mcontext.svr4___fpregs)); #endif /* * Save signal stack @@ -570,20 +572,19 @@ } if (ucp->iuc_flags & IRIX_UC_MAU) { + struct pcb *pcb = lwp_getpcb(l); #ifndef SOFTFLOAT /* Disable the FPU to fault in FP registers. */ f->f_regs[_R_SR] &= ~MIPS_SR_COP_1_BIT; if (l == fpcurlwp) fpcurlwp = NULL; - (void)memcpy(&l->l_addr->u_pcb.pcb_fpregs, - &ucp->iuc_mcontext.svr4___fpregs, - sizeof(l->l_addr->u_pcb.pcb_fpregs)); - l->l_addr->u_pcb.pcb_fpregs.r_regs[32] = + memcpy(&pcb->pcb_fpregs, &ucp->iuc_mcontext.svr4___fpregs, + sizeof(pcb->pcb_fpregs)); + pcb->pcb_fpregs.r_regs[32] = ucp->iuc_mcontext.svr4___fpregs.svr4___fp_csr; #else - (void)memcpy(&l->l_addr->u_pcb.pcb_fpregs, - &ucp->iuc_mcontext.svr4___fpregs, - sizeof(l->l_addr->u_pcb.pcb_fpregs)); + memcpy(&pcb->pcb_fpregs, &ucp->iuc_mcontext.svr4___fpregs, + sizeof(pcb->pcb_fpregs)); #endif } @@ -620,9 +621,10 @@ static void irix_get_sigcontext(struct irix_sigcontext *scp, struct lwp *l) { - int i; struct frame *f; + struct pcb *pcb; sigset_t mask; + int i; KASSERT(mutex_owned(l->l_proc->p_lock)); @@ -635,19 +637,19 @@ f->f_regs[_R_MULHI] = scp->isc_mdhi; f->f_regs[_R_PC] = scp->isc_pc; + pcb = lwp_getpcb(l); #ifndef SOFTFLOAT if (scp->isc_ownedfp) { /* Disable the FPU to fault in FP registers. */ f->f_regs[_R_SR] &= ~MIPS_SR_COP_1_BIT; if (l == fpcurlwp) fpcurlwp = NULL; - (void)memcpy(&l->l_addr->u_pcb.pcb_fpregs, &scp->isc_fpregs, + memcpy(&pcb->pcb_fpregs, &scp->isc_fpregs, sizeof(scp->isc_fpregs)); - l->l_addr->u_pcb.pcb_fpregs.r_regs[32] = scp->isc_fpc_csr; + pcb->pcb_fpregs.r_regs[32] = scp->isc_fpc_csr; } #else - (void)memcpy(&l->l_addr->u_pcb.pcb_fpregs, &scp->isc_fpregs, - sizeof(l->l_addr->u_pcb.pcb_fpregs)); + memcpy(&pcb->pcb_fpregs, &scp->isc_fpregs, sizeof(pcb->pcb_fpregs)); #endif /* Restore signal stack. */ Index: src/sys/compat/linux/arch/alpha/linux_machdep.c diff -u src/sys/compat/linux/arch/alpha/linux_machdep.c:1.44 src/sys/compat/linux/arch/alpha/linux_machdep.c:1.45 --- src/sys/compat/linux/arch/alpha/linux_machdep.c:1.44 Wed Mar 18 17:06:48 2009 +++ src/sys/compat/linux/arch/alpha/linux_machdep.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.44 2009/03/18 17:06:48 cegger Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.45 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -35,14 +35,13 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.44 2009/03/18 17:06:48 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.45 2009/11/23 00:46:06 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> @@ -256,11 +255,13 @@ sigframe.sf_sc.sc_regs[R_SP] = alpha_pal_rdusp(); if (l == fpcurlwp) { - alpha_pal_wrfen(1); - savefpstate(&l->l_addr->u_pcb.pcb_fp); - alpha_pal_wrfen(0); - sigframe.sf_sc.sc_fpcr = l->l_addr->u_pcb.pcb_fp.fpr_cr; - fpcurlwp = NULL; + struct pcb *pcb = lwp_getpcb(l); + + alpha_pal_wrfen(1); + savefpstate(&pcb->pcb_fp); + alpha_pal_wrfen(0); + sigframe.sf_sc.sc_fpcr = pcb->pcb_fp.fpr_cr; + fpcurlwp = NULL; } /* XXX ownedfp ? etc...? */ @@ -374,6 +375,7 @@ sigset_t *mask) { struct proc *p = l->l_proc; + struct pcb *pcb; /* * Linux doesn't (yet) have alternate signal stacks. @@ -407,7 +409,8 @@ fpcurlwp = NULL; /* Restore fp regs and fpr_cr */ - memcpy( &l->l_addr->u_pcb.pcb_fp, (struct fpreg *)context.sc_fpregs, + pcb = lwp_getpcb(l); + memcpy(&pcb->pcb_fp, (struct fpreg *)context.sc_fpregs, sizeof(struct fpreg)); /* XXX sc_ownedfp ? */ /* XXX sc_fp_control ? */ Index: src/sys/compat/linux/arch/amd64/linux_machdep.c diff -u src/sys/compat/linux/arch/amd64/linux_machdep.c:1.36 src/sys/compat/linux/arch/amd64/linux_machdep.c:1.37 --- src/sys/compat/linux/arch/amd64/linux_machdep.c:1.36 Fri May 29 14:19:12 2009 +++ src/sys/compat/linux/arch/amd64/linux_machdep.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.36 2009/05/29 14:19:12 njoly Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.37 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 2005 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.36 2009/05/29 14:19:12 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.37 2009/11/23 00:46:06 rmind Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -42,7 +42,6 @@ #include <sys/exec.h> #include <sys/proc.h> #include <sys/ptrace.h> /* for process_read_fpregs() */ -#include <sys/user.h> #include <sys/ucontext.h> #include <sys/conf.h> @@ -82,11 +81,11 @@ void linux_setregs(struct lwp *l, struct exec_package *epp, u_long stack) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf; /* If we were using the FPU, forget about it. */ - if (l->l_addr->u_pcb.pcb_fpcpu != NULL) + if (pcb->pcb_fpcpu != NULL) fpusave_lwp(l, 0); l->l_md.md_flags &= ~MDP_USEDFPU; @@ -133,6 +132,7 @@ { struct lwp *l = curlwp; struct proc *p = l->l_proc; + struct pcb *pcb = lwp_getpcb(l); struct sigacts *ps = p->p_sigacts; int onstack, error; int sig = ksi->ksi_signo; @@ -220,7 +220,7 @@ sigframe.uc.luc_mcontext.trapno = tf->tf_trapno; native_to_linux_sigset(&lmask, mask); sigframe.uc.luc_mcontext.oldmask = lmask.sig[0]; - sigframe.uc.luc_mcontext.cr2 = (long)l->l_addr->u_pcb.pcb_onfault; + sigframe.uc.luc_mcontext.cr2 = (long)pcb->pcb_onfault; sigframe.uc.luc_mcontext.fpstate = fpsp; native_to_linux_sigset(&sigframe.uc.luc_sigmask, mask); @@ -482,13 +482,14 @@ } int -linux_sys_arch_prctl(struct lwp *l, const struct linux_sys_arch_prctl_args *uap, register_t *retval) +linux_sys_arch_prctl(struct lwp *l, + const struct linux_sys_arch_prctl_args *uap, register_t *retval) { /* { syscallarg(int) code; syscallarg(unsigned long) addr; } */ - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf = l->l_md.md_regs; int error; uint64_t taddr; Index: src/sys/compat/linux/arch/arm/linux_machdep.c diff -u src/sys/compat/linux/arch/arm/linux_machdep.c:1.27 src/sys/compat/linux/arch/arm/linux_machdep.c:1.28 --- src/sys/compat/linux/arch/arm/linux_machdep.c:1.27 Mon Apr 28 20:23:42 2008 +++ src/sys/compat/linux/arch/arm/linux_machdep.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.27 2008/04/28 20:23:42 martin Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.28 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 1995, 2000 The NetBSD Foundation, Inc. @@ -31,14 +31,13 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.27 2008/04/28 20:23:42 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.28 2009/11/23 00:46:06 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> Index: src/sys/compat/linux/arch/i386/linux_exec_machdep.c diff -u src/sys/compat/linux/arch/i386/linux_exec_machdep.c:1.13 src/sys/compat/linux/arch/i386/linux_exec_machdep.c:1.14 --- src/sys/compat/linux/arch/i386/linux_exec_machdep.c:1.13 Sun Sep 20 10:29:30 2009 +++ src/sys/compat/linux/arch/i386/linux_exec_machdep.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec_machdep.c,v 1.13 2009/09/20 10:29:30 taca Exp $ */ +/* $NetBSD: linux_exec_machdep.c,v 1.14 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 2004 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_exec_machdep.c,v 1.13 2009/09/20 10:29:30 taca Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_exec_machdep.c,v 1.14 2009/11/23 00:46:06 rmind Exp $"); #if defined(_KERNEL_OPT) #include "opt_vm86.h" @@ -145,7 +145,7 @@ linux_init_thread_area(struct lwp *l, struct lwp *l2) { struct trapframe *tf = l->l_md.md_regs, *tf2 = l2->l_md.md_regs; - struct pcb *pcb2 = &l2->l_addr->u_pcb; + struct pcb *pcb2 = lwp_getpcb(l2); struct linux_user_desc info; struct segment_descriptor sd; int error, idx, a[2]; @@ -195,7 +195,7 @@ linux_sys_set_thread_area(struct lwp *l, const struct linux_sys_set_thread_area_args *uap, register_t *retval) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct linux_user_desc info; struct segment_descriptor sd; int error, idx, a[2]; @@ -277,7 +277,7 @@ linux_sys_get_thread_area(struct lwp *l, const struct linux_sys_get_thread_area_args *uap, register_t *retval) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct linux_user_desc info; struct linux_desc_struct desc; struct segment_descriptor sd; Index: src/sys/compat/linux/arch/i386/linux_machdep.c diff -u src/sys/compat/linux/arch/i386/linux_machdep.c:1.145 src/sys/compat/linux/arch/i386/linux_machdep.c:1.146 --- src/sys/compat/linux/arch/i386/linux_machdep.c:1.145 Fri May 29 14:19:13 2009 +++ src/sys/compat/linux/arch/i386/linux_machdep.c Mon Nov 23 00:46:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.145 2009/05/29 14:19:13 njoly Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.146 2009/11/23 00:46:06 rmind Exp $ */ /*- * Copyright (c) 1995, 2000, 2008, 2009 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.145 2009/05/29 14:19:13 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.146 2009/11/23 00:46:06 rmind Exp $"); #if defined(_KERNEL_OPT) #include "opt_vm86.h" @@ -42,7 +42,6 @@ #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> @@ -126,7 +125,7 @@ void linux_setregs(struct lwp *l, struct exec_package *epp, u_long stack) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf; #if NNPX > 0 @@ -199,8 +198,11 @@ } static void -linux_save_sigcontext(struct lwp *l, struct trapframe *tf, const sigset_t *mask, struct linux_sigcontext *sc) +linux_save_sigcontext(struct lwp *l, struct trapframe *tf, + const sigset_t *mask, struct linux_sigcontext *sc) { + struct pcb *pcb = lwp_getpcb(l); + /* Save register context. */ #ifdef VM86 if (tf->tf_eflags & PSL_VM) { @@ -232,7 +234,7 @@ sc->sc_ss = tf->tf_ss; sc->sc_err = tf->tf_err; sc->sc_trapno = tf->tf_trapno; - sc->sc_cr2 = l->l_addr->u_pcb.pcb_cr2; + sc->sc_cr2 = pcb->pcb_cr2; sc->sc_387 = NULL; /* Save signal stack. */ @@ -270,7 +272,8 @@ fp--; DPRINTF(("rt: onstack = %d, fp = %p sig = %d eip = 0x%x cr2 = 0x%x\n", - onstack, fp, sig, tf->tf_eip, l->l_addr->u_pcb.pcb_cr2)); + onstack, fp, sig, tf->tf_eip, + ((struct pcb *)lwp_getpcb(l))->pcb_cr2)); /* Build stack frame for signal trampoline. */ frame.sf_handler = catcher; @@ -377,7 +380,8 @@ fp--; DPRINTF(("old: onstack = %d, fp = %p sig = %d eip = 0x%x cr2 = 0x%x\n", - onstack, fp, sig, tf->tf_eip, l->l_addr->u_pcb.pcb_cr2)); + onstack, fp, sig, tf->tf_eip, + ((struct pcb *)lwp_getpcb(l))->pcb_cr2)); /* Build stack frame for signal trampoline. */ frame.sf_handler = catcher; Index: src/sys/compat/linux/arch/mips/linux_machdep.c diff -u src/sys/compat/linux/arch/mips/linux_machdep.c:1.38 src/sys/compat/linux/arch/mips/linux_machdep.c:1.39 --- src/sys/compat/linux/arch/mips/linux_machdep.c:1.38 Mon Apr 28 20:23:43 2008 +++ src/sys/compat/linux/arch/mips/linux_machdep.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.38 2008/04/28 20:23:43 martin Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.39 2009/11/23 00:46:07 rmind Exp $ */ /*- * Copyright (c) 1995, 2000, 2001 The NetBSD Foundation, Inc. @@ -30,14 +30,13 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.38 2008/04/28 20:23:43 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.39 2009/11/23 00:46:07 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> Index: src/sys/compat/linux/arch/powerpc/linux_machdep.c diff -u src/sys/compat/linux/arch/powerpc/linux_machdep.c:1.39 src/sys/compat/linux/arch/powerpc/linux_machdep.c:1.40 --- src/sys/compat/linux/arch/powerpc/linux_machdep.c:1.39 Mon Apr 28 20:23:43 2008 +++ src/sys/compat/linux/arch/powerpc/linux_machdep.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_machdep.c,v 1.39 2008/04/28 20:23:43 martin Exp $ */ +/* $NetBSD: linux_machdep.c,v 1.40 2009/11/23 00:46:07 rmind Exp $ */ /*- * Copyright (c) 1995, 2000, 2001 The NetBSD Foundation, Inc. @@ -30,14 +30,13 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.39 2008/04/28 20:23:43 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_machdep.c,v 1.40 2009/11/23 00:46:07 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> Index: src/sys/compat/linux32/arch/amd64/linux32_machdep.c diff -u src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.22 src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.23 --- src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.22 Fri May 29 14:19:13 2009 +++ src/sys/compat/linux32/arch/amd64/linux32_machdep.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_machdep.c,v 1.22 2009/05/29 14:19:13 njoly Exp $ */ +/* $NetBSD: linux32_machdep.c,v 1.23 2009/11/23 00:46:07 rmind Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -31,14 +31,13 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux32_machdep.c,v 1.22 2009/05/29 14:19:13 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux32_machdep.c,v 1.23 2009/11/23 00:46:07 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/buf.h> #include <sys/reboot.h> #include <sys/conf.h> @@ -281,13 +280,13 @@ void linux32_setregs(struct lwp *l, struct exec_package *pack, u_long stack) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf; struct proc *p = l->l_proc; void **retaddr; /* If we were using the FPU, forget about it. */ - if (l->l_addr->u_pcb.pcb_fpcpu != NULL) + if (pcb->pcb_fpcpu != NULL) fpusave_lwp(l, 0); #if defined(USER_LDT) && 0 @@ -340,8 +339,10 @@ } static void -linux32_save_ucontext(struct lwp *l, struct trapframe *tf, const sigset_t *mask, struct sigaltstack *sas, struct linux32_ucontext *uc) +linux32_save_ucontext(struct lwp *l, struct trapframe *tf, + const sigset_t *mask, struct sigaltstack *sas, struct linux32_ucontext *uc) { + uc->uc_flags = 0; NETBSD32PTR32(uc->uc_link, NULL); native_to_linux32_sigaltstack(&uc->uc_stack, sas); @@ -354,6 +355,8 @@ linux32_save_sigcontext(struct lwp *l, struct trapframe *tf, const sigset_t *mask, struct linux32_sigcontext *sc) { + struct pcb *pcb = lwp_getpcb(l); + /* Save register context. */ sc->sc_gs = tf->tf_gs; sc->sc_fs = tf->tf_fs; @@ -374,7 +377,7 @@ sc->sc_ss = tf->tf_ss; sc->sc_err = tf->tf_err; sc->sc_trapno = tf->tf_trapno; - sc->sc_cr2 = l->l_addr->u_pcb.pcb_cr2; + sc->sc_cr2 = pcb->pcb_cr2; NETBSD32PTR32(sc->sc_387, NULL); /* Save signal stack. */ @@ -385,7 +388,8 @@ } int -linux32_sys_sigreturn(struct lwp *l, const struct linux32_sys_sigreturn_args *uap, register_t *retval) +linux32_sys_sigreturn(struct lwp *l, + const struct linux32_sys_sigreturn_args *uap, register_t *retval) { /* { syscallarg(linux32_sigcontextp_t) scp; @@ -400,7 +404,8 @@ } int -linux32_sys_rt_sigreturn(struct lwp *l, const struct linux32_sys_rt_sigreturn_args *uap, register_t *retval) +linux32_sys_rt_sigreturn(struct lwp *l, + const struct linux32_sys_rt_sigreturn_args *uap, register_t *retval) { /* { syscallarg(linux32_ucontextp_t) ucp; Index: src/sys/compat/osf1/osf1_misc.c diff -u src/sys/compat/osf1/osf1_misc.c:1.83 src/sys/compat/osf1/osf1_misc.c:1.84 --- src/sys/compat/osf1/osf1_misc.c:1.83 Wed Nov 4 21:23:03 2009 +++ src/sys/compat/osf1/osf1_misc.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: osf1_misc.c,v 1.83 2009/11/04 21:23:03 rmind Exp $ */ +/* $NetBSD: osf1_misc.c,v 1.84 2009/11/23 00:46:07 rmind Exp $ */ /* * Copyright (c) 1999 Christopher G. Demetriou. All rights reserved. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: osf1_misc.c,v 1.83 2009/11/04 21:23:03 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: osf1_misc.c,v 1.84 2009/11/23 00:46:07 rmind Exp $"); #if defined(_KERNEL_OPT) #include "opt_syscall_debug.h" @@ -84,7 +84,6 @@ #include <sys/socketvar.h> #include <sys/resource.h> #include <sys/resourcevar.h> -#include <sys/user.h> #include <sys/wait.h> #include <machine/alpha.h> Index: src/sys/compat/svr4/svr4_lwp.c diff -u src/sys/compat/svr4/svr4_lwp.c:1.18 src/sys/compat/svr4/svr4_lwp.c:1.19 --- src/sys/compat/svr4/svr4_lwp.c:1.18 Mon Apr 28 20:23:45 2008 +++ src/sys/compat/svr4/svr4_lwp.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_lwp.c,v 1.18 2008/04/28 20:23:45 martin Exp $ */ +/* $NetBSD: svr4_lwp.c,v 1.19 2009/11/23 00:46:07 rmind Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: svr4_lwp.c,v 1.18 2008/04/28 20:23:45 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: svr4_lwp.c,v 1.19 2009/11/23 00:46:07 rmind Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -42,7 +42,6 @@ #include <sys/time.h> #include <sys/resourcevar.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/socket.h> #include <sys/socketvar.h> #include <sys/syscallargs.h> Index: src/sys/compat/svr4_32/svr4_32_lwp.c diff -u src/sys/compat/svr4_32/svr4_32_lwp.c:1.16 src/sys/compat/svr4_32/svr4_32_lwp.c:1.17 --- src/sys/compat/svr4_32/svr4_32_lwp.c:1.16 Mon Apr 28 20:23:46 2008 +++ src/sys/compat/svr4_32/svr4_32_lwp.c Mon Nov 23 00:46:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_32_lwp.c,v 1.16 2008/04/28 20:23:46 martin Exp $ */ +/* $NetBSD: svr4_32_lwp.c,v 1.17 2009/11/23 00:46:07 rmind Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: svr4_32_lwp.c,v 1.16 2008/04/28 20:23:46 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: svr4_32_lwp.c,v 1.17 2009/11/23 00:46:07 rmind Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -42,7 +42,6 @@ #include <sys/time.h> #include <sys/resourcevar.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/socket.h> #include <sys/socketvar.h> #include <sys/syscallargs.h>