… | |
… | |
223 | sigprocmask (SIG_SETMASK, &osig, 0); |
223 | sigprocmask (SIG_SETMASK, &osig, 0); |
224 | |
224 | |
225 | # elif CORO_LOSER |
225 | # elif CORO_LOSER |
226 | |
226 | |
227 | coro_setjmp (ctx->env); |
227 | coro_setjmp (ctx->env); |
228 | #if __CYGWIN__ |
228 | #if __CYGWIN__ && __i386 |
229 | ctx->env[8] = (long) coro_init; |
229 | ctx->env[8] = (long) coro_init; |
230 | ctx->env[7] = (long) ((char *)sptr + ssize) - sizeof (long); |
230 | ctx->env[7] = (long) ((char *)sptr + ssize) - sizeof (long); |
|
|
231 | #elif __CYGWIN__ && __x86_64 |
|
|
232 | ctx->env[7] = (long) coro_init; |
|
|
233 | ctx->env[6] = (long) ((char *)sptr + ssize) - sizeof (long); |
231 | #elif defined(__MINGW32__) |
234 | #elif defined(__MINGW32__) |
232 | ctx->env[5] = (long) coro_init; |
235 | ctx->env[5] = (long) coro_init; |
233 | ctx->env[4] = (long) ((char *)sptr + ssize) - sizeof (long); |
236 | ctx->env[4] = (long) ((char *)sptr + ssize) - sizeof (long); |
234 | #elif defined(_M_IX86) |
237 | #elif defined(_M_IX86) |
235 | ((_JUMP_BUFFER *)&ctx->env)->Eip = (long) coro_init; |
238 | ((_JUMP_BUFFER *)&ctx->env)->Eip = (long) coro_init; |
236 | ((_JUMP_BUFFER *)&ctx->env)->Esp = (long) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); |
239 | ((_JUMP_BUFFER *)&ctx->env)->Esp = (long) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); |
237 | #elif defined(_M_AMD64) |
240 | #elif defined(_M_AMD64) |
238 | ((_JUMP_BUFFER *)&ctx->env)->Rip = (__int64) coro_init; |
241 | ((_JUMP_BUFFER *)&ctx->env)->Rip = (__int64) coro_init; |
239 | ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); |
242 | ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (__int64); |
240 | #elif defined(_M_IA64) |
243 | #elif defined(_M_IA64) |
241 | ((_JUMP_BUFFER *)&ctx->env)->StIIP = (__int64) coro_init; |
244 | ((_JUMP_BUFFER *)&ctx->env)->StIIP = (__int64) coro_init; |
242 | ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (long); |
245 | ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64) STACK_ADJUST_PTR (sptr, ssize) - sizeof (__int64); |
243 | #else |
246 | #else |
244 | #error "microsoft libc or architecture not supported" |
247 | #error "microsoft libc or architecture not supported" |
245 | #endif |
248 | #endif |
246 | |
249 | |
247 | # elif CORO_LINUX |
250 | # elif CORO_LINUX |