diff options
author | dfr <dfr@FreeBSD.org> | 2001-04-19 12:35:47 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-04-19 12:35:47 +0000 |
commit | 13de23fccf604aef9f894aa7f884dbf5e741e205 (patch) | |
tree | 3c048bea528129048f6bfcb7c679d49864a518bb /sys/ia64 | |
parent | f248baeba9dafd9bc580e5b8f3b3ae085a54578f (diff) | |
download | FreeBSD-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.c | 9 |
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; } |