From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597349; cv=none; d=zohomail.com; s=zohoarc; b=dkCvcQu4L38cFZ9E/r2wQhH+lWheRw42ZrnBBLzENm8uAZbZeMfTKJOx95E8F1/BJAoBYsg2d+REWW+QdLIxqoJyKMf4yxQSZbVJfN+kgnkVeYhTJGjRleDxwvwnREcsmUyPHMhFpTjy+XcvERvKlhYGq+zxtAgya2iW4NRPvOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597349; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AY33bvhRAO2gM02jn6+LJdwP80pyHHRM7rF6JxFdsYA=; b=XkkIN9F0qpr+5JD5u9beIAocKyAJrHmHSvQBjyh/iLy5CAhdUmWg4GJg33k00VBydENfUQNip4PZds5O/o56r/RLw4wtd1sTdLEWXH/ZCetiSbdt+m3JRPAmMos0lIIgFfkwRr3NrkSgzQBoYMft223TxeJLKf4fNaB1lJtMcQ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161559734917742.834327684944924; Fri, 12 Mar 2021 17:02:29 -0800 (PST) Received: from localhost ([::1]:37832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsfi-0000iY-6A for importer@patchew.org; Fri, 12 Mar 2021 20:02:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdo-000719-9t for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:28 -0500 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:43912) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdk-0003Lp-8v for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:27 -0500 Received: by mail-qk1-x733.google.com with SMTP id b130so26276908qkc.10 for ; Fri, 12 Mar 2021 17:00:23 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AY33bvhRAO2gM02jn6+LJdwP80pyHHRM7rF6JxFdsYA=; b=zabczsyOxwbAjuc2rpcQIgdr758Va97gj3Yt0J2l0nCrfixutM7TxoUb3GRevegoku +Iet4xcox2x1qG4gBxmArR8ouk1lVukhrxGGHI05MVY6y6hyTN+P2fAqgdYEFIkwI4LA LPLXpxKR1qwDSw5Uw+zuHSEWlGN2Owv/DNHCBSGBCY6PNq/9WF2qi6DbFsXqmSs6Fqau O1yxfvJhNB8xepa0tZ8dcpvjq1eNc1LguGz+sh/iM+bNKB9emEAY0Udo0dS8JJA5b9R9 y/ugTcECM62JQaMhdVuLlcPZETUiN71JDi8XrKjuUezk5STIaIWs/nMO3qcN1BwCLyXA 6lhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AY33bvhRAO2gM02jn6+LJdwP80pyHHRM7rF6JxFdsYA=; b=LAdq0UHRHC+oV1MPmmXG29M6CLVx+fHe+Q9jPxdF5YWFg09Slpeb5FZHtO6ynuR65q vlf2yAEa+S+DHI3fWyDGHQHpGb8CAiVgeNlNF4G7X0aEcPfk8dMc0INDYR6m+HWPxqBF dwmc2v+MDsIFdKETj/QnFZe+7K/YsVkbJK7RL47lZ5foDfBPrM+iLkEJoFfKoz1yXlF6 L8PUV4rpecakVgd7mCLwR6kNeehMkOjykjRrkrA94+b4zMf3e7Em6CqJhKBKGVeDWoHV 3cEg7m5rF3FS6ChB5YsTb8Z2UnkfPLcBiOcmziHt6UfyW61fhag3MHOQM0KrLuu1Gmkq UGPg== X-Gm-Message-State: AOAM532SKnHBXe1wCmtLV64xVCvGif8XwhGhBNtnn1j2jPC99VCpmRw9 U6vLFT2NhO2cHE+ZPo7oPTSzhyU09ZFHZeWw X-Google-Smtp-Source: ABdhPJxBJWRQzkVtSMYtbPUOKsRFcdlIlJm21rphr7YyJbEjP8e8s8WQ4Y3HCVhtEDYKKDnV7r14iA== X-Received: by 2002:a37:a192:: with SMTP id k140mr15298135qke.278.1615597222690; Fri, 12 Mar 2021 17:00:22 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 01/15] target/ppc: Move helper_regs.h functions out-of-line Date: Fri, 12 Mar 2021 19:00:04 -0600 Message-Id: <20210313010018.819153-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::733; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x733.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Move the functions to a new file, helper_regs.c. Note int_helper.c was relying on helper_regs.h to indirectly include qemu/log.h. Signed-off-by: Richard Henderson --- target/ppc/helper_regs.h | 184 ++---------------------------------- target/ppc/helper_regs.c | 197 +++++++++++++++++++++++++++++++++++++++ target/ppc/int_helper.c | 1 + target/ppc/meson.build | 1 + 4 files changed, 207 insertions(+), 176 deletions(-) create mode 100644 target/ppc/helper_regs.c diff --git a/target/ppc/helper_regs.h b/target/ppc/helper_regs.h index efcc903427..4148a442b3 100644 --- a/target/ppc/helper_regs.h +++ b/target/ppc/helper_regs.h @@ -20,184 +20,16 @@ #ifndef HELPER_REGS_H #define HELPER_REGS_H =20 -#include "qemu/main-loop.h" -#include "exec/exec-all.h" -#include "sysemu/kvm.h" +void hreg_swap_gpr_tgpr(CPUPPCState *env); +void hreg_compute_mem_idx(CPUPPCState *env); +void hreg_compute_hflags(CPUPPCState *env); +void cpu_interrupt_exittb(CPUState *cs); +int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv); =20 -/* Swap temporary saved registers with GPRs */ -static inline void hreg_swap_gpr_tgpr(CPUPPCState *env) -{ - target_ulong tmp; - - tmp =3D env->gpr[0]; - env->gpr[0] =3D env->tgpr[0]; - env->tgpr[0] =3D tmp; - tmp =3D env->gpr[1]; - env->gpr[1] =3D env->tgpr[1]; - env->tgpr[1] =3D tmp; - tmp =3D env->gpr[2]; - env->gpr[2] =3D env->tgpr[2]; - env->tgpr[2] =3D tmp; - tmp =3D env->gpr[3]; - env->gpr[3] =3D env->tgpr[3]; - env->tgpr[3] =3D tmp; -} - -static inline void hreg_compute_mem_idx(CPUPPCState *env) -{ - /* - * This is our encoding for server processors. The architecture - * specifies that there is no such thing as userspace with - * translation off, however it appears that MacOS does it and some - * 32-bit CPUs support it. Weird... - * - * 0 =3D Guest User space virtual mode - * 1 =3D Guest Kernel space virtual mode - * 2 =3D Guest User space real mode - * 3 =3D Guest Kernel space real mode - * 4 =3D HV User space virtual mode - * 5 =3D HV Kernel space virtual mode - * 6 =3D HV User space real mode - * 7 =3D HV Kernel space real mode - * - * For BookE, we need 8 MMU modes as follow: - * - * 0 =3D AS 0 HV User space - * 1 =3D AS 0 HV Kernel space - * 2 =3D AS 1 HV User space - * 3 =3D AS 1 HV Kernel space - * 4 =3D AS 0 Guest User space - * 5 =3D AS 0 Guest Kernel space - * 6 =3D AS 1 Guest User space - * 7 =3D AS 1 Guest Kernel space - */ - if (env->mmu_model & POWERPC_MMU_BOOKE) { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_is ? 2 : 0; - env->dmmu_idx +=3D msr_ds ? 2 : 0; - env->immu_idx +=3D msr_gs ? 4 : 0; - env->dmmu_idx +=3D msr_gs ? 4 : 0; - } else { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_ir ? 0 : 2; - env->dmmu_idx +=3D msr_dr ? 0 : 2; - env->immu_idx +=3D msr_hv ? 4 : 0; - env->dmmu_idx +=3D msr_hv ? 4 : 0; - } -} - -static inline void hreg_compute_hflags(CPUPPCState *env) -{ - target_ulong hflags_mask; - - /* We 'forget' FE0 & FE1: we'll never generate imprecise exceptions */ - hflags_mask =3D (1 << MSR_VR) | (1 << MSR_AP) | (1 << MSR_SA) | - (1 << MSR_PR) | (1 << MSR_FP) | (1 << MSR_SE) | (1 << MSR_BE) | - (1 << MSR_LE) | (1 << MSR_VSX) | (1 << MSR_IR) | (1 << MSR_DR); - hflags_mask |=3D (1ULL << MSR_CM) | (1ULL << MSR_SF) | MSR_HVB; - hreg_compute_mem_idx(env); - env->hflags =3D env->msr & hflags_mask; - /* Merge with hflags coming from other registers */ - env->hflags |=3D env->hflags_nmsr; -} - -static inline void cpu_interrupt_exittb(CPUState *cs) -{ - if (!kvm_enabled()) { - return; - } - - if (!qemu_mutex_iothread_locked()) { - qemu_mutex_lock_iothread(); - cpu_interrupt(cs, CPU_INTERRUPT_EXITTB); - qemu_mutex_unlock_iothread(); - } else { - cpu_interrupt(cs, CPU_INTERRUPT_EXITTB); - } -} - -static inline int hreg_store_msr(CPUPPCState *env, target_ulong value, - int alter_hv) -{ - int excp; -#if !defined(CONFIG_USER_ONLY) - CPUState *cs =3D env_cpu(env); -#endif - - excp =3D 0; - value &=3D env->msr_mask; -#if !defined(CONFIG_USER_ONLY) - /* Neither mtmsr nor guest state can alter HV */ - if (!alter_hv || !(env->msr & MSR_HVB)) { - value &=3D ~MSR_HVB; - value |=3D env->msr & MSR_HVB; - } - if (((value >> MSR_IR) & 1) !=3D msr_ir || - ((value >> MSR_DR) & 1) !=3D msr_dr) { - cpu_interrupt_exittb(cs); - } - if ((env->mmu_model & POWERPC_MMU_BOOKE) && - ((value >> MSR_GS) & 1) !=3D msr_gs) { - cpu_interrupt_exittb(cs); - } - if (unlikely((env->flags & POWERPC_FLAG_TGPR) && - ((value ^ env->msr) & (1 << MSR_TGPR)))) { - /* Swap temporary saved registers with GPRs */ - hreg_swap_gpr_tgpr(env); - } - if (unlikely((value >> MSR_EP) & 1) !=3D msr_ep) { - /* Change the exception prefix on PowerPC 601 */ - env->excp_prefix =3D ((value >> MSR_EP) & 1) * 0xFFF00000; - } - /* - * If PR=3D1 then EE, IR and DR must be 1 - * - * Note: We only enforce this on 64-bit server processors. - * It appears that: - * - 32-bit implementations supports PR=3D1 and EE/DR/IR=3D0 and MacOS - * exploits it. - * - 64-bit embedded implementations do not need any operation to be - * performed when PR is set. - */ - if (is_book3s_arch2x(env) && ((value >> MSR_PR) & 1)) { - value |=3D (1 << MSR_EE) | (1 << MSR_DR) | (1 << MSR_IR); - } -#endif - env->msr =3D value; - hreg_compute_hflags(env); -#if !defined(CONFIG_USER_ONLY) - if (unlikely(msr_pow =3D=3D 1)) { - if (!env->pending_interrupts && (*env->check_pow)(env)) { - cs->halted =3D 1; - excp =3D EXCP_HALTED; - } - } -#endif - - return excp; -} - -#if !defined(CONFIG_USER_ONLY) -static inline void check_tlb_flush(CPUPPCState *env, bool global) -{ - CPUState *cs =3D env_cpu(env); - - /* Handle global flushes first */ - if (global && (env->tlb_need_flush & TLB_NEED_GLOBAL_FLUSH)) { - env->tlb_need_flush &=3D ~TLB_NEED_GLOBAL_FLUSH; - env->tlb_need_flush &=3D ~TLB_NEED_LOCAL_FLUSH; - tlb_flush_all_cpus_synced(cs); - return; - } - - /* Then handle local ones */ - if (env->tlb_need_flush & TLB_NEED_LOCAL_FLUSH) { - env->tlb_need_flush &=3D ~TLB_NEED_LOCAL_FLUSH; - tlb_flush(cs); - } -} -#else +#ifdef CONFIG_USER_ONLY static inline void check_tlb_flush(CPUPPCState *env, bool global) { } +#else +void check_tlb_flush(CPUPPCState *env, bool global); #endif =20 #endif /* HELPER_REGS_H */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c new file mode 100644 index 0000000000..5e18232b84 --- /dev/null +++ b/target/ppc/helper_regs.c @@ -0,0 +1,197 @@ +/* + * PowerPC emulation special registers manipulation helpers for qemu. + * + * Copyright (c) 2003-2007 Jocelyn Mayer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include "qemu/osdep.h" +#include "qemu/main-loop.h" +#include "exec/exec-all.h" +#include "sysemu/kvm.h" +#include "helper_regs.h" + +/* Swap temporary saved registers with GPRs */ +void hreg_swap_gpr_tgpr(CPUPPCState *env) +{ + target_ulong tmp; + + tmp =3D env->gpr[0]; + env->gpr[0] =3D env->tgpr[0]; + env->tgpr[0] =3D tmp; + tmp =3D env->gpr[1]; + env->gpr[1] =3D env->tgpr[1]; + env->tgpr[1] =3D tmp; + tmp =3D env->gpr[2]; + env->gpr[2] =3D env->tgpr[2]; + env->tgpr[2] =3D tmp; + tmp =3D env->gpr[3]; + env->gpr[3] =3D env->tgpr[3]; + env->tgpr[3] =3D tmp; +} + +void hreg_compute_mem_idx(CPUPPCState *env) +{ + /* + * This is our encoding for server processors. The architecture + * specifies that there is no such thing as userspace with + * translation off, however it appears that MacOS does it and some + * 32-bit CPUs support it. Weird... + * + * 0 =3D Guest User space virtual mode + * 1 =3D Guest Kernel space virtual mode + * 2 =3D Guest User space real mode + * 3 =3D Guest Kernel space real mode + * 4 =3D HV User space virtual mode + * 5 =3D HV Kernel space virtual mode + * 6 =3D HV User space real mode + * 7 =3D HV Kernel space real mode + * + * For BookE, we need 8 MMU modes as follow: + * + * 0 =3D AS 0 HV User space + * 1 =3D AS 0 HV Kernel space + * 2 =3D AS 1 HV User space + * 3 =3D AS 1 HV Kernel space + * 4 =3D AS 0 Guest User space + * 5 =3D AS 0 Guest Kernel space + * 6 =3D AS 1 Guest User space + * 7 =3D AS 1 Guest Kernel space + */ + if (env->mmu_model & POWERPC_MMU_BOOKE) { + env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; + env->immu_idx +=3D msr_is ? 2 : 0; + env->dmmu_idx +=3D msr_ds ? 2 : 0; + env->immu_idx +=3D msr_gs ? 4 : 0; + env->dmmu_idx +=3D msr_gs ? 4 : 0; + } else { + env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; + env->immu_idx +=3D msr_ir ? 0 : 2; + env->dmmu_idx +=3D msr_dr ? 0 : 2; + env->immu_idx +=3D msr_hv ? 4 : 0; + env->dmmu_idx +=3D msr_hv ? 4 : 0; + } +} + +void hreg_compute_hflags(CPUPPCState *env) +{ + target_ulong hflags_mask; + + /* We 'forget' FE0 & FE1: we'll never generate imprecise exceptions */ + hflags_mask =3D (1 << MSR_VR) | (1 << MSR_AP) | (1 << MSR_SA) | + (1 << MSR_PR) | (1 << MSR_FP) | (1 << MSR_SE) | (1 << MSR_BE) | + (1 << MSR_LE) | (1 << MSR_VSX) | (1 << MSR_IR) | (1 << MSR_DR); + hflags_mask |=3D (1ULL << MSR_CM) | (1ULL << MSR_SF) | MSR_HVB; + hreg_compute_mem_idx(env); + env->hflags =3D env->msr & hflags_mask; + /* Merge with hflags coming from other registers */ + env->hflags |=3D env->hflags_nmsr; +} + +void cpu_interrupt_exittb(CPUState *cs) +{ + if (!kvm_enabled()) { + return; + } + + if (!qemu_mutex_iothread_locked()) { + qemu_mutex_lock_iothread(); + cpu_interrupt(cs, CPU_INTERRUPT_EXITTB); + qemu_mutex_unlock_iothread(); + } else { + cpu_interrupt(cs, CPU_INTERRUPT_EXITTB); + } +} + +int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv) +{ + int excp; +#if !defined(CONFIG_USER_ONLY) + CPUState *cs =3D env_cpu(env); +#endif + + excp =3D 0; + value &=3D env->msr_mask; +#if !defined(CONFIG_USER_ONLY) + /* Neither mtmsr nor guest state can alter HV */ + if (!alter_hv || !(env->msr & MSR_HVB)) { + value &=3D ~MSR_HVB; + value |=3D env->msr & MSR_HVB; + } + if (((value >> MSR_IR) & 1) !=3D msr_ir || + ((value >> MSR_DR) & 1) !=3D msr_dr) { + cpu_interrupt_exittb(cs); + } + if ((env->mmu_model & POWERPC_MMU_BOOKE) && + ((value >> MSR_GS) & 1) !=3D msr_gs) { + cpu_interrupt_exittb(cs); + } + if (unlikely((env->flags & POWERPC_FLAG_TGPR) && + ((value ^ env->msr) & (1 << MSR_TGPR)))) { + /* Swap temporary saved registers with GPRs */ + hreg_swap_gpr_tgpr(env); + } + if (unlikely((value >> MSR_EP) & 1) !=3D msr_ep) { + /* Change the exception prefix on PowerPC 601 */ + env->excp_prefix =3D ((value >> MSR_EP) & 1) * 0xFFF00000; + } + /* + * If PR=3D1 then EE, IR and DR must be 1 + * + * Note: We only enforce this on 64-bit server processors. + * It appears that: + * - 32-bit implementations supports PR=3D1 and EE/DR/IR=3D0 and MacOS + * exploits it. + * - 64-bit embedded implementations do not need any operation to be + * performed when PR is set. + */ + if (is_book3s_arch2x(env) && ((value >> MSR_PR) & 1)) { + value |=3D (1 << MSR_EE) | (1 << MSR_DR) | (1 << MSR_IR); + } +#endif + env->msr =3D value; + hreg_compute_hflags(env); +#if !defined(CONFIG_USER_ONLY) + if (unlikely(msr_pow =3D=3D 1)) { + if (!env->pending_interrupts && (*env->check_pow)(env)) { + cs->halted =3D 1; + excp =3D EXCP_HALTED; + } + } +#endif + + return excp; +} + +#ifndef CONFIG_USER_ONLY +void check_tlb_flush(CPUPPCState *env, bool global) +{ + CPUState *cs =3D env_cpu(env); + + /* Handle global flushes first */ + if (global && (env->tlb_need_flush & TLB_NEED_GLOBAL_FLUSH)) { + env->tlb_need_flush &=3D ~TLB_NEED_GLOBAL_FLUSH; + env->tlb_need_flush &=3D ~TLB_NEED_LOCAL_FLUSH; + tlb_flush_all_cpus_synced(cs); + return; + } + + /* Then handle local ones */ + if (env->tlb_need_flush & TLB_NEED_LOCAL_FLUSH) { + env->tlb_need_flush &=3D ~TLB_NEED_LOCAL_FLUSH; + tlb_flush(cs); + } +} +#endif diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index 429de28494..a44c2d90ea 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -22,6 +22,7 @@ #include "internal.h" #include "qemu/host-utils.h" #include "qemu/main-loop.h" +#include "qemu/log.h" #include "exec/helper-proto.h" #include "crypto/aes.h" #include "fpu/softfloat.h" diff --git a/target/ppc/meson.build b/target/ppc/meson.build index bbfef90e08..4079d01ee3 100644 --- a/target/ppc/meson.build +++ b/target/ppc/meson.build @@ -6,6 +6,7 @@ ppc_ss.add(files( 'excp_helper.c', 'fpu_helper.c', 'gdbstub.c', + 'helper_regs.c', 'int_helper.c', 'mem_helper.c', 'misc_helper.c', --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597358; cv=none; d=zohomail.com; s=zohoarc; b=B2Jda7hG5iELMJM8tPMHF7G1JkcFTQajy185c3umPwjjnfTWDXd7DKfVOy07jQXc9EL7o2naOkRfdlLjWFqn15xZYRI8wsklTl/zfP+SpZLWbbV3Py3KZ5ddGpbjc9jUIrECnF1tnLEtK4ncXsNwXDHX2D3bL9kOoEychBorLwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597358; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8V/dpCgOxiVauvo1HWnH9SJMMk44GHfb0bI5oWyk9l8=; b=FilOB+kKaKdVSJVzp7i2deS3SRT9AJ6n5nU5WYuNux8M8ZJm3DFhjeAEPSmU0queHJWxV1rV1ljuD/uSkRkOQqbBgRWlhLt4KMXBlSAJR/oY9ggf4X4Z9az2upInhgYXDVlOWN+wSK7HoimwZCuRCf3QI+Hg1ACpBzqlRW4u/Zw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597358769500.00347897574056; Fri, 12 Mar 2021 17:02:38 -0800 (PST) Received: from localhost ([::1]:38670 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsft-000143-Ls for importer@patchew.org; Fri, 12 Mar 2021 20:02:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55982) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdq-00071x-Ku for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:30 -0500 Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]:40777) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdk-0003NS-M2 for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:30 -0500 Received: by mail-qk1-x729.google.com with SMTP id l132so26309954qke.7 for ; Fri, 12 Mar 2021 17:00:24 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8V/dpCgOxiVauvo1HWnH9SJMMk44GHfb0bI5oWyk9l8=; b=BOxSVv/YFeAFWtjG5qROXoWoBrzeObZYxTYP5wlEAou6FIuHK+Oxo2DeXoDa4Cx4rE bBrktc80eP/Q6T7CmcmxrXWVVMNgPkFRwsuqCjT72sD6Eeovtu/E5aUZ3vHgBLCQdgB9 5lflPuI600J6XoiZiMtaXtX05MJ+r5GZ4JtmP4mrFlzweKp2IWh6SL7rHhHDz9lCmP0H /uFISG4/KlFA8PzSynjKZwEg3rjEvBw55MrutuuwVa7ISCeIwl4db6yP1ovq/LeBt6bf XwuoSBBiCPUc8oBzl2f1qenOp/HPPWxLYOBeUw8qJGkoV9IA08ebD2wiMrTFcUuZDJcq 5YlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8V/dpCgOxiVauvo1HWnH9SJMMk44GHfb0bI5oWyk9l8=; b=aOpIZbqrouoDkdnQeI0JubPI7r8jwz95I7jbZxNiHGvg54ZBSBqozN0XWK1h6SirMe WJ+iZA93DGEfvEKQB73w7NpziPhg8vU+JV36p+dLI91jJjsemURDnTsiCcAwqPWYDhaU cuj9LtVvdszgBSNf6GsHtXhEAc0HA2e76+EI6I2x/Op0aF4ODqEHpGJgJJ2rrabD1fC4 6gqZ6Gw2elP9ZIdbJmnUuyWaZAcBJ5xaepLUuOHLdRgA5Cv03PREGFFT5GRW3nYjX3sq peWHC4Wctx7F6wjn4mm+LS2ssw+DacDzrMYQD4OYNwP5WKT36e6hqp9rmfD9InoJwT5N u8fQ== X-Gm-Message-State: AOAM532aRQCqq5egq0wgyGT7pnsI0R/fBsv8IMxeYg/0gXzzg2DZBIo+ KQyyBefVk3MEZOTU5cf8kxYHVkpXZNehqbgL X-Google-Smtp-Source: ABdhPJxv9L3hgFHUdswJYqVx+sG5NKKhAIK5i/mLdRkwZERfADs7wQS/iWSuqrFZF5Jl/rQcUpQnbw== X-Received: by 2002:ae9:f81a:: with SMTP id x26mr14700203qkh.497.1615597223832; Fri, 12 Mar 2021 17:00:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 02/15] target/ppc: Move 601 hflags adjustment to hreg_compute_hflags Date: Fri, 12 Mar 2021 19:00:05 -0600 Message-Id: <20210313010018.819153-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::729; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x729.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Keep all hflags computation in one place, as this will be especially important later. Introduce a new POWERPC_FLAG_HID0_LE bit to indicate when LE should be taken from HID0. This appears to be set if and only if POWERPC_FLAG_RTC_CLK is set, but we're not short of bits and having both names will avoid confusion. Note that this was the only user of hflags_nmsr, so we can perform a straight assignment rather than mask and set. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 2 ++ target/ppc/helper_regs.c | 13 +++++++++++-- target/ppc/misc_helper.c | 8 +++----- target/ppc/translate_init.c.inc | 4 ++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index e73416da68..061d2eed1b 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -581,6 +581,8 @@ enum { POWERPC_FLAG_TM =3D 0x00100000, /* Has SCV (ISA 3.00) = */ POWERPC_FLAG_SCV =3D 0x00200000, + /* Has HID0 for LE bit (601) = */ + POWERPC_FLAG_HID0_LE =3D 0x00400000, }; =20 /*************************************************************************= ****/ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 5e18232b84..95b9aca61f 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -96,8 +96,17 @@ void hreg_compute_hflags(CPUPPCState *env) hflags_mask |=3D (1ULL << MSR_CM) | (1ULL << MSR_SF) | MSR_HVB; hreg_compute_mem_idx(env); env->hflags =3D env->msr & hflags_mask; - /* Merge with hflags coming from other registers */ - env->hflags |=3D env->hflags_nmsr; + + if (env->flags & POWERPC_FLAG_HID0_LE) { + /* + * Note that MSR_LE is not set in env->msr_mask for this cpu, + * and so will never be set in msr or hflags at this point. + */ + uint32_t le =3D extract32(env->spr[SPR_HID0], 3, 1); + env->hflags |=3D le << MSR_LE; + /* Retain for backward compatibility with migration. */ + env->hflags_nmsr =3D le << MSR_LE; + } } =20 void cpu_interrupt_exittb(CPUState *cs) diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 5d6e0de396..63e3147eb4 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -194,16 +194,14 @@ void helper_store_hid0_601(CPUPPCState *env, target_u= long val) target_ulong hid0; =20 hid0 =3D env->spr[SPR_HID0]; + env->spr[SPR_HID0] =3D (uint32_t)val; + if ((val ^ hid0) & 0x00000008) { /* Change current endianness */ - env->hflags &=3D ~(1 << MSR_LE); - env->hflags_nmsr &=3D ~(1 << MSR_LE); - env->hflags_nmsr |=3D (1 << MSR_LE) & (((val >> 3) & 1) << MSR_LE); - env->hflags |=3D env->hflags_nmsr; + hreg_compute_hflags(env); qemu_log("%s: set endianness to %c =3D> " TARGET_FMT_lx "\n", __fu= nc__, val & 0x8 ? 'l' : 'b', env->hflags); } - env->spr[SPR_HID0] =3D (uint32_t)val; } =20 void helper_store_403_pbr(CPUPPCState *env, uint32_t num, target_ulong val= ue) diff --git a/target/ppc/translate_init.c.inc b/target/ppc/translate_init.c.= inc index c03a7c4f52..049d76cfd1 100644 --- a/target/ppc/translate_init.c.inc +++ b/target/ppc/translate_init.c.inc @@ -5441,7 +5441,7 @@ POWERPC_FAMILY(601)(ObjectClass *oc, void *data) pcc->excp_model =3D POWERPC_EXCP_601; pcc->bus_model =3D PPC_FLAGS_INPUT_6xx; pcc->bfd_mach =3D bfd_mach_ppc_601; - pcc->flags =3D POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK; + pcc->flags =3D POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_H= ID0_LE; } =20 #define POWERPC_MSRR_601v (0x0000000000001040ULL) @@ -5485,7 +5485,7 @@ POWERPC_FAMILY(601v)(ObjectClass *oc, void *data) #endif pcc->bus_model =3D PPC_FLAGS_INPUT_6xx; pcc->bfd_mach =3D bfd_mach_ppc_601; - pcc->flags =3D POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK; + pcc->flags =3D POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_H= ID0_LE; } =20 static void init_proc_602(CPUPPCState *env) --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597359; cv=none; d=zohomail.com; s=zohoarc; b=OZkHLAb4/tbRTDRFLgCvNY1ZC1oBzl35RZ3YmMtsPq/lRmBAsth26uxSTlSPgwXbe2n6mS6D/+zC5wyipcqIMGOK4M2luqSuL9aTC9xCKJM8nGbFBOSlJIcYluiS7bjJv+2x1vrUt5kelZIycmiYt82/du1gdQwAQWOmLuaG9cU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597359; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rBNBEOcSDYR+VlJXpnn63cl+iKupYCFGcFqK74D/RBs=; b=NstI9bhRmre31sm03X7UHa4NpigSsjIKLYdHWfNi6XEPSCnb0et71PFPxjGPZBE8XLHJmAuXe15n5f89Gfm73c6vM514GtpSrpCjpx3hxO/UGj6k1zVLuBU/1/QtADqIHLrW+S3DpFPYpsvPafGdxe/CbtzjxhSyCIEyZ6Vkri0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597359095924.4041857385068; Fri, 12 Mar 2021 17:02:39 -0800 (PST) Received: from localhost ([::1]:38656 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsfu-00013e-0F for importer@patchew.org; Fri, 12 Mar 2021 20:02:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56012) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdr-00072m-NA for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:31 -0500 Received: from mail-qv1-xf35.google.com ([2607:f8b0:4864:20::f35]:37835) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdl-0003OW-RA for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:31 -0500 Received: by mail-qv1-xf35.google.com with SMTP id l15so5181998qvl.4 for ; Fri, 12 Mar 2021 17:00:25 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rBNBEOcSDYR+VlJXpnn63cl+iKupYCFGcFqK74D/RBs=; b=NnjdnByLo+V9QUw97TAvJrI2r18u19AsmTWKWy/tpZF3kAMXkn22ncdyAzpkUfR1jA c7vWAwoIXSmTbV2KtJjXgOyg08XtlvwMNNBkKKKMliCR28JKLen9jL2RxyOs6OuGMDTe EZQjy6JkX7aRxlj4ZwqLZRh+d+0abQeiMDpo5kyL8iDZ7wajN31u1Q9zXIcVIhoeD3Eu aKO+pbAX2QOLkqQxPPyEmLiKUOAme76JdpgWtrO5EsbbuYxsY5C3wTHTzQTowZa3vUMx 3Ld2hif5wa7hbLaal6tDpmPXL8VR5wbpQvBJjh/rR+xa4BzLopZBxzM+Vo92yGR8AzSQ 9Evg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rBNBEOcSDYR+VlJXpnn63cl+iKupYCFGcFqK74D/RBs=; b=NQfvwLqL/Z2wZ64Dpf07kjALXykzJpy6Z75o+k/W3h3Poie/yOZQ5r6mkSH4lS4/TX HTy9Agzd40MG8unWR7kqlmDUXgDO+yt2nLKJn/JyTeQwfMLyMIeqIX7xbalPTer2PWUr ZCealsUgW4jESr5cn9cUNWW4kwvkwkP93RO3uV1oTnCBYQQCBzOT0oDWwcX6J08c1XnF UHY++2oVeabQVhjMy2LIfd1tdrbrr6YTo13FfPGw/Bx1NQ4Z7C0nwgeb9kMtQtjJ55I6 4ZMiHb4xkZ/oLBKEyfJB/tn2mu1gy/7s+H9npBdq06esF3EwvLHwjvipPChpLzZ+W+Mt Za3g== X-Gm-Message-State: AOAM5338ZpJ6ZzKMwMF3GmZOZt/CnTIply/hvAsW5FS2fNfG6lIrWW/D SWC5wBi1eVLpfzuevSNLhn2u4SJRAxll9Ov5 X-Google-Smtp-Source: ABdhPJyLyKZ03OQq6S/fG9lWUgsTKRI2jd98bDd+/h4ZKLRmjSZdFIpXSWL0KLxctY+gw7og5BWnoA== X-Received: by 2002:a05:6214:1424:: with SMTP id o4mr979744qvx.34.1615597224884; Fri, 12 Mar 2021 17:00:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 03/15] target/ppc: Properly sync cpu state with new msr in cpu_load_old Date: Fri, 12 Mar 2021 19:00:06 -0600 Message-Id: <20210313010018.819153-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f35; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf35.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Match cpu_post_load in using ppc_store_msr to set all of the cpu state implied by the value of msr. Do not restore hflags or hflags_nmsr, as we recompute them in ppc_store_msr. Signed-off-by: Richard Henderson --- target/ppc/machine.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 283db1d28a..87d7bffb86 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -21,6 +21,7 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int ve= rsion_id) int32_t slb_nr; #endif target_ulong xer; + target_ulong msr; =20 for (i =3D 0; i < 32; i++) { qemu_get_betls(f, &env->gpr[i]); @@ -111,11 +112,19 @@ static int cpu_load_old(QEMUFile *f, void *opaque, in= t version_id) qemu_get_betls(f, &env->ivpr_mask); qemu_get_betls(f, &env->hreset_vector); qemu_get_betls(f, &env->nip); - qemu_get_betls(f, &env->hflags); - qemu_get_betls(f, &env->hflags_nmsr); + qemu_get_sbetl(f); /* Discard unused hflags */ + qemu_get_sbetl(f); /* Discard unused hflags_nmsr */ qemu_get_sbe32(f); /* Discard unused mmu_idx */ qemu_get_sbe32(f); /* Discard unused power_mode */ =20 + /* + * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB + * before restoring. Note that this recomputes hflags and mem_idx. + */ + msr =3D env->msr; + env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); + ppc_store_msr(env, msr); + /* Recompute mmu indices */ hreg_compute_mem_idx(env); =20 --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597492; cv=none; d=zohomail.com; s=zohoarc; b=C4PgwVI7FCMuFqTi+ZWjwmt1KtpVWYwbFpqDFRx6+WZYTtQYbNqnILP0lkjRBhepIVoJC1iGiAP67rnJRlInOpSZENowZ13oDxK037XiEe5j5w7JnkODeHv6x/sN7MbXEnf58fSwGyYdvYyKHuAjX4xFi9eUKWIhgQbAiiRWThc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597492; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+NXtQw9hpPp+VCgrduDja0oQSnznjQ9crwR/vZ//mYY=; b=auu4gsh8JmhdXzkyGyqWIUFE6ic/qzVpI0zi8NGsSxe98XZ2CDuRjoFyLqAyqu4G80xd72KYkLXyG3/LAa0e/BSWQmqBKiq8UcM73h/D5vZKBHcbal6eO/BL2Qj2mESKxRnKn/xiDjsWLV8XqidZooeo6UOShFk3KqdPlgn2XPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597492676311.1217394030234; Fri, 12 Mar 2021 17:04:52 -0800 (PST) Received: from localhost ([::1]:47042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsi3-0004YK-JN for importer@patchew.org; Fri, 12 Mar 2021 20:04:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsds-00073N-3k for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:32 -0500 Received: from mail-qv1-xf36.google.com ([2607:f8b0:4864:20::f36]:39562) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdn-0003PK-AH for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:31 -0500 Received: by mail-qv1-xf36.google.com with SMTP id h13so5177986qvu.6 for ; Fri, 12 Mar 2021 17:00:26 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+NXtQw9hpPp+VCgrduDja0oQSnznjQ9crwR/vZ//mYY=; b=yrpCeqk1VagXafGqk024ELWirMpf9poxbx+QtYlGtjPsmfzQv0BYNiSNLT6U+kaKxa rEFAs6rqMMvF2Oqrk02Whl6mYH9WPZ2wtd2v5nzra9aPX86wsrH2yah4WeqoW/eR9NFs C5u4hBElSaZD+xPvvathLX0/x/1cNkIDFJQ2xQn+4lB1GF01t7SZJnuR1SdBMkkVglyQ 6sjLNRfP3HJcMvDhN1xNRX+9qRzJTgHXu/vOsBA341GISMoMCha3aWIRQfCAEEFXQeSX 3xrqgv7wuWdTTBPG8rSuBYuZoyLIsmK60x4iExPVi4lBZuYuMU39NNxhBZcxCHJO0K1y lx3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+NXtQw9hpPp+VCgrduDja0oQSnznjQ9crwR/vZ//mYY=; b=WEUOjPM2Rd+0TGDo9NDINtVOK5g71sqbAmB1Xni9jFA3aaj7KMSGgKhYAGoxSly2UQ +rL7r5PjgdbeSYFPFreUu6ytUuMTqvwmIMLh2rIqh9HIAOUA+Dat40HekE0EmACNrbIJ 4SErwzL9nP52MPm25GlXx2qbaOhm8ldiXYL5K+b3WTuT44YOOu06y+8OMl2kD1gbjoo7 Crx3wNpva/f0e4UPL8arS8YVkBLQAMxt9itHXe99HQk2JWMGRvrhWgZaWvTMnFc4FS8y Tra6GCEQEFXZHli+osrRIqgXYRnQfpJqnONnGfdk4xPorOLUADsz8Xa6Zba3s3zkHKX7 EaAg== X-Gm-Message-State: AOAM5331FDupOkfkr9yTjdx5rB1vQnVwWEF1XBcJD8LHtcadL4qhzS1h UQEmETunsJSmmuyLLKXk5bsCnXp6pjRMABoK X-Google-Smtp-Source: ABdhPJwnGs8ryhN9a7YxhrJj4mG03AmiwNV7EDrhn/FOJ7YCO4WJiXLowybyOPhYUX7vNEtRjMEwTw== X-Received: by 2002:ad4:496b:: with SMTP id p11mr14777921qvy.33.1615597225981; Fri, 12 Mar 2021 17:00:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 04/15] target/ppc: Do not call hreg_compute_mem_idx after ppc_store_msr Date: Fri, 12 Mar 2021 19:00:07 -0600 Message-Id: <20210313010018.819153-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f36; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf36.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In ppc_store_msr we call hreg_compute_hflags, which itself calls hreg_compute_mem_idx. Rely on ppc_store_msr to update everything required by the msr update. Signed-off-by: Richard Henderson --- target/ppc/machine.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 87d7bffb86..f6eeda9642 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -125,9 +125,6 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int = version_id) env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); ppc_store_msr(env, msr); =20 - /* Recompute mmu indices */ - hreg_compute_mem_idx(env); - return 0; } =20 @@ -418,14 +415,12 @@ static int cpu_post_load(void *opaque, int version_id) =20 /* * Invalidate all supported msr bits except MSR_TGPR/MSR_HVB - * before restoring + * before restoring. Note that this recomputes hflags and mem_idx. */ msr =3D env->msr; env->msr ^=3D env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); ppc_store_msr(env, msr); =20 - hreg_compute_mem_idx(env); - return 0; } =20 --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597499; cv=none; d=zohomail.com; s=zohoarc; b=DcBMmv4OcNtqXvQGCDlgP+KWp1DBZDFBOlrPnCzCX2kvBESIVVTQ4o99AA1HtkEMlQAGBca36JAnqXswl2qPBpB+p8CSR0Mtk3PCsJKYXwb/nBg42HTwbh3Ew7x9XazPHYDWj6P2GLCQCUcPho8MbDz/SISBrHqPfpNCrZvBIB4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597499; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rHSsmMGgFTbVP+9XKxjAVaBht/aShtydPxFkUYIpqOM=; b=McHYaIbNurvsH7+N32ZKa8h8eiAVFVH2dntee0GkHKabWASgCa64RcHBRoL0M0c95YBV0yGKGdLpqvb8UoLM4DO/7z+WWpWCa7OtZDwr75QmnKBT+zQtCmiesVV/yoh7X8LchZCw+8Q+swamKwCm/ltmPkA7OR+1AATcblrOE88= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16155974995951020.3919164120816; Fri, 12 Mar 2021 17:04:59 -0800 (PST) Received: from localhost ([::1]:47268 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsiA-0004e5-IA for importer@patchew.org; Fri, 12 Mar 2021 20:04:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56032) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsds-000746-Cx for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:32 -0500 Received: from mail-qv1-xf29.google.com ([2607:f8b0:4864:20::f29]:45053) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdo-0003PZ-4O for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:32 -0500 Received: by mail-qv1-xf29.google.com with SMTP id by2so5181219qvb.11 for ; Fri, 12 Mar 2021 17:00:27 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rHSsmMGgFTbVP+9XKxjAVaBht/aShtydPxFkUYIpqOM=; b=TXnzeBGdkKUNYlTpxXNPt2I5vQLvQe2mSWx1sgYiWl6tWJUQyZv49ag4Rq7hG84n0/ 6uhFsE5uoUiyFxlU2Dv9mLpTXEmrHYFQpld0eatS2L3aCyXPfGOSgYb6lOCJHSJRBjGC yciCF4ASsHn0Jn6JOXWJrU/YOZ2iXPhXL04nikrk8Yh4KA5RzUJ10gUwju1HXK3HcSzz LVlIpM5ePK3yU8Oq1HrpkOtYf2Q2n3e2h9yS1pvdSPrp2HA6BabG+e/EmxPx4+bGXszE tliBuuovIJtTx0byqk4/ZetGMu85Qupx2PbV8CwerflQgj3AunlG+mFM7uymlQoVPSEU pc9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rHSsmMGgFTbVP+9XKxjAVaBht/aShtydPxFkUYIpqOM=; b=KDNPWha6P50v3l3Rc8DNhEUCiynUO6p/q9leDeRiI5UC6Gr4ocrwFw51EL0A8+jDYJ P7G1PkQlAaBwaDMuqV6VLPifWg62Ses3reb37RDQri7oHLQjrZOVNR8rbdwxfidxJzEs psZyx8oasx/jqEt752C0gR9gRFjE2DjtSaqxfoioQxy5bvayj/c0thNfXLpBiVGAsUxw m1FLLx/w81Sj6po1XVW6pKX1LLTPZAGDK7kKFyOsuYHYrERgzWMiTNiTF2seYLnZAzRT UG6/8WKIme3Av5OadvH2EfX3Lfplz4fckempUFmw/2n+zWIw1/RJ5G6XOqqBSsilzQmb yymg== X-Gm-Message-State: AOAM531JJGSMQ7xjk1VUOBNXv2nsqsG22Y7kQ932U/gxQGt1aYGreKcM WLm/GPjOuSnMveH1TLA4IMpOAhwsb9poBwtJ X-Google-Smtp-Source: ABdhPJxaQyZJQRQQcpu8YFEgM7ymGkzzWSjsky0ip5CBBwCPM1wuWUgWszrKBno1FjFbZkFkVmzVFQ== X-Received: by 2002:a05:6214:1909:: with SMTP id er9mr873722qvb.5.1615597227114; Fri, 12 Mar 2021 17:00:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 05/15] target/ppc: Retain hflags_nmsr only for migration Date: Fri, 12 Mar 2021 19:00:08 -0600 Message-Id: <20210313010018.819153-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f29; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf29.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We have eliminated all normal uses of hflags_nmsr. We need not even compute it except when we want to migrate. Rename the field to emphasize this. Remove the fixme comment for migrating access_type. This value is only ever used with the current executing instruction, and is never live when the cpu is halted for migration. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 ++-- target/ppc/helper_regs.c | 2 -- target/ppc/machine.c | 9 ++++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 061d2eed1b..79c4033a42 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1105,8 +1105,8 @@ struct CPUPPCState { #endif =20 /* These resources are used only in QEMU core */ - target_ulong hflags; /* hflags is MSR & HFLAGS_MASK */ - target_ulong hflags_nmsr; /* specific hflags, not coming from MSR */ + target_ulong hflags; + target_ulong hflags_compat_nmsr; /* for migration compatibility */ int immu_idx; /* precomputed MMU index to speed up insn accesses */ int dmmu_idx; /* precomputed MMU index to speed up data accesses */ =20 diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 95b9aca61f..a87e354ca2 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -104,8 +104,6 @@ void hreg_compute_hflags(CPUPPCState *env) */ uint32_t le =3D extract32(env->spr[SPR_HID0], 3, 1); env->hflags |=3D le << MSR_LE; - /* Retain for backward compatibility with migration. */ - env->hflags_nmsr =3D le << MSR_LE; } } =20 diff --git a/target/ppc/machine.c b/target/ppc/machine.c index f6eeda9642..1f7a353c78 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -310,6 +310,10 @@ static int cpu_pre_save(void *opaque) } } =20 + /* Retain migration compatibility for pre 6.0 for 601 machines. */ + env->hflags_compat_nmsr =3D (env->flags & POWERPC_FLAG_HID0_LE + ? env->hflags & MSR_LE : 0); + return 0; } =20 @@ -829,9 +833,8 @@ const VMStateDescription vmstate_ppc_cpu =3D { /* Supervisor mode architected state */ VMSTATE_UINTTL(env.msr, PowerPCCPU), =20 - /* Internal state */ - VMSTATE_UINTTL(env.hflags_nmsr, PowerPCCPU), - /* FIXME: access_type? */ + /* Backward compatible internal state */ + VMSTATE_UINTTL(env.hflags_compat_nmsr, PowerPCCPU), =20 /* Sanity checking */ VMSTATE_UINTTL_TEST(mig_msr_mask, PowerPCCPU, cpu_pre_2_8_migratio= n), --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597644; cv=none; d=zohomail.com; s=zohoarc; b=gCbgmjkXjfo0gLiAfeqLDySBMdL1EK4JiA27QRy6Yhd1hGGC0MQz1mJgNz1/upVzBrZf8OC0P8SxdPrl98oeLpWW0pihVUYjYcCPeopsSNp2c4QVoj9G1YewamOnjEw6s5EnLJOLz9w21P4x0KavNrCeXJS6LI7ueQpQvE+J9fg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597644; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pYpOKcKLH+90rQBuRerzfXX/ETf/I2egL2u0VDsDgAk=; b=lFHWrNMzVv798aErEIApKWuiCtS2xqBHQxfsgDtiolbt7s7/3rTaRAE1LgQUon/Ex1e2U/E69W/PvXxRbzzhps76YXR91esFQimZCzvwT3fRx0l/WJOjF6jP/UIZnP9kFN9IIsf5kLGR/x3PNCvaUzDuoenNz/B6DvQhTk1EOPg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597644934941.9326985161101; Fri, 12 Mar 2021 17:07:24 -0800 (PST) Received: from localhost ([::1]:55624 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKskV-0008Ib-Il for importer@patchew.org; Fri, 12 Mar 2021 20:07:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56074) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdt-00077j-RI for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:33 -0500 Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]:45683) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdq-0003Qe-8o for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:33 -0500 Received: by mail-qv1-xf33.google.com with SMTP id t16so5173829qvr.12 for ; Fri, 12 Mar 2021 17:00:29 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pYpOKcKLH+90rQBuRerzfXX/ETf/I2egL2u0VDsDgAk=; b=hfjDgjjaDLXoXCxxzKHpf0bhefHgOCjX7UdQX7LOT7c84WpKqcJrJg3luAo89L2Dzv FRQXYbNPrPbUAcsP0y3uBRPKubG0atXBfgnaEsfnuXq2oPCAoSBAH4+iEr1LMfZz+/JZ WU0ldf1szvQbkry0eJE1Am1iuHLCvltGD2Zpn0zjFLax//EUFLfbitayZsuj9dHr5dyI bzkeROQtIZ7JtJIksS4SiOogFnYfTNhmQomzNM77r4YrgtKTP8tG7mcQ6s4uh6WHvi/I inb+sMtG5SxeMR7C7P7FAgObCZBoCRvUZCiKuwQIaRw9lahsqg3RSLhamjmkoayzCV14 ODLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pYpOKcKLH+90rQBuRerzfXX/ETf/I2egL2u0VDsDgAk=; b=HxAFIQC/GEKC0HzM3TTIu8dTFB+EJORSfLw+QQmbi9zbj5sTOsYqeINI12YL+k1e1N 2C794uC8Nh95j/Q/mpVma4n/r5l3nDTK3eJBBCE/kGj3n/vD/TvEjuXcU7uFsK0YBh4G wKWP0M4Eo6+Ueob1ECwWEjZPwPtyMc8jOyvhVAmTmLedgLoTdPasC1AKiHFlbuBk9MBV G1FSZycnrIvSwuwVJFVR3uYRt7klb1c4NSwvi+WuOH5o0ZGRN0MZabLeSJUWd6kd9X1o p58+VwydfbDMDuM8qxE9chYz3NeO4Ql+Utgbp1P1TrqaD6S2399N2d40lr6XWEAcLqsZ bIHQ== X-Gm-Message-State: AOAM533e0h6YUOrIQasx67sBbY/odnzQ7wcvkcDWXa12ej0+gQw4PeD0 GeZoCGCcMy8kjoWq+bONyYMp8+CzvNQyMLEY X-Google-Smtp-Source: ABdhPJzoBIQEC6gKSUWjMRRr5K3jUT7nbH8b1SGNtqNSphpL7hq5tNWCG/pvXRpqb+/a58c5+s2L6A== X-Received: by 2002:a0c:a692:: with SMTP id t18mr898225qva.18.1615597228743; Fri, 12 Mar 2021 17:00:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 06/15] target/ppc: Fix comment for MSR_FE{0,1} Date: Fri, 12 Mar 2021 19:00:09 -0600 Message-Id: <20210313010018.819153-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f33; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf33.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" As per hreg_compute_hflags: We 'forget' FE0 & FE1: we'll never generate imprecise exceptions remove the hflags marker from the respective comments. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 79c4033a42..fd13489dce 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -322,13 +322,13 @@ typedef struct ppc_v3_pate_t { #define MSR_PR 14 /* Problem state hfla= gs */ #define MSR_FP 13 /* Floating point available hfla= gs */ #define MSR_ME 12 /* Machine check interrupt enable = */ -#define MSR_FE0 11 /* Floating point exception mode 0 hfla= gs */ +#define MSR_FE0 11 /* Floating point exception mode 0 = */ #define MSR_SE 10 /* Single-step trace enable x hfla= gs */ #define MSR_DWE 10 /* Debug wait enable on 405 x = */ #define MSR_UBLE 10 /* User BTB lock enable on e500 x = */ #define MSR_BE 9 /* Branch trace enable x hfla= gs */ #define MSR_DE 9 /* Debug interrupts enable on embedded PowerPC x = */ -#define MSR_FE1 8 /* Floating point exception mode 1 hfla= gs */ +#define MSR_FE1 8 /* Floating point exception mode 1 = */ #define MSR_AL 7 /* AL bit on POWER = */ #define MSR_EP 6 /* Exception prefix on 601 = */ #define MSR_IR 5 /* Instruction relocate = */ --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597499; cv=none; d=zohomail.com; s=zohoarc; b=drCFE4/BlqJeqLif1Eggzk5me7LP43FFStaA4GQ1WaTXcFslDyzLSzfDSU6MJ0mFkiVvg8qYK0/JHZSo9RVhJsXKGviVJcAVz5V/9SCFmMet+daoHwfX0gtZGM1yd3rP+GojgzoBAZU7TIPg0FLO5CvH3mWhcHaMEGZY1cFkJZo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597499; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hY92A/8JkW6zB37HSUC6YiwaXy9HOEDWasRA8S9xbcA=; b=KuBS4mNmXkQQnlRMZjQ/2bP/g2Wv+BHAlrmQd6VPI2MhnMtT1NJkZsVMRPRSQkkPP5ATcLQQKs4T9DclIp9C8CF3iGfjiKK+/dSz9Yt+pttAEebszvYe2m1pWJi+ngQJKUwkH9ek2SibEphf9atlq7Aad0fffT/1E2Hhrmk6PbU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597499542724.2419719207517; Fri, 12 Mar 2021 17:04:59 -0800 (PST) Received: from localhost ([::1]:47222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsiA-0004cy-BN for importer@patchew.org; Fri, 12 Mar 2021 20:04:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56158) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdw-0007Eh-Qw for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:36 -0500 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]:33632) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdr-0003R1-Cl for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:36 -0500 Received: by mail-qt1-x82f.google.com with SMTP id 94so5297957qtc.0 for ; Fri, 12 Mar 2021 17:00:30 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hY92A/8JkW6zB37HSUC6YiwaXy9HOEDWasRA8S9xbcA=; b=pS+0J9jNifWG2ScmCC/A1KuGkQb6tp/clQ05XVj2ZJJ2FB20tru0sZfNr2c4IAl2L7 wEzAeuVEKsNku3mzO0AWSydC/wxJ+a7ge8G3tYtmOxx3XsMKMm0mB/mRZb30t1OW4HwN pesjnQBQJrk0XBMaZFzJ76zmvisDJ2OruF+0aFSQJyFbB0dvS3ApFQ7fgIxo3y6mvzkd shC70qIhbgHeiwUEq6j1tH5iuyDq1SocsY/3pBb+k3dqqpRE7vn7FCudbQlXpfXON7Nz nT9pC/hxN1wKJeEFUbuK/GgZjKVjPL0efy6N1TNZoiDjDf8C3avxi3RL0d9VLD0Z+n9P gj7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hY92A/8JkW6zB37HSUC6YiwaXy9HOEDWasRA8S9xbcA=; b=qJqnexAGtmnmx2yfjY/LPmyMNs+VBCJSuf2KuLwmrE2r8xKtMsdzeR+S0j78PDaThF +8joi2IBXqUVeRBsJ30/nYPi4yWk7e4SyCq5blieoPJIszP5/FCq906oFGemB12/UN7D Vjejt+aK4x9PDXXdakuAhPoK1/tOob/PWCHTFegwBboTA5jgQq7DP+TBD/OzCDBxTodp yvVIbv3Y+fXArq5e5bn+2r722NcjZ3FCy3cek6GsvpnK0bFemSvE6uDWtVtwwxAYpiDl Yp8sIQCrAocQ8ug1J1i9IW7Bywln7jFhzLCiPjvGJX/nBhYCX0wCVYZgM+ufwy8wDHRo lPCA== X-Gm-Message-State: AOAM532Z1ijPs4sB5PyU59pAd2VSbO1NG85M84FCbbYM1Acii3hSYH3z +cW3JOSMfvIbKAeY3Ass/rFsURnRUtszzqoB X-Google-Smtp-Source: ABdhPJw8ORqETlgOA//RLeCwHWZJhti+lEuQy5JsA9cHY9IBtfuVioi9BPHXdp9Wumfs1ljDO7GpYw== X-Received: by 2002:ac8:59c3:: with SMTP id f3mr14014705qtf.178.1615597229862; Fri, 12 Mar 2021 17:00:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 07/15] target/ppc: Disconnect hflags from MSR Date: Fri, 12 Mar 2021 19:00:10 -0600 Message-Id: <20210313010018.819153-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::82f; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x82f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Copying flags directly from msr has drawbacks: (1) msr bits mean different things per cpu, (2) msr has 64 bits on 64 cpus while tb->flags has only 32 bits. Create a enum to define these bits. Document the origin of each bit. This fixes the truncation of env->hflags to tb->flags, because we no longer have hflags bits set above bit 31. Most of the code in ppc_tr_init_disas_context is moved over to hreg_compute_hflags. Some of it is simple extractions from msr, some requires examining other cpu flags. Anything that is moved becomes a simple extract from hflags in ppc_tr_init_disas_context. Several existing bugs are left in ppc_tr_init_disas_context, where additional changes are required -- to be addressed in future patches. Remove a broken #if 0 block. Reported-by: Ivan Warren Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 24 ++++++++++++++++++ target/ppc/helper_regs.c | 55 ++++++++++++++++++++++++++++++++-------- target/ppc/translate.c | 55 ++++++++++++---------------------------- 3 files changed, 84 insertions(+), 50 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index fd13489dce..39f35b570c 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -585,6 +585,30 @@ enum { POWERPC_FLAG_HID0_LE =3D 0x00400000, }; =20 +/* + * Bits for env->hflags. + * + * Most of these bits overlap with corresponding bits in MSR, + * but some come from other sources. Be cautious when modifying. + */ +enum { + HFLAGS_LE =3D 0, /* MSR_LE -- comes from elsewhere on 601 */ + HFLAGS_HV =3D 1, /* computed from MSR_HV and other state */ + HFLAGS_64 =3D 2, /* computed from MSR_CE and MSR_SF */ + HFLAGS_PR =3D 3, /* MSR_PR */ + HFLAGS_DR =3D 4, /* MSR_DR */ + HFLAGS_IR =3D 5, /* MSR_IR */ + HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ + HFLAGS_VSX =3D 7, /* from MSR_VSX if cpu has VSX; avoid overlap w/ MS= R_AP */ + HFLAGS_TM =3D 8, /* computed from MSR_TM */ + HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ + HFLAGS_SE =3D 10, /* MSR_SE -- from elsewhere on embedded ppc */ + HFLAGS_FP =3D 13, /* MSR_FP */ + HFLAGS_SA =3D 22, /* MSR_SA */ + HFLAGS_AP =3D 23, /* MSR_AP */ + HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ +}; + /*************************************************************************= ****/ /* Floating point status and control register = */ #define FPSCR_DRN2 34 /* Decimal Floating-Point rounding control = */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index a87e354ca2..0a746bffd7 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -18,6 +18,7 @@ */ =20 #include "qemu/osdep.h" +#include "cpu.h" #include "qemu/main-loop.h" #include "exec/exec-all.h" #include "sysemu/kvm.h" @@ -87,24 +88,56 @@ void hreg_compute_mem_idx(CPUPPCState *env) =20 void hreg_compute_hflags(CPUPPCState *env) { - target_ulong hflags_mask; + target_ulong msr =3D env->msr; + uint32_t ppc_flags =3D env->flags; + uint32_t hflags =3D 0; + uint32_t msr_mask; =20 - /* We 'forget' FE0 & FE1: we'll never generate imprecise exceptions */ - hflags_mask =3D (1 << MSR_VR) | (1 << MSR_AP) | (1 << MSR_SA) | - (1 << MSR_PR) | (1 << MSR_FP) | (1 << MSR_SE) | (1 << MSR_BE) | - (1 << MSR_LE) | (1 << MSR_VSX) | (1 << MSR_IR) | (1 << MSR_DR); - hflags_mask |=3D (1ULL << MSR_CM) | (1ULL << MSR_SF) | MSR_HVB; - hreg_compute_mem_idx(env); - env->hflags =3D env->msr & hflags_mask; + /* Some bits come straight across from MSR. */ + msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | + (1 << MSR_DR) | (1 << MSR_IR) | + (1 << MSR_FP) | (1 << MSR_SA) | (1 << MSR_AP)); =20 - if (env->flags & POWERPC_FLAG_HID0_LE) { + if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* * Note that MSR_LE is not set in env->msr_mask for this cpu, - * and so will never be set in msr or hflags at this point. + * and so will never be set in msr. */ uint32_t le =3D extract32(env->spr[SPR_HID0], 3, 1); - env->hflags |=3D le << MSR_LE; + hflags |=3D le << MSR_LE; } + + if (ppc_flags & POWERPC_FLAG_BE) { + msr_mask |=3D 1 << MSR_BE; + } + if (ppc_flags & POWERPC_FLAG_SE) { + msr_mask |=3D 1 << MSR_SE; + } + + if (msr_is_64bit(env, msr)) { + hflags |=3D 1 << HFLAGS_64; + } + if ((ppc_flags & POWERPC_FLAG_SPE) && (msr & (1 << MSR_SPE))) { + hflags |=3D 1 << HFLAGS_SPE; + } + if (ppc_flags & POWERPC_FLAG_VRE) { + msr_mask |=3D 1 << MSR_VR; + } + if ((ppc_flags & POWERPC_FLAG_VSX) && (msr & (1 << MSR_VSX))) { + hflags |=3D 1 << HFLAGS_VSX; + } + if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { + hflags |=3D 1 << HFLAGS_TM; + } + +#ifndef CONFIG_USER_ONLY + if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { + hflags |=3D 1 << HFLAGS_HV; + } +#endif + + env->hflags =3D hflags | (msr & msr_mask); + hreg_compute_mem_idx(env); } =20 void cpu_interrupt_exittb(CPUState *cs) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 0984ce637b..a9325a12e5 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7879,67 +7879,48 @@ static void ppc_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cs) { DisasContext *ctx =3D container_of(dcbase, DisasContext, base); CPUPPCState *env =3D cs->env_ptr; + uint32_t hflags =3D ctx->base.tb->flags; int bound; =20 ctx->exception =3D POWERPC_EXCP_NONE; ctx->spr_cb =3D env->spr_cb; - ctx->pr =3D msr_pr; + ctx->pr =3D (hflags >> HFLAGS_PR) & 1; ctx->mem_idx =3D env->dmmu_idx; - ctx->dr =3D msr_dr; -#if !defined(CONFIG_USER_ONLY) - ctx->hv =3D msr_hv || !env->has_hv_mode; -#endif + ctx->dr =3D (hflags >> HFLAGS_DR) & 1; + ctx->hv =3D (hflags >> HFLAGS_HV) & 1; ctx->insns_flags =3D env->insns_flags; ctx->insns_flags2 =3D env->insns_flags2; ctx->access_type =3D -1; ctx->need_access_type =3D !mmu_is_64bit(env->mmu_model); - ctx->le_mode =3D !!(env->hflags & (1 << MSR_LE)); + ctx->le_mode =3D (hflags >> HFLAGS_LE) & 1; ctx->default_tcg_memop_mask =3D ctx->le_mode ? MO_LE : MO_BE; ctx->flags =3D env->flags; #if defined(TARGET_PPC64) - ctx->sf_mode =3D msr_is_64bit(env, env->msr); + ctx->sf_mode =3D (hflags >> HFLAGS_64) & 1; ctx->has_cfar =3D !!(env->flags & POWERPC_FLAG_CFAR); #endif ctx->lazy_tlb_flush =3D env->mmu_model =3D=3D POWERPC_MMU_32B || env->mmu_model =3D=3D POWERPC_MMU_601 || env->mmu_model & POWERPC_MMU_64; =20 - ctx->fpu_enabled =3D !!msr_fp; - if ((env->flags & POWERPC_FLAG_SPE) && msr_spe) { - ctx->spe_enabled =3D !!msr_spe; - } else { - ctx->spe_enabled =3D false; - } - if ((env->flags & POWERPC_FLAG_VRE) && msr_vr) { - ctx->altivec_enabled =3D !!msr_vr; - } else { - ctx->altivec_enabled =3D false; - } - if ((env->flags & POWERPC_FLAG_VSX) && msr_vsx) { - ctx->vsx_enabled =3D !!msr_vsx; - } else { - ctx->vsx_enabled =3D false; - } + ctx->fpu_enabled =3D (hflags >> HFLAGS_FP) & 1; + ctx->spe_enabled =3D (hflags >> HFLAGS_SPE) & 1; + ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; + ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; if ((env->flags & POWERPC_FLAG_SCV) && (env->spr[SPR_FSCR] & (1ull << FSCR_SCV))) { ctx->scv_enabled =3D true; } else { ctx->scv_enabled =3D false; } -#if defined(TARGET_PPC64) - if ((env->flags & POWERPC_FLAG_TM) && msr_tm) { - ctx->tm_enabled =3D !!msr_tm; - } else { - ctx->tm_enabled =3D false; - } -#endif + ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); - if ((env->flags & POWERPC_FLAG_SE) && msr_se) { - ctx->singlestep_enabled =3D CPU_SINGLE_STEP; - } else { - ctx->singlestep_enabled =3D 0; + + ctx->singlestep_enabled =3D 0; + if ((hflags >> HFLAGS_SE) & 1) { + ctx->singlestep_enabled |=3D CPU_SINGLE_STEP; } - if ((env->flags & POWERPC_FLAG_BE) && msr_be) { + if ((hflags >> HFLAGS_BE) & 1) { ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; } if ((env->flags & POWERPC_FLAG_DE) && msr_de) { @@ -7956,10 +7937,6 @@ static void ppc_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) if (unlikely(ctx->base.singlestep_enabled)) { ctx->singlestep_enabled |=3D GDBSTUB_SINGLE_STEP; } -#if defined(DO_SINGLE_STEP) && 0 - /* Single step trace mode */ - msr_se =3D 1; -#endif =20 bound =3D -(ctx->base.pc_first | TARGET_PAGE_MASK) / 4; ctx->base.max_insns =3D MIN(ctx->base.max_insns, bound); --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597500; cv=none; d=zohomail.com; s=zohoarc; b=Py7KUufOQ6ql3kWWA/sI1Eoirsx0A8fSkZcN3WolmdGdFklg8YB3lWtuIwycrOK86qS+4KpPUba+9Gv4b4JWez9H4uwVNEfUGb82KarrIrirGxRYiED+k2LBQBNRBpkZZt63yrUSySNfukUgBYcED+rMCz8FkBBwh2rUOz3v2FE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597500; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/W2WFobHDD4oLw5DS+3Y+2H+mE4fKJy/+HfV/Ly0jXA=; b=dRqMzqM/WejY2/cNN7XkoOmNVUyyckuPJFR1JW+IcrbexN4EnkGriSZRbhyRUPi49/7PovknBBjA2wYELEj1VJT38SFH+k/cd+f4jb+PWkb9al0gn7zDCm0t6oQv/u7lJn373drVj3R3ZQohbkixRU0xjFIm6bUB4HR6nHA5URs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597500263995.6106196366385; Fri, 12 Mar 2021 17:05:00 -0800 (PST) Received: from localhost ([::1]:47348 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsiB-0004fr-4D for importer@patchew.org; Fri, 12 Mar 2021 20:04:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56174) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdx-0007Fk-5t for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:37 -0500 Received: from mail-qv1-xf31.google.com ([2607:f8b0:4864:20::f31]:35634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsds-0003Rf-6o for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:36 -0500 Received: by mail-qv1-xf31.google.com with SMTP id x27so5173202qvd.2 for ; Fri, 12 Mar 2021 17:00:31 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/W2WFobHDD4oLw5DS+3Y+2H+mE4fKJy/+HfV/Ly0jXA=; b=EM5cdiAWwlilEeFou6WNHpqta05rTxVaEosVKCI7nAL+oGXjQxX111pei2XGYCmC34 10HPtl+AddPkUWcGrsEd3BfH4KI9/u1NGs1lD89/DgCbAjybybNhSZ2maj7Q0mVIc2TQ CWB6ZpI4bihV15o8TjovYHP5Hknt0Wnfbu+kGe5aDZ2wz/18Lbqz+NbgnJfQC0PYSb90 Z1Vj2qEaY8w4ZvrF0VjC+ohPJmSXlEe3hynqzvElAcfTS7ZTXSoTHEUp7bPzrQBDW0XB VnVAcfoMd8fhDLnafScRsGXn8YFVvLQINxl352mfWJP/L2SD30ujNHMdFgadimwkGRgR qy4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/W2WFobHDD4oLw5DS+3Y+2H+mE4fKJy/+HfV/Ly0jXA=; b=Tmw4rdLtexbwLDDcYYs6BGCDe2GTXkm2Ck0NhniTUKooVVJJr6zLRbPWIWg4EQt5c5 6KHa47OY3kBkxHluG201dBnXLzDFDCWeO16SVJWY5DaSzEmeYOeIAUIxhKINae9eyCCo AzIKBZDPWWQFIOHxvOFWlprgK1/TSQrG6Dxn24RVV1tcv63OarmKF6P3MI7U6tBDj3mA tSvSPmKZQ+6Nh+FOlSpP0ynGlmvR9uOQjM/Sf5fivAX0+IJEhogsRibxVAUJAivIC9zN 7gpytdiTMFY7FvWJcpOramI0H+fPJe/qZ820nKbBQDiIFPqq/IRbbb38oxLLR8+Mn4l0 h1+g== X-Gm-Message-State: AOAM531fruI4lgg2RTQnmeaLwvJr+ZXcALRKXXlRRCpsBFsAEXargwV4 ookB06r2nJxcbpx1CrsWL9BoBRuQJMKXelKj X-Google-Smtp-Source: ABdhPJyQZQvp248xqSXJZPRkQl2X4bkxfXZrE2Pir3545TygL/NkhPVJxWRiobTQLKiFD7bw+TKeKg== X-Received: by 2002:a0c:f349:: with SMTP id e9mr914589qvm.59.1615597231220; Fri, 12 Mar 2021 17:00:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 08/15] target/ppc: Reduce env->hflags to uint32_t Date: Fri, 12 Mar 2021 19:00:11 -0600 Message-Id: <20210313010018.819153-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f31; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf31.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" It will be stored in tb->flags, which is also uint32_t, so let's use the correct size. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 ++-- target/ppc/misc_helper.c | 2 +- target/ppc/translate.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 39f35b570c..2abaf56869 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1128,8 +1128,8 @@ struct CPUPPCState { bool resume_as_sreset; #endif =20 - /* These resources are used only in QEMU core */ - target_ulong hflags; + /* These resources are used only in TCG */ + uint32_t hflags; target_ulong hflags_compat_nmsr; /* for migration compatibility */ int immu_idx; /* precomputed MMU index to speed up insn accesses */ int dmmu_idx; /* precomputed MMU index to speed up data accesses */ diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 63e3147eb4..b04b4d7c6e 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -199,7 +199,7 @@ void helper_store_hid0_601(CPUPPCState *env, target_ulo= ng val) if ((val ^ hid0) & 0x00000008) { /* Change current endianness */ hreg_compute_hflags(env); - qemu_log("%s: set endianness to %c =3D> " TARGET_FMT_lx "\n", __fu= nc__, + qemu_log("%s: set endianness to %c =3D> %08x\n", __func__, val & 0x8 ? 'l' : 'b', env->hflags); } } diff --git a/target/ppc/translate.c b/target/ppc/translate.c index a9325a12e5..a85b890bb0 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7657,7 +7657,7 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) env->nip, env->lr, env->ctr, cpu_read_xer(env), cs->cpu_index); qemu_fprintf(f, "MSR " TARGET_FMT_lx " HID0 " TARGET_FMT_lx " HF " - TARGET_FMT_lx " iidx %d didx %d\n", + "%08x iidx %d didx %d\n", env->msr, env->spr[SPR_HID0], env->hflags, env->immu_idx, env->dmmu_idx); #if !defined(NO_TIMER_DUMP) --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597780; cv=none; d=zohomail.com; s=zohoarc; b=GMIG9Ru3Vgph11NWV2zCteHg0TWkZ+lbNciUT4Estn/cgwihHn9hdpZNeCwzzMmkriQShq2Z+pWzfTW8K+NV+M/z0ihEv9Ime+igPhav2QYNpfEgBou4TSl0hRt7k7GTzbYe1+aM4eJCAC5DFNtUaOYR9AI5AqLTNyQr//95Vxk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597780; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LL8bkt3cpcyBMDK/LZ6QT2j+SFhG/YMWEf75uL1t8Es=; b=LnmNF24K1D97oo3JH2+j8nMUsooaQEv5lC+keQNmukBj/D63uCHonnH3git+w2uB5aZuPVDi5eGQvF9+JuGEgLQKwCQgs8BmzHnm6HvanVw9AThjsmf0UgbZg3cBVZUhtr+urTkIQavDaqeSldmrECQzUQGZiPHsk+B7hXvHmAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597780885809.3144465899462; Fri, 12 Mar 2021 17:09:40 -0800 (PST) Received: from localhost ([::1]:60310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsmh-00021R-Sz for importer@patchew.org; Fri, 12 Mar 2021 20:09:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56210) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdy-0007I4-8z for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:38 -0500 Received: from mail-qt1-x831.google.com ([2607:f8b0:4864:20::831]:33634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdt-0003SK-5g for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:37 -0500 Received: by mail-qt1-x831.google.com with SMTP id 94so5298010qtc.0 for ; Fri, 12 Mar 2021 17:00:32 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LL8bkt3cpcyBMDK/LZ6QT2j+SFhG/YMWEf75uL1t8Es=; b=Cv0+ZDFMtf3mkAXi7k6pq5yzDBAlB9JHPCaP8v5C8BZQ/WZWKSQEXKisMQRYXKcd2T y0rpptNNXbQ6H1VCwywkMMEtPlPhb3MsROurPwixxMvQzSon2SUqVHe1Eb61NvLAYjnu dYRLsCTg77LelJh+9mvOcLaAbq2mJ21gxSmsEAMs5BXhW2PhNqPKGhbReEjkZTN4uFKP NjKa+iPrnUZAqbEwMegn3pegYs5tiHxFS7OhV0y+3NmjenJRxqyW8+W6ai3axyPHufWX rjXB32mg/6gyKNKpp1p+3CGHkE9Pr3hd954v+lz2Gmxiz5wUqFVsna+L3pBt8iry0ZXP eGbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LL8bkt3cpcyBMDK/LZ6QT2j+SFhG/YMWEf75uL1t8Es=; b=m3s9OKXrSSsVsbuj3iiY8ABlU2+fLU7pEOq5NukyA9VzkSVa0fwLuJavp7L3hzUCb2 DnxbnxHOa0cQ6rr/8wEcS6eDaTRO84wUMp/ChZjGi9ctdNY3mCdNaLc/VIbXQB4M5oM6 YF35G600AXFeEIx+JmrA8P3PnfESkLgQLdp1Ev5wTuFp35MOQTnfuXMqXQ7DRU5Qs5dr hn5yY4RIKPpwh8dlAempdYgqvCveK471crOpPSgsI5kSlHzZxmJQ2OHJci8r9ttNC8qw MFBmDkCLJt5bdDCFS76xtU0Jgbq47zFTKxcTf7GQmWp0Zu9EiRMNxAEN1pM6Xfsza5Oi +DjQ== X-Gm-Message-State: AOAM5302RVf0mCColnSC07J/sx5WL2X2iWoEraRfcpKPmkJQmZprdxwO tlAyzevQzfYkjoaWfGjePzWU9ha4Q+YKQ6yf X-Google-Smtp-Source: ABdhPJzdvwepjG7ai342RpDV9UrX23QIVJtj07B1j4L7hpcA3q2Niyhf1tbHnqQ9r/Z5TeawKiCusQ== X-Received: by 2002:ac8:4702:: with SMTP id f2mr2374395qtp.128.1615597232221; Fri, 12 Mar 2021 17:00:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 09/15] target/ppc: Put dbcr0 single-step bits into hflags Date: Fri, 12 Mar 2021 19:00:12 -0600 Message-Id: <20210313010018.819153-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::831; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x831.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Because these bits were not in hflags, the code generated for single-stepping on BookE was essentially random. Recompute hflags when storing to dbcr0. Signed-off-by: Richard Henderson --- target/ppc/helper_regs.c | 20 +++++++++++++++----- target/ppc/misc_helper.c | 3 +++ target/ppc/translate.c | 11 ----------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 0a746bffd7..c735540333 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -107,11 +107,21 @@ void hreg_compute_hflags(CPUPPCState *env) hflags |=3D le << MSR_LE; } =20 - if (ppc_flags & POWERPC_FLAG_BE) { - msr_mask |=3D 1 << MSR_BE; - } - if (ppc_flags & POWERPC_FLAG_SE) { - msr_mask |=3D 1 << MSR_SE; + if (ppc_flags & POWERPC_FLAG_DE) { + target_ulong dbcr0 =3D env->spr[SPR_BOOKE_DBCR0]; + if (dbcr0 & DBCR0_ICMP) { + hflags |=3D 1 << HFLAGS_SE; + } + if (dbcr0 & DBCR0_BRT) { + hflags |=3D 1 << HFLAGS_BE; + } + } else { + if (ppc_flags & POWERPC_FLAG_BE) { + msr_mask |=3D 1 << MSR_BE; + } + if (ppc_flags & POWERPC_FLAG_SE) { + msr_mask |=3D 1 << MSR_SE; + } } =20 if (msr_is_64bit(env, msr)) { diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index b04b4d7c6e..a5ee1fd63c 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 nu= m, target_ulong value) =20 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); } =20 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(DisasContextBa= se *dcbase, CPUState *cs) if ((hflags >> HFLAGS_BE) & 1) { ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; } - if ((env->flags & POWERPC_FLAG_DE) && msr_de) { - ctx->singlestep_enabled =3D 0; - target_ulong dbcr0 =3D env->spr[SPR_BOOKE_DBCR0]; - if (dbcr0 & DBCR0_ICMP) { - ctx->singlestep_enabled |=3D CPU_SINGLE_STEP; - } - if (dbcr0 & DBCR0_BRT) { - ctx->singlestep_enabled |=3D CPU_BRANCH_STEP; - } - - } if (unlikely(ctx->base.singlestep_enabled)) { ctx->singlestep_enabled |=3D GDBSTUB_SINGLE_STEP; } --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597647; cv=none; d=zohomail.com; s=zohoarc; b=lEN0gKwquTQINey37U3fDDFb41e9GBibRNF8sOsmlMQMtbdfQjYGXZeGhN5XM3dXu6fe0zVdq5dg4YFEmhL2fPIgUQL8Zj13uOzs8dNooUe6th8oWvmzAPRjV4XZmV+VHHdmcUonHNrkS0+0nGLfMwnipVYVWgTwWHJdpGg5ZlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597647; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=h4lNjOthnksXpyN1yCXRjxRg08onryk6nERs9uy6eq3eudDFJR8Bw1rJSL7ibOHLFWHiZFjxnGaoNFo9AANyZgfM8nTRBKinlH5iNxlLMZ/DnZOk4BlJrY/XC9Ky9RGXKkQBTgaVnvqPryheEF55tf1NTSyzFzEb5zyd2kqURFo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597646830338.1585625311477; Fri, 12 Mar 2021 17:07:26 -0800 (PST) Received: from localhost ([::1]:55832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKskX-0008O5-Ca for importer@patchew.org; Fri, 12 Mar 2021 20:07:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKsdz-0007L3-Gb for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:39 -0500 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]:33577) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdu-0003T1-BS for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:39 -0500 Received: by mail-qv1-xf2f.google.com with SMTP id i15so5176211qvr.0 for ; Fri, 12 Mar 2021 17:00:33 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=rdX/gwg0Drc1E7xFQw2PVwZmhkKIC/HII37i3ThQJ1jXFfdR7rHuwgGyIF7qUF+yvT QZjCV7AWVHyBP814ChDIMkubbwRch8EPQGPh8Cq5Lp0aQRQ53lgawxg23js2FKBI0XJc KTNIoXf0UKBiy4BPh9LTXjWWkVFMmVhfxtjK8mAUIDCNp4ExvEXHfUqEqyKXOiTN0t9j o0fTeo/jNMDuh5g00X9kfdFE2SYp4d1P7WCxTyUdi8ZXb2y/i/x5GAG7J4qcGvyv5YjR mgUeF0al5Q6fU3uveOir69l+QzUPCJPFOlLtW96motydU7jMs+EIZDatXlZUUbWwty9C i+hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nDEzeJHZqdUXe/dXYq7qR5PEy35VBqTIPDXHrdEdgcc=; b=dErKJQx6HIlWyM+Qd9gGpoJgDLf3ikc37i5YuUahAFoljoZuzJAvG2b3AG5A2Sxdet qNeL3cfDETPtiSTyFlwcNNafr7pde3/k6qYjPl2XsyLUz4/WFspcoBE1570orxGlLRyl bVre87FKU1tKEolhtNfFls9CkiIpsjfwTEsaFZgsFLJucaVTB8jktcRyWTJz8kGTvQr7 /riohpXaOxaKKLLnWOZc8qIQ3ADc2Sx9qtRGOVR6hKS5Mx81q65uJBdnGGUm/Vq4RB9v 96XkiCwxdbKWxe/cPvNWsM4a9hHSVSDrpihfFnme1mLrQL7LgHw/PLmYQVjC/eym/t5z Mr2Q== X-Gm-Message-State: AOAM533XFVZEtuDOiNMg/jODu3AaaCMkwsZKZ84z/mab5Zio9dDKrMxT iq79Dm4g3djZL7VUcwfO/KDQBlkdYcdAnKst X-Google-Smtp-Source: ABdhPJwq9m7Hke47Q1t6+9cN1FxtfgmHBcM8gn5MJXWgCjVSSwCqI3wnJq5rUc3CcXhseRgnyR2FIQ== X-Received: by 2002:a05:6214:553:: with SMTP id ci19mr969240qvb.18.1615597233357; Fri, 12 Mar 2021 17:00:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 10/15] target/ppc: Create helper_scv Date: Fri, 12 Mar 2021 19:00:13 -0600 Message-Id: <20210313010018.819153-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2f; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Perform the test against FSCR_SCV at runtime, in the helper. This means we can remove the incorrect set against SCV in ppc_tr_init_disas_context and do not need to add an HFLAGS bit. Signed-off-by: Richard Henderson --- target/ppc/helper.h | 1 + target/ppc/excp_helper.c | 9 +++++++++ target/ppc/translate.c | 20 +++++++------------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 6a4dccf70c..513066d54d 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -13,6 +13,7 @@ DEF_HELPER_1(rfci, void, env) DEF_HELPER_1(rfdi, void, env) DEF_HELPER_1(rfmci, void, env) #if defined(TARGET_PPC64) +DEF_HELPER_2(scv, noreturn, env, i32) DEF_HELPER_2(pminsn, void, env, i32) DEF_HELPER_1(rfid, void, env) DEF_HELPER_1(rfscv, void, env) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 85de7e6c90..5c95e0c103 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1130,6 +1130,15 @@ void helper_store_msr(CPUPPCState *env, target_ulong= val) } =20 #if defined(TARGET_PPC64) +void helper_scv(CPUPPCState *env, uint32_t lev) +{ + if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) { + raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev); + } else { + raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV); + } +} + void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_t insn) { CPUState *cs; diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 7912495f28..d48c554290 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -173,7 +173,6 @@ struct DisasContext { bool vsx_enabled; bool spe_enabled; bool tm_enabled; - bool scv_enabled; bool gtse; ppc_spr_t *spr_cb; /* Needed to check rights for mfspr/mtspr */ int singlestep_enabled; @@ -4081,15 +4080,16 @@ static void gen_sc(DisasContext *ctx) #if !defined(CONFIG_USER_ONLY) static void gen_scv(DisasContext *ctx) { - uint32_t lev; + uint32_t lev =3D (ctx->opcode >> 5) & 0x7F; =20 - if (unlikely(!ctx->scv_enabled)) { - gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_SCV); - return; + /* Set the PC back to the faulting instruction. */ + if (ctx->exception =3D=3D POWERPC_EXCP_NONE) { + gen_update_nip(ctx, ctx->base.pc_next - 4); } + gen_helper_scv(cpu_env, tcg_constant_i32(lev)); =20 - lev =3D (ctx->opcode >> 5) & 0x7F; - gen_exception_err(ctx, POWERPC_SYSCALL_VECTORED, lev); + /* This need not be exact, just not POWERPC_EXCP_NONE */ + ctx->exception =3D POWERPC_SYSCALL_VECTORED; } #endif #endif @@ -7907,12 +7907,6 @@ static void ppc_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) ctx->spe_enabled =3D (hflags >> HFLAGS_SPE) & 1; ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; - if ((env->flags & POWERPC_FLAG_SCV) - && (env->spr[SPR_FSCR] & (1ull << FSCR_SCV))) { - ctx->scv_enabled =3D true; - } else { - ctx->scv_enabled =3D false; - } ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); =20 --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597898; cv=none; d=zohomail.com; s=zohoarc; b=lGQxB3Lf3TcZ86M2b/wIWM3bb0s1+HjK1JlxmU70M8sNotnKZTzIyQR/I4EbOK279ZB5kPPlK2/b8owOmyQNKvhoOIQPsR1Suoc7txeBdp7kIUTuj5/j5xlJp3r1oG7y7SRByq2J9kA/1xM+49t7Uth6SzAEYh0+2bA3IzYQHo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597898; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Fm4BN1FAYzcobXIUNrNdXuRiaQp/Ku74cUVfr1tQ2mY=; b=R7TlQmeH4OKzYJTWRXV3F978czJDobOKluoajKY2NNfspWoP9WI1Lz62DGPdACt4LiQehroCD2PC/UrUEoEN8bgk/3ythGo6XcItjNpLhN6+N5zL+/XEWB3LMWFY9k9rhJ0ecR3EDey0M4LeoiGi4R3WVG+0kG2vOCLyYsETEoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597898679119.96836192645185; Fri, 12 Mar 2021 17:11:38 -0800 (PST) Received: from localhost ([::1]:36220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsob-0003ny-Mr for importer@patchew.org; Fri, 12 Mar 2021 20:11:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56264) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKse0-0007Mj-98 for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:43 -0500 Received: from mail-qv1-xf31.google.com ([2607:f8b0:4864:20::f31]:34739) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdv-0003TY-IY for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:39 -0500 Received: by mail-qv1-xf31.google.com with SMTP id g8so5172944qvx.1 for ; Fri, 12 Mar 2021 17:00:35 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Fm4BN1FAYzcobXIUNrNdXuRiaQp/Ku74cUVfr1tQ2mY=; b=ZPDfotqZkwLgMY82II2d8KzcFDUKm+QoC/DOf3p5BZEiwKiFkF4ld39CK5Wr3SkBXt Fe3Ynmbm/u0KdYMkSXB2uYb8WgNvjOFyaZV3HAttfNYCbpHLWqpqMkNRdED2IHII6tGX qdx3NgjJ0Fs6mlV2d6GH8Fs4a+sMwxRRzSlMW7FIlxJl2d25WBKQ8kAagX5uEGOFiE5Y FO9lVfxwyy65EqwYAu1cQeNuSyY6J047scQ7Qpf0jA1ZhwQ8w3ELTskxQ3aS6scJ62Fn DG1wPFMdU0zA3WW8c3yv0YI1MPQIaZa7wD388s4tf0PLakEZLHNfGgahnjEZaWQYpGpY HJXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Fm4BN1FAYzcobXIUNrNdXuRiaQp/Ku74cUVfr1tQ2mY=; b=UA/BzgDvxqmkCRsL5dGF+aq0q9YpW2cHDPsdnkuk8aw/H6PkSeymiZLwZRiQchJk0v tFB/BlDyZRLLnHJYqY59ztJUTXpd3w34RiJlzSY1D6YGVVH0mvxV8jzZIBtoA9H6kJYe pjL8lZNA4h0E35fI11Cn82Nt4WhXUSJFXQ9+/QdH79MfL8+Dh8wDJRnAq3q4RjrUCbxf C87jd6eTLwypRB+sSrNBzJDPWTfIyQjc4nTyVcSIQ4DjPbKKyl68NyzkaMh20ETm7g/0 9IjuzD+YZUHjowK6Qs3DKB654sJZQ5GKios0iLCjx1vKcjhpUbC3Q3s5oaIV4X/VCGPP 5MPQ== X-Gm-Message-State: AOAM532ff9tDKfjLKoRQNRQMAYQT4Yis8R4lqUxA2+MNxhXP4NJV1m5u QamjFQ4SsWIsRfpRhMshhZygvED1+qOAR/yP X-Google-Smtp-Source: ABdhPJxIrZlMfq6SVGJf6a9aAvPgs6RLlEEPHXSJD4QcfFAdJVw8KiDbfskcKRE2KTFI2LQNTeClig== X-Received: by 2002:ad4:4e23:: with SMTP id dm3mr14892653qvb.4.1615597234584; Fri, 12 Mar 2021 17:00:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 11/15] target/ppc: Put LPCR[GTSE] in hflags Date: Fri, 12 Mar 2021 19:00:14 -0600 Message-Id: <20210313010018.819153-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f31; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf31.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Because this bit was not in hflags, the privilege check for tlb instructions was essentially random. Recompute hflags when storing to LPCR. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 1 + target/ppc/helper_regs.c | 3 +++ target/ppc/mmu-hash64.c | 3 +++ target/ppc/translate.c | 2 +- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 2abaf56869..07a4331eec 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -603,6 +603,7 @@ enum { HFLAGS_TM =3D 8, /* computed from MSR_TM */ HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ HFLAGS_SE =3D 10, /* MSR_SE -- from elsewhere on embedded ppc */ + HFLAGS_GTSE =3D 11, /* computed from SPR_LPCR[GTSE] */ HFLAGS_FP =3D 13, /* MSR_FP */ HFLAGS_SA =3D 22, /* MSR_SA */ HFLAGS_AP =3D 23, /* MSR_AP */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index c735540333..8479789e24 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -139,6 +139,9 @@ void hreg_compute_hflags(CPUPPCState *env) if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { hflags |=3D 1 << HFLAGS_TM; } + if (env->spr[SPR_LPCR] & LPCR_GTSE) { + hflags |=3D 1 << HFLAGS_GTSE; + } =20 #ifndef CONFIG_USER_ONLY if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index 0fabc10302..d517a99832 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -30,6 +30,7 @@ #include "exec/log.h" #include "hw/hw.h" #include "mmu-book3s-v3.h" +#include "helper_regs.h" =20 /* #define DEBUG_SLB */ =20 @@ -1125,6 +1126,8 @@ void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) CPUPPCState *env =3D &cpu->env; =20 env->spr[SPR_LPCR] =3D val & pcc->lpcr_mask; + /* The gtse bit affects hflags */ + hreg_compute_hflags(env); } =20 void helper_store_lpcr(CPUPPCState *env, target_ulong val) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index d48c554290..5e629291d3 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7908,7 +7908,7 @@ static void ppc_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) ctx->altivec_enabled =3D (hflags >> HFLAGS_VR) & 1; ctx->vsx_enabled =3D (hflags >> HFLAGS_VSX) & 1; ctx->tm_enabled =3D (hflags >> HFLAGS_TM) & 1; - ctx->gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); + ctx->gtse =3D (hflags >> HFLAGS_GTSE) & 1; =20 ctx->singlestep_enabled =3D 0; if ((hflags >> HFLAGS_SE) & 1) { --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597938; cv=none; d=zohomail.com; s=zohoarc; b=VY84XXOvJmKVdvMNQ5zxz8ggNdrp19Gxktwic2sjanbMmmTi9OjrsVywZqi3w5zPJOVjm0xOuR85EgN9DqEZ/S0Gxp9+m3uJDRhMgTPsjM2hnsMfsSiJ1Z3lWpyJWQr5Jwd6gVT12T1xjTfDJLKz372TIVUgmyoOofuucqBUwH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597938; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bCT8Z895v2OzlUZ7cD3kW9yujJdvuk9uwCXjA4T3jIk=; b=W8WHVCVTMtIFKkX0misZk/PVYj1rIFeX3wj+0AGv9uK+05PGKvmCKunRd2w9fBhdnODpeJhmtnEiWnHN6JdqrBXbyIG5aoj8eOFxx85ceAACItTW5onyuWLffZGyUYqZ7S4ELEtEuPmQjeg9lU/m60Sn0WEGy3h9heMaGirnSaU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615597938280635.7577965840919; Fri, 12 Mar 2021 17:12:18 -0800 (PST) Received: from localhost ([::1]:36894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKspF-00048Y-8a for importer@patchew.org; Fri, 12 Mar 2021 20:12:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56360) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKse6-0007P9-5h for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:46 -0500 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]:45677) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdw-0003UR-R1 for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:45 -0500 Received: by mail-qv1-xf2c.google.com with SMTP id t16so5173937qvr.12 for ; Fri, 12 Mar 2021 17:00:36 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bCT8Z895v2OzlUZ7cD3kW9yujJdvuk9uwCXjA4T3jIk=; b=PoYu7Hh+Ja2LhhPKIzk27oJFb/bWhHAUsFNMf+iXWfRYJXb7ZyxJNthM9BuhL67plC 18juVCfRPwbsa30PmLtgU+A7mPRVWDkgqToadqizQlheYvGaXl2YuPLBxj/kLW+ALJGw ciQ+6SBd/zcifDcLWUnKm8ApYiCP024aCSNIx9KJxJCF7Yx5GMVgQP1pIfKn2E5GALga AJVSZZDWlBrSnrzj4h5Aog3DbaGknrZLzZEt8oZk4CSbfHfvOAGc3I7yVoA7NkxDG9Gh RMzbk9oot5v2ewe/e4zQNEFGGKy1jQrq8QooAJsONVspeGxWo4lLY8JSCrlXi823+wOI UHqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bCT8Z895v2OzlUZ7cD3kW9yujJdvuk9uwCXjA4T3jIk=; b=IvOaoO8pN7KUaR4Vip0rptlFOeNuV1dYNfu9wQultY7WH/6a0w0u7kqxjt0mr0zUuG 5A666x8T6h8NC5k4rtmJtr4Ni0mN1OhrWatft/7rePphLZvPqNnqXPIB3a67Q+LH0ZRB +48EYkkEAPvjkjij+nvEfy1RIect+AxC6mVceDz4NKJI2R7yTW4RJ5CTJATUANcGC0+p yGGfFPzYcXRVvqloNlhcKi31UQ0GPiKeE9pUD39c4nk+GNScdNKbpp/o1Upd4urIB5S2 Ke6ru/teB7+8IOeWIPYc2/3UfykbPoKkOcLS0EaN3vY6S5qpH9hzm9sO2UdxBZXFaFWD 7Grg== X-Gm-Message-State: AOAM533x2LhB7xtLIIHHKZji/oOs9bTRUrvXEuD4sL+w13OJS8yAvMb7 kHfcFmav7QwHQ9C5x9iBEntFpQc93Ph+R1kt X-Google-Smtp-Source: ABdhPJyDWXyVYOlL/Uu9B0/xBoAN1W4UUIUYYhHOcEDM8mLFw3oLRkcyA/RXc+SrztXP2pck+7knZw== X-Received: by 2002:a05:6214:2b06:: with SMTP id jx6mr951565qvb.48.1615597235836; Fri, 12 Mar 2021 17:00:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 12/15] target/ppc: Remove MSR_SA and MSR_AP from hflags Date: Fri, 12 Mar 2021 19:00:15 -0600 Message-Id: <20210313010018.819153-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2c; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Nothing within the translator -- or anywhere else for that matter -- checks MSR_SA or MSR_AP on the 602. This may be a mistake. However, for the moment, we need not record these bits in hflags. This allows us to simplify HFLAGS_VSX computation by moving it to overlap with MSR_VSX. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 4 +--- target/ppc/helper_regs.c | 7 +++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 07a4331eec..23ff16c154 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -599,14 +599,12 @@ enum { HFLAGS_DR =3D 4, /* MSR_DR */ HFLAGS_IR =3D 5, /* MSR_IR */ HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ - HFLAGS_VSX =3D 7, /* from MSR_VSX if cpu has VSX; avoid overlap w/ MS= R_AP */ HFLAGS_TM =3D 8, /* computed from MSR_TM */ HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ HFLAGS_SE =3D 10, /* MSR_SE -- from elsewhere on embedded ppc */ HFLAGS_GTSE =3D 11, /* computed from SPR_LPCR[GTSE] */ HFLAGS_FP =3D 13, /* MSR_FP */ - HFLAGS_SA =3D 22, /* MSR_SA */ - HFLAGS_AP =3D 23, /* MSR_AP */ + HFLAGS_VSX =3D 23, /* MSR_VSX if cpu has VSX */ HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ }; =20 diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 8479789e24..d62921c322 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -95,8 +95,7 @@ void hreg_compute_hflags(CPUPPCState *env) =20 /* Some bits come straight across from MSR. */ msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | - (1 << MSR_DR) | (1 << MSR_IR) | - (1 << MSR_FP) | (1 << MSR_SA) | (1 << MSR_AP)); + (1 << MSR_DR) | (1 << MSR_IR) | (1 << MSR_FP)); =20 if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* @@ -133,8 +132,8 @@ void hreg_compute_hflags(CPUPPCState *env) if (ppc_flags & POWERPC_FLAG_VRE) { msr_mask |=3D 1 << MSR_VR; } - if ((ppc_flags & POWERPC_FLAG_VSX) && (msr & (1 << MSR_VSX))) { - hflags |=3D 1 << HFLAGS_VSX; + if (ppc_flags & POWERPC_FLAG_VSX) { + msr_mask |=3D 1 << MSR_VSX; } if ((ppc_flags & POWERPC_FLAG_TM) && (msr & (1ull << MSR_TM))) { hflags |=3D 1 << HFLAGS_TM; --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615598079; cv=none; d=zohomail.com; s=zohoarc; b=keA4ZJEnINGdAkTe42E1l/84bAk1ULqzeJvqJwbI6Uycj33/XHnoSBGCCa+i2piJZrkeVSmpZPKOSD08ohFMOAgJ86l7LDJzS6xsupoynTQToLnqS+0mr3q7mRlN961EKo0rnMUzLcI1YWDtLLG5EzoGjbiOi6vAf6TDyUGYyjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615598079; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WgTBRUnu7J8koNQdxGgffOswXs7sxkMr5Aqor7q7qKI=; b=BB4WJhwMHjxGs6KwNdeLd2suGvree1U5CYT6FHOAvHmQCxQveYy3WeLkCj0vjGSn5UAaQn5Y6kRAFX2QVhMix2b62zW5daPtmOXBGnAVwfWrxu3QsjSG51gVkU/+F9pdyFH+SNYez4QH/pv4InLSjAI4nTYxmwiRyb/6L42PqV0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615598079528320.7831243429646; Fri, 12 Mar 2021 17:14:39 -0800 (PST) Received: from localhost ([::1]:42910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsrW-00078L-CX for importer@patchew.org; Fri, 12 Mar 2021 20:14:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKse5-0007NT-8K for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:45 -0500 Received: from mail-qv1-xf32.google.com ([2607:f8b0:4864:20::f32]:34740) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdy-0003VA-12 for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:45 -0500 Received: by mail-qv1-xf32.google.com with SMTP id g8so5172987qvx.1 for ; Fri, 12 Mar 2021 17:00:37 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WgTBRUnu7J8koNQdxGgffOswXs7sxkMr5Aqor7q7qKI=; b=FNeCTldzy6R/lvOzCInq3R/1Uyu9xflpK/l5NpgSuWacGBsiT/KeMZqan1DBA8GV4d m4srRo5RZFx4z5H8EX7ZKGwovvuxnpUf8rR/hUjgnD3u4ksbeIEVr/qmhsVY9vjYBq/p zhM2xFh6el37LIhXNkkloD05neFS6D6a2KpMS5vQmmHke1VfhCkun5dTgheRIP5Q/NXN yEVIwgmDhxyAQ1obLFIh0k30P1eah1U8uvES3CTMxg9QZjr3KyJyzxxPVpbQEoL1kJCW uDmrTH9UGcmhXXiuFjX78cGh20ut0v2kPPInK9wlxJz9QEEVSfvgwHsjp4/6nvDSE00g j/QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WgTBRUnu7J8koNQdxGgffOswXs7sxkMr5Aqor7q7qKI=; b=ZM1LfGVObR5fH+d/NFDvEtWEFMIOfUuwUY+hlyhWdZY78/EeRN4SvAmN8E3WWv/Cni GbgQsRTp90y59xaOAxYdOjCbRe7Fnmk2PVuGYvxNdhLLP6gDjPZTcAVpQGoYPDbTz6l4 CdsFAqOH5uBD0H+m2Bl+wcDKwnoUKSepT1MJtw44m/qgrIcwsMmVD+Y+GznxWEiQpG6O 7KwF5KEgM4Nf9c1UTZAqAgN/CeZ7XoVsp1CChjwcH/V+e9sEpq2qbsMoQtK/alYdsnvE sdCRmjogkH0caeMRN9hSUng/LCJnNaH0sqYSoolwSAHwbRJk8hSsOKU1TKwDKZtM9acy Y36g== X-Gm-Message-State: AOAM530TM8YhVonCaXrTHtOkJGIBljwypWGfQ/Y+kqN5zSL3GCs5h43F 6BfpLGjafMgU0DhGNssnf+MlzV68tSRX53Lj X-Google-Smtp-Source: ABdhPJwPX3GksbXFm7h/7Bf11Qrvi3wFT01BU1+I9xZuWx92ju44S0Apjc2b3KZaZHTyeAFtciysxw== X-Received: by 2002:a0c:aece:: with SMTP id n14mr962867qvd.52.1615597237069; Fri, 12 Mar 2021 17:00:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 13/15] target/ppc: Remove env->immu_idx and env->dmmu_idx Date: Fri, 12 Mar 2021 19:00:16 -0600 Message-Id: <20210313010018.819153-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f32; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf32.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We weren't recording MSR_GS in hflags, which means that BookE memory accesses were essentially random vs Guest State. Instead of adding this bit directly, record the completed mmu indexes instead. This makes it obvious that we are recording exactly the information that we need. This also means that we can stop directly recording MSR_IR. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 12 ++++-- target/ppc/helper_regs.h | 1 - target/ppc/helper_regs.c | 88 ++++++++++++++++++++-------------------- target/ppc/mem_helper.c | 2 +- target/ppc/translate.c | 6 +-- 5 files changed, 55 insertions(+), 54 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 23ff16c154..2f8d7fa13c 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -597,7 +597,6 @@ enum { HFLAGS_64 =3D 2, /* computed from MSR_CE and MSR_SF */ HFLAGS_PR =3D 3, /* MSR_PR */ HFLAGS_DR =3D 4, /* MSR_DR */ - HFLAGS_IR =3D 5, /* MSR_IR */ HFLAGS_SPE =3D 6, /* from MSR_SPE if cpu has SPE; avoid overlap w/ MS= R_VR */ HFLAGS_TM =3D 8, /* computed from MSR_TM */ HFLAGS_BE =3D 9, /* MSR_BE -- from elsewhere on embedded ppc */ @@ -606,6 +605,9 @@ enum { HFLAGS_FP =3D 13, /* MSR_FP */ HFLAGS_VSX =3D 23, /* MSR_VSX if cpu has VSX */ HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ + + HFLAGS_IMMU_IDX =3D 26, /* 26..28 -- the composite immu_idx */ + HFLAGS_DMMU_IDX =3D 29, /* 29..31 -- the composite dmmu_idx */ }; =20 /*************************************************************************= ****/ @@ -1130,8 +1132,6 @@ struct CPUPPCState { /* These resources are used only in TCG */ uint32_t hflags; target_ulong hflags_compat_nmsr; /* for migration compatibility */ - int immu_idx; /* precomputed MMU index to speed up insn accesses */ - int dmmu_idx; /* precomputed MMU index to speed up data accesses */ =20 /* Power management */ int (*check_pow)(CPUPPCState *env); @@ -1367,7 +1367,11 @@ int ppc_dcr_write(ppc_dcr_t *dcr_env, int dcrn, uint= 32_t val); #define MMU_USER_IDX 0 static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) { - return ifetch ? env->immu_idx : env->dmmu_idx; +#ifdef CONFIG_USER_ONLY + return MMU_USER_IDX; +#else + return (env->hflags >> (ifetch ? HFLAGS_IMMU_IDX : HFLAGS_DMMU_IDX)) &= 7; +#endif } =20 /* Compatibility modes */ diff --git a/target/ppc/helper_regs.h b/target/ppc/helper_regs.h index 4148a442b3..42f26870b9 100644 --- a/target/ppc/helper_regs.h +++ b/target/ppc/helper_regs.h @@ -21,7 +21,6 @@ #define HELPER_REGS_H =20 void hreg_swap_gpr_tgpr(CPUPPCState *env); -void hreg_compute_mem_idx(CPUPPCState *env); void hreg_compute_hflags(CPUPPCState *env); void cpu_interrupt_exittb(CPUState *cs); int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv); diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index d62921c322..b28037ca24 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -43,49 +43,6 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env) env->tgpr[3] =3D tmp; } =20 -void hreg_compute_mem_idx(CPUPPCState *env) -{ - /* - * This is our encoding for server processors. The architecture - * specifies that there is no such thing as userspace with - * translation off, however it appears that MacOS does it and some - * 32-bit CPUs support it. Weird... - * - * 0 =3D Guest User space virtual mode - * 1 =3D Guest Kernel space virtual mode - * 2 =3D Guest User space real mode - * 3 =3D Guest Kernel space real mode - * 4 =3D HV User space virtual mode - * 5 =3D HV Kernel space virtual mode - * 6 =3D HV User space real mode - * 7 =3D HV Kernel space real mode - * - * For BookE, we need 8 MMU modes as follow: - * - * 0 =3D AS 0 HV User space - * 1 =3D AS 0 HV Kernel space - * 2 =3D AS 1 HV User space - * 3 =3D AS 1 HV Kernel space - * 4 =3D AS 0 Guest User space - * 5 =3D AS 0 Guest Kernel space - * 6 =3D AS 1 Guest User space - * 7 =3D AS 1 Guest Kernel space - */ - if (env->mmu_model & POWERPC_MMU_BOOKE) { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_is ? 2 : 0; - env->dmmu_idx +=3D msr_ds ? 2 : 0; - env->immu_idx +=3D msr_gs ? 4 : 0; - env->dmmu_idx +=3D msr_gs ? 4 : 0; - } else { - env->immu_idx =3D env->dmmu_idx =3D msr_pr ? 0 : 1; - env->immu_idx +=3D msr_ir ? 0 : 2; - env->dmmu_idx +=3D msr_dr ? 0 : 2; - env->immu_idx +=3D msr_hv ? 4 : 0; - env->dmmu_idx +=3D msr_hv ? 4 : 0; - } -} - void hreg_compute_hflags(CPUPPCState *env) { target_ulong msr =3D env->msr; @@ -95,7 +52,7 @@ void hreg_compute_hflags(CPUPPCState *env) =20 /* Some bits come straight across from MSR. */ msr_mask =3D ((1 << MSR_LE) | (1 << MSR_PR) | - (1 << MSR_DR) | (1 << MSR_IR) | (1 << MSR_FP)); + (1 << MSR_DR) | (1 << MSR_FP)); =20 if (ppc_flags & POWERPC_FLAG_HID0_LE) { /* @@ -146,10 +103,51 @@ void hreg_compute_hflags(CPUPPCState *env) if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { hflags |=3D 1 << HFLAGS_HV; } + + /* + * This is our encoding for server processors. The architecture + * specifies that there is no such thing as userspace with + * translation off, however it appears that MacOS does it and some + * 32-bit CPUs support it. Weird... + * + * 0 =3D Guest User space virtual mode + * 1 =3D Guest Kernel space virtual mode + * 2 =3D Guest User space real mode + * 3 =3D Guest Kernel space real mode + * 4 =3D HV User space virtual mode + * 5 =3D HV Kernel space virtual mode + * 6 =3D HV User space real mode + * 7 =3D HV Kernel space real mode + * + * For BookE, we need 8 MMU modes as follow: + * + * 0 =3D AS 0 HV User space + * 1 =3D AS 0 HV Kernel space + * 2 =3D AS 1 HV User space + * 3 =3D AS 1 HV Kernel space + * 4 =3D AS 0 Guest User space + * 5 =3D AS 0 Guest Kernel space + * 6 =3D AS 1 Guest User space + * 7 =3D AS 1 Guest Kernel space + */ + unsigned immu_idx, dmmu_idx; + dmmu_idx =3D msr & (1 << MSR_PR) ? 0 : 1; + if (env->mmu_model & POWERPC_MMU_BOOKE) { + dmmu_idx |=3D msr & (1 << MSR_GS) ? 4 : 0; + immu_idx =3D dmmu_idx; + immu_idx |=3D msr & (1 << MSR_IS) ? 2 : 0; + dmmu_idx |=3D msr & (1 << MSR_DS) ? 2 : 0; + } else { + dmmu_idx |=3D msr & (1ull << MSR_HV) ? 4 : 0; + immu_idx =3D dmmu_idx; + immu_idx |=3D msr & (1 << MSR_IR) ? 0 : 2; + dmmu_idx |=3D msr & (1 << MSR_DR) ? 0 : 2; + } + hflags |=3D immu_idx << HFLAGS_IMMU_IDX; + hflags |=3D dmmu_idx << HFLAGS_DMMU_IDX; #endif =20 env->hflags =3D hflags | (msr & msr_mask); - hreg_compute_mem_idx(env); } =20 void cpu_interrupt_exittb(CPUState *cs) diff --git a/target/ppc/mem_helper.c b/target/ppc/mem_helper.c index f4f7e730de..444b2a30ef 100644 --- a/target/ppc/mem_helper.c +++ b/target/ppc/mem_helper.c @@ -278,7 +278,7 @@ static void dcbz_common(CPUPPCState *env, target_ulong = addr, target_ulong mask, dcbz_size =3D env->dcache_line_size; uint32_t i; void *haddr; - int mmu_idx =3D epid ? PPC_TLB_EPID_STORE : env->dmmu_idx; + int mmu_idx =3D epid ? PPC_TLB_EPID_STORE : cpu_mmu_index(env, false); =20 #if defined(TARGET_PPC64) /* Check for dcbz vs dcbzl on 970 */ diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 5e629291d3..a53463b9b8 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7658,8 +7658,8 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) cs->cpu_index); qemu_fprintf(f, "MSR " TARGET_FMT_lx " HID0 " TARGET_FMT_lx " HF " "%08x iidx %d didx %d\n", - env->msr, env->spr[SPR_HID0], - env->hflags, env->immu_idx, env->dmmu_idx); + env->msr, env->spr[SPR_HID0], env->hflags, + cpu_mmu_index(env, true), cpu_mmu_index(env, false)); #if !defined(NO_TIMER_DUMP) qemu_fprintf(f, "TB %08" PRIu32 " %08" PRIu64 #if !defined(CONFIG_USER_ONLY) @@ -7885,7 +7885,7 @@ static void ppc_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) ctx->exception =3D POWERPC_EXCP_NONE; ctx->spr_cb =3D env->spr_cb; ctx->pr =3D (hflags >> HFLAGS_PR) & 1; - ctx->mem_idx =3D env->dmmu_idx; + ctx->mem_idx =3D (hflags >> HFLAGS_DMMU_IDX) & 7; ctx->dr =3D (hflags >> HFLAGS_DR) & 1; ctx->hv =3D (hflags >> HFLAGS_HV) & 1; ctx->insns_flags =3D env->insns_flags; --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615597777; cv=none; d=zohomail.com; s=zohoarc; b=WI0YbZGxFQSWsDg0DY/I2gtPFmPQIvvqrdyP1Ec2uYNFm2qIGcscQjfkdNG2ybFc++uIuPl93r6hh72E2nyOHByFcjSa5pcAjFtMzFYvA76qAqIKdt4kCO6P2RV7NuKpPa7iaG6n87sVD9LRTZvdWcxpVj9wB9iYIv6b5D1dBOE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615597777; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vELE3YSpOk5r/uHFU87DvdYSf1TzMJkyUqmnTwvrjhM=; b=IDgodz6mtGsyLK4UpBzm/w80fVUhfCoctJ+Vd36dg1lnJm8ZGiCpUdCm/JPrzxBdA9BiVwOp++dvi4E+9828FHCddXIovVpIFY8CdmYRc6qtv9fNxQVXHOJnAFz4jDi8IzybFhWTljhl80e41xsn2cGOMVYkTOKNPODZPpOvjxo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16155977777893.995637567742392; Fri, 12 Mar 2021 17:09:37 -0800 (PST) Received: from localhost ([::1]:60018 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsme-0001st-Jw for importer@patchew.org; Fri, 12 Mar 2021 20:09:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56350) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKse6-0007OW-0j for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:46 -0500 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]:37426) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKsdz-0003Vn-Cv for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:45 -0500 Received: by mail-qt1-x834.google.com with SMTP id f12so5300641qtq.4 for ; Fri, 12 Mar 2021 17:00:38 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vELE3YSpOk5r/uHFU87DvdYSf1TzMJkyUqmnTwvrjhM=; b=JhEEnnwLoeKGZdHB2F+Jb5u1CdemRhjFBtaAiqdY99guFJiwWz9vL2nv1bhSZFk/qA S7TaD/XSJWH79UdxkGwjjociw9CPhcIw/WWaU3JB90u2Gsq2I0X9g0GdYn5C/JeLE4pA aAeCbJ/zpp4u7i0mifZJXhqWV7JpYYxQJj5ud+jThAl3TPnciIvor9/sjSnUqCmbj5cN 6sY96/wyIANvhoeWuvzlGUI9uzyhc95AuNTPtL0AKxsX6Bnpf9zn8XyOhuHrW/dlgVHr VDYargJJ0tMy7e//WEFD0ne6psRex0jzjx3iakmyFt5AwWzs1WLWBqGFuk4sz41h6LhZ zqDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vELE3YSpOk5r/uHFU87DvdYSf1TzMJkyUqmnTwvrjhM=; b=eYDgWRNk7DXdktwM4hLJSlAq6RlvO3ZpLm/HrV9+MkaleMZHMN1MzkjQ4LR2+H9eze MNEUEw/XlJiL60wJJHLhmpz1apzBsZeu2aSU/GpQ5eFMSMxDAedmFOoIYiqFmr7kXFkx MVD5HYFpKu/8Xo03QUPTFBsUMnbOQGM1a0SeezjZZu7V9fcqMqln7+Hj/0Jl1VJlR5e/ WTv23bGS1MIzDdkIFIWxk/70KI/lFm/makDaxixjpKKnKD2xUNRYZQrdiAabqI3d+pTI NLgO/28Oqbr0QNDojSwpixsrhgDv3ucoBmCeplh7uFYRMCTDkVrOyTNbFyhn7Jw4RyYt 5Smg== X-Gm-Message-State: AOAM530hMngZoemLG+4QZT9ZZUXkm6/XkQKb1in2ynw3aN8m2meYK4Lj 7mQndu/LHaIffQ8hIgv7R1PlMCKqeBUVjui6 X-Google-Smtp-Source: ABdhPJy9td0gcUC9Dfz3S4/vh2TSGugwD5jueaNylriAx6Rz9Ps8y6kYN5zZ7C4rV5Z5gM69dureeQ== X-Received: by 2002:ac8:4755:: with SMTP id k21mr14415395qtp.102.1615597238310; Fri, 12 Mar 2021 17:00:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 14/15] hw/ppc: Use hreg_store_msr for msr updates Date: Fri, 12 Mar 2021 19:00:17 -0600 Message-Id: <20210313010018.819153-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::834; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x834.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: ivan@vmfacility.fr, Greg Kurz , qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Only one of the three places in hw/ppc that modify msr updated hflags. Even in that case, use the official interface instead of a direct call to hreg_compute_hflags. Signed-off-by: Richard Henderson --- Cc: C=C3=A9dric Le Goater Cc: Greg Kurz --- hw/ppc/pnv_core.c | 3 ++- hw/ppc/spapr_hcall.c | 3 +-- hw/ppc/spapr_rtas.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index bd2bf2e044..31f041b9c7 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -29,6 +29,7 @@ #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/xics.h" #include "hw/qdev-properties.h" +#include "helper_regs.h" =20 static const char *pnv_core_cpu_typename(PnvCore *pc) { @@ -54,7 +55,7 @@ static void pnv_core_cpu_reset(PnvCore *pc, PowerPCCPU *c= pu) */ env->gpr[3] =3D PNV_FDT_ADDR; env->nip =3D 0x10; - env->msr |=3D MSR_HVB; /* Hypervisor mode */ + hreg_store_msr(env, env->msr | MSR_HVB, true); /* Hypervisor mode */ =20 env->spr[SPR_HRMOR] =3D pc->hrmor; =20 diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 7b5cd3553c..a4f7a09ba8 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1055,8 +1055,7 @@ static target_ulong h_cede(PowerPCCPU *cpu, SpaprMach= ineState *spapr, CPUState *cs =3D CPU(cpu); SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); =20 - env->msr |=3D (1ULL << MSR_EE); - hreg_compute_hflags(env); + hreg_store_msr(env, env->msr | (1ULL << MSR_EE), false); =20 if (spapr_cpu->prod) { spapr_cpu->prod =3D false; diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 8a79f9c628..b9a6b7ef30 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -51,6 +51,7 @@ #include "target/ppc/mmu-hash64.h" #include "target/ppc/mmu-book3s-v3.h" #include "migration/blocker.h" +#include "helper_regs.h" =20 static void rtas_display_character(PowerPCCPU *cpu, SpaprMachineState *spa= pr, uint32_t token, uint32_t nargs, @@ -162,7 +163,7 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMa= chineState *spapr, =20 cpu_synchronize_state(CPU(newcpu)); =20 - env->msr =3D (1ULL << MSR_SF) | (1ULL << MSR_ME); + hreg_store_msr(env, (1ULL << MSR_SF) | (1ULL << MSR_ME), true); =20 /* Enable Power-saving mode Exit Cause exceptions for the new CPU */ lpcr =3D env->spr[SPR_LPCR]; --=20 2.25.1 From nobody Sat May 18 21:26:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615598097; cv=none; d=zohomail.com; s=zohoarc; b=ipJA0hvfuPjkPKhRT+p9Nlt/eMsw1TI8pY1RcVc+tOU1k1UIcKRzG9BDZ9tmuv194UyAaFBcQibt8auAsiwzWYHRVWvwWH25kXvrW5V2m8Nc4IZdVsfjzemkOfyFXm3vE9VJfOhLxjvq6+8xwd2/M50ZU8XC4tlLWaF+AqLX1xw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615598097; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Y0taJkB4Fi6zr+Y5YPiFcKq9feU/8Hh2LxD7KqyF6Ng=; b=R/Pt7Lbbw/EeHimu3bc9P4kuIXiz6e+jRdDkzjJDS16Uz5dM1+/8ctRTET1Dte0pRZ+GkcTs2peOpm4IkpMDafzL4B1HFV+sRX/qBLq6UkCySsDGERLKZqAud9xAPycoDsrf5tkq1eghbun35V3AC/qirw9e2EF3sPd6EP6WKSM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615598096990246.1297853703678; Fri, 12 Mar 2021 17:14:56 -0800 (PST) Received: from localhost ([::1]:43836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKsro-0007lN-14 for importer@patchew.org; Fri, 12 Mar 2021 20:14:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKse8-0007St-0t for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:48 -0500 Received: from mail-qk1-x72e.google.com ([2607:f8b0:4864:20::72e]:43909) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKse0-0003W7-Q3 for qemu-devel@nongnu.org; Fri, 12 Mar 2021 20:00:47 -0500 Received: by mail-qk1-x72e.google.com with SMTP id b130so26277412qkc.10 for ; Fri, 12 Mar 2021 17:00:39 -0800 (PST) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id l129sm5602078qkd.76.2021.03.12.17.00.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Mar 2021 17:00:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y0taJkB4Fi6zr+Y5YPiFcKq9feU/8Hh2LxD7KqyF6Ng=; b=OE4VoXoTlJ+QCJtywr+QwMnlrg3ZkLDbfEve1JlrEeWenJ6gO/gAKJuHT6EXgUZDTk Sdz3+zCcrMjKxHlTHetb3pyxoZXQOpJCvDoDThVljhBDY+TlrQpoLzvZ43NxXbL+lIXi BpVipYU0NqBWGZWZjJcDk1GAY0ru+a1QTfJbGATOp70abxB04ru0OZfB2yIaqQ7LGf2R y/eaiDF286hp/daiwjPGOSGh7vrmWfOHrvCs4cBV3TC7CBsSxMc4/43A7XEpmXaVOksI azMlLVKWdf3mI0Kd+vRfNm8KJAyp5uRj+FkS3nwrYQDq+dW3EmwavZbuPhaEcWaSfq5s 6K/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y0taJkB4Fi6zr+Y5YPiFcKq9feU/8Hh2LxD7KqyF6Ng=; b=tycMt9l0vVIE09yviJy7ll0A6R060nqgcXJt7BVY6YSff9f1h5XjtxO9+p/3SIkXl3 rqnwOTajh1CmMANFSCBhcNXq+aTlm9i5BYwX43E6AUilaPXUCwRytzry7lvxvALhKsnI /5mMmt/TsVQUPZ5mrypBLrvJaRPnuEY26jLRFoJ3eF+SBVUSPrBPMdmgjF+h7UHmLrFK pNU/egriKbol0OsIRuBmOuYx7/5C2xoG+/LLN7Erfu47W9r62ABb05HJo4D1FRiCBgrM ClI8h8Pwr7pSyJjLMOiBU5cCL/P/NSydDfJFJeq3hy95M+6xH5HUNWdvz7J8M2GQWw+Q up4g== X-Gm-Message-State: AOAM530r4rZHbj88/VB/v+HUoE2RFypbfrJfl1wrUFIb5WQg86zFdq3Y TZHthDAa28yCNf461892bSxI0XXR/Ckp1AyQ X-Google-Smtp-Source: ABdhPJylvDABJkWJ67kUOfzN8jq4uJGposil8XRnlWoDP8JtMPWmHEbbIXOsH8esQc+S+XQTi1dtRQ== X-Received: by 2002:a37:6888:: with SMTP id d130mr15136116qkc.368.1615597239400; Fri, 12 Mar 2021 17:00:39 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 15/15] target/ppc: Validate hflags with CONFIG_DEBUG_TCG Date: Fri, 12 Mar 2021 19:00:18 -0600 Message-Id: <20210313010018.819153-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210313010018.819153-1-richard.henderson@linaro.org> References: <20210313010018.819153-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::72e; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: ivan@vmfacility.fr, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Verify that hflags was updated correctly whenever we change cpu state that is used by hflags. Signed-off-by: Richard Henderson --- target/ppc/cpu.h | 5 +++++ target/ppc/helper_regs.c | 29 +++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 2f8d7fa13c..7ee5c9a66e 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2424,6 +2424,10 @@ void cpu_write_xer(CPUPPCState *env, target_ulong xe= r); */ #define is_book3s_arch2x(ctx) (!!((ctx)->insns_flags & PPC_SEGMENT_64B)) =20 +#ifdef CONFIG_DEBUG_TCG +void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, + target_ulong *cs_base, uint32_t *flags); +#else static inline void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { @@ -2431,6 +2435,7 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState *= env, target_ulong *pc, *cs_base =3D 0; *flags =3D env->hflags; } +#endif =20 void QEMU_NORETURN raise_exception(CPUPPCState *env, uint32_t exception); void QEMU_NORETURN raise_exception_ra(CPUPPCState *env, uint32_t exception, diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index b28037ca24..9df1098fec 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -43,7 +43,7 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env) env->tgpr[3] =3D tmp; } =20 -void hreg_compute_hflags(CPUPPCState *env) +static uint32_t hreg_compute_hflags_value(CPUPPCState *env) { target_ulong msr =3D env->msr; uint32_t ppc_flags =3D env->flags; @@ -147,9 +147,34 @@ void hreg_compute_hflags(CPUPPCState *env) hflags |=3D dmmu_idx << HFLAGS_DMMU_IDX; #endif =20 - env->hflags =3D hflags | (msr & msr_mask); + return hflags | (msr & msr_mask); } =20 +void hreg_compute_hflags(CPUPPCState *env) +{ + env->hflags =3D hreg_compute_hflags_value(env); +} + +#ifdef CONFIG_DEBUG_TCG +void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, + target_ulong *cs_base, uint32_t *flags) +{ + uint32_t hflags_current =3D env->hflags; + uint32_t hflags_rebuilt; + + *pc =3D env->nip; + *cs_base =3D 0; + *flags =3D hflags_current; + + hflags_rebuilt =3D hreg_compute_hflags_value(env); + if (unlikely(hflags_current !=3D hflags_rebuilt)) { + cpu_abort(env_cpu(env), + "TCG hflags mismatch (current:0x%08x rebuilt:0x%08x)\n", + hflags_current, hflags_rebuilt); + } +} +#endif + void cpu_interrupt_exittb(CPUState *cs) { if (!kvm_enabled()) { --=20 2.25.1