diff options
author | gallatin <gallatin@FreeBSD.org> | 1999-08-27 14:47:23 +0000 |
---|---|---|
committer | gallatin <gallatin@FreeBSD.org> | 1999-08-27 14:47:23 +0000 |
commit | ffd6399600ecf9973a8a8202ef1d2c969dfb7c42 (patch) | |
tree | f46f29d67777422e04729c58f93a593f434d024c /sys/powerpc | |
parent | a1c1e7ab1acb9391452e3aa983d7bc436400b359 (diff) | |
download | FreeBSD-src-ffd6399600ecf9973a8a8202ef1d2c969dfb7c42.zip FreeBSD-src-ffd6399600ecf9973a8a8202ef1d2c969dfb7c42.tar.gz |
Fix the child's return path from fork so that fork will return 0
in the child. This corrects a problem where linux/alpha binaries see
the child's return value of fork as the parent's pid. This happens because
linux/alpha binaries apparently check the return value directly, rather
than looking for a non-zero value in a4, as *BSD & OSF/1 do.
Reviewed by:dfr@nlsystems.com
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/aim/vm_machdep.c | 8 | ||||
-rw-r--r-- | sys/powerpc/powerpc/vm_machdep.c | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c index cff51a9..4f92cf6 100644 --- a/sys/powerpc/aim/vm_machdep.c +++ b/sys/powerpc/aim/vm_machdep.c @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $Id: vm_machdep.c,v 1.18 1999/07/22 06:03:42 alc Exp $ + * $Id: vm_machdep.c,v 1.19 1999/08/05 23:38:13 jdp Exp $ */ /* * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. @@ -187,9 +187,9 @@ cpu_fork(p1, p2) /* * Set up return-value registers as fork() libc stub expects. */ - p2tf->tf_regs[FRAME_V0] = p1->p_pid; /* parent's pid */ - p2tf->tf_regs[FRAME_A3] = 0; /* no error */ - p2tf->tf_regs[FRAME_A4] = 1; /* is child */ + p2tf->tf_regs[FRAME_V0] = 0; /* child's pid (linux) */ + p2tf->tf_regs[FRAME_A3] = 0; /* no error */ + p2tf->tf_regs[FRAME_A4] = 1; /* is child (FreeBSD) */ /* * Arrange for continuation at child_return(), which diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c index cff51a9..4f92cf6 100644 --- a/sys/powerpc/powerpc/vm_machdep.c +++ b/sys/powerpc/powerpc/vm_machdep.c @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $Id: vm_machdep.c,v 1.18 1999/07/22 06:03:42 alc Exp $ + * $Id: vm_machdep.c,v 1.19 1999/08/05 23:38:13 jdp Exp $ */ /* * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. @@ -187,9 +187,9 @@ cpu_fork(p1, p2) /* * Set up return-value registers as fork() libc stub expects. */ - p2tf->tf_regs[FRAME_V0] = p1->p_pid; /* parent's pid */ - p2tf->tf_regs[FRAME_A3] = 0; /* no error */ - p2tf->tf_regs[FRAME_A4] = 1; /* is child */ + p2tf->tf_regs[FRAME_V0] = 0; /* child's pid (linux) */ + p2tf->tf_regs[FRAME_A3] = 0; /* no error */ + p2tf->tf_regs[FRAME_A4] = 1; /* is child (FreeBSD) */ /* * Arrange for continuation at child_return(), which |