diff --git a/src/lib/lwp/arch.c b/src/lib/lwp/arch.c index 9c70d5ea..992629ab 100644 --- a/src/lib/lwp/arch.c +++ b/src/lib/lwp/arch.c @@ -77,15 +77,16 @@ lwpNewContext(struct lwpProc *newp, int stacksz) free(s); return -1; } - newp->context.uc_stack.ss_sp = newp->ustack; - newp->context.uc_stack.ss_size = newp->usize; #ifdef MAKECONTEXT_SP_HIGH /* * Known systems that are broken that way: Solaris prior to 10, * IRIX. */ - newp->context.uc_stack.ss_sp += stacksz - 8; + newp->context.uc_stack.ss_sp = newp->ustack + stacksz - 8; +#else + newp->context.uc_stack.ss_sp = newp->ustack; #endif + newp->context.uc_stack.ss_size = newp->usize; newp->context.uc_stack.ss_flags = 0; newp->context.uc_link = NULL; makecontext(&newp->context, lwpEntryPoint, 0);