From: Julian Seward Date: Mon, 3 Mar 2014 08:42:16 +0000 (+0000) Subject: Fix error in 64-bit and smaller load versions of X-Git-Tag: svn/VALGRIND_3_10_1^2~139 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=416c3943a55f558ef93eb817f6b6061412028162;p=thirdparty%2Fvalgrind.git Fix error in 64-bit and smaller load versions of LDR/STR (immediate, SIMD&FP, unsigned offset) git-svn-id: svn://svn.valgrind.org/vex/trunk@2831 --- diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index b8a5875bb1..73c7f8bb16 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -3276,7 +3276,6 @@ Bool dis_ARM64_load_store(/*MB_OUT*/DisResult* dres, UInt insn) getIReg64orZR(rT2)); } else { vassert(bL == 0 && bX == 0); - vassert(0); //ATC // 32 bit store storeLE(binop(Iop_Add64,mkexpr(tTA),mkU64(0)), getIReg32orZR(rT1)); @@ -3685,8 +3684,14 @@ Bool dis_ARM64_load_store(/*MB_OUT*/DisResult* dres, UInt insn) } if (isLD) { + if (szB < 16) { + putQReg128(tt1, mkV128(0x0000)); + } putQRegLO(tt1, loadLE(ty, binop(Iop_Add64, mkexpr(tTA), mkU64(0)))); + if (szB < 16) { + putQReg128(tt2, mkV128(0x0000)); + } putQRegLO(tt2, loadLE(ty, binop(Iop_Add64, mkexpr(tTA), mkU64(szB)))); } else {