From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621351826; cv=none; d=zohomail.com; s=zohoarc; b=iu0q6aE9F6M7xlmq0UYkflyVX4L9kQKrYR8MB2/d3HMtyIy9eLY9B4aUXV1FqaGff0zuDqO3WH8cvcKLUoK/ENBz70bsgup/QIcWQEv7RMfoRcXzdGKP5YDpiewZW7Xiw9mg+6alvBhTNAn19fvRJNtYeCjzYh+PuCKWeuRP/nQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621351826; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=3Xnur/bJOs2EZmTohAwJHLNrTDTBjCLQcFbmEjlMfNE=; b=Q0lpHCcKALTcuYeJ3gRb+XN+6zohC9ZesYPDpwPtSP7pBHhKiPSRIUQZ71pN18lN5v12htDto8SE9vQ9yA12dHZBPX5uguS9CHV0jiJq1lBvYUXVJ3OrTGCTMYwHNsmvcjV8zfAAl6mxh3wTzby2PTpU3yAuKM9q4VYC1gVx6Mo= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621351826348281.3758821092871; Tue, 18 May 2021 08:30:26 -0700 (PDT) Received: from localhost ([::1]:47830 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1fr-0000OL-IA for importer@patchew.org; Tue, 18 May 2021 11:30:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59348) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1I4-0003Dp-33; Tue, 18 May 2021 11:05:48 -0400 Received: from [201.28.113.2] (port=5990 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1I2-0007Ay-Fm; Tue, 18 May 2021 11:05:47 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:33 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id D4744801362; Tue, 18 May 2021 12:05:32 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 1/7] target/ppc: fix ppc_store_sdr1 for user-only compilation Date: Tue, 18 May 2021 12:05:09 -0300 Message-Id: <20210518150515.57983-2-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:33.0054 (UTC) FILETIME=[3FD359E0:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When the function was moved to cpu.c, it should have been wrapped with #if !defined(CONFIG_USER_ONLY), otherwise linux-user builds don't work. The cleanup suggested by Richard Henderson has also been applied, changing error_report(...) to qemu_log_mask(LOG_GUEST_ERROR, ...) in that function. Signed-off-by: Bruno Larsen (billionai) --- target/ppc/cpu.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index 0ab7ac1af1..82e276349a 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -65,6 +65,7 @@ uint32_t ppc_get_vscr(CPUPPCState *env) return env->vscr | (sat << VSCR_SAT); } =20 +#if !defined(CONFIG_USER_ONLY) void ppc_store_sdr1(CPUPPCState *env, target_ulong value) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -76,13 +77,13 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong valu= e) target_ulong htabsize =3D value & SDR_64_HTABSIZE; =20 if (value & ~sdr_mask) { - error_report("Invalid bits 0x"TARGET_FMT_lx" set in SDR1", - value & ~sdr_mask); + qemu_log_mask(LOG_GUEST_ERROR, "Invalid bits 0x"TARGET_FMT_lx + " set in SDR1", value & ~sdr_mask); value &=3D sdr_mask; } if (htabsize > 28) { - error_report("Invalid HTABSIZE 0x" TARGET_FMT_lx" stored in SD= R1", - htabsize); + qemu_log_mask(LOG_GUEST_ERROR, "Invalid HTABSIZE 0x" TARGET_FM= T_lx + " stored in SDR1", htabsize); return; } } @@ -90,3 +91,4 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong value) /* FIXME: Should check for valid HTABMASK values in 32-bit case */ env->spr[SPR_SDR1] =3D value; } +#endif --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621351474; cv=none; d=zohomail.com; s=zohoarc; b=AuSYr4FcL0cjyerspDTb84dUQFrjyFNyme0qznvJjwwBLKU6YSz7FokaXW6rSifcFiKMLnhZj/G+Zh83mOM4OZPSF3zEYHNDY8OcqN3xYM+vNq6fqzOFpjpBjn+nHpHJ1BnkeM/6vGs4o+cp8Kom3jNBxy3S/7iP7ReBovmcKII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621351474; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=wajuDowENwB7PDiWhKadmekuV6twAfXdEjf+3cpJ5OE=; b=ijl3vDxTq9YKrfoCCkMqufcVCJBZ+t2gd0mUvy4eraEUmutGBWowwHyjiSeTIUgbjIytUugxZ9T1H2R2kFQ+A1CazqfKaTzivDI4TDKRqK2JiKrnKbJE4eldh91q0Lkw2xRrXlSOSYgqyCZvXWnn+xKis/zurqhvmx3nYHfg7Go= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621351474452517.1065595388857; Tue, 18 May 2021 08:24:34 -0700 (PDT) Received: from localhost ([::1]:37320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1aD-0001Gy-Az for importer@patchew.org; Tue, 18 May 2021 11:24:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59392) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1I6-0003Jo-QE; Tue, 18 May 2021 11:05:50 -0400 Received: from [201.28.113.2] (port=5990 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1I5-0007Ay-6U; Tue, 18 May 2021 11:05:50 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:34 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id BE07A801362; Tue, 18 May 2021 12:05:34 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 2/7] target/ppc: moved ppc_store_lpcr and ppc_store_msr to cpu.c Date: Tue, 18 May 2021 12:05:10 -0300 Message-Id: <20210518150515.57983-3-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:34.0945 (UTC) FILETIME=[40F3E510:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These functions are used in hw/ppc logic, during machine startup, which means it must be compiled when --disable-tcg is selected, and so it has been moved into a common code file Signed-off-by: Bruno Larsen (billionai) Reviewed-by: Richard Henderson Reviewed-by: David Gibson --- target/ppc/cpu.c | 17 +++++++++++++++++ target/ppc/misc_helper.c | 16 ---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index 82e276349a..8a39cba5be 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -24,6 +24,7 @@ #include "exec/log.h" #include "fpu/softfloat-helpers.h" #include "mmu-hash64.h" +#include "helper_regs.h" =20 target_ulong cpu_read_xer(CPUPPCState *env) { @@ -92,3 +93,19 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong value) env->spr[SPR_SDR1] =3D value; } #endif + +/* GDBstub can read and write MSR... */ +void ppc_store_msr(CPUPPCState *env, target_ulong value) +{ + hreg_store_msr(env, value, 0); +} + +void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) +{ + PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); + CPUPPCState *env =3D &cpu->env; + + env->spr[SPR_LPCR] =3D val & pcc->lpcr_mask; + /* The gtse bit affects hflags */ + hreg_compute_hflags(env); +} diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 08a31da289..442b12652c 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -255,22 +255,6 @@ target_ulong helper_clcs(CPUPPCState *env, uint32_t ar= g) /*************************************************************************= ****/ /* Special registers manipulation */ =20 -/* GDBstub can read and write MSR... */ -void ppc_store_msr(CPUPPCState *env, target_ulong value) -{ - hreg_store_msr(env, value, 0); -} - -void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) -{ - PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); - CPUPPCState *env =3D &cpu->env; - - env->spr[SPR_LPCR] =3D val & pcc->lpcr_mask; - /* The gtse bit affects hflags */ - hreg_compute_hflags(env); -} - /* * This code is lifted from MacOnLinux. It is called whenever THRM1,2 * or 3 is read an fixes up the values in such a way that will make --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621351426; cv=none; d=zohomail.com; s=zohoarc; b=MeLuTQI6epz4cqa1kwArmniUtuGJPeaux9G9V4icts7y4DaQAlHaEFvuLpaojdc6sa4anJ9+Qddml0ODeMBnJ08y9m7U/2hWGKSFp1drgOta806I6BWmAWAacQ9tHYBxRZh036cSqZzKtsp0qvpIS2n7AwpMw/Cf0r3Zlt1xkDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621351426; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=UlBkKHSjcXFYXwbvZvSePm19BdyVdjS0zAmp19y9PVw=; b=YBqGZ2MK+YaYPliBEIAyFoN49PZSxizQ8QAsmj9H+xae4EruruwYC/SyUIst5cL28mZRDqEfbroNt6i+fJHg0d/usuamULmaZbU/zK3HB62ZTZ4qg4CCpgCFJYVvPFOvc7ek27kvIddLcSpsPo+AEeCiz5KDovV2v2YOB1F81n0= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621351426293695.7139981519819; Tue, 18 May 2021 08:23:46 -0700 (PDT) Received: from localhost ([::1]:33678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1ZQ-0006uc-Qr for importer@patchew.org; Tue, 18 May 2021 11:23:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1JA-0004oj-TU; Tue, 18 May 2021 11:06:56 -0400 Received: from [201.28.113.2] (port=38818 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1J8-00087L-7e; Tue, 18 May 2021 11:06:56 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:36 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id 41214801362; Tue, 18 May 2021 12:05:36 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 3/7] target/ppc: reduce usage of fpscr_set_rounding_mode Date: Tue, 18 May 2021 12:05:11 -0300 Message-Id: <20210518150515.57983-4-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:36.0429 (UTC) FILETIME=[41D655D0:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" It is preferable to store the current rounding mode and restore from that than recalculating from fpscr, so we changed the behavior of do_fri and VSX_ROUND to do it like that. Suggested-by: Richard Henderson Signed-off-by: Bruno Larsen (billionai) Reviewed-by: Richard Henderson --- target/ppc/fpu_helper.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 44315fca0b..4799d5f5e4 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -822,6 +822,7 @@ static inline uint64_t do_fri(CPUPPCState *env, uint64_= t arg, int rounding_mode) { CPU_DoubleU farg; + int old_rounding_mode =3D get_float_rounding_mode(&env->fp_status); =20 farg.ll =3D arg; =20 @@ -834,8 +835,7 @@ static inline uint64_t do_fri(CPUPPCState *env, uint64_= t arg, float_flag_inexact; set_float_rounding_mode(rounding_mode, &env->fp_status); farg.ll =3D float64_round_to_int(farg.d, &env->fp_status); - /* Restore rounding mode from FPSCR */ - fpscr_set_rounding_mode(env); + set_float_rounding_mode(old_rounding_mode, &env->fp_status); =20 /* fri* does not set FPSCR[XX] */ if (!inexact) { @@ -3136,8 +3136,10 @@ void helper_##op(CPUPPCState *env, ppc_vsr_t *xt, pp= c_vsr_t *xb) \ { \ ppc_vsr_t t =3D *xt; \ int i; \ + int curr_rounding_mode; \ \ if (rmode !=3D FLOAT_ROUND_CURRENT) { \ + curr_rounding_mode =3D get_float_rounding_mode(&env->fp_status); \ set_float_rounding_mode(rmode, &env->fp_status); \ } \ \ @@ -3160,7 +3162,7 @@ void helper_##op(CPUPPCState *env, ppc_vsr_t *xt, ppc= _vsr_t *xb) \ * mode from FPSCR \ */ \ if (rmode !=3D FLOAT_ROUND_CURRENT) { \ - fpscr_set_rounding_mode(env); \ + set_float_rounding_mode(curr_rounding_mode, &env->fp_status); \ env->fp_status.float_exception_flags &=3D ~float_flag_inexact; \ } \ \ --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621350649; cv=none; d=zohomail.com; s=zohoarc; b=LxRxVEHeUpdrpd9XwdBQNLXhSKaIXIW34jynUlGh2IHSaCA66UefTtobLaG5GtPN+bR4daPcG2ZPdkoFPVlYF8ZQ43LapskWQ0WmIbKd3kWnlr+OA7eHV6DIPSw6lyvc3TBlNXscpon1sUZEIMSXQf7UJ+Pt4slz048GcE5yKZc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621350649; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=kszbLkrxEWNKnTCrntCaI3sviol3abO6SQcYHQtELcg=; b=dfkQxbGNwXE6CPQigwZq8he7GA9fx3V1JxrzF4WwkiXmrvopZHZXR0a64gSIIfXQqVlm5uUqZr2cRYiZmbCtEo52zIztXFa73ERulGqzHZ8FsabILPlFSykxOfMRF4sbLVgRTFqdGvZodI6e4NjmS4avwjOQ5LuAx5IAFQQI998= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621350649615810.299790736518; Tue, 18 May 2021 08:10:49 -0700 (PDT) Received: from localhost ([::1]:43712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1Mu-00013U-Nk for importer@patchew.org; Tue, 18 May 2021 11:10:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1JF-0004zG-J3; Tue, 18 May 2021 11:07:01 -0400 Received: from [201.28.113.2] (port=38818 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1JB-00087L-Tc; Tue, 18 May 2021 11:07:01 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:37 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id 4AE7B801362; Tue, 18 May 2021 12:05:37 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 4/7] target/ppc: overhauled and moved logic of storing fpscr Date: Tue, 18 May 2021 12:05:12 -0300 Message-Id: <20210518150515.57983-5-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:37.0476 (UTC) FILETIME=[42761840:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Followed the suggested overhaul to store_fpscr logic, and moved it to cpu.c where it can be accessed in !TCG builds. The overhaul was suggesting because storing a value to fpscr should never raise an exception, so we could remove all the mess that happened with POWERPC_EXCP_FP. We also moved fpscr_set_rounding_mode into cpu.c as it could now be moved there, and it is needed when a value for the fpscr is being stored directly. Suggested-by: Richard Henderson Signed-off-by: Bruno Larsen (billionai) Reviewed-by: Richard Henderson --- target/ppc/cpu.c | 43 ++++++++ target/ppc/cpu.h | 12 +- target/ppc/fpu_helper.c | 238 +++------------------------------------- target/ppc/gdbstub.c | 6 +- 4 files changed, 65 insertions(+), 234 deletions(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index 8a39cba5be..b0ac22b5ce 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -25,6 +25,7 @@ #include "fpu/softfloat-helpers.h" #include "mmu-hash64.h" #include "helper_regs.h" +#include "sysemu/tcg.h" =20 target_ulong cpu_read_xer(CPUPPCState *env) { @@ -109,3 +110,45 @@ void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) /* The gtse bit affects hflags */ hreg_compute_hflags(env); } + +static inline void fpscr_set_rounding_mode(CPUPPCState *env) +{ + int rnd_type; + + /* Set rounding mode */ + switch (fpscr_rn) { + case 0: + /* Best approximation (round to nearest) */ + rnd_type =3D float_round_nearest_even; + break; + case 1: + /* Smaller magnitude (round toward zero) */ + rnd_type =3D float_round_to_zero; + break; + case 2: + /* Round toward +infinite */ + rnd_type =3D float_round_up; + break; + default: + case 3: + /* Round toward -infinite */ + rnd_type =3D float_round_down; + break; + } + set_float_rounding_mode(rnd_type, &env->fp_status); +} + +void ppc_store_fpscr(CPUPPCState *env, target_ulong val) +{ + val &=3D ~(FP_VX | FP_FEX); + if (val & FPSCR_IX) { + val |=3D FP_VX; + } + if ((val >> FPSCR_XX) & (val >> FPSCR_XE) & 0x1f) { + val |=3D FP_FEX; + } + env->fpscr =3D val; + if (tcg_enabled()) { + fpscr_set_rounding_mode(env); + } +} diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index f43ceec5cb..b9eb2690cf 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -679,11 +679,11 @@ enum { #define fpscr_ni (((env->fpscr) >> FPSCR_NI) & 0x1) #define fpscr_rn (((env->fpscr) >> FPSCR_RN0) & 0x3) /* Invalid operation exception summary */ -#define fpscr_ix ((env->fpscr) & ((1 << FPSCR_VXSNAN) | (1 << FPSCR_VXISI)= | \ - (1 << FPSCR_VXIDI) | (1 << FPSCR_VXZDZ)= | \ - (1 << FPSCR_VXIMZ) | (1 << FPSCR_VXVC) = | \ - (1 << FPSCR_VXSOFT) | (1 << FPSCR_VXSQRT= ) | \ - (1 << FPSCR_VXCVI))) +#define FPSCR_IX ((1 << FPSCR_VXSNAN) | (1 << FPSCR_VXISI) | \ + (1 << FPSCR_VXIDI) | (1 << FPSCR_VXZDZ) | \ + (1 << FPSCR_VXIMZ) | (1 << FPSCR_VXVC) | \ + (1 << FPSCR_VXSOFT) | (1 << FPSCR_VXSQRT) | \ + (1 << FPSCR_VXCVI)) /* exception summary */ #define fpscr_ex (((env->fpscr) >> FPSCR_XX) & 0x1F) /* enabled exception summary */ @@ -1338,7 +1338,7 @@ void cpu_ppc_set_vhyp(PowerPCCPU *cpu, PPCVirtualHype= rvisor *vhyp); #endif #endif =20 -void store_fpscr(CPUPPCState *env, uint64_t arg, uint32_t mask); +void ppc_store_fpscr(CPUPPCState *env, target_ulong val); void helper_hfscr_facility_check(CPUPPCState *env, uint32_t bit, const char *caller, uint32_t cause); =20 diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 4799d5f5e4..cc03f8d16a 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -383,247 +383,35 @@ static inline void float_inexact_excp(CPUPPCState *e= nv) } } =20 -static inline void fpscr_set_rounding_mode(CPUPPCState *env) -{ - int rnd_type; - - /* Set rounding mode */ - switch (fpscr_rn) { - case 0: - /* Best approximation (round to nearest) */ - rnd_type =3D float_round_nearest_even; - break; - case 1: - /* Smaller magnitude (round toward zero) */ - rnd_type =3D float_round_to_zero; - break; - case 2: - /* Round toward +infinite */ - rnd_type =3D float_round_up; - break; - default: - case 3: - /* Round toward -infinite */ - rnd_type =3D float_round_down; - break; - } - set_float_rounding_mode(rnd_type, &env->fp_status); -} - void helper_fpscr_clrbit(CPUPPCState *env, uint32_t bit) { - int prev; - - prev =3D (env->fpscr >> bit) & 1; - env->fpscr &=3D ~(1 << bit); - if (prev =3D=3D 1) { - switch (bit) { - case FPSCR_RN1: - case FPSCR_RN0: - fpscr_set_rounding_mode(env); - break; - case FPSCR_VXSNAN: - case FPSCR_VXISI: - case FPSCR_VXIDI: - case FPSCR_VXZDZ: - case FPSCR_VXIMZ: - case FPSCR_VXVC: - case FPSCR_VXSOFT: - case FPSCR_VXSQRT: - case FPSCR_VXCVI: - if (!fpscr_ix) { - /* Set VX bit to zero */ - env->fpscr &=3D ~FP_VX; - } - break; - case FPSCR_OX: - case FPSCR_UX: - case FPSCR_ZX: - case FPSCR_XX: - case FPSCR_VE: - case FPSCR_OE: - case FPSCR_UE: - case FPSCR_ZE: - case FPSCR_XE: - if (!fpscr_eex) { - /* Set the FEX bit */ - env->fpscr &=3D ~FP_FEX; - } - break; - default: - break; - } + uint32_t mask =3D 1u << bit; + if (env->fpscr & mask) { + ppc_store_fpscr(env, env->fpscr & ~mask); } } =20 void helper_fpscr_setbit(CPUPPCState *env, uint32_t bit) { - CPUState *cs =3D env_cpu(env); - int prev; - - prev =3D (env->fpscr >> bit) & 1; - env->fpscr |=3D 1 << bit; - if (prev =3D=3D 0) { - switch (bit) { - case FPSCR_VX: - env->fpscr |=3D FP_FX; - if (fpscr_ve) { - goto raise_ve; - } - break; - case FPSCR_OX: - env->fpscr |=3D FP_FX; - if (fpscr_oe) { - goto raise_oe; - } - break; - case FPSCR_UX: - env->fpscr |=3D FP_FX; - if (fpscr_ue) { - goto raise_ue; - } - break; - case FPSCR_ZX: - env->fpscr |=3D FP_FX; - if (fpscr_ze) { - goto raise_ze; - } - break; - case FPSCR_XX: - env->fpscr |=3D FP_FX; - if (fpscr_xe) { - goto raise_xe; - } - break; - case FPSCR_VXSNAN: - case FPSCR_VXISI: - case FPSCR_VXIDI: - case FPSCR_VXZDZ: - case FPSCR_VXIMZ: - case FPSCR_VXVC: - case FPSCR_VXSOFT: - case FPSCR_VXSQRT: - case FPSCR_VXCVI: - env->fpscr |=3D FP_VX; - env->fpscr |=3D FP_FX; - if (fpscr_ve !=3D 0) { - goto raise_ve; - } - break; - case FPSCR_VE: - if (fpscr_vx !=3D 0) { - raise_ve: - env->error_code =3D POWERPC_EXCP_FP; - if (fpscr_vxsnan) { - env->error_code |=3D POWERPC_EXCP_FP_VXSNAN; - } - if (fpscr_vxisi) { - env->error_code |=3D POWERPC_EXCP_FP_VXISI; - } - if (fpscr_vxidi) { - env->error_code |=3D POWERPC_EXCP_FP_VXIDI; - } - if (fpscr_vxzdz) { - env->error_code |=3D POWERPC_EXCP_FP_VXZDZ; - } - if (fpscr_vximz) { - env->error_code |=3D POWERPC_EXCP_FP_VXIMZ; - } - if (fpscr_vxvc) { - env->error_code |=3D POWERPC_EXCP_FP_VXVC; - } - if (fpscr_vxsoft) { - env->error_code |=3D POWERPC_EXCP_FP_VXSOFT; - } - if (fpscr_vxsqrt) { - env->error_code |=3D POWERPC_EXCP_FP_VXSQRT; - } - if (fpscr_vxcvi) { - env->error_code |=3D POWERPC_EXCP_FP_VXCVI; - } - goto raise_excp; - } - break; - case FPSCR_OE: - if (fpscr_ox !=3D 0) { - raise_oe: - env->error_code =3D POWERPC_EXCP_FP | POWERPC_EXCP_FP_OX; - goto raise_excp; - } - break; - case FPSCR_UE: - if (fpscr_ux !=3D 0) { - raise_ue: - env->error_code =3D POWERPC_EXCP_FP | POWERPC_EXCP_FP_UX; - goto raise_excp; - } - break; - case FPSCR_ZE: - if (fpscr_zx !=3D 0) { - raise_ze: - env->error_code =3D POWERPC_EXCP_FP | POWERPC_EXCP_FP_ZX; - goto raise_excp; - } - break; - case FPSCR_XE: - if (fpscr_xx !=3D 0) { - raise_xe: - env->error_code =3D POWERPC_EXCP_FP | POWERPC_EXCP_FP_XX; - goto raise_excp; - } - break; - case FPSCR_RN1: - case FPSCR_RN0: - fpscr_set_rounding_mode(env); - break; - default: - break; - raise_excp: - /* Update the floating-point enabled exception summary */ - env->fpscr |=3D FP_FEX; - /* We have to update Rc1 before raising the exception */ - cs->exception_index =3D POWERPC_EXCP_PROGRAM; - break; - } + uint32_t mask =3D 1u << bit; + if (!(env->fpscr & mask)) { + ppc_store_fpscr(env, env->fpscr | mask); } } =20 -void helper_store_fpscr(CPUPPCState *env, uint64_t arg, uint32_t mask) +void helper_store_fpscr(CPUPPCState *env, uint64_t val, uint32_t nibbles) { - CPUState *cs =3D env_cpu(env); - target_ulong prev, new; + target_ulong mask =3D 0; int i; =20 - prev =3D env->fpscr; - new =3D (target_ulong)arg; - new &=3D ~(FP_FEX | FP_VX); - new |=3D prev & (FP_FEX | FP_VX); + /* TODO: push this extension back to translation time */ for (i =3D 0; i < sizeof(target_ulong) * 2; i++) { - if (mask & (1 << i)) { - env->fpscr &=3D ~(0xFLL << (4 * i)); - env->fpscr |=3D new & (0xFLL << (4 * i)); + if (nibbles & (1 << i)) { + mask |=3D (target_ulong) 0xf << (4 * i); } } - /* Update VX and FEX */ - if (fpscr_ix !=3D 0) { - env->fpscr |=3D FP_VX; - } else { - env->fpscr &=3D ~FP_VX; - } - if ((fpscr_ex & fpscr_eex) !=3D 0) { - env->fpscr |=3D FP_FEX; - cs->exception_index =3D POWERPC_EXCP_PROGRAM; - /* XXX: we should compute it properly */ - env->error_code =3D POWERPC_EXCP_FP; - } else { - env->fpscr &=3D ~FP_FEX; - } - fpscr_set_rounding_mode(env); -} - -void store_fpscr(CPUPPCState *env, uint64_t arg, uint32_t mask) -{ - helper_store_fpscr(env, arg, mask); + val =3D (val & mask) | (env->fpscr & ~mask); + ppc_store_fpscr(env, val); } =20 static void do_float_check_status(CPUPPCState *env, uintptr_t raddr) diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index 9339e7eafe..c7d866cfcc 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -272,7 +272,7 @@ int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *m= em_buf, int n) break; case 70: /* fpscr */ - store_fpscr(env, ldtul_p(mem_buf), 0xffffffff); + ppc_store_fpscr(env, ldtul_p(mem_buf)); break; } } @@ -322,7 +322,7 @@ int ppc_cpu_gdb_write_register_apple(CPUState *cs, uint= 8_t *mem_buf, int n) break; case 70 + 32: /* fpscr */ - store_fpscr(env, ldq_p(mem_buf), 0xffffffff); + ppc_store_fpscr(env, ldq_p(mem_buf)); break; } } @@ -475,7 +475,7 @@ static int gdb_set_float_reg(CPUPPCState *env, uint8_t = *mem_buf, int n) } if (n =3D=3D 32) { ppc_maybe_bswap_register(env, mem_buf, 4); - store_fpscr(env, ldl_p(mem_buf), 0xffffffff); + ppc_store_fpscr(env, ldl_p(mem_buf)); return 4; } return 0; --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621352165; cv=none; d=zohomail.com; s=zohoarc; b=PGaqKEXKMaLw4lLsa/lvwSxSO9QriX+oraRoj58aPjoniUQXcjNZ4ef4Sm222FbNHsnzI7kH+V7Xn3kkzvmUS3Itr0HGKUoJ6JwY9sheBWnRUn6lGylst8uLGnQ+aKLZhrAldhK6ALAHr3OdbZvN7lwQ/0jyxMgO5xwxZkPwkrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621352165; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=8aBfqU3MMls1VXUChWRw9PX7LRY718nnbeBYJvMrDjI=; b=acqqVoGVIMvdDSu/SkaiYf9eXH+Avzjq7h7T3xv2rGImTAnbtMRYR84As7+6zW1imws1aUnvW8pI80CXwLBaRbVXzn2qiY5GUg4wBZ8yTy4FK52yfitiNhzrbhq86tKlcFyAzwf23CoOXyPLy0w2vGfSjofvVRBMVt8NK8jVVCM= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621352165021691.0419552356107; Tue, 18 May 2021 08:36:05 -0700 (PDT) Received: from localhost ([::1]:59340 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1lK-0008Up-Ji for importer@patchew.org; Tue, 18 May 2021 11:36:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59692) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1JI-00055k-CN; Tue, 18 May 2021 11:07:04 -0400 Received: from [201.28.113.2] (port=38818 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1JG-00087L-Ol; Tue, 18 May 2021 11:07:04 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:38 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id 7814F801362; Tue, 18 May 2021 12:05:38 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 5/7] target/ppc: removed unnecessary inclusion of helper-proto.h Date: Tue, 18 May 2021 12:05:13 -0300 Message-Id: <20210518150515.57983-6-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:38.0648 (UTC) FILETIME=[4328ED80:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These files included helper-proto.h, but didn't use or declare any helpers, so the #include has been removed Signed-off-by: Bruno Larsen (billionai) Reviewed-by: Richard Henderson --- target/ppc/cpu_init.c | 1 - target/ppc/gdbstub.c | 1 - target/ppc/mmu-hash32.c | 1 - target/ppc/mmu-radix64.c | 1 - 4 files changed, 4 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index d0fa219880..88a8344eea 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -43,7 +43,6 @@ #include "fpu/softfloat.h" #include "qapi/qapi-commands-machine-target.h" =20 -#include "exec/helper-proto.h" #include "helper_regs.h" #include "internal.h" #include "spr_tcg.h" diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index c7d866cfcc..09ff1328d4 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -20,7 +20,6 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/gdbstub.h" -#include "exec/helper-proto.h" #include "internal.h" =20 static int ppc_gdb_register_len_apple(int n) diff --git a/target/ppc/mmu-hash32.c b/target/ppc/mmu-hash32.c index 178cf090b7..3d693a4fd4 100644 --- a/target/ppc/mmu-hash32.c +++ b/target/ppc/mmu-hash32.c @@ -21,7 +21,6 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/exec-all.h" -#include "exec/helper-proto.h" #include "sysemu/kvm.h" #include "kvm_ppc.h" #include "mmu-hash32.h" diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 30fcfcf11f..a6de6bf606 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -20,7 +20,6 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/exec-all.h" -#include "exec/helper-proto.h" #include "qemu/error-report.h" #include "sysemu/kvm.h" #include "kvm_ppc.h" --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621351703; cv=none; d=zohomail.com; s=zohoarc; b=Ay/PKcEuXgLB+kiaj9i/6FCYoHlQyakzs81UeOcjR6R4fxsBNBOsywBU1bBhtI3/jUC1QY6znjx7oXamBbx0zl7VvXnAz9qfAt1OQd7FRHbbgr5BL/ZJ+L8FX5twWMmzrFuP2IH/F3QTXafHXp+iuovNHcMXqZP/FeNCjhvB35M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621351703; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=cDIFH3kSFjtGuIt74uvxB6LTJYLgMctqH2DB23sGPL8=; b=aFqGI0ffp0XvQeI0Q1R2A0lMYqL1COO7Dq0OsA1tZwNbJrw32h7GZ6ZAQHrXfMqIwals08aarTqw7emBO0oHWInTZRdGs18W4W0TWwNShu97XsOCyMP069UH/xNW5q8E85pSfPALvlfqiQImXAbt/H9hJlP7zR0J/ZmQ4q3opgU= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621351702987712.7424534135693; Tue, 18 May 2021 08:28:22 -0700 (PDT) Received: from localhost ([::1]:44356 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1ds-0006Qq-M5 for importer@patchew.org; Tue, 18 May 2021 11:28:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1JO-0005AN-Vv; Tue, 18 May 2021 11:07:11 -0400 Received: from [201.28.113.2] (port=38818 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1JJ-00087L-Ec; Tue, 18 May 2021 11:07:10 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:39 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id 93B0F801362; Tue, 18 May 2021 12:05:39 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 6/7] target/ppc: moved ppc_cpu_do_interrupt to cpu.c Date: Tue, 18 May 2021 12:05:14 -0300 Message-Id: <20210518150515.57983-7-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:39.0773 (UTC) FILETIME=[43D496D0:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Moved the ppc_cpu_do_interrupt function to cpu.c file, where it makes more sense, and turned powerpc_excp not static, as it now needs to be accessed from outside of excp_helper.c Signed-off-by: Bruno Larsen (billionai) --- target/ppc/cpu.c | 20 ++++++++++++++++++++ target/ppc/cpu.h | 1 + target/ppc/excp_helper.c | 19 +------------------ 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index a00ff2d5a3..eb4b705089 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -152,3 +152,23 @@ void ppc_store_fpscr(CPUPPCState *env, target_ulong va= l) fpscr_set_rounding_mode(env); } } + +/* Exception processing */ +#if defined(CONFIG_USER_ONLY) +void ppc_cpu_do_interrupt(CPUState *cs) +{ + PowerPCCPU *cpu =3D POWERPC_CPU(cs); + CPUPPCState *env =3D &cpu->env; + + cs->exception_index =3D POWERPC_EXCP_NONE; + env->error_code =3D 0; +} +#else +void ppc_cpu_do_interrupt(CPUState *cs) +{ + PowerPCCPU *cpu =3D POWERPC_CPU(cs); + CPUPPCState *env =3D &cpu->env; + + powerpc_excp(cpu, env->excp_model, cs->exception_index); +} +#endif diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index b9eb2690cf..01dac2b12d 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1258,6 +1258,7 @@ DECLARE_OBJ_CHECKERS(PPCVirtualHypervisor, PPCVirtual= HypervisorClass, #endif /* CONFIG_USER_ONLY */ =20 void ppc_cpu_do_interrupt(CPUState *cpu); +void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp); bool ppc_cpu_exec_interrupt(CPUState *cpu, int int_req); void ppc_cpu_dump_state(CPUState *cpu, FILE *f, int flags); void ppc_cpu_dump_statistics(CPUState *cpu, int flags); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index f4f15279eb..80bb6e70e9 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -38,15 +38,6 @@ /*************************************************************************= ****/ /* Exception processing */ #if defined(CONFIG_USER_ONLY) -void ppc_cpu_do_interrupt(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - cs->exception_index =3D POWERPC_EXCP_NONE; - env->error_code =3D 0; -} - static void ppc_hw_interrupt(CPUPPCState *env) { CPUState *cs =3D env_cpu(env); @@ -324,7 +315,7 @@ static inline void powerpc_set_excp_state(PowerPCCPU *c= pu, * Note that this function should be greatly optimized when called * with a constant excp, from ppc_hw_interrupt */ -static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) +inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp) { CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; @@ -968,14 +959,6 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int e= xcp_model, int excp) powerpc_set_excp_state(cpu, vector, new_msr); } =20 -void ppc_cpu_do_interrupt(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - powerpc_excp(cpu, env->excp_model, cs->exception_index); -} - static void ppc_hw_interrupt(CPUPPCState *env) { PowerPCCPU *cpu =3D env_archcpu(env); --=20 2.17.1 From nobody Fri May 17 03:00:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621351098; cv=none; d=zohomail.com; s=zohoarc; b=AqgMKjFXls3CdsV6JAOu5QRlOm1Td+1H7T4SsSCf4C6mrK4b7JBrsimqDcSY6Bv+s4dvJ/FNKt7CR1fP7vmDSIraTXIC6Aux4b4B7lhsN931kep3oz4Bz+Ce9m8Upfq/RzAkgiEZWhsLLGVclvH40ndfgybptpbAnH1pNQxPloU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621351098; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=YVJPl0K630WSSv84QxGMrqmWt9t1cnrpQDDHjxK13Zc=; b=e9dINzEtFBQEnUR+B6w+i5fxGdJuO5pOeyykQpcSdQ87UuZJ9Es69Tk7e1x5Aw6kmKjyvk9T5nKC1kAqIEZbRhe6+TVlY+uJ4mVewkIAXLy8fU2oQLnO1GELPbdXKgYo82Ei0e0tekhHoCLOuoar4gnGkNQ+r90C+OHwzRhJm1k= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621351098868510.91878271527355; Tue, 18 May 2021 08:18:18 -0700 (PDT) Received: from localhost ([::1]:54324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1U9-0000Dp-5L for importer@patchew.org; Tue, 18 May 2021 11:18:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59968) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lj1KT-0007QZ-6G; Tue, 18 May 2021 11:08:17 -0400 Received: from [201.28.113.2] (port=29878 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lj1KR-0000fc-1m; Tue, 18 May 2021 11:08:16 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 18 May 2021 12:05:41 -0300 Received: from eldorado.org.br (unknown [10.10.71.235]) by power9a (Postfix) with ESMTP id DB6A9801362; Tue, 18 May 2021 12:05:40 -0300 (-03) From: "Bruno Larsen (billionai)" To: qemu-devel@nongnu.org Subject: [PATCH v2 7/7] target/ppc: wrapped some TCG only logic with ifdefs Date: Tue, 18 May 2021 12:05:15 -0300 Message-Id: <20210518150515.57983-8-bruno.larsen@eldorado.org.br> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> References: <20210518150515.57983-1-bruno.larsen@eldorado.org.br> X-OriginalArrivalTime: 18 May 2021 15:05:41.0070 (UTC) FILETIME=[449A7EE0:01D74BF7] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) 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=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: farosas@linux.ibm.com, richard.henderson@linaro.org, luis.pires@eldorado.org.br, lucas.araujo@eldorado.org.br, fernando.valle@eldorado.org.br, qemu-ppc@nongnu.org, "Bruno Larsen \(billionai\)" , matheus.ferst@eldorado.org.br, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Wrapped some function calls in cpu_init.c, gdbstub.c, mmu-hash64.c and excp_helper.c that were TCG only with ifdef CONFIG_TCG, to support building without TCG. for excp_helper we also moved the function do_rfi higher in the file to reduce the ifdef count. Signed-off-by: Bruno Larsen (billionai) --- target/ppc/cpu_init.c | 16 +++++--- target/ppc/excp_helper.c | 82 +++++++++++++++++++++++----------------- target/ppc/mmu-hash64.c | 8 ++++ 3 files changed, 66 insertions(+), 40 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 88a8344eea..5ab4d4ef2b 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -1203,15 +1203,13 @@ static void register_BookE206_sprs(CPUPPCState *env= , uint32_t mas_mask, /* TLB assist registers */ /* XXX : not implemented */ for (i =3D 0; i < 8; i++) { - void (*uea_write)(DisasContext *ctx, int sprn, int gprn) =3D - &spr_write_generic32; - if (i =3D=3D 2 && (mas_mask & (1 << i)) && (env->insns_flags & PPC= _64B)) { - uea_write =3D &spr_write_generic; - } if (mas_mask & (1 << i)) { spr_register(env, mas_sprn[i], mas_names[i], SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, uea_write, + &spr_read_generic, + (i =3D=3D 2 && (mas_mask & (1 << i)) && + (env->insns_flags & PPC_64B)) + ? &spr_write_generic : &spr_write_generic32, 0x00000000); } } @@ -8605,11 +8603,13 @@ static void ppc_cpu_realize(DeviceState *dev, Error= **errp) } } =20 +#ifdef CONFIG_TCG create_ppc_opcodes(cpu, &local_err); if (local_err !=3D NULL) { error_propagate(errp, local_err); goto unrealize; } +#endif init_ppc_proc(cpu); =20 ppc_gdb_init(cs, pcc); @@ -8798,7 +8798,9 @@ static void ppc_cpu_unrealize(DeviceState *dev) =20 cpu_remove_sync(CPU(cpu)); =20 +#ifdef CONFIG_TCG destroy_ppc_opcodes(cpu); +#endif } =20 static gint ppc_cpu_compare_class_pvr(gconstpointer a, gconstpointer b) @@ -9296,7 +9298,9 @@ static void ppc_cpu_class_init(ObjectClass *oc, void = *data) cc->class_by_name =3D ppc_cpu_class_by_name; cc->has_work =3D ppc_cpu_has_work; cc->dump_state =3D ppc_cpu_dump_state; +#ifdef CONFIG_TCG cc->dump_statistics =3D ppc_cpu_dump_statistics; +#endif cc->set_pc =3D ppc_cpu_set_pc; cc->gdb_read_register =3D ppc_cpu_gdb_read_register; cc->gdb_write_register =3D ppc_cpu_gdb_write_register; diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 80bb6e70e9..a14b529722 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -19,9 +19,13 @@ #include "qemu/osdep.h" #include "qemu/main-loop.h" #include "cpu.h" +#ifdef CONFIG_TCG #include "exec/helper-proto.h" +#endif #include "exec/exec-all.h" +#ifdef CONFIG_TCG #include "exec/cpu_ldst.h" +#endif #include "internal.h" #include "helper_regs.h" =20 @@ -1191,6 +1195,7 @@ void raise_exception_ra(CPUPPCState *env, uint32_t ex= ception, raise_exception_err_ra(env, exception, 0, raddr); } =20 +#ifdef CONFIG_TCG void helper_raise_exception_err(CPUPPCState *env, uint32_t exception, uint32_t error_code) { @@ -1201,8 +1206,43 @@ void helper_raise_exception(CPUPPCState *env, uint32= _t exception) { raise_exception_err_ra(env, exception, 0, 0); } +#endif =20 #if !defined(CONFIG_USER_ONLY) +static inline void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong= msr) +{ + CPUState *cs =3D env_cpu(env); + + /* MSR:POW cannot be set by any form of rfi */ + msr &=3D ~(1ULL << MSR_POW); + +#if defined(TARGET_PPC64) + /* Switching to 32-bit ? Crop the nip */ + if (!msr_is_64bit(env, msr)) { + nip =3D (uint32_t)nip; + } +#else + nip =3D (uint32_t)nip; +#endif + /* XXX: beware: this is false if VLE is supported */ + env->nip =3D nip & ~((target_ulong)0x00000003); + hreg_store_msr(env, msr, 1); +#if defined(DEBUG_OP) + cpu_dump_rfi(env->nip, env->msr); +#endif + /* + * No need to raise an exception here, as rfi is always the last + * insn of a TB + */ + cpu_interrupt_exittb(cs); + /* Reset the reservation */ + env->reserve_addr =3D -1; + + /* Context synchronizing: check if TCG TLB needs flush */ + check_tlb_flush(env, false); +} + +#ifdef CONFIG_TCG void helper_store_msr(CPUPPCState *env, target_ulong val) { uint32_t excp =3D hreg_store_msr(env, val, 0); @@ -1243,39 +1283,6 @@ void helper_pminsn(CPUPPCState *env, powerpc_pm_insn= _t insn) } #endif /* defined(TARGET_PPC64) */ =20 -static inline void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong= msr) -{ - CPUState *cs =3D env_cpu(env); - - /* MSR:POW cannot be set by any form of rfi */ - msr &=3D ~(1ULL << MSR_POW); - -#if defined(TARGET_PPC64) - /* Switching to 32-bit ? Crop the nip */ - if (!msr_is_64bit(env, msr)) { - nip =3D (uint32_t)nip; - } -#else - nip =3D (uint32_t)nip; -#endif - /* XXX: beware: this is false if VLE is supported */ - env->nip =3D nip & ~((target_ulong)0x00000003); - hreg_store_msr(env, msr, 1); -#if defined(DEBUG_OP) - cpu_dump_rfi(env->nip, env->msr); -#endif - /* - * No need to raise an exception here, as rfi is always the last - * insn of a TB - */ - cpu_interrupt_exittb(cs); - /* Reset the reservation */ - env->reserve_addr =3D -1; - - /* Context synchronizing: check if TCG TLB needs flush */ - check_tlb_flush(env, false); -} - void helper_rfi(CPUPPCState *env) { do_rfi(env, env->spr[SPR_SRR0], env->spr[SPR_SRR1] & 0xfffffffful); @@ -1328,8 +1335,10 @@ void helper_rfmci(CPUPPCState *env) /* FIXME: choose CSRR1 or MCSRR1 based on cpu type */ do_rfi(env, env->spr[SPR_BOOKE_MCSRR0], env->spr[SPR_BOOKE_MCSRR1]); } -#endif +#endif /* CONFIG_TCG */ +#endif /* !defined(CONFIG_USER_ONLY) */ =20 +#ifdef CONFIG_TCG void helper_tw(CPUPPCState *env, target_ulong arg1, target_ulong arg2, uint32_t flags) { @@ -1357,11 +1366,13 @@ void helper_td(CPUPPCState *env, target_ulong arg1,= target_ulong arg2, } } #endif +#endif =20 #if !defined(CONFIG_USER_ONLY) /*************************************************************************= ****/ /* PowerPC 601 specific instructions (POWER bridge) */ =20 +#ifdef CONFIG_TCG void helper_rfsvc(CPUPPCState *env) { do_rfi(env, env->lr, env->ctr & 0x0000FFFF); @@ -1506,8 +1517,10 @@ void helper_book3s_msgsndp(CPUPPCState *env, target_= ulong rb) book3s_msgsnd_common(pir, PPC_INTERRUPT_DOORBELL); } #endif +#endif /* CONFIG_TCG */ #endif =20 +#ifdef CONFIG_TCG void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) @@ -1523,3 +1536,4 @@ void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr = vaddr, env->error_code =3D insn & 0x03FF0000; cpu_loop_exit(cs); } +#endif diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index c4a4bc7cd2..5f589c9690 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -21,7 +21,9 @@ #include "qemu/units.h" #include "cpu.h" #include "exec/exec-all.h" +#ifdef CONFIG_TCG #include "exec/helper-proto.h" +#endif #include "qemu/error-report.h" #include "qemu/qemu-print.h" #include "sysemu/hw_accel.h" @@ -96,6 +98,7 @@ void dump_slb(PowerPCCPU *cpu) } } =20 +#ifdef CONFIG_TCG void helper_slbia(CPUPPCState *env, uint32_t ih) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -201,6 +204,7 @@ void helper_slbieg(CPUPPCState *env, target_ulong addr) { __helper_slbie(env, addr, true); } +#endif =20 int ppc_store_slb(PowerPCCPU *cpu, target_ulong slot, target_ulong esid, target_ulong vsid) @@ -254,6 +258,7 @@ int ppc_store_slb(PowerPCCPU *cpu, target_ulong slot, return 0; } =20 +#ifdef CONFIG_TCG static int ppc_load_slb_esid(PowerPCCPU *cpu, target_ulong rb, target_ulong *rt) { @@ -347,6 +352,7 @@ target_ulong helper_load_slb_vsid(CPUPPCState *env, tar= get_ulong rb) } return rt; } +#endif =20 /* Check No-Execute or Guarded Storage */ static inline int ppc_hash64_pte_noexec_guard(PowerPCCPU *cpu, @@ -1120,12 +1126,14 @@ void ppc_hash64_tlb_flush_hpte(PowerPCCPU *cpu, tar= get_ulong ptex, cpu->env.tlb_need_flush =3D TLB_NEED_GLOBAL_FLUSH | TLB_NEED_LOCAL_FLU= SH; } =20 +#ifdef CONFIG_TCG void helper_store_lpcr(CPUPPCState *env, target_ulong val) { PowerPCCPU *cpu =3D env_archcpu(env); =20 ppc_store_lpcr(cpu, val); } +#endif =20 void ppc_hash64_init(PowerPCCPU *cpu) { --=20 2.17.1