> > This implementation relies on the functions getcontext, setcontext, and
> > makecontext. If there are systems which don't have those, getcontext
> > and setcontext can be replaced by setjmp and longjmp, but there is no
> > obvious replacement for makecontext. I think that will have to be
> > implemented using processor-specific code, as it needs to set the stack
> > pointer to point to a new stack, and I don't know how to do that in a
> > portable processor-independent manner without using makecontext.
>
> ARM glibc does not implement these functions, so we have the same
> problem in QEMU. (On top of this, there is no way that alternate
> stacks can work on OpenBSD, so we still have one coroutine per
> thread).
The other Go compiler already supports OpenBSD, so it must be possible
in some sense.