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>

Reply via email to