From patchwork Tue May 4 05:52:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Gibson X-Patchwork-Id: 430814 Delivered-To: patch@linaro.org Received: by 2002:a02:c901:0:0:0:0:0 with SMTP id t1csp3494489jao; Mon, 3 May 2021 23:06:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwsGhzJjw8Yj6op+tPhfUTkc4LMt1QrPw9VxI/0jNPrvsd/jEh1zHFSeiQA8u6WVaLpYxbd X-Received: by 2002:ab0:6031:: with SMTP id n17mr18634810ual.128.1620108405761; Mon, 03 May 2021 23:06:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620108405; cv=none; d=google.com; s=arc-20160816; b=OQODTVPtNZj6K+Acms6KgGK1gklZtSVfANMeRx99x17Ef3Bp8dy2UbC0PgxItMRRE6 4esM/PY7uea+6eLignyvxioXEH5Zc7vsUnPmqJuA+jUkrWfKwbfCKtN6ztdP18Ba89/U 96aKPPNfGTfFVxyU3j4ME/YRsHv7CnRsjgDq7MGMG8TWLyzB5yTg8zLeuFo4rYX8xSvq DwITaxnak9UdMZhqMd6P3n8KVcgh97jcQ5HaDmRqlia7Lzh86Xc1+pzvNZQ69frFh2Xv +yeXwuLPm/XLoIHyJ7S5bVA3xWBliUsAz9WEwsy4r/hex4NnCabQtf7CTZdbZOeStjil e0XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=vsKXNQHEN/ClCvwk35VaRNDFhlIVq9m/oiLEG9b2sCY=; b=qPzNN/llvlGb4C/ZUWViZg818xpa4JG9tTLZLHOg8Y2ljgtHXu8+InKw7hxN/WTlzj A3nVNErtei1ATAjBOuRrSv0brhBtRAj8t20+g6KkK/fjuM2OE0mpLcFPpUhruKJT5c5L ld1EJoXOaqtdGkm7OvIMJcyb1n0R4kWSo7h2vKbv+zhqF3CLmscnjmc/qEJsXilFZdcc a2indi8UHvA3OLO9optnyfsb7Zldgdgw8UxxS7EbNG7LDrwpEI4xUY15rbfcaUxTgzuE mpzvpwBM0atPwajSsIxQsRHeOC4rGI7uvSnZNR1m6jfYmq5EenaRt9Z7Jg4TN8QjLKwy g9Fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b="CG/zmRBj"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r18si6941900vsj.440.2021.05.03.23.06.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 May 2021 23:06:45 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@gibson.dropbear.id.au header.s=201602 header.b="CG/zmRBj"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41742 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldoCj-0007P5-4t for patch@linaro.org; Tue, 04 May 2021 02:06:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60530) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldo04-0005IN-FP; Tue, 04 May 2021 01:53:42 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:49839) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldnzy-0004ie-Uv; Tue, 04 May 2021 01:53:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 4FZ8CK4BjVz9sX5; Tue, 4 May 2021 15:53:17 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1620107597; bh=AE/4n5PGUFoays6zdARQ1IYd5KqZTCtHN4fMxuKqurw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CG/zmRBj11BgKHf0CMIk3b+0a/IQ3qoo7/funvWg9rGiqlypcfw4yItCqMdaSLEII dd/XWbcASUARDs4Hj/5xlSBdCmtovbYdh58aaIodPA6ZcmTO/v3bHjPqTudMVxn8Jp 6vwWsW2239DGCFiGNX/9AzO4CKfhgufVnDyWfYDo= From: David Gibson To: peter.maydell@linaro.org, groug@kaod.org Subject: [PULL 13/46] target/ppc: Put dbcr0 single-step bits into hflags Date: Tue, 4 May 2021 15:52:39 +1000 Message-Id: <20210504055312.306823-14-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210504055312.306823-1-david@gibson.dropbear.id.au> References: <20210504055312.306823-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Received-SPF: pass client-ip=2401:3900:2:1::2; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Because these bits were not in hflags, the code generated for single-stepping on BookE was essentially random. Recompute hflags when storing to dbcr0. Reviewed-by: David Gibson Signed-off-by: Richard Henderson Message-Id: <20210323184340.619757-5-richard.henderson@linaro.org> Signed-off-by: David Gibson --- target/ppc/helper_regs.c | 24 +++++++++++++++++------- target/ppc/misc_helper.c | 3 +++ target/ppc/translate.c | 11 ----------- 3 files changed, 20 insertions(+), 18 deletions(-) -- 2.31.1 diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index df9673b90f..e345966b6b 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -114,13 +114,23 @@ void hreg_compute_hflags(CPUPPCState *env) hflags |= le << MSR_LE; } - if (ppc_flags & POWERPC_FLAG_BE) { - QEMU_BUILD_BUG_ON(MSR_BE != HFLAGS_BE); - msr_mask |= 1 << MSR_BE; - } - if (ppc_flags & POWERPC_FLAG_SE) { - QEMU_BUILD_BUG_ON(MSR_SE != HFLAGS_SE); - msr_mask |= 1 << MSR_SE; + if (ppc_flags & POWERPC_FLAG_DE) { + target_ulong dbcr0 = env->spr[SPR_BOOKE_DBCR0]; + if (dbcr0 & DBCR0_ICMP) { + hflags |= 1 << HFLAGS_SE; + } + if (dbcr0 & DBCR0_BRT) { + hflags |= 1 << HFLAGS_BE; + } + } else { + if (ppc_flags & POWERPC_FLAG_BE) { + QEMU_BUILD_BUG_ON(MSR_BE != HFLAGS_BE); + msr_mask |= 1 << MSR_BE; + } + if (ppc_flags & POWERPC_FLAG_SE) { + QEMU_BUILD_BUG_ON(MSR_SE != HFLAGS_SE); + msr_mask |= 1 << MSR_SE; + } } if (msr_is_64bit(env, msr)) { diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index b04b4d7c6e..002958be26 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -215,6 +215,9 @@ void helper_store_403_pbr(CPUPPCState *env, uint32_t num, target_ulong value) void helper_store_40x_dbcr0(CPUPPCState *env, target_ulong val) { + /* Bits 26 & 27 affect single-stepping. */ + hreg_compute_hflags(env); + /* Bits 28 & 29 affect reset or shutdown. */ store_40x_dbcr0(env, val); } diff --git a/target/ppc/translate.c b/target/ppc/translate.c index a85b890bb0..7912495f28 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7923,17 +7923,6 @@ static void ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) if ((hflags >> HFLAGS_BE) & 1) { ctx->singlestep_enabled |= CPU_BRANCH_STEP; } - if ((env->flags & POWERPC_FLAG_DE) && msr_de) { - ctx->singlestep_enabled = 0; - target_ulong dbcr0 = env->spr[SPR_BOOKE_DBCR0]; - if (dbcr0 & DBCR0_ICMP) { - ctx->singlestep_enabled |= CPU_SINGLE_STEP; - } - if (dbcr0 & DBCR0_BRT) { - ctx->singlestep_enabled |= CPU_BRANCH_STEP; - } - - } if (unlikely(ctx->base.singlestep_enabled)) { ctx->singlestep_enabled |= GDBSTUB_SINGLE_STEP; }