aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc/powerpc/exec_machdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/powerpc/powerpc/exec_machdep.c')
-rw-r--r--sys/powerpc/powerpc/exec_machdep.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/powerpc/powerpc/exec_machdep.c b/sys/powerpc/powerpc/exec_machdep.c
index 88bbf7cb7e7e..e9eff548a3f3 100644
--- a/sys/powerpc/powerpc/exec_machdep.c
+++ b/sys/powerpc/powerpc/exec_machdep.c
@@ -972,11 +972,12 @@ cpu_set_upcall(struct thread *td, struct thread *td0)
cf->cf_arg1 = (register_t)tf;
pcb2->pcb_sp = (register_t)cf;
- #ifdef __powerpc64__
+ #if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
pcb2->pcb_lr = ((register_t *)fork_trampoline)[0];
pcb2->pcb_toc = ((register_t *)fork_trampoline)[1];
#else
pcb2->pcb_lr = (register_t)fork_trampoline;
+ pcb2->pcb_context[0] = pcb2->pcb_lr;
#endif
pcb2->pcb_cpu.aim.usr_vsid = 0;