|
From: <sv...@va...> - 2007-04-29 09:41:00
|
Author: sewardj
Date: 2007-04-29 10:40:56 +0100 (Sun, 29 Apr 2007)
New Revision: 1751
Log:
Merge r1736 and r1741: int $3 support (x86 and amd64)
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c
branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c
branches/VEX_3_2_BRANCH/priv/host-x86/hdefs.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
===================================================================
--- branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2007-04-29 09:28:21 UTC (rev 1750)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2007-04-29 09:40:56 UTC (rev 1751)
@@ -12380,6 +12380,12 @@
/* ------------------------ INT ------------------------ */
+ case 0xCC: /* INT 3 */
+ jmp_lit(Ijk_Trap, guest_RIP_bbstart + delta);
+ dres.whatNext = Dis_StopHere;
+ DIP("int $0x3\n");
+ break;
+
case 0xCD: { /* INT imm8 */
IRJumpKind jk = Ijk_Boring;
if (have66orF2orF3(pfx)) goto decode_failure;
Modified: branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c
===================================================================
--- branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2007-04-29 09:28:21 UTC (rev 1750)
+++ branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2007-04-29 09:40:56 UTC (rev 1751)
@@ -11208,6 +11208,12 @@
/* ------------------------ INT ------------------------ */
+ case 0xCC: /* INT 3 */
+ jmp_lit(Ijk_Trap,((Addr32)guest_EIP_bbstart)+delta);
+ dres.whatNext = Dis_StopHere;
+ DIP("int $0x3\n");
+ break;
+
case 0xCD: /* INT imm8 */
d32 = getIByte(delta); delta++;
if (d32 != 0x80) goto decode_failure;
Modified: branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c
===================================================================
--- branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c 2007-04-29 09:28:21 UTC (rev 1750)
+++ branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c 2007-04-29 09:40:56 UTC (rev 1751)
@@ -2640,6 +2640,9 @@
case Ijk_NoRedir:
*p++ = 0xBD;
p = emit32(p, VEX_TRC_JMP_NOREDIR); break;
+ case Ijk_Trap:
+ *p++ = 0xBD;
+ p = emit32(p, VEX_TRC_JMP_TRAP); break;
case Ijk_Ret:
case Ijk_Call:
case Ijk_Boring:
Modified: branches/VEX_3_2_BRANCH/priv/host-x86/hdefs.c
===================================================================
--- branches/VEX_3_2_BRANCH/priv/host-x86/hdefs.c 2007-04-29 09:28:21 UTC (rev 1750)
+++ branches/VEX_3_2_BRANCH/priv/host-x86/hdefs.c 2007-04-29 09:40:56 UTC (rev 1751)
@@ -2184,6 +2184,9 @@
case Ijk_Sys_sysenter:
*p++ = 0xBD;
p = emit32(p, VEX_TRC_JMP_SYS_SYSENTER); break;
+ case Ijk_Trap:
+ *p++ = 0xBD;
+ p = emit32(p, VEX_TRC_JMP_TRAP); break;
case Ijk_Ret:
case Ijk_Call:
case Ijk_Boring:
|