From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=54658 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pnt9m-0007Qa-38 for qemu-devel@nongnu.org; Fri, 11 Feb 2011 08:35:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pnt9k-0001Yv-Uq for qemu-devel@nongnu.org; Fri, 11 Feb 2011 08:35:29 -0500 Received: from mnementh.archaic.org.uk ([81.2.115.146]:10729) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pnt9k-0001YZ-LR for qemu-devel@nongnu.org; Fri, 11 Feb 2011 08:35:28 -0500 From: Peter Maydell Date: Fri, 11 Feb 2011 13:35:25 +0000 Message-Id: <1297431325-17371-1-git-send-email-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH] target-arm: Correct conversion of Thumb Neon dp encodings into ARM List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: patches@linaro.org From: Juha Riihimäki We handle Thumb Neon data processing instructions by converting them into the equivalent ARM encoding, as the two are very close. However the ARM encoding should have bit 28 set, not clear. This wasn't causing any problems because we don't actually look at that bit during decode; however it is better to do the conversion correctly to avoid problems later if we add checks to UNDEF on SBZ/SBO bits. Signed-off-by: Juha Riihimäki Reviewed-by: Peter Maydell --- target-arm/translate.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/target-arm/translate.c b/target-arm/translate.c index 3087a5d..793fd59 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -8011,7 +8011,7 @@ static int disas_thumb2_insn(CPUState *env, DisasContext *s, uint16_t insn_hw1) /* Coprocessor. */ if (((insn >> 24) & 3) == 3) { /* Translate into the equivalent ARM encoding. */ - insn = (insn & 0xe2ffffff) | ((insn & (1 << 28)) >> 4); + insn = (insn & 0xe2ffffff) | ((insn & (1 << 28)) >> 4) | (1 << 28); if (disas_neon_data_insn(env, s, insn)) goto illegal_op; } else { -- 1.7.1