diff options
author | benno <benno@FreeBSD.org> | 2002-05-28 12:24:29 +0000 |
---|---|---|
committer | benno <benno@FreeBSD.org> | 2002-05-28 12:24:29 +0000 |
commit | 4fc9c21665166e4e9e124c40462138c91f084a0c (patch) | |
tree | 574710ab5af4f109af3bcd57f8ed6f7d48376309 /sys | |
parent | 1af92dbd990523626c74a0e064236c1dfaef3a16 (diff) | |
download | FreeBSD-src-4fc9c21665166e4e9e124c40462138c91f084a0c.zip FreeBSD-src-4fc9c21665166e4e9e124c40462138c91f084a0c.tar.gz |
- 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.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/powerpc/aim/trap.c | 5 | ||||
-rw-r--r-- | sys/powerpc/aim/vm_machdep.c | 6 | ||||
-rw-r--r-- | sys/powerpc/include/frame.h | 5 | ||||
-rw-r--r-- | sys/powerpc/powerpc/trap.c | 5 | ||||
-rw-r--r-- | sys/powerpc/powerpc/vm_machdep.c | 6 |
5 files changed, 15 insertions, 12 deletions
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 <machine/spr.h> #include <machine/sr.h> -/* 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 <machine/clock.h> #include <machine/cpu.h> #include <machine/fpu.h> +#include <machine/frame.h> #include <machine/md_var.h> #include <dev/ofw/openfirm.h> @@ -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 <machine/spr.h> #include <machine/sr.h> -/* 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 <machine/clock.h> #include <machine/cpu.h> #include <machine/fpu.h> +#include <machine/frame.h> #include <machine/md_var.h> #include <dev/ofw/openfirm.h> @@ -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; |