break;
case Xin_Goto:
if (i->Xin.Goto.jk == Ijk_ClientReq
- || i->Xin.Goto.jk == Ijk_Syscall) {
+ || i->Xin.Goto.jk == Ijk_Syscall
+ || i->Xin.Goto.jk == Ijk_Yield) {
vex_printf("movl $");
ppIRJumpKind(i->Xin.Goto.jk);
vex_printf(", %%ebp ; ");
addRegUsage_X86RI(u, i->Xin.Goto.dst);
addHRegUse(u, HRmWrite, hregX86_EAX());
if (i->Xin.Goto.jk == Ijk_ClientReq
- || i->Xin.Goto.jk == Ijk_Syscall)
+ || i->Xin.Goto.jk == Ijk_Syscall
+ || i->Xin.Goto.jk == Ijk_Yield)
addHRegUse(u, HRmWrite, hregX86_EBP());
return;
case Xin_CMov32:
vg_constants.h. */
if (i->Xin.Goto.cond == Xcc_ALWAYS
&& (i->Xin.Goto.jk == Ijk_ClientReq
- || i->Xin.Goto.jk == Ijk_Syscall)) {
+ || i->Xin.Goto.jk == Ijk_Syscall
+ || i->Xin.Goto.jk == Ijk_Yield)) {
/* movl $magic_number, %ebp */
*p++ = 0xBD;
switch (i->Xin.Goto.jk) {
case Ijk_Syscall:
/* 19 == VG_TRC_EBP_JMP_SYSCALL */
p = emit32(p, 19); break;
+ case Ijk_Yield:
+ /* 27 == VG_TRC_EBP_JMP_YIELD */
+ p = emit32(p, 27); break;
default:
ppIRJumpKind(i->Xin.Goto.jk);
vpanic("emit_X86Instr.Xin_Goto: unknown jump kind");