From patchwork Mon Apr 15 04:50:16 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Chubb X-Patchwork-Id: 236493 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id D1B772C00CB for ; Mon, 15 Apr 2013 14:51:07 +1000 (EST) Received: from localhost ([::1]:46404 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URbNh-0005VH-Sa for incoming@patchwork.ozlabs.org; Mon, 15 Apr 2013 00:51:05 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44883) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URbNB-0005V3-FA for qemu-devel@nongnu.org; Mon, 15 Apr 2013 00:50:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URbNA-0000Li-77 for qemu-devel@nongnu.org; Mon, 15 Apr 2013 00:50:33 -0400 Received: from lemon.ertos.nicta.com.au ([203.143.174.143]:46052) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URbN9-0000Ko-T9 for qemu-devel@nongnu.org; Mon, 15 Apr 2013 00:50:32 -0400 Received: from [2402:1800:4000:2:224:d7ff:feaf:390] (port=37401 helo=Diprotodon.chubb.wattle.id.au) by lemon.ertos.nicta.com.au with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1URbN5-0006pN-0m; Mon, 15 Apr 2013 14:50:29 +1000 Date: Mon, 15 Apr 2013 14:50:16 +1000 Message-ID: <84sj2s75yv.wl%peter@chubb.wattle.id.au> From: Peter Chubb To: Peter Maydell Organization: NICTA User-Agent: SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/23.4 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") X-SA-Exim-Connect-IP: 2402:1800:4000:2:224:d7ff:feaf:390 X-SA-Exim-Mail-From: peter.chubb@nicta.com.au X-SA-Exim-Version: 4.2.1 (built Mon, 22 Mar 2010 06:52:44 +0000) X-SA-Exim-Scanned: Yes (on lemon.ertos.nicta.com.au) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 203.143.174.143 Cc: Japheth.Lim@nicta.com.au, qemu-devel@nongnu.org Subject: [Qemu-devel] [PATCH] target-arm: Reinsert SRS missing return statements. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Since patch 81465888c5306cd94abb9847e560796fd13d3c2f target-arm: factor out handling of SRS instruction the SRS instruction has not worked in QEMU. The problem is a return directive that was removed in the refactoring, so after decoding the instruction, qemu would fall through to do stuff that it should not have done. Signed-off-by: Peter Chubb diff --git a/target-arm/translate.c b/target-arm/translate.c index 35a21be..c870246 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -6762,6 +6762,7 @@ static void disas_arm_insn(CPUARMState * env, DisasContext *s) } ARCH(6); gen_srs(s, (insn & 0x1f), (insn >> 23) & 3, insn & (1 << 21)); + return; } else if ((insn & 0x0e50ffe0) == 0x08100a00) { /* rfe */ int32_t offset; @@ -8209,6 +8210,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw /* srs */ gen_srs(s, (insn & 0x1f), (insn & (1 << 24)) ? 1 : 2, insn & (1 << 21)); + return; } } else { int i, loaded_base = 0;