diff --git a/src/continuation.c b/src/continuation.c index d1af64b..8cfccb2 100644 --- a/src/continuation.c +++ b/src/continuation.c @@ -55,13 +55,21 @@ int cc_init(struct continuation *cc) cc->uc.uc_stack.ss_size = cc->stack_size; cc->uc.uc_stack.ss_flags = 0; +#ifdef __e2k__ + if (makecontext_e2k(&cc->uc, (void *)continuation_trampoline, 2, arg.i[0], arg.i[1]) < 0) + return -1; +#else makecontext(&cc->uc, (void *)continuation_trampoline, 2, arg.i[0], arg.i[1]); +#endif return 0; } int cc_release(struct continuation *cc) { +#ifdef __e2k__ + freecontext_e2k(&cc->uc); +#endif if (cc->release) return cc->release(cc);