diff --git a/arch/ppc64/makecontext.c b/arch/ppc64/makecontext.c index 962f98a..ea980e9 100644 --- a/arch/ppc64/makecontext.c +++ b/arch/ppc64/makecontext.c @@ -32,7 +32,7 @@ __makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) int i; unsigned int stack_args; - stack_args = argc > 8 ? argc - 8 : 0; + stack_args = argc > 8 ? argc : 0; sp = (greg_t *) ((uintptr_t) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); sp -= stack_args + 2; @@ -52,7 +52,7 @@ __makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) if (i < 8) ucp->uc_mcontext.gp_regs[i + 3] = va_arg (va, greg_t); else - sp[i-8 + 2] = va_arg (va, greg_t); + sp[i + 2] = va_arg (va, greg_t); } va_end(va);