From 98ce1f7c2e5ef5ecafd1ff177630ab3aa1a395a0 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 29 Jan 2010 20:35:23 +0000 Subject: *** empty log message *** --- coro.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/coro.c b/coro.c index aa1e2de..0e95fb9 100644 --- a/coro.c +++ b/coro.c @@ -225,9 +225,12 @@ coro_create (coro_context *ctx, coro_func coro, void *arg, void *sptr, long ssiz # elif CORO_LOSER coro_setjmp (ctx->env); - #if __CYGWIN__ + #if __CYGWIN__ && __i386 ctx->env[8] = (long) coro_init; ctx->env[7] = (long) ((char *)sptr + ssize) - sizeof (long); + #elif __CYGWIN__ && __x86_64 + ctx->env[7] = (long) coro_init; + ctx->env[6] = (long) ((char *)sptr + ssize) - sizeof (long); #elif defined(__MINGW32__) ctx->env[5] = (long) coro_init; ctx->env[4] = (long) ((char *)sptr + ssize) - sizeof (long); @@ -236,10 +239,10 @@ coro_create (coro_context *ctx, coro_func coro, void *arg, void *sptr, long ssiz ((_JUMP_BUFFER *)&ctx->env)->Esp = (long) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); #elif defined(_M_AMD64) ((_JUMP_BUFFER *)&ctx->env)->Rip = (__int64) coro_init; - ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); + ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (__int64); #elif defined(_M_IA64) ((_JUMP_BUFFER *)&ctx->env)->StIIP = (__int64) coro_init; - ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); + ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (__int64); #else #error "microsoft libc or architecture not supported" #endif -- cgit v1.2.3