From: Julian Seward Date: Thu, 21 Jul 2011 06:17:21 +0000 (+0000) Subject: Add support for Thumb2 encodings of PLD and PLDW. Bug 277653. X-Git-Tag: svn/VALGRIND_3_7_0^2~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37f10a5c7656d7ae8116cc8e78298352d49cee6c;p=thirdparty%2Fvalgrind.git Add support for Thumb2 encodings of PLD and PLDW. Bug 277653. (Mans Rullgard, mans@mansr.com) git-svn-id: svn://svn.valgrind.org/vex/trunk@2179 --- diff --git a/VEX/priv/guest_arm_toIR.c b/VEX/priv/guest_arm_toIR.c index 9e609629b9..8c6efcd07c 100644 --- a/VEX/priv/guest_arm_toIR.c +++ b/VEX/priv/guest_arm_toIR.c @@ -18015,6 +18015,38 @@ DisResult disInstr_THUMB_WRK ( } } + /* ---------------------- PLD{,W} ---------------------- */ + if ((INSN0(15,4) & 0xFFD) == 0xF89 && INSN1(15,12) == 0xF) { + /* PLD/PLDW immediate, encoding T1 */ + UInt rN = INSN0(3,0); + UInt bW = INSN0(5,5); + UInt imm12 = INSN1(11,0); + DIP("pld%s [r%u, #%u]\n", bW ? "w" : "", rN, imm12); + goto decode_success; + } + + if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,8) == 0xFC) { + /* PLD/PLDW immediate, encoding T2 */ + UInt rN = INSN0(3,0); + UInt bW = INSN0(5,5); + UInt imm8 = INSN1(7,0); + DIP("pld%s [r%u, #-%u]\n", bW ? "w" : "", rN, imm8); + goto decode_success; + } + + if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,6) == 0x3C0) { + /* PLD/PLDW register, encoding T1 */ + UInt rN = INSN0(3,0); + UInt rM = INSN1(3,0); + UInt bW = INSN0(5,5); + UInt imm2 = INSN1(5,4); + if (!isBadRegT(rM)) { + DIP("pld%s [r%u, r%u, lsl %d]\n", bW ? "w" : "", rN, rM, imm2); + goto decode_success; + } + /* fall through */ + } + /* -------------- read CP15 TPIDRURO register ------------- */ /* mrc p15, 0, r0, c13, c0, 3 up to mrc p15, 0, r14, c13, c0, 3