From 4fc9c21665166e4e9e124c40462138c91f084a0c Mon Sep 17 00:00:00 2001 From: benno Date: Tue, 28 May 2002 12:24:29 +0000 Subject: - Move macros that represent where syscall args are kept in a trapframe from trap.c to frame.h - Use the macros in vm_machdep.c:cpu_fork() to set up the trap frame of the new thread. --- sys/powerpc/aim/trap.c | 5 ----- sys/powerpc/aim/vm_machdep.c | 6 +++++- sys/powerpc/include/frame.h | 5 +++++ sys/powerpc/powerpc/trap.c | 5 ----- sys/powerpc/powerpc/vm_machdep.c | 6 +++++- 5 files changed, 15 insertions(+), 12 deletions(-) (limited to 'sys/powerpc') diff --git a/sys/powerpc/aim/trap.c b/sys/powerpc/aim/trap.c index 0967358..b037185 100644 --- a/sys/powerpc/aim/trap.c +++ b/sys/powerpc/aim/trap.c @@ -75,11 +75,6 @@ static const char rcsid[] = #include #include -/* These definitions should probably be somewhere else XXX */ -#define FIRSTARG 3 /* first argument is in reg 3 */ -#define NARGREG 8 /* 8 args are in registers */ -#define MOREARGS(sp) ((caddr_t)((int)(sp) + 8)) /* more args go here */ - #ifndef MULTIPROCESSOR extern int intr_depth; #endif diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c index 1ca7350..12aeaf2 100644 --- a/sys/powerpc/aim/vm_machdep.c +++ b/sys/powerpc/aim/vm_machdep.c @@ -85,6 +85,7 @@ #include #include #include +#include #include #include @@ -151,7 +152,10 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags) tf = (struct trapframe *)pcb - 1; bcopy(td1->td_frame, tf, sizeof(*tf)); - /* XXX: Set up trap frame? */ + /* Set up trap frame. */ + tf->fixreg[FIRSTARG] = 0; + tf->fixreg[FIRSTARG + 1] = 0; + tf->cr &= ~0x10000000; td2->td_frame = tf; diff --git a/sys/powerpc/include/frame.h b/sys/powerpc/include/frame.h index 63f07bf..27a5276 100644 --- a/sys/powerpc/include/frame.h +++ b/sys/powerpc/include/frame.h @@ -136,4 +136,9 @@ struct spillframe { register_t r0; /* 48 */ }; +/* Definitions for syscalls */ +#define FIRSTARG 3 /* first arg in reg 3 */ +#define NARGREG 8 /* 8 args in regs */ +#define MOREARGS(sp) ((caddr_t)((int)(sp) + 8)) /* more args go here */ + #endif /* _MACHINE_FRAME_H_ */ diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index 0967358..b037185 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -75,11 +75,6 @@ static const char rcsid[] = #include #include -/* These definitions should probably be somewhere else XXX */ -#define FIRSTARG 3 /* first argument is in reg 3 */ -#define NARGREG 8 /* 8 args are in registers */ -#define MOREARGS(sp) ((caddr_t)((int)(sp) + 8)) /* more args go here */ - #ifndef MULTIPROCESSOR extern int intr_depth; #endif diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c index 1ca7350..12aeaf2 100644 --- a/sys/powerpc/powerpc/vm_machdep.c +++ b/sys/powerpc/powerpc/vm_machdep.c @@ -85,6 +85,7 @@ #include #include #include +#include #include #include @@ -151,7 +152,10 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags) tf = (struct trapframe *)pcb - 1; bcopy(td1->td_frame, tf, sizeof(*tf)); - /* XXX: Set up trap frame? */ + /* Set up trap frame. */ + tf->fixreg[FIRSTARG] = 0; + tf->fixreg[FIRSTARG + 1] = 0; + tf->cr &= ~0x10000000; td2->td_frame = tf; -- cgit v1.1