From: Julian Seward Date: Wed, 10 Aug 2005 12:27:46 +0000 (+0000) Subject: Implement PREFETCH{W} m8. X-Git-Tag: svn/VALGRIND_3_1_1^2~146 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ff26ecaf06b6d08fd1d19ab3e8f421858b3f6cd8;p=thirdparty%2Fvalgrind.git Implement PREFETCH{W} m8. git-svn-id: svn://svn.valgrind.org/vex/trunk@1324 --- diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index 5899a19184..48651bc9a8 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -13064,6 +13064,25 @@ DisResult disInstr_AMD64_WRK ( DIP("j%s-32 0x%llx\n", name_AMD64Condcode(opc - 0x80), d64); break; + /* =-=-=-=-=-=-=-=-=- PREFETCH =-=-=-=-=-=-=-=-=-= */ + case 0x0D: /* 0F 0D /0 -- prefetch mem8 */ + /* 0F 0D /1 -- prefetchw mem8 */ + if (have66orF2orF3(pfx)) goto decode_failure; + modrm = getUChar(delta); + if (epartIsReg(modrm)) goto decode_failure; + if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1) + goto decode_failure; + + addr = disAMode ( &alen, pfx, delta, dis_buf, 0 ); + delta += alen; + + switch (gregLO3ofRM(modrm)) { + case 0: DIP("prefetch %s\n", dis_buf); break; + case 1: DIP("prefetchw %s\n", dis_buf); break; + default: vassert(0); /*NOTREACHED*/ + } + break; + /* =-=-=-=-=-=-=-=-=- RDTSC -=-=-=-=-=-=-=-=-=-=-= */ case 0x31: /* RDTSC */