From patchwork Fri Feb 19 20:04:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Edgar E. Iglesias" X-Patchwork-Id: 8363631 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id D63FBC0554 for ; Fri, 19 Feb 2016 20:08:26 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1D66820461 for ; Fri, 19 Feb 2016 20:08:26 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4674420454 for ; Fri, 19 Feb 2016 20:08:25 +0000 (UTC) Received: from localhost ([::1]:55030 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aWrLk-00018w-HY for patchwork-qemu-devel@patchwork.kernel.org; Fri, 19 Feb 2016 15:08:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56813) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aWrJ5-0004sA-Nk for qemu-devel@nongnu.org; Fri, 19 Feb 2016 15:05:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aWrJ3-0007QP-Uu for qemu-devel@nongnu.org; Fri, 19 Feb 2016 15:05:39 -0500 Received: from mail-pa0-x229.google.com ([2607:f8b0:400e:c03::229]:36488) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aWrJ3-0007QB-JT; Fri, 19 Feb 2016 15:05:37 -0500 Received: by mail-pa0-x229.google.com with SMTP id yy13so55476754pab.3; Fri, 19 Feb 2016 12:05:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9ftPWjHmmBvxfcfzm/KhRzkEFzATz+BoZKs6RO16zeM=; b=NKK2KGTESssCr6+Hu7IxNGQXOx7klMeHJBNHYeje8n/6ekS9WaGokzPV6b7A+wXREh K0cAMxQEsWA1MniAwYPo6n0697FvWi2j9QGwdTrs94otPBWsci+DwhELZbFepy+kLINQ KZq9kU5ZrNb0ITs9oYgzhpiIyno8co/yC3x+hkVOFldwRCafoEZfZ8MlXKSdr3cZjIWY hwjgM8Bgu+U5zkCwhRwj0DaTNSsTxuOpAvhkEqQflAqaMEQ391/96dbvLliFwfIMK6d4 I5R0IJh1P9JvBzXCxN0X8fQWQ2gdzn/NUBpS2xeFmZjUkRBIxydcFwS4jNqjmhtGs5rj 6BHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9ftPWjHmmBvxfcfzm/KhRzkEFzATz+BoZKs6RO16zeM=; b=AEyhiSpR839Fc+VMKun+09rOdGoBZ8WYsj8uPEm6j1rkUapCw8l7OwZvsSP/6lMoI3 03V5WjLTk6CxJnf5+1nrVb6WNDaKzD9dCut/2+4hx+Cq2hSB/lup4rrocjAOw5dEys6j FEeK0ZhWteBi+gxYBa0+l+tFvq2b6FgRpAbhJ9Nd3h77cAtIhAXO1dRHtBLU3HzYh9GF g0RwFxfR5iqUVkT6592Yqq1cShn6Pd+2h7TmBQB+piecfcHEiq3PXJQnFKqRxoVIwqpH SGGrQtFmyHNJQrKJe2iR6FOgMzHO3tS5yW4y1i3vYR1hJFn360hDK4XsZ4r+exS99MCV A0oQ== X-Gm-Message-State: AG10YOTfCMVmU7DdFWm2RR+I/hQtOd2RZkTgot1feU6IuTwywX7/9bBnZLEYY0fe1zVmfg== X-Received: by 10.66.252.100 with SMTP id zr4mr20277675pac.111.1455912336926; Fri, 19 Feb 2016 12:05:36 -0800 (PST) Received: from localhost (ec2-52-8-89-49.us-west-1.compute.amazonaws.com. [52.8.89.49]) by smtp.gmail.com with ESMTPSA id fl9sm19771576pab.30.2016.02.19.12.05.35 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Fri, 19 Feb 2016 12:05:36 -0800 (PST) From: "Edgar E. Iglesias" To: qemu-devel@nongnu.org, peter.maydell@linaro.org Date: Fri, 19 Feb 2016 21:04:52 +0100 Message-Id: <1455912292-23807-9-git-send-email-edgar.iglesias@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1455912292-23807-1-git-send-email-edgar.iglesias@gmail.com> References: <1455912292-23807-1-git-send-email-edgar.iglesias@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c03::229 Cc: edgar.iglesias@xilinx.com, serge.fdrv@gmail.com, qemu-arm@nongnu.org, alex.bennee@linaro.org, rth@twiddle.net Subject: [Qemu-devel] [PATCH v2 8/8] target-arm: Use isyn.swstep.ex to hold the is_ldex state 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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: "Edgar E. Iglesias" Switch to using isyn.swstep.ex to hold the is_ldex state for SWStep syndrome generation. No functional change. Signed-off-by: Edgar E. Iglesias --- target-arm/translate-a64.c | 6 +++--- target-arm/translate.c | 6 +++--- target-arm/translate.h | 13 ++++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c index 5250c08..ab249d1 100644 --- a/target-arm/translate-a64.c +++ b/target-arm/translate-a64.c @@ -260,7 +260,7 @@ static void gen_step_complete_exception(DisasContext *s) * of the exception, and our syndrome information is always correct. */ gen_ss_advance(s); - gen_exception(EXCP_UDEF, syn_swstep(s->ss_same_el, 1, s->is_ldex), + gen_exception(EXCP_UDEF, syn_swstep(s->ss_same_el, 1, s->isyn.swstep.ex), default_exception_el(s)); s->is_jmp = DISAS_EXC; } @@ -1865,7 +1865,7 @@ static void disas_ldst_excl(DisasContext *s, uint32_t insn) if (is_excl) { if (!is_store) { - s->is_ldex = true; + s->isyn.swstep.ex = true; gen_load_exclusive(s, rt, rt2, tcg_addr, size, is_pair); } else { gen_store_exclusive(s, rs, rt, rt2, tcg_addr, size, is_pair); @@ -11136,7 +11136,7 @@ void gen_intermediate_code_a64(ARMCPU *cpu, TranslationBlock *tb) */ dc->ss_active = ARM_TBFLAG_SS_ACTIVE(tb->flags); dc->pstate_ss = ARM_TBFLAG_PSTATE_SS(tb->flags); - dc->is_ldex = false; + dc->isyn.swstep.ex = false; dc->ss_same_el = (arm_debug_target_el(env) == dc->current_el); init_tmp_a64_array(dc); diff --git a/target-arm/translate.c b/target-arm/translate.c index 7d83c94..5aee066 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -250,7 +250,7 @@ static void gen_step_complete_exception(DisasContext *s) * of the exception, and our syndrome information is always correct. */ gen_ss_advance(s); - gen_exception(EXCP_UDEF, syn_swstep(s->ss_same_el, 1, s->is_ldex), + gen_exception(EXCP_UDEF, syn_swstep(s->ss_same_el, 1, s->isyn.swstep.ex), default_exception_el(s)); s->is_jmp = DISAS_EXC; } @@ -7431,7 +7431,7 @@ static void gen_load_exclusive(DisasContext *s, int rt, int rt2, { TCGv_i32 tmp = tcg_temp_new_i32(); - s->is_ldex = true; + s->isyn.swstep.ex = true; switch (size) { case 0: @@ -11341,7 +11341,7 @@ void gen_intermediate_code(CPUARMState *env, TranslationBlock *tb) */ dc->ss_active = ARM_TBFLAG_SS_ACTIVE(tb->flags); dc->pstate_ss = ARM_TBFLAG_PSTATE_SS(tb->flags); - dc->is_ldex = false; + dc->isyn.swstep.ex = false; dc->ss_same_el = false; /* Can't be true since EL_d must be AArch64 */ cpu_F0s = tcg_temp_new_i32(); diff --git a/target-arm/translate.h b/target-arm/translate.h index e002c90..1c4c087 100644 --- a/target-arm/translate.h +++ b/target-arm/translate.h @@ -49,11 +49,6 @@ typedef struct DisasContext { */ bool ss_active; bool pstate_ss; - /* True if the insn just emitted was a load-exclusive instruction - * (necessary for syndrome information for single step exceptions), - * ie A64 LDX*, LDAX*, A32/T32 LDREX*, LDAEX*. - */ - bool is_ldex; /* True if a single-step exception will be taken to the current EL */ bool ss_same_el; /* Bottom two bits of XScale c15_cpar coprocessor access control reg */ @@ -69,6 +64,14 @@ typedef struct DisasContext { bool sf; bool ar; } dabt; + /* SWStep section. */ + struct { + /* True if the insn just emitted was a load-exclusive instruction + * (necessary for syndrome information for single step exceptions), + * ie A64 LDX*, LDAX*, A32/T32 LDREX*, LDAEX*. + */ + bool ex; + } swstep; } isyn; /* TCG op index of the current insn_start. */ int insn_start_idx;