From: Julian Seward Date: Thu, 27 Oct 2011 10:58:38 +0000 (+0000) Subject: Merge from trunk, r2227 (Handle "add.w reg, sp, #constT" et al better.) X-Git-Tag: svn/VALGRIND_3_7_0^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a410178d05ba279774b12edaae576d7addc4eb26;p=thirdparty%2Fvalgrind.git Merge from trunk, r2227 (Handle "add.w reg, sp, #constT" et al better.) git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_7_BRANCH@2228 --- diff --git a/VEX/priv/guest_arm_toIR.c b/VEX/priv/guest_arm_toIR.c index ada65f042f..1adcf0725e 100644 --- a/VEX/priv/guest_arm_toIR.c +++ b/VEX/priv/guest_arm_toIR.c @@ -16077,8 +16077,8 @@ DisResult disInstr_THUMB_WRK ( UInt rN = INSN0(3,0); UInt rD = INSN1(11,8); Bool valid = !isBadRegT(rN) && !isBadRegT(rD); - /* but allow "add.w reg, sp, #constT" */ - if (!valid && rN == 13 && rD != 15) + /* but allow "add.w reg, sp, #constT" for reg != PC */ + if (!valid && rD <= 14 && rN == 13) valid = True; if (valid) { IRTemp argL = newTemp(Ity_I32); @@ -16104,8 +16104,8 @@ DisResult disInstr_THUMB_WRK ( UInt rN = INSN0(3,0); UInt rD = INSN1(11,8); Bool valid = !isBadRegT(rN) && !isBadRegT(rD); - /* but allow "addw sp, sp, #uimm12" */ - if (!valid && rD == 13 && rN == 13) + /* but allow "addw reg, sp, #uimm12" for reg != PC */ + if (!valid && rD <= 14 && rN == 13) valid = True; if (valid) { IRTemp argL = newTemp(Ity_I32);