summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-04-19 12:35:47 +0000
committerdfr <dfr@FreeBSD.org>2001-04-19 12:35:47 +0000
commit13de23fccf604aef9f894aa7f884dbf5e741e205 (patch)
tree3c048bea528129048f6bfcb7c679d49864a518bb /sys/ia64
parentf248baeba9dafd9bc580e5b8f3b3ae085a54578f (diff)
downloadFreeBSD-src-13de23fccf604aef9f894aa7f884dbf5e741e205.zip
FreeBSD-src-13de23fccf604aef9f894aa7f884dbf5e741e205.tar.gz
Don't unwrap the function descriptor used as the callout argument to
fork_exit(). The MI version of fork_exit() needs a real function descriptor, not a simple function pointer.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/vm_machdep.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c
index e004110..dbe5336 100644
--- a/sys/ia64/ia64/vm_machdep.c
+++ b/sys/ia64/ia64/vm_machdep.c
@@ -254,14 +254,9 @@ cpu_fork(p1, p2, flags)
* Arrange for continuation at fork_return(), which
* will return to exception_restore(). Note that the
* child process doesn't stay in the kernel for long!
- *
- * We should really deal with the function descriptor
- * for fork_return() in fork_trampoline() so that a
- * kthread started from a loaded module can have the
- * right value for gp.
*/
up->u_pcb.pcb_sp = (u_int64_t)p2tf - 16;
- up->u_pcb.pcb_r4 = FDESC_FUNC(fork_return);
+ up->u_pcb.pcb_r4 = (u_int64_t)fork_return;
up->u_pcb.pcb_r5 = FDESC_FUNC(exception_restore);
up->u_pcb.pcb_r6 = (u_int64_t)p2;
up->u_pcb.pcb_b0 = FDESC_FUNC(fork_trampoline);
@@ -280,7 +275,7 @@ cpu_set_fork_handler(p, func, arg)
void (*func) __P((void *));
void *arg;
{
- p->p_addr->u_pcb.pcb_r4 = FDESC_FUNC(func);
+ p->p_addr->u_pcb.pcb_r4 = (u_int64_t) func;
p->p_addr->u_pcb.pcb_r6 = (u_int64_t) arg;
}
OpenPOWER on IntegriCloud