From: Julian Seward Date: Sat, 21 Apr 2012 15:34:25 +0000 (+0000) Subject: (post-tchain-merge cleanup): x86: handle a couple more syscall kinds X-Git-Tag: svn/VALGRIND_3_8_1^2~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1db802a204046764b33083aed8ab0870e7f71cf9;p=thirdparty%2Fvalgrind.git (post-tchain-merge cleanup): x86: handle a couple more syscall kinds needed on x86-darwin. git-svn-id: svn://svn.valgrind.org/vex/trunk@2302 --- diff --git a/VEX/priv/host_x86_defs.c b/VEX/priv/host_x86_defs.c index 4471f4d835..2828886718 100644 --- a/VEX/priv/host_x86_defs.c +++ b/VEX/priv/host_x86_defs.c @@ -2510,18 +2510,21 @@ Int emit_X86Instr ( /*MB_MOD*/Bool* is_profInc, /* movl $magic_number, %ebp. */ UInt trcval = 0; switch (i->Xin.XAssisted.jk) { - 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_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_TInval: trcval = VEX_TRC_JMP_TINVAL; break; - case Ijk_NoRedir: trcval = VEX_TRC_JMP_NOREDIR; break; - case Ijk_SigTRAP: trcval = VEX_TRC_JMP_SIGTRAP; break; - case Ijk_SigSEGV: trcval = VEX_TRC_JMP_SIGSEGV; break; - case Ijk_Boring: trcval = VEX_TRC_JMP_BORING; break; + 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_Sys_int129: trcval = VEX_TRC_JMP_SYS_INT129; break; + case Ijk_Sys_int130: trcval = VEX_TRC_JMP_SYS_INT130; break; + case Ijk_Sys_sysenter: trcval = VEX_TRC_JMP_SYS_SYSENTER; 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_TInval: trcval = VEX_TRC_JMP_TINVAL; break; + case Ijk_NoRedir: trcval = VEX_TRC_JMP_NOREDIR; break; + case Ijk_SigTRAP: trcval = VEX_TRC_JMP_SIGTRAP; break; + case Ijk_SigSEGV: trcval = VEX_TRC_JMP_SIGSEGV; break; + case Ijk_Boring: trcval = VEX_TRC_JMP_BORING; break; /* We don't expect to see the following being assisted. */ case Ijk_Ret: case Ijk_Call: diff --git a/VEX/priv/host_x86_isel.c b/VEX/priv/host_x86_isel.c index 25d189bb0f..802a5fa05d 100644 --- a/VEX/priv/host_x86_isel.c +++ b/VEX/priv/host_x86_isel.c @@ -4171,8 +4171,10 @@ static void iselNext ( ISelEnv* env, /* Case: some other kind of transfer to any address */ switch (jk) { case Ijk_NoDecode: - case Ijk_Sys_int128: case Ijk_ClientReq: case Ijk_NoRedir: - case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval: { + case Ijk_Sys_int128: case Ijk_Sys_int129: case Ijk_Sys_int130: + case Ijk_ClientReq: case Ijk_NoRedir: + case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval: + case Ijk_Sys_sysenter: { HReg r = iselIntExpr_R(env, next); X86AMode* amEIP = X86AMode_IR(offsIP, hregX86_EBP()); addInstr(env, X86Instr_XAssisted(r, amEIP, Xcc_ALWAYS, jk));