… | |
… | |
43 | #if !defined(STACK_ADJUST_PTR) |
43 | #if !defined(STACK_ADJUST_PTR) |
44 | /* IRIX is decidedly NON-unix */ |
44 | /* IRIX is decidedly NON-unix */ |
45 | # if __sgi |
45 | # if __sgi |
46 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss) - 8) |
46 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss) - 8) |
47 | # define STACK_ADJUST_SIZE(sp,ss) ((ss) - 8) |
47 | # define STACK_ADJUST_SIZE(sp,ss) ((ss) - 8) |
48 | # elif __i386__ && CORO_LINUX |
48 | # elif (__i386__ && CORO_LINUX) || (_M_IX86 && CORO_LOSER) |
49 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss)) |
49 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss)) |
50 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
50 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
51 | # elif __amd64__ && CORO_LINUX |
51 | # elif (__amd64__ && CORO_LINUX) || ((_M_AMD64 || _M_IA64) && CORO_LOSER) |
52 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss) - 8) |
52 | # define STACK_ADJUST_PTR(sp,ss) ((char *)(sp) + (ss) - 8) |
53 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
53 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
54 | # else |
54 | # else |
55 | # define STACK_ADJUST_PTR(sp,ss) (sp) |
55 | # define STACK_ADJUST_PTR(sp,ss) (sp) |
56 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
56 | # define STACK_ADJUST_SIZE(sp,ss) (ss) |
… | |
… | |
285 | #if __CYGWIN__ |
285 | #if __CYGWIN__ |
286 | ctx->env[7] = (long)((char *)sptr + ssize); |
286 | ctx->env[7] = (long)((char *)sptr + ssize); |
287 | ctx->env[8] = (long)coro_init; |
287 | ctx->env[8] = (long)coro_init; |
288 | #elif defined(_M_IX86) |
288 | #elif defined(_M_IX86) |
289 | ((_JUMP_BUFFER *)&ctx->env)->Eip = (long)coro_init; |
289 | ((_JUMP_BUFFER *)&ctx->env)->Eip = (long)coro_init; |
290 | ((_JUMP_BUFFER *)&ctx->env)->Esp = (long)STACK_ADJUST_PTR (sptr,ssize); |
290 | ((_JUMP_BUFFER *)&ctx->env)->Esp = (long)STACK_ADJUST_PTR (sptr, ssize); |
291 | #elif defined(_M_AMD64) |
291 | #elif defined(_M_AMD64) |
292 | ((_JUMP_BUFFER *)&ctx->env)->Rip = (__int64)coro_init; |
292 | ((_JUMP_BUFFER *)&ctx->env)->Rip = (__int64)coro_init; |
293 | ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64)STACK_ADJUST_PTR (sptr,ssize); |
293 | ((_JUMP_BUFFER *)&ctx->env)->Rsp = (__int64)STACK_ADJUST_PTR (sptr, ssize); |
294 | #elif defined(_M_IA64) |
294 | #elif defined(_M_IA64) |
295 | ((_JUMP_BUFFER *)&ctx->env)->StIIP = (__int64)coro_init; |
295 | ((_JUMP_BUFFER *)&ctx->env)->StIIP = (__int64)coro_init; |
296 | ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64)STACK_ADJUST_PTR (sptr,ssize); |
296 | ((_JUMP_BUFFER *)&ctx->env)->IntSp = (__int64)STACK_ADJUST_PTR (sptr, ssize); |
297 | #else |
297 | #else |
298 | # error "microsoft libc or architecture not supported" |
298 | # error "microsoft libc or architecture not supported" |
299 | #endif |
299 | #endif |
300 | |
300 | |
301 | # elif CORO_LINUX |
301 | # elif CORO_LINUX |