|
From: <sv...@va...> - 2012-04-21 15:34:32
|
sewardj 2012-04-21 16:34:25 +0100 (Sat, 21 Apr 2012)
New Revision: 2302
Log:
(post-tchain-merge cleanup): x86: handle a couple more syscall kinds
needed on x86-darwin.
Modified files:
trunk/priv/host_x86_defs.c
trunk/priv/host_x86_isel.c
Modified: trunk/priv/host_x86_defs.c (+15 -12)
===================================================================
--- trunk/priv/host_x86_defs.c 2012-04-21 11:47:41 +01:00 (rev 2301)
+++ trunk/priv/host_x86_defs.c 2012-04-21 16:34:25 +01:00 (rev 2302)
@@ -2510,18 +2510,21 @@
/* 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:
Modified: trunk/priv/host_x86_isel.c (+4 -2)
===================================================================
--- trunk/priv/host_x86_isel.c 2012-04-21 11:47:41 +01:00 (rev 2301)
+++ trunk/priv/host_x86_isel.c 2012-04-21 16:34:25 +01:00 (rev 2302)
@@ -4171,8 +4171,10 @@
/* 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));
|