From nobody Tue Feb 10 09:02:00 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) client-ip=209.85.221.44; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f44.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1618859950; cv=none; d=zohomail.com; s=zohoarc; b=SJxR6/OgAoGXJCSqyEUfyHB+2RIyOm5htX1XwwyVw1spgLtx1LVVcG0hapuqsDAO5Iznxqqv4uH8g30Za5LIwH4eqXxBILVNP9r4eSXTKHJpS+qVkriBQT/fFqyUNcr626jV/jhY1rniz95qxpkw1QRgLV2UDjtHzbDIgB8OWuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618859950; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9idQeRNSVgpcYg4jC2bsnFCTDNB04ha1mM3lDtmDX/g=; b=lOHzKMM6EUdE7BIuIxxVXIawg26BsQzDdIRUbS2Meu6X0IeB77EKompFWcrHejjuBHTtb0VFGBIfki7nfYy+fqlpJKq98FaqjQircr0ob1QnvafQKp0Byxi3vVZZrzcccN5OJvVq9erF4hkWHHYiZT/BIm55R2w18NZ+EVv5qfs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by mx.zohomail.com with SMTPS id 1618859950693744.5104996297501; Mon, 19 Apr 2021 12:19:10 -0700 (PDT) Received: by mail-wr1-f44.google.com with SMTP id r7so23165086wrm.1 for ; Mon, 19 Apr 2021 12:19:10 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id l20sm510160wmg.33.2021.04.19.12.19.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Apr 2021 12:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9idQeRNSVgpcYg4jC2bsnFCTDNB04ha1mM3lDtmDX/g=; b=P5yDUNz8mNDAqz0rIZlRpo2axmEAWEY3qKoo3bdVRneKgLv2e7rzKd/QsCBUbNH9Ta ZaFtJIqF3R+yE51h99H1284ogezoZOJFVFsDG//eI8L43OeFDkVdtC7bBG4FIZLU+FQr P/pcEz3mrJMU7SYUFNNZndBA6NiBmmzHAf4mVHwPhMOzDfEW+kI0269ADRdRhp1+Wd02 9FFtrnxAymmH4R4RmHz9NxUFH6uhk1w6m8S+wrzNBuRQgUCEEbjhG/wVSCnczZqYkZM/ Qk6qL16jjT2xmOshw045ZZZTabVOfguvKKUZgfLvfA1o0c6rHNJBAXDom7iYPyEZAtDY d1aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=9idQeRNSVgpcYg4jC2bsnFCTDNB04ha1mM3lDtmDX/g=; b=iragL6s/yf3fPcCnMq8fp8ULaydYAwZzFQhNWFgdiewVKo0BOYVj5oTkoCpYFk8e2X /58j1kVMZwTGzJo4vdfr2vyZhx6wj/9zEMHyx1b0Bhd82OZfdgoJOE2gj/VG9jcISGBa 67HXx1ZUesUTQcHOYg2QbirpaSHoyvZUzzALQVqZZzAmFZzC7tdRp9xDx2E3hv9q9gyV NbPuxPPJfwvj4d5Y6mvhT//kzp6qwqVzw3lh0xEyNIvHRWTCxI8pt3eJ29MsWdhSwPlT zNurOAti+2Idg4d71s1bRtx4F5d49zG+2eCU0t5G5yLDhHlDo0gPwTHaIe1SxAeADNyY 0CvQ== X-Gm-Message-State: AOAM530eWWD1ioFzBrGx4Nfbp5DhhRFTsySNrSpbS326dyLaD4UKM4dR 6WGr9hU4aOmm4Auq4Txtkdg= X-Google-Smtp-Source: ABdhPJxH580qYZZS1oehqGPSKisZxVPPVdfdkSMzcmMSlYLGXGNCohYz1jpsw4Pzkr4yNftBfR70PA== X-Received: by 2002:adf:f106:: with SMTP id r6mr15982021wro.214.1618859948967; Mon, 19 Apr 2021 12:19:08 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Jiaxun Yang , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aleksandar Rikalo , Aurelien Jarno , Huacai Chen Subject: [PATCH v3 09/30] target/mips: Merge do_translate_address into cpu_mips_translate_address Date: Mon, 19 Apr 2021 21:18:02 +0200 Message-Id: <20210419191823.1555482-10-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210419191823.1555482-1-f4bug@amsat.org> References: <20210419191823.1555482-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) Currently cpu_mips_translate_address() calls raise_mmu_exception(), and do_translate_address() calls cpu_loop_exit_restore(). This API split is dangerous, we could call cpu_mips_translate_address without returning to the main loop. As there is only one caller, it is trivial (and safer) to merge do_translate_address() back to cpu_mips_translate_address(). Reported-by: Richard Henderson Suggested-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/internal.h | 2 +- target/mips/op_helper.c | 20 ++------------------ target/mips/tlb_helper.c | 11 ++++++----- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/target/mips/internal.h b/target/mips/internal.h index 81671d567d0..806d39fa6c3 100644 --- a/target/mips/internal.h +++ b/target/mips/internal.h @@ -148,7 +148,7 @@ void mips_cpu_do_transaction_failed(CPUState *cs, hwadd= r physaddr, int mmu_idx, MemTxAttrs attrs, MemTxResult response, uintptr_t retadd= r); hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address, - MMUAccessType access_type); + MMUAccessType access_type, uintptr_t ret= addr); #endif =20 #define cpu_signal_handler cpu_mips_signal_handler diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c index f7da8c83aee..fdae5a3d687 100644 --- a/target/mips/op_helper.c +++ b/target/mips/op_helper.c @@ -287,23 +287,6 @@ target_ulong helper_rotx(target_ulong rs, uint32_t shi= ft, uint32_t shiftx, =20 #ifndef CONFIG_USER_ONLY =20 -static inline hwaddr do_translate_address(CPUMIPSState *env, - target_ulong address, - MMUAccessType access_type, - uintptr_t retaddr) -{ - hwaddr paddr; - CPUState *cs =3D env_cpu(env); - - paddr =3D cpu_mips_translate_address(env, address, access_type); - - if (paddr =3D=3D -1LL) { - cpu_loop_exit_restore(cs, retaddr); - } else { - return paddr; - } -} - #define HELPER_LD_ATOMIC(name, insn, almask, do_cast) = \ target_ulong helper_##name(CPUMIPSState *env, target_ulong arg, int mem_id= x) \ { = \ @@ -313,7 +296,8 @@ target_ulong helper_##name(CPUMIPSState *env, target_ul= ong arg, int mem_idx) \ } = \ do_raise_exception(env, EXCP_AdEL, GETPC()); = \ } = \ - env->CP0_LLAddr =3D do_translate_address(env, arg, MMU_DATA_LOAD, GETP= C()); \ + env->CP0_LLAddr =3D cpu_mips_translate_address(env, arg, MMU_DATA_LOAD= , \ + GETPC()); = \ env->lladdr =3D arg; = \ env->llval =3D do_cast cpu_##insn##_mmuidx_ra(env, arg, mem_idx, GETPC= ()); \ return env->llval; = \ diff --git a/target/mips/tlb_helper.c b/target/mips/tlb_helper.c index 8d3ea497803..1ffdc1f8304 100644 --- a/target/mips/tlb_helper.c +++ b/target/mips/tlb_helper.c @@ -904,21 +904,22 @@ bool mips_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, =20 #ifndef CONFIG_USER_ONLY hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address, - MMUAccessType access_type) + MMUAccessType access_type, uintptr_t ret= addr) { hwaddr physical; int prot; int ret =3D 0; + CPUState *cs =3D env_cpu(env); =20 /* data access */ ret =3D get_physical_address(env, &physical, &prot, address, access_ty= pe, cpu_mmu_index(env, false)); - if (ret !=3D TLBRET_MATCH) { - raise_mmu_exception(env, address, access_type, ret); - return -1LL; - } else { + if (ret =3D=3D TLBRET_MATCH) { return physical; } + + raise_mmu_exception(env, address, access_type, ret); + cpu_loop_exit_restore(cs, retaddr); } =20 static void set_hflags_for_handler(CPUMIPSState *env) --=20 2.26.3