git-svn-id: svn://svn.valgrind.org/vex/trunk@3178
return True;
}
+ /* ------------------- YIELD ------------------- */
+ /* 31 23 15 7
+ 1101 0101 0000 0011 0010 0000 0011 1111
+ */
+ if (INSN(31,0) == 0xD503203F) {
+ /* Request yield followed by continuation at the next insn. */
+ putPC(mkU64(guest_PC_curr_instr + 4));
+ dres->whatNext = Dis_StopHere;
+ dres->jk_StopHere = Ijk_Yield;
+ DIP("yield\n");
+ return True;
+ }
+
//fail:
vex_printf("ARM64 front end: branch_etc\n");
return False;
case Ijk_ClientReq: trcval = VEX_TRC_JMP_CLIENTREQ; break;
case Ijk_Sys_syscall: trcval = VEX_TRC_JMP_SYS_SYSCALL; break;
//case Ijk_Sys_int128: trcval = VEX_TRC_JMP_SYS_INT128; break;
- //case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
+ case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
//case Ijk_EmWarn: trcval = VEX_TRC_JMP_EMWARN; break;
//case Ijk_MapFail: trcval = VEX_TRC_JMP_MAPFAIL; break;
case Ijk_NoDecode: trcval = VEX_TRC_JMP_NODECODE; break;
case Ijk_InvalICache:
case Ijk_FlushDCache:
case Ijk_SigTRAP:
+ case Ijk_Yield:
{
HReg r = iselIntExpr_R(env, next);
ARM64AMode* amPC = mk_baseblock_64bit_access_amode(offsIP);