From: Julian Seward Date: Sat, 18 Nov 2006 22:56:46 +0000 (+0000) Subject: Handle long-form encoding of 'push{l,w} %reg'. X-Git-Tag: svn/VALGRIND_3_3_1^2~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d4ad4bd13e230bb1983e6aa9d7778e43c8520c5b;p=thirdparty%2Fvalgrind.git Handle long-form encoding of 'push{l,w} %reg'. git-svn-id: svn://svn.valgrind.org/vex/trunk@1679 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 9677c5a50d..80a8c6e34b 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -2815,6 +2815,13 @@ UInt dis_Grp5 ( UChar sorb, Int sz, Int delta, DisResult* dres ) jmp_treg(Ijk_Boring,t1); dres->whatNext = Dis_StopHere; break; + case 6: /* PUSH Ev */ + vassert(sz == 4 || sz == 2); + t2 = newTemp(Ity_I32); + assign( t2, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) ); + putIReg(4, R_ESP, mkexpr(t2) ); + storeLE( mkexpr(t2), mkexpr(t1) ); + break; default: vex_printf( "unhandled Grp5(R) case %d\n", (Int)gregOfRM(modrm));