Module Name: src Committed By: rmind Date: Sat Nov 21 20:32:28 UTC 2009
Modified Files: src/sys/arch/acorn26/acorn26: cpu.c cpuswitch.c except.c fpu.c machdep.c start.c stubs.c vm_machdep.c src/sys/arch/arm/arm: arm_machdep.c ast.c compat_13_machdep.c compat_16_machdep.c db_trace.c linux_syscall.c linux_trap.c process_machdep.c sig_machdep.c syscall.c undefined.c src/sys/arch/arm/arm32: arm32_machdep.c fault.c pmap.c vm_machdep.c src/sys/arch/arm/fpe-arm: armfpe_init.c src/sys/arch/arm/include: cpu.h frame.h proc.h src/sys/arch/arm/s3c2xx0: sscom.c sscom_s3c2410.c sscom_s3c2800.c src/sys/arch/arm/vfp: vfp_init.c src/sys/arch/evbarm/dev: plcom.c Log Message: Use lwp_getpcb() on ARM (and acorn26/32), clean from struct user usage. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/acorn26/acorn26/cpu.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/acorn26/acorn26/cpuswitch.c cvs rdiff -u -r1.22 -r1.23 src/sys/arch/acorn26/acorn26/except.c \ src/sys/arch/acorn26/acorn26/vm_machdep.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/acorn26/acorn26/fpu.c cvs rdiff -u -r1.31 -r1.32 src/sys/arch/acorn26/acorn26/machdep.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/acorn26/acorn26/start.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/acorn26/acorn26/stubs.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/arm/arm_machdep.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/arm/ast.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/arm/compat_13_machdep.c cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/arm/compat_16_machdep.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/arm/db_trace.c cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/arm/linux_syscall.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/arm/linux_trap.c cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/arm/process_machdep.c cvs rdiff -u -r1.37 -r1.38 src/sys/arch/arm/arm/sig_machdep.c \ src/sys/arch/arm/arm/undefined.c cvs rdiff -u -r1.49 -r1.50 src/sys/arch/arm/arm/syscall.c cvs rdiff -u -r1.67 -r1.68 src/sys/arch/arm/arm32/arm32_machdep.c cvs rdiff -u -r1.72 -r1.73 src/sys/arch/arm/arm32/fault.c cvs rdiff -u -r1.201 -r1.202 src/sys/arch/arm/arm32/pmap.c cvs rdiff -u -r1.50 -r1.51 src/sys/arch/arm/arm32/vm_machdep.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/fpe-arm/armfpe_init.c cvs rdiff -u -r1.57 -r1.58 src/sys/arch/arm/include/cpu.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/include/frame.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/include/proc.h cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/s3c2xx0/sscom.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/vfp/vfp_init.c cvs rdiff -u -r1.29 -r1.30 src/sys/arch/evbarm/dev/plcom.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/arch/acorn26/acorn26/cpu.c diff -u src/sys/arch/acorn26/acorn26/cpu.c:1.27 src/sys/arch/acorn26/acorn26/cpu.c:1.28 --- src/sys/arch/acorn26/acorn26/cpu.c:1.27 Wed Mar 18 10:22:21 2009 +++ src/sys/arch/acorn26/acorn26/cpu.c Sat Nov 21 20:32:13 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.27 2009/03/18 10:22:21 cegger Exp $ */ +/* $NetBSD: cpu.c,v 1.28 2009/11/21 20:32:13 rmind Exp $ */ /*- * Copyright (c) 2000, 2001 Ben Harris @@ -32,13 +32,12 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.27 2009/03/18 10:22:21 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.28 2009/11/21 20:32:13 rmind Exp $"); #include <sys/device.h> #include <sys/proc.h> #include <sys/systm.h> #include <sys/time.h> -#include <sys/user.h> #include <uvm/uvm_extern.h> #include <arm/armreg.h> #include <arm/cpuconf.h> Index: src/sys/arch/acorn26/acorn26/cpuswitch.c diff -u src/sys/arch/acorn26/acorn26/cpuswitch.c:1.16 src/sys/arch/acorn26/acorn26/cpuswitch.c:1.17 --- src/sys/arch/acorn26/acorn26/cpuswitch.c:1.16 Mon Jun 23 17:58:17 2008 +++ src/sys/arch/acorn26/acorn26/cpuswitch.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cpuswitch.c,v 1.16 2008/06/23 17:58:17 matt Exp $ */ +/* $NetBSD: cpuswitch.c,v 1.17 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 2000 Ben Harris. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpuswitch.c,v 1.16 2008/06/23 17:58:17 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpuswitch.c,v 1.17 2009/11/21 20:32:17 rmind Exp $"); #include "opt_lockdebug.h" @@ -46,7 +46,6 @@ #include <sys/proc.h> #include <sys/sched.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/ras.h> #include <sys/cpu.h> @@ -62,6 +61,7 @@ cpu_switchto(lwp_t *old, lwp_t *new, bool returning) { struct cpu_info * const ci = curcpu(); + struct pcb *pcb; struct proc *p2; /* @@ -73,13 +73,14 @@ #endif curlwp = new; - ci->ci_curpcb = &curlwp->l_addr->u_pcb; + pcb = lwp_getpcb(curlwp); + ci->ci_curpcb = pcb; if ((new->l_flag & LW_SYSTEM) == 0) { /* Check for Restartable Atomic Sequences. */ p2 = new->l_proc; if (p2->p_raslist != NULL) { - struct trapframe *tf = new->l_addr->u_pcb.pcb_tf; + struct trapframe *tf = pcb->pcb_tf; void *pc; pc = ras_lookup(p2, (void *)(tf->tf_r15 & R15_PC)); Index: src/sys/arch/acorn26/acorn26/except.c diff -u src/sys/arch/acorn26/acorn26/except.c:1.22 src/sys/arch/acorn26/acorn26/except.c:1.23 --- src/sys/arch/acorn26/acorn26/except.c:1.22 Wed Mar 18 10:22:21 2009 +++ src/sys/arch/acorn26/acorn26/except.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: except.c,v 1.22 2009/03/18 10:22:21 cegger Exp $ */ +/* $NetBSD: except.c,v 1.23 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 Ben Harris * All rights reserved. @@ -31,7 +31,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: except.c,v 1.22 2009/03/18 10:22:21 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: except.c,v 1.23 2009/11/21 20:32:17 rmind Exp $"); #include "opt_ddb.h" @@ -40,7 +40,6 @@ #include <sys/kernel.h> #include <sys/syslog.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/cpu.h> #include <uvm/uvm_extern.h> @@ -89,7 +88,6 @@ } #endif - void prefetch_abort_handler(struct trapframe *tf) { @@ -115,7 +113,8 @@ p = l->l_proc; if ((tf->tf_r15 & R15_MODE) == R15_MODE_USR) { - l->l_addr->u_pcb.pcb_tf = tf; + struct pcb *pcb = lwp_getpcb(l); + pcb->pcb_tf = tf; LWP_CACHE_CREDS(l, p); } @@ -139,7 +138,7 @@ userret(l); } - + void data_abort_handler(struct trapframe *tf) { @@ -171,7 +170,8 @@ l = &lwp0; p = l->l_proc; if ((tf->tf_r15 & R15_MODE) == R15_MODE_USR) { - l->l_addr->u_pcb.pcb_tf = tf; + struct pcb *pcb = lwp_getpcb(l); + pcb->pcb_tf = tf; LWP_CACHE_CREDS(l, p); } pc = tf->tf_r15 & R15_PC; @@ -214,7 +214,7 @@ if (error != 0) { ksiginfo_t ksi; - cur_pcb = &l->l_addr->u_pcb; + cur_pcb = lwp_getpcb(l); if (cur_pcb->pcb_onfault != NULL) { tf->tf_r0 = error; tf->tf_r15 = (tf->tf_r15 & ~R15_PC) | @@ -455,7 +455,7 @@ return true; return false; } - + void address_exception_handler(struct trapframe *tf) { @@ -471,7 +471,8 @@ if (l == NULL) l = &lwp0; if ((tf->tf_r15 & R15_MODE) == R15_MODE_USR) { - l->l_addr->u_pcb.pcb_tf = tf; + struct pcb *pcb = lwp_getpcb(l); + pcb->pcb_tf = tf; LWP_CACHE_CREDS(l, l->l_proc); } @@ -506,7 +507,7 @@ trapsignal(l, &ksi); userret(l); } - + #ifdef DEBUG static void printregs(struct trapframe *tf) Index: src/sys/arch/acorn26/acorn26/vm_machdep.c diff -u src/sys/arch/acorn26/acorn26/vm_machdep.c:1.22 src/sys/arch/acorn26/acorn26/vm_machdep.c:1.23 --- src/sys/arch/acorn26/acorn26/vm_machdep.c:1.22 Wed Oct 21 21:11:58 2009 +++ src/sys/arch/acorn26/acorn26/vm_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: vm_machdep.c,v 1.22 2009/10/21 21:11:58 rmind Exp $ */ +/* $NetBSD: vm_machdep.c,v 1.23 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 2000, 2001 Ben Harris @@ -64,14 +64,13 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.22 2009/10/21 21:11:58 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.23 2009/11/21 20:32:17 rmind Exp $"); #include <sys/param.h> #include <sys/buf.h> #include <sys/mount.h> /* XXX syscallargs.h uses fhandle_t and fsid_t */ #include <sys/proc.h> #include <sys/syscallargs.h> -#include <sys/user.h> #include <sys/sched.h> #include <sys/mutex.h> @@ -98,16 +97,15 @@ /* * Note: * - * p->p_addr points to a page containing the user structure - * (see <sys/user.h>) and the kernel stack. The user structure has to be - * at the start of the area -- we start the kernel stack from the end. + * The pcb structure has to be* at the start of the area -- we start the + * kernel stack from the end. */ void cpu_lwp_fork(struct lwp *l1, struct lwp *l2, void *stack, size_t stacksize, void (*func)(void *), void *arg) { - struct pcb *pcb; + struct pcb *pcb1, *pcb2; struct trapframe *tf; struct switchframe *sf; char *stacktop; @@ -115,9 +113,11 @@ #if 0 printf("cpu_lwp_fork: %p -> %p\n", p1, p2); #endif - pcb = &l2->l_addr->u_pcb; + pcb1 = lwp_getpcb(l1); + pcb2 = lwp_getpcb(l2); + /* Copy the pcb */ - *pcb = l1->l_addr->u_pcb; + *pcb2 = *pcb1; /* pmap_activate(l2); XXX Other ports do. Why? */ @@ -126,14 +126,14 @@ tf = (struct trapframe *)stacktop - 1; sf = (struct switchframe *)tf - 1; /* Duplicate old process's trapframe (if it had one) */ - if (l1->l_addr->u_pcb.pcb_tf == NULL) + if (pcb1->pcb_tf == NULL) memset(tf, 0, sizeof(*tf)); else - *tf = *l1->l_addr->u_pcb.pcb_tf; + *tf = *pcb1->pcb_tf; /* If specified, give the child a different stack. */ if (stack != NULL) tf->tf_usr_sp = (u_int)stack + stacksize; - l2->l_addr->u_pcb.pcb_tf = tf; + pcb2->pcb_tf = tf; /* Fabricate a new switchframe */ memset(sf, 0, sizeof(*sf)); @@ -143,7 +143,7 @@ void cpu_setfunc(struct lwp *l, void (*func)(void *), void *arg) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf = pcb->pcb_tf; struct switchframe *sf = (struct switchframe *)tf - 1; Index: src/sys/arch/acorn26/acorn26/fpu.c diff -u src/sys/arch/acorn26/acorn26/fpu.c:1.10 src/sys/arch/acorn26/acorn26/fpu.c:1.11 --- src/sys/arch/acorn26/acorn26/fpu.c:1.10 Tue May 12 06:31:37 2009 +++ src/sys/arch/acorn26/acorn26/fpu.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu.c,v 1.10 2009/05/12 06:31:37 cegger Exp $ */ +/* $NetBSD: fpu.c,v 1.11 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 2000, 2001 Ben Harris @@ -32,12 +32,11 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.10 2009/05/12 06:31:37 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.11 2009/11/21 20:32:17 rmind Exp $"); #include <sys/device.h> #include <sys/proc.h> #include <sys/systm.h> -#include <sys/user.h> #include <arm/undefined.h> #include <machine/fpureg.h> #include <machine/pcb.h> Index: src/sys/arch/acorn26/acorn26/machdep.c diff -u src/sys/arch/acorn26/acorn26/machdep.c:1.31 src/sys/arch/acorn26/acorn26/machdep.c:1.32 --- src/sys/arch/acorn26/acorn26/machdep.c:1.31 Tue Aug 11 17:04:14 2009 +++ src/sys/arch/acorn26/acorn26/machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.31 2009/08/11 17:04:14 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.32 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 1998 Ben Harris @@ -32,7 +32,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.31 2009/08/11 17:04:14 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.32 2009/11/21 20:32:17 rmind Exp $"); #include <sys/buf.h> #include <sys/kernel.h> @@ -168,7 +168,7 @@ format_bytes(pbuf, sizeof(pbuf), ptoa(uvmexp.free)); printf("avail memory = %s\n", pbuf); - curpcb = &lwp0.l_addr->u_pcb; + curpcb = lwp_getpcb(&lwp0); #if 0 /* Test exception handlers */ Index: src/sys/arch/acorn26/acorn26/start.c diff -u src/sys/arch/acorn26/acorn26/start.c:1.14 src/sys/arch/acorn26/acorn26/start.c:1.15 --- src/sys/arch/acorn26/acorn26/start.c:1.14 Wed Mar 18 16:00:08 2009 +++ src/sys/arch/acorn26/acorn26/start.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: start.c,v 1.14 2009/03/18 16:00:08 cegger Exp $ */ +/* $NetBSD: start.c,v 1.15 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 1998, 2000 Ben Harris * All rights reserved. @@ -31,12 +31,11 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: start.c,v 1.14 2009/03/18 16:00:08 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: start.c,v 1.15 2009/11/21 20:32:17 rmind Exp $"); #include "opt_modular.h" #include <sys/msgbuf.h> -#include <sys/user.h> #include <sys/syslog.h> #include <sys/systm.h> Index: src/sys/arch/acorn26/acorn26/stubs.c diff -u src/sys/arch/acorn26/acorn26/stubs.c:1.9 src/sys/arch/acorn26/acorn26/stubs.c:1.10 --- src/sys/arch/acorn26/acorn26/stubs.c:1.9 Sat Mar 14 15:35:58 2009 +++ src/sys/arch/acorn26/acorn26/stubs.c Sat Nov 21 20:32:17 2009 @@ -1,15 +1,14 @@ -/* $NetBSD: stubs.c,v 1.9 2009/03/14 15:35:58 dsl Exp $ */ +/* $NetBSD: stubs.c,v 1.10 2009/11/21 20:32:17 rmind Exp $ */ /* * stubs.c -- functions I haven't written yet */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: stubs.c,v 1.9 2009/03/14 15:35:58 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: stubs.c,v 1.10 2009/11/21 20:32:17 rmind Exp $"); #include <sys/param.h> #include <sys/kernel.h> #include <sys/systm.h> -#include <sys/user.h> #include <uvm/uvm_extern.h> Index: src/sys/arch/arm/arm/arm_machdep.c diff -u src/sys/arch/arm/arm/arm_machdep.c:1.25 src/sys/arch/arm/arm/arm_machdep.c:1.26 --- src/sys/arch/arm/arm/arm_machdep.c:1.25 Sat Aug 15 23:44:58 2009 +++ src/sys/arch/arm/arm/arm_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_machdep.c,v 1.25 2009/08/15 23:44:58 matt Exp $ */ +/* $NetBSD: arm_machdep.c,v 1.26 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -79,12 +79,11 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: arm_machdep.c,v 1.25 2009/08/15 23:44:58 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm_machdep.c,v 1.26 2009/11/21 20:32:17 rmind Exp $"); #include <sys/exec.h> #include <sys/proc.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/pool.h> #include <sys/ucontext.h> #include <sys/evcnt.h> @@ -149,9 +148,11 @@ void setregs(struct lwp *l, struct exec_package *pack, u_long stack) { + struct pcb *pcb; struct trapframe *tf; - tf = l->l_addr->u_pcb.pcb_tf; + pcb = lwp_getpcb(l); + tf = pcb->pcb_tf; memset(tf, 0, sizeof(*tf)); tf->tf_r0 = (u_int)l->l_proc->p_psstr; @@ -170,13 +171,13 @@ #ifdef EXEC_AOUT if (pack->ep_esch->es_makecmds == exec_aout_makecmds) - l->l_addr->u_pcb.pcb_flags = PCB_NOALIGNFLT; + pcb->pcb_flags = PCB_NOALIGNFLT; else #endif - l->l_addr->u_pcb.pcb_flags = 0; + pcb->pcb_flags = 0; #ifdef FPU_VFP l->l_md.md_flags &= ~MDP_VFPUSED; - if (l->l_addr->u_pcb.pcb_vfpcpu != NULL) + if (pcb->pcb_vfpcpu != NULL) vfp_saveregs_lwp(l, 0); #endif } Index: src/sys/arch/arm/arm/ast.c diff -u src/sys/arch/arm/arm/ast.c:1.17 src/sys/arch/arm/arm/ast.c:1.18 --- src/sys/arch/arm/arm/ast.c:1.17 Fri Dec 19 15:20:10 2008 +++ src/sys/arch/arm/arm/ast.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ast.c,v 1.17 2008/12/19 15:20:10 njoly Exp $ */ +/* $NetBSD: ast.c,v 1.18 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1994,1995 Mark Brinicombe @@ -41,13 +41,12 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ast.c,v 1.17 2008/12/19 15:20:10 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ast.c,v 1.18 2009/11/21 20:32:17 rmind Exp $"); #include "opt_ddb.h" #include <sys/param.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/acct.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -78,7 +77,10 @@ mi_userret(l); #ifdef __PROG32 - KASSERT((l->l_addr->u_pcb.pcb_tf->tf_spsr & IF32_bits) == 0); + { + struct pcb *pcb = lwp_getpcb(l); + KASSERT((pcb->pcb_tf->tf_spsr & IF32_bits) == 0); + } #endif } @@ -115,7 +117,7 @@ KDASSERT(curcpu()->ci_cpl == IPL_NONE); if (l == NULL) panic("ast: no curlwp!"); - if (&l->l_addr->u_pcb == NULL) + if (lwp_getpcb(l) == NULL) panic("ast: no pcb!"); #endif Index: src/sys/arch/arm/arm/compat_13_machdep.c diff -u src/sys/arch/arm/arm/compat_13_machdep.c:1.15 src/sys/arch/arm/arm/compat_13_machdep.c:1.16 --- src/sys/arch/arm/arm/compat_13_machdep.c:1.15 Thu Apr 24 18:39:20 2008 +++ src/sys/arch/arm/arm/compat_13_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: compat_13_machdep.c,v 1.15 2008/04/24 18:39:20 ad Exp $ */ +/* $NetBSD: compat_13_machdep.c,v 1.16 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -38,13 +38,12 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: compat_13_machdep.c,v 1.15 2008/04/24 18:39:20 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: compat_13_machdep.c,v 1.16 2009/11/21 20:32:17 rmind Exp $"); #include <sys/systm.h> #include <sys/signalvar.h> #include <sys/kernel.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/mount.h> #include <sys/syscallargs.h> @@ -60,6 +59,7 @@ struct sigcontext13 *scp, context; struct trapframe *tf; struct proc *p = l->l_proc; + struct pcb *pcb; sigset_t mask; /* @@ -79,7 +79,8 @@ return EINVAL; /* Restore register context. */ - tf = l->l_addr->u_pcb.pcb_tf; + pcb = lwp_getpcb(l); + tf = pcb->pcb_tf; tf->tf_r0 = context.sc_r0; tf->tf_r1 = context.sc_r1; tf->tf_r2 = context.sc_r2; Index: src/sys/arch/arm/arm/compat_16_machdep.c diff -u src/sys/arch/arm/arm/compat_16_machdep.c:1.11 src/sys/arch/arm/arm/compat_16_machdep.c:1.12 --- src/sys/arch/arm/arm/compat_16_machdep.c:1.11 Fri Nov 21 14:03:41 2008 +++ src/sys/arch/arm/arm/compat_16_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: compat_16_machdep.c,v 1.11 2008/11/21 14:03:41 ad Exp $ */ +/* $NetBSD: compat_16_machdep.c,v 1.12 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -42,7 +42,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: compat_16_machdep.c,v 1.11 2008/11/21 14:03:41 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: compat_16_machdep.c,v 1.12 2009/11/21 20:32:17 rmind Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -55,7 +55,6 @@ #include <sys/signal.h> #include <sys/syscallargs.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/ras.h> #include <sys/ucontext.h> Index: src/sys/arch/arm/arm/db_trace.c diff -u src/sys/arch/arm/arm/db_trace.c:1.20 src/sys/arch/arm/arm/db_trace.c:1.21 --- src/sys/arch/arm/arm/db_trace.c:1.20 Wed Oct 21 21:11:59 2009 +++ src/sys/arch/arm/arm/db_trace.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: db_trace.c,v 1.20 2009/10/21 21:11:59 rmind Exp $ */ +/* $NetBSD: db_trace.c,v 1.21 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 2000, 2001 Ben Harris @@ -31,10 +31,9 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.20 2009/10/21 21:11:59 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.21 2009/11/21 20:32:17 rmind Exp $"); #include <sys/proc.h> -#include <sys/user.h> #include <arm/armreg.h> #include <arm/cpufunc.h> #include <machine/db_machdep.h> @@ -108,7 +107,7 @@ else { if (trace_thread) { struct proc *p; - struct user *u; + struct pcb *pcb; struct lwp *l; if (lwpaddr) { l = (struct lwp *)addr; @@ -125,11 +124,11 @@ KASSERT(l != NULL); } (*pr)("lid %d ", l->l_lid); - u = l->l_addr; + pcb = lwp_getpcb(l); #ifdef acorn26 - frame = (u_int32_t *)(u->u_pcb.pcb_sf->sf_r11); + frame = (uint32_t *)(pcb->pcb_sf->sf_r11); #else - frame = (u_int32_t *)(u->u_pcb.pcb_un.un_32.pcb32_r11); + frame = (uint32_t *)(pcb->pcb_un.un_32.pcb32_r11); #endif (*pr)("at %p\n", frame); } else Index: src/sys/arch/arm/arm/linux_syscall.c diff -u src/sys/arch/arm/arm/linux_syscall.c:1.22 src/sys/arch/arm/arm/linux_syscall.c:1.23 --- src/sys/arch/arm/arm/linux_syscall.c:1.22 Tue Oct 21 12:16:59 2008 +++ src/sys/arch/arm/arm/linux_syscall.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_syscall.c,v 1.22 2008/10/21 12:16:59 ad Exp $ */ +/* $NetBSD: linux_syscall.c,v 1.23 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 2000, 2003 The NetBSD Foundation, Inc. @@ -69,7 +69,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.22 2008/10/21 12:16:59 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.23 2009/11/21 20:32:17 rmind Exp $"); #include <sys/device.h> #include <sys/errno.h> @@ -77,7 +77,6 @@ #include <sys/reboot.h> #include <sys/signalvar.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/syscallvar.h> #include <uvm/uvm_extern.h> Index: src/sys/arch/arm/arm/linux_trap.c diff -u src/sys/arch/arm/arm/linux_trap.c:1.7 src/sys/arch/arm/arm/linux_trap.c:1.8 --- src/sys/arch/arm/arm/linux_trap.c:1.7 Mon Apr 28 20:23:13 2008 +++ src/sys/arch/arm/arm/linux_trap.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_trap.c,v 1.7 2008/04/28 20:23:13 martin Exp $ */ +/* $NetBSD: linux_trap.c,v 1.8 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -30,12 +30,11 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_trap.c,v 1.7 2008/04/28 20:23:13 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_trap.c,v 1.8 2009/11/21 20:32:17 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/acct.h> #include <sys/kernel.h> #include <sys/signal.h> Index: src/sys/arch/arm/arm/process_machdep.c diff -u src/sys/arch/arm/arm/process_machdep.c:1.21 src/sys/arch/arm/arm/process_machdep.c:1.22 --- src/sys/arch/arm/arm/process_machdep.c:1.21 Sat May 16 16:49:19 2009 +++ src/sys/arch/arm/arm/process_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.21 2009/05/16 16:49:19 cegger Exp $ */ +/* $NetBSD: process_machdep.c,v 1.22 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1993 The Regents of the University of California. @@ -133,12 +133,11 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.21 2009/05/16 16:49:19 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.22 2009/11/21 20:32:17 rmind Exp $"); #include <sys/proc.h> #include <sys/ptrace.h> #include <sys/systm.h> -#include <sys/user.h> #include <machine/frame.h> #include <machine/pcb.h> Index: src/sys/arch/arm/arm/sig_machdep.c diff -u src/sys/arch/arm/arm/sig_machdep.c:1.37 src/sys/arch/arm/arm/sig_machdep.c:1.38 --- src/sys/arch/arm/arm/sig_machdep.c:1.37 Sat Mar 14 21:04:04 2009 +++ src/sys/arch/arm/arm/sig_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sig_machdep.c,v 1.37 2009/03/14 21:04:04 dsl Exp $ */ +/* $NetBSD: sig_machdep.c,v 1.38 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -44,14 +44,13 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: sig_machdep.c,v 1.37 2009/03/14 21:04:04 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sig_machdep.c,v 1.38 2009/11/21 20:32:17 rmind Exp $"); #include <sys/mount.h> /* XXX only needed by syscallargs.h */ #include <sys/proc.h> #include <sys/signal.h> #include <sys/syscallargs.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/ras.h> #include <sys/ucontext.h> Index: src/sys/arch/arm/arm/undefined.c diff -u src/sys/arch/arm/arm/undefined.c:1.37 src/sys/arch/arm/arm/undefined.c:1.38 --- src/sys/arch/arm/arm/undefined.c:1.37 Sun Mar 15 22:23:16 2009 +++ src/sys/arch/arm/arm/undefined.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: undefined.c,v 1.37 2009/03/15 22:23:16 cegger Exp $ */ +/* $NetBSD: undefined.c,v 1.38 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 2001 Ben Harris. @@ -54,14 +54,13 @@ #include <sys/kgdb.h> #endif -__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.37 2009/03/15 22:23:16 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.38 2009/11/21 20:32:17 rmind Exp $"); #include <sys/malloc.h> #include <sys/queue.h> #include <sys/signal.h> #include <sys/systm.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/syslog.h> #include <sys/vmmeter.h> #ifdef FAST_FPE Index: src/sys/arch/arm/arm/syscall.c diff -u src/sys/arch/arm/arm/syscall.c:1.49 src/sys/arch/arm/arm/syscall.c:1.50 --- src/sys/arch/arm/arm/syscall.c:1.49 Wed Oct 21 21:11:59 2009 +++ src/sys/arch/arm/arm/syscall.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: syscall.c,v 1.49 2009/10/21 21:11:59 rmind Exp $ */ +/* $NetBSD: syscall.c,v 1.50 2009/11/21 20:32:17 rmind Exp $ */ /*- * Copyright (c) 2000, 2003 The NetBSD Foundation, Inc. @@ -71,7 +71,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.49 2009/10/21 21:11:59 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.50 2009/11/21 20:32:17 rmind Exp $"); #include "opt_sa.h" @@ -83,7 +83,6 @@ #include <sys/syscall.h> #include <sys/syscallvar.h> #include <sys/systm.h> -#include <sys/user.h> #include <sys/ktrace.h> #include <uvm/uvm_extern.h> @@ -102,6 +101,7 @@ swi_handler(trapframe_t *frame) { lwp_t *l = curlwp; + struct pcb *pcb; uint32_t insn; /* @@ -170,7 +170,8 @@ #endif } - l->l_addr->u_pcb.pcb_tf = frame; + pcb = lwp_getpcb(l); + pcb->pcb_tf = frame; #ifdef CPU_ARM7 /* @@ -322,7 +323,8 @@ child_return(void *arg) { lwp_t *l = arg; - struct trapframe *frame = l->l_addr->u_pcb.pcb_tf; + struct pcb *pcb = lwp_getpcb(l); + struct trapframe *frame = pcb->pcb_tf; frame->tf_r0 = 0; #ifdef __PROG32 Index: src/sys/arch/arm/arm32/arm32_machdep.c diff -u src/sys/arch/arm/arm32/arm32_machdep.c:1.67 src/sys/arch/arm/arm32/arm32_machdep.c:1.68 --- src/sys/arch/arm/arm32/arm32_machdep.c:1.67 Sat Nov 7 07:27:41 2009 +++ src/sys/arch/arm/arm32/arm32_machdep.c Sat Nov 21 20:32:17 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: arm32_machdep.c,v 1.67 2009/11/07 07:27:41 cegger Exp $ */ +/* $NetBSD: arm32_machdep.c,v 1.68 2009/11/21 20:32:17 rmind Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.67 2009/11/07 07:27:41 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.68 2009/11/21 20:32:17 rmind Exp $"); #include "opt_md.h" #include "opt_pmap_debug.h" @@ -255,7 +255,7 @@ format_bytes(pbuf, sizeof(pbuf), ptoa(uvmexp.free)); printf("avail memory = %s\n", pbuf); - curpcb = &lwp0.l_addr->u_pcb; + curpcb = lwp_getpcb(&lwp0); curpcb->pcb_flags = 0; curpcb->pcb_un.un_32.pcb32_sp = (u_int)lwp0.l_addr + USPACE_SVC_STACK_TOP; Index: src/sys/arch/arm/arm32/fault.c diff -u src/sys/arch/arm/arm32/fault.c:1.72 src/sys/arch/arm/arm32/fault.c:1.73 --- src/sys/arch/arm/arm32/fault.c:1.72 Wed Nov 19 06:32:58 2008 +++ src/sys/arch/arm/arm32/fault.c Sat Nov 21 20:32:18 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fault.c,v 1.72 2008/11/19 06:32:58 matt Exp $ */ +/* $NetBSD: fault.c,v 1.73 2009/11/21 20:32:18 rmind Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -82,12 +82,11 @@ #include "opt_sa.h" #include <sys/types.h> -__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.72 2008/11/19 06:32:58 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.73 2009/11/21 20:32:18 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/kernel.h> #include <sys/kauth.h> @@ -260,7 +259,7 @@ LWP_CACHE_CREDS(l, l->l_proc); /* Grab the current pcb */ - pcb = &l->l_addr->u_pcb; + pcb = lwp_getpcb(l);; /* Invoke the appropriate handler, if necessary */ if (__predict_false(data_aborts[fsr & FAULT_TYPE_MASK].func != NULL)) { @@ -291,8 +290,9 @@ return; } - if (user) - l->l_addr->u_pcb.pcb_tf = tf; + if (user) { + pcb->pcb_tf = tf; + } /* * Make sure the Program Counter is sane. We could fall foul of @@ -589,13 +589,14 @@ static int dab_align(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l, ksiginfo_t *ksi) { + struct pcb *pcb = lwp_getpcb(l); /* Alignment faults are always fatal if they occur in kernel mode */ if (!TRAP_USERMODE(tf)) dab_fatal(tf, fsr, far, l, NULL); /* pcb_onfault *must* be NULL at this point */ - KDASSERT(l->l_addr->u_pcb.pcb_onfault == NULL); + KDASSERT(pcb->pcb_onfault == NULL); /* See if the CPU state needs to be fixed up */ (void) data_abort_fixup(tf, fsr, far, l); @@ -607,7 +608,7 @@ ksi->ksi_addr = (u_int32_t *)(intptr_t)far; ksi->ksi_trap = fsr; - l->l_addr->u_pcb.pcb_tf = tf; + pcb->pcb_tf = tf; return (1); } @@ -638,7 +639,7 @@ dab_buserr(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l, ksiginfo_t *ksi) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); #ifdef __XSCALE__ if ((fsr & FAULT_IMPRECISE) != 0 && @@ -714,7 +715,7 @@ ksi->ksi_addr = (u_int32_t *)(intptr_t)far; ksi->ksi_trap = fsr; - l->l_addr->u_pcb.pcb_tf = tf; + pcb->pcb_tf = tf; return (1); } @@ -775,6 +776,7 @@ prefetch_abort_handler(trapframe_t *tf) { struct lwp *l; + struct pcb *pcb; struct vm_map *map; vaddr_t fault_pc, va; ksiginfo_t ksi; @@ -786,6 +788,7 @@ uvmexp.traps++; l = curlwp; + pcb = lwp_getpcb(l); if ((user = TRAP_USERMODE(tf)) != 0) LWP_CACHE_CREDS(l, l->l_proc); @@ -810,7 +813,7 @@ ksi.ksi_signo = SIGILL; ksi.ksi_code = ILL_ILLOPC; ksi.ksi_addr = (u_int32_t *)(intptr_t) tf->tf_pc; - l->l_addr->u_pcb.pcb_tf = tf; + pcb->pcb_tf = tf; goto do_trapsignal; default: break; @@ -822,8 +825,7 @@ /* Get fault address */ fault_pc = tf->tf_pc; - l = curlwp; - l->l_addr->u_pcb.pcb_tf = tf; + pcb->pcb_tf = tf; UVMHIST_LOG(maphist, " (pc=0x%x, l=0x%x, tf=0x%x)", fault_pc, l, tf, 0); @@ -928,7 +930,7 @@ */ s = splhigh(); if ((curpcb_save = curpcb) == NULL) - curpcb = &lwp0.l_addr->u_pcb; + curpcb = lwp_getpcb(&lwp0); /* Read from the test address. */ switch (size) { Index: src/sys/arch/arm/arm32/pmap.c diff -u src/sys/arch/arm/arm32/pmap.c:1.201 src/sys/arch/arm/arm32/pmap.c:1.202 --- src/sys/arch/arm/arm32/pmap.c:1.201 Sat Nov 7 07:27:41 2009 +++ src/sys/arch/arm/arm32/pmap.c Sat Nov 21 20:32:18 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.201 2009/11/07 07:27:41 cegger Exp $ */ +/* $NetBSD: pmap.c,v 1.202 2009/11/21 20:32:18 rmind Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -198,7 +198,6 @@ #include <sys/systm.h> #include <sys/proc.h> #include <sys/malloc.h> -#include <sys/user.h> #include <sys/pool.h> #include <sys/cdefs.h> #include <sys/cpu.h> @@ -212,7 +211,7 @@ #include <machine/param.h> #include <arm/arm32/katelib.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.201 2009/11/07 07:27:41 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.202 2009/11/21 20:32:18 rmind Exp $"); #ifdef PMAP_DEBUG Index: src/sys/arch/arm/arm32/vm_machdep.c diff -u src/sys/arch/arm/arm32/vm_machdep.c:1.50 src/sys/arch/arm/arm32/vm_machdep.c:1.51 --- src/sys/arch/arm/arm32/vm_machdep.c:1.50 Wed Oct 21 21:11:59 2009 +++ src/sys/arch/arm/arm32/vm_machdep.c Sat Nov 21 20:32:25 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: vm_machdep.c,v 1.50 2009/10/21 21:11:59 rmind Exp $ */ +/* $NetBSD: vm_machdep.c,v 1.51 2009/11/21 20:32:25 rmind Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -44,7 +44,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.50 2009/10/21 21:11:59 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.51 2009/11/21 20:32:25 rmind Exp $"); #include "opt_armfpe.h" #include "opt_pmap_debug.h" @@ -58,7 +58,6 @@ #include <sys/vnode.h> #include <sys/buf.h> #include <sys/pmc.h> -#include <sys/user.h> #include <sys/exec.h> #include <sys/syslog.h> @@ -105,7 +104,7 @@ void cpu_setfunc(struct lwp *l, void (*func)(void *), void *arg) { - struct pcb *pcb = &l->l_addr->u_pcb; + struct pcb *pcb = lwp_getpcb(l); struct trapframe *tf = pcb->pcb_tf; struct switchframe *sf = (struct switchframe *)tf - 1; @@ -132,9 +131,12 @@ cpu_lwp_fork(struct lwp *l1, struct lwp *l2, void *stack, size_t stacksize, void (*func)(void *), void *arg) { - struct pcb *pcb = &l2->l_addr->u_pcb; + struct pcb *pcb1, *pcb2; struct trapframe *tf; + pcb1 = lwp_getpcb(l1); + pcb2 = lwp_getpcb(l2); + #ifdef PMAP_DEBUG if (pmap_debug_level >= 0) printf("cpu_lwp_fork: %p %p %p %p\n", l1, l2, curlwp, &lwp0); @@ -154,18 +156,18 @@ * Copy the floating point state from the VFP to the PCB * if this process has state stored there. */ - if (l1->l_addr->u_pcb.pcb_vfpcpu != NULL) + if (pcb1->pcb_vfpcpu != NULL) vfp_saveregs_lwp(l1, 1); #endif /* Copy the pcb */ - *pcb = l1->l_addr->u_pcb; + *pcb2 = *pcb1; /* * Set up the stack for the process. * Note: this stack is not in use if we are forking from p1 */ - pcb->pcb_un.un_32.pcb32_sp = (u_int)l2->l_addr + USPACE_SVC_STACK_TOP; + pcb2->pcb_un.un_32.pcb32_sp = (u_int)l2->l_addr + USPACE_SVC_STACK_TOP; #ifdef STACKCHECKS /* Fill the kernel stack with a known pattern */ @@ -175,12 +177,10 @@ #ifdef PMAP_DEBUG if (pmap_debug_level >= 0) { - printf("l1->procaddr=%p l1->procaddr->u_pcb=%p pid=%d pmap=%p\n", - l1->l_addr, &l1->l_addr->u_pcb, l1->l_lid, - l1->l_proc->p_vmspace->vm_map.pmap); - printf("l2->procaddr=%p l2->procaddr->u_pcb=%p pid=%d pmap=%p\n", - l2->l_addr, &l2->l_addr->u_pcb, l2->l_lid, - l2->l_proc->p_vmspace->vm_map.pmap); + printf("l1: pcb=%p pid=%d pmap=%p\n", + pcb1, l1->l_lid, l1->l_proc->p_vmspace->vm_map.pmap); + printf("l2: pcb=%p pid=%d pmap=%p\n", + pcb2, l2->l_lid, l2->l_proc->p_vmspace->vm_map.pmap); } #endif /* PMAP_DEBUG */ @@ -190,9 +190,9 @@ arm_fpe_copycontext(FP_CONTEXT(l1), FP_CONTEXT(l2)); #endif /* ARMFPE */ - l2->l_addr->u_pcb.pcb_tf = tf = - (struct trapframe *)pcb->pcb_un.un_32.pcb32_sp - 1; - *tf = *l1->l_addr->u_pcb.pcb_tf; + tf = (struct trapframe *)pcb2->pcb_un.un_32.pcb32_sp - 1; + pcb2->pcb_tf = tf; + *tf = *pcb1->pcb_tf; /* * If specified, give the child a different stack. @@ -214,6 +214,10 @@ void cpu_lwp_free(struct lwp *l, int proc) { +#ifdef FPU_VFP + struct pcb *pcb; +#endif + #ifdef ARMFPE /* Abort any active FP operation and deactivate the context */ arm_fpe_core_abort(FP_CONTEXT(l), NULL, NULL); @@ -221,7 +225,8 @@ #endif /* ARMFPE */ #ifdef FPU_VFP - if (l->l_addr->u_pcb.pcb_vfpcpu != NULL) + pcb = lwp_getpcb(l); + if (pcb->pcb_vfpcpu != NULL) vfp_saveregs_lwp(l, 0); #endif Index: src/sys/arch/arm/fpe-arm/armfpe_init.c diff -u src/sys/arch/arm/fpe-arm/armfpe_init.c:1.15 src/sys/arch/arm/fpe-arm/armfpe_init.c:1.16 --- src/sys/arch/arm/fpe-arm/armfpe_init.c:1.15 Wed Mar 18 10:22:23 2009 +++ src/sys/arch/arm/fpe-arm/armfpe_init.c Sat Nov 21 20:32:27 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: armfpe_init.c,v 1.15 2009/03/18 10:22:23 cegger Exp $ */ +/* $NetBSD: armfpe_init.c,v 1.16 2009/11/21 20:32:27 rmind Exp $ */ /* * Copyright (C) 1996 Mark Brinicombe @@ -43,11 +43,10 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: armfpe_init.c,v 1.15 2009/03/18 10:22:23 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: armfpe_init.c,v 1.16 2009/11/21 20:32:27 rmind Exp $"); #include <sys/systm.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/malloc.h> #include <sys/acct.h> #include <uvm/uvm_extern.h> Index: src/sys/arch/arm/include/cpu.h diff -u src/sys/arch/arm/include/cpu.h:1.57 src/sys/arch/arm/include/cpu.h:1.58 --- src/sys/arch/arm/include/cpu.h:1.57 Sun Jan 18 00:36:29 2009 +++ src/sys/arch/arm/include/cpu.h Sat Nov 21 20:32:27 2009 @@ -76,7 +76,6 @@ #include <arm/cpuconf.h> #ifndef _LOCORE -#include <sys/user.h> #include <machine/frame.h> #include <machine/pcb.h> #ifdef FPU_VFP @@ -181,9 +180,9 @@ * LWP_PC: Find out the program counter for the given lwp. */ #ifdef __PROG32 -#define LWP_PC(l) ((l)->l_addr->u_pcb.pcb_tf->tf_pc) +#define LWP_PC(l) (((struct pcb *)lwp_getpcb(l))->pcb_tf->tf_pc) #else -#define LWP_PC(l) ((l)->l_addr->u_pcb.pcb_tf->tf_r15 & R15_PC) +#define LWP_PC(l) (((struct pcb *)lwp_getpcb(l))->pcb_tf->tf_r15 & R15_PC) #endif /* Index: src/sys/arch/arm/include/frame.h diff -u src/sys/arch/arm/include/frame.h:1.11 src/sys/arch/arm/include/frame.h:1.12 --- src/sys/arch/arm/include/frame.h:1.11 Wed Oct 15 06:51:17 2008 +++ src/sys/arch/arm/include/frame.h Sat Nov 21 20:32:27 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: frame.h,v 1.11 2008/10/15 06:51:17 wrstuden Exp $ */ +/* $NetBSD: frame.h,v 1.12 2009/11/21 20:32:27 rmind Exp $ */ /* * Copyright (c) 1994-1997 Mark Brinicombe. @@ -114,7 +114,7 @@ void sendsig_sigcontext(const ksiginfo_t *, const sigset_t *); void *getframe(struct lwp *, int, int *); __END_DECLS -#define process_frame(l) ((l)->l_addr->u_pcb.pcb_tf) +#define process_frame(l) (((struct pcb *)lwp_getpcb(l))->pcb_tf) #endif #endif /* _LOCORE */ Index: src/sys/arch/arm/include/proc.h diff -u src/sys/arch/arm/include/proc.h:1.8 src/sys/arch/arm/include/proc.h:1.9 --- src/sys/arch/arm/include/proc.h:1.8 Fri Aug 29 18:58:22 2008 +++ src/sys/arch/arm/include/proc.h Sat Nov 21 20:32:27 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: proc.h,v 1.8 2008/08/29 18:58:22 matt Exp $ */ +/* $NetBSD: proc.h,v 1.9 2009/11/21 20:32:27 rmind Exp $ */ /* * Copyright (c) 1994 Mark Brinicombe. @@ -35,6 +35,8 @@ #ifndef _ARM32_PROC_H_ #define _ARM32_PROC_H_ +#include <sys/user.h> /* for sizeof(struct user) */ + /* * Machine-dependent part of the proc structure for arm. */ Index: src/sys/arch/arm/s3c2xx0/sscom.c diff -u src/sys/arch/arm/s3c2xx0/sscom.c:1.29 src/sys/arch/arm/s3c2xx0/sscom.c:1.30 --- src/sys/arch/arm/s3c2xx0/sscom.c:1.29 Wed Jun 11 22:37:21 2008 +++ src/sys/arch/arm/s3c2xx0/sscom.c Sat Nov 21 20:32:28 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sscom.c,v 1.29 2008/06/11 22:37:21 cegger Exp $ */ +/* $NetBSD: sscom.c,v 1.30 2009/11/21 20:32:28 rmind Exp $ */ /* * Copyright (c) 2002, 2003 Fujitsu Component Limited @@ -98,7 +98,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sscom.c,v 1.29 2008/06/11 22:37:21 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sscom.c,v 1.30 2009/11/21 20:32:28 rmind Exp $"); #include "opt_sscom.h" #include "opt_ddb.h" @@ -129,7 +129,6 @@ #include <sys/select.h> #include <sys/tty.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/conf.h> #include <sys/file.h> #include <sys/uio.h> Index: src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c diff -u src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c:1.2 src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c:1.3 --- src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c:1.2 Sun Dec 11 12:16:51 2005 +++ src/sys/arch/arm/s3c2xx0/sscom_s3c2410.c Sat Nov 21 20:32:28 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sscom_s3c2410.c,v 1.2 2005/12/11 12:16:51 christos Exp $ */ +/* $NetBSD: sscom_s3c2410.c,v 1.3 2009/11/21 20:32:28 rmind Exp $ */ /* * Copyright (c) 2002, 2003 Fujitsu Component Limited @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sscom_s3c2410.c,v 1.2 2005/12/11 12:16:51 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sscom_s3c2410.c,v 1.3 2009/11/21 20:32:28 rmind Exp $"); #include "opt_sscom.h" #include "opt_ddb.h" @@ -45,7 +45,6 @@ #include <sys/select.h> #include <sys/tty.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/conf.h> #include <sys/file.h> #include <sys/uio.h> Index: src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c diff -u src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c:1.6 src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c:1.7 --- src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c:1.6 Sun Dec 11 12:16:51 2005 +++ src/sys/arch/arm/s3c2xx0/sscom_s3c2800.c Sat Nov 21 20:32:28 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sscom_s3c2800.c,v 1.6 2005/12/11 12:16:51 christos Exp $ */ +/* $NetBSD: sscom_s3c2800.c,v 1.7 2009/11/21 20:32:28 rmind Exp $ */ /* * Copyright (c) 2002, 2003 Fujitsu Component Limited @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sscom_s3c2800.c,v 1.6 2005/12/11 12:16:51 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sscom_s3c2800.c,v 1.7 2009/11/21 20:32:28 rmind Exp $"); #include "opt_sscom.h" #include "opt_ddb.h" @@ -45,7 +45,6 @@ #include <sys/select.h> #include <sys/tty.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/conf.h> #include <sys/file.h> #include <sys/uio.h> Index: src/sys/arch/arm/vfp/vfp_init.c diff -u src/sys/arch/arm/vfp/vfp_init.c:1.2 src/sys/arch/arm/vfp/vfp_init.c:1.3 --- src/sys/arch/arm/vfp/vfp_init.c:1.2 Wed Mar 18 10:22:24 2009 +++ src/sys/arch/arm/vfp/vfp_init.c Sat Nov 21 20:32:28 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: vfp_init.c,v 1.2 2009/03/18 10:22:24 cegger Exp $ */ +/* $NetBSD: vfp_init.c,v 1.3 2009/11/21 20:32:28 rmind Exp $ */ /* * Copyright (c) 2008 ARM Ltd @@ -162,6 +162,7 @@ int fault_code) { struct cpu_info *ci = curcpu(); + struct pcb *pcb; struct lwp *l; /* This shouldn't ever happen. */ @@ -173,10 +174,11 @@ return 1; l = curlwp; + pcb = lwp_getpcb(l); if ((l->l_md.md_flags & MDP_VFPUSED) && ci->ci_vfp.vfp_fpcurlwp == l) { uint32_t fpexc; - + printf("VFP bounce @%x (insn=%x) lwp=%p\n", address, instruction, l); read_fpexc(&fpexc); @@ -184,10 +186,10 @@ printf("vfp not enabled\n"); vfp_saveregs_lwp(l, 1); printf(" fpexc = 0x%08x fpscr = 0x%08x\n", fpexc, - l->l_addr->u_pcb.pcb_vfp.vfp_fpscr); + pcb->pcb_vfp.vfp_fpscr); printf(" fpinst = 0x%08x fpinst2 = 0x%08x\n", - l->l_addr->u_pcb.pcb_vfp.vfp_fpinst, - l->l_addr->u_pcb.pcb_vfp.vfp_fpinst2); + pcb->pcb_vfp.vfp_fpinst, + pcb->pcb_vfp.vfp_fpinst2); return 1; } @@ -196,14 +198,14 @@ KDASSERT(ci->ci_vfp.vfp_fpcurlwp == NULL); - KDASSERT(l->l_addr->u_pcb.pcb_vfpcpu == NULL); + KDASSERT(pcb->pcb_vfpcpu == NULL); -// VFPCPU_LOCK(&l->l_addr->u_pcb, s); +// VFPCPU_LOCK(pcb, s); - l->l_addr->u_pcb.pcb_vfpcpu = ci; + pcb->pcb_vfpcpu = ci; ci->ci_vfp.vfp_fpcurlwp = l; -// VFPCPU_UNLOCK(&l->l_addr->u_pcb, s); +// VFPCPU_UNLOCK(pcb, s); /* * Instrument VFP usage -- if a process has not previously @@ -216,12 +218,12 @@ if ((l->l_md.md_flags & MDP_VFPUSED) == 0) { vfpevent_use.ev_count++; l->l_md.md_flags |= MDP_VFPUSED; - l->l_addr->u_pcb.pcb_vfp.vfp_fpscr = + pcb->pcb_vfp.vfp_fpscr = (VFP_FPSCR_DN | VFP_FPSCR_FZ); /* Runfast */ } else vfpevent_reuse.ev_count++; - vfp_load_regs(&l->l_addr->u_pcb.pcb_vfp); + vfp_load_regs(&pcb->pcb_vfp); /* Need to restart the faulted instruction. */ // frame->tf_pc -= INSN_SIZE; @@ -260,6 +262,7 @@ vfp_saveregs_cpu(struct cpu_info *ci, int save) { struct lwp *l; + struct pcb *pcb; uint32_t fpexc; KDASSERT(ci == curcpu()); @@ -268,10 +271,11 @@ if (l == NULL) return; + pcb = lwp_getpcb(l); read_fpexc(&fpexc); if (save) { - struct vfpreg *fregs = &l->l_addr->u_pcb.pcb_vfp; + struct vfpreg *fregs = &pcb->pcb_vfp; /* * Enable the VFP (so we can read the registers). @@ -298,11 +302,11 @@ } /* Disable the VFP. */ write_fpexc(fpexc & ~VFP_FPEXC_EN); -// VFPCPU_LOCK(&l->l_addr->u_pcb, s); +// VFPCPU_LOCK(pcb, s); - l->l_addr->u_pcb.pcb_vfpcpu = NULL; + pcb->pcb_vfpcpu = NULL; ci->ci_vfp.vfp_fpcurlwp = NULL; -// VFPCPU_UNLOCK(&l->l_addr->u_pcb, s); +// VFPCPU_UNLOCK(pcb, s); } void @@ -310,14 +314,16 @@ { struct cpu_info *ci = curcpu(); struct cpu_info *oci; + struct pcb *pcb; - KDASSERT(l->l_addr != NULL); + pcb = lwp_getpcb(l); + KDASSERT(pcb != NULL); -// VFPCPU_LOCK(&l->l_addr->u_pcb, s); +// VFPCPU_LOCK(pcb, s); - oci = l->l_addr->u_pcb.pcb_vfpcpu; + oci = pcb->pcb_vfpcpu; if (oci == NULL) { - // VFPCPU_UNLOCK(&l->l_addr->u_pcb, s); + // VFPCPU_UNLOCK(pcb, s); return; } @@ -329,7 +335,7 @@ #error MULTIPROCESSOR #else KASSERT(ci->ci_vfp.vfp_fpcurlwp == l); -// VFPCPU_UNLOCK(&l->l_addr->u_pcb, s); +// VFPCPU_UNLOCK(pcb, s); vfp_saveregs_cpu(ci, save); #endif } Index: src/sys/arch/evbarm/dev/plcom.c diff -u src/sys/arch/evbarm/dev/plcom.c:1.29 src/sys/arch/evbarm/dev/plcom.c:1.30 --- src/sys/arch/evbarm/dev/plcom.c:1.29 Sat Mar 14 15:36:05 2009 +++ src/sys/arch/evbarm/dev/plcom.c Sat Nov 21 20:32:28 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: plcom.c,v 1.29 2009/03/14 15:36:05 dsl Exp $ */ +/* $NetBSD: plcom.c,v 1.30 2009/11/21 20:32:28 rmind Exp $ */ /*- * Copyright (c) 2001 ARM Ltd @@ -94,7 +94,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: plcom.c,v 1.29 2009/03/14 15:36:05 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: plcom.c,v 1.30 2009/11/21 20:32:28 rmind Exp $"); #include "opt_plcom.h" #include "opt_ddb.h" @@ -125,7 +125,6 @@ #include <sys/select.h> #include <sys/tty.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/conf.h> #include <sys/file.h> #include <sys/uio.h>