On 05/11/2011 07:04 AM, Paolo Bonzini wrote:
On 05/11/2011 12:15 PM, Stefan Hajnoczi wrote:
+#ifdef __i386__
+ asm volatile(
+ "mov %%esp, %%ebx;"
+ "mov %0, %%esp;"
+ "pushl %1;"
+ "call _trampoline;"
+ "mov %%ebx, %%esp;"
+ : : "r" (co->stack + co->stack_size), "r" (co) : "ebx"
+ );
This is incomplete, it should set FS:[4] and FS:[8] to top and bottom of
stack respectively, otherwise exception handling (including SIGSEGV) is
broken. But I think for Windows it's anyway better to use fibers. Commit
this and either I or Stefan Weil will fix it. :)
Acked-by: Paolo Bonzini <pbonz...@redhat.com>
How about a generic thread fallback? That's what we do in gtk-vnc and
it solves the portability issue in a very robust way.
Regards,
Anthony Liguori
Paolo