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>