From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982015; cv=none; d=zohomail.com; s=zohoarc; b=kN3bQ7quGILJdXnGgoXiDN4CUb8wRnVvra+ygc9ajYT0+EC6zDd4twQEw3iXInoWa1uMLYPPWAdNSZGNfjyl74/rMKRl0AsUONaCohDVLQp+eawlfN56pgT1xG1fN2rQlO0B3Nt0ENvPPPjtJSoe/SVSbuqTvpur7c4D7f+XEpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982015; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TCPuc4QcdE6GiCVIeNAYDq7shfJ0MvEj0ABczq5KTuo=; b=Tnq05Wa7YeWDcTYnT0Wq33R/QjfBYbeK3W9CfqI2AAa33Q0vjO5qv3EJxTY4y86pRDQNAupg6BUqrO/ciWAu5QwrUQVsmxe+w+bjD9BMNTszgkgBwDXw86aoHeTCmHC/WJ/f7bf53SDM4j152j6e5BYF6PgddiBDDnetdpt20VU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982015836198.65094608461231; Wed, 17 Dec 2025 06:33:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaB-0001ed-W0; Wed, 17 Dec 2025 09:32:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsZU-0001ZU-Ox for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:12 -0500 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsZP-000733-Mp for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:05 -0500 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-47775fb6cb4so41239245e9.0 for ; Wed, 17 Dec 2025 06:32:03 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc1edd26sm40165355e9.13.2025.12.17.06.31.59 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:31:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981921; x=1766586721; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TCPuc4QcdE6GiCVIeNAYDq7shfJ0MvEj0ABczq5KTuo=; b=p4Q7xiEWtlM0PEn4TiQpWFY6+E60Xq4uNPJLHjtEBiLKdufSPpFudDATHsho43Z7/D d9vzWgStL01cOQmpd5C3baBxmE4F9SckG06/9CVcGKZj5aniEo848w681dY1ilSwxT2E oetFf0Kv3yfVulqXoYpxn/O79mKbHOAWnQPkHWtsOdikmohjil+95Lp0rkRqvfIZ9Zpc lP9z+LJttr2NPzeNmdAb6dE38YGStOk1z1eakL3tj2MTvKot2qwf6OLOT1wUKiLhNbLe e06XdmcsHjfebNsUWH0+titeujjxXYNV4bNo/O4FvEpWK64VGFfAoIgTFa6atMgzWW9N 4HNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981921; x=1766586721; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TCPuc4QcdE6GiCVIeNAYDq7shfJ0MvEj0ABczq5KTuo=; b=g+LuRX9hI7kTcVC5RH502IfAUqkimHL5Qy3yFteHzS4K2gJ0U8O3UOm/kAbtwsP0Vs +kw8aYYfaT5aoMIvcsSHhwRNcmbLKpebVERvTMNLPcVrck3c2KKfntia1xqZgO6DqUWy lQyHWjlfoUs/O5g6/gkXobOj2Vk/AwmoABRz0eWpMfOncfuxAJZa9RiOcQX3dAfW3r6O CDFIdTIKfI93QWXAK2HG3XG9nfTInlmjVUVHqoFSRkIqhPUmYmW7uqo+md+uvFLvmCJe EW4gVFibCEi+GGozPGJ7TW5wor622KkWTOSEuEdLCtKKRIkV0YT4JMxQ3fWmlaEjDJpZ k7yg== X-Gm-Message-State: AOJu0YxHvf/JTxLujdfAkczFCuwpRLYOk6oL/SOb8rzW278tCJ1VEflK N9znxgHph9RJiZa1oytGTQ6AeXXwlpoF4DbsCN4ZvTbbtyIlw0LGoEgHGZZHGfBVgUT+pLK0gv3 HUtknJuHsHg== X-Gm-Gg: AY/fxX6NZLliBbwgo6PhjKy1SWau3sDgf9hauFEM3IYGsT8OaMsksO2KifJJG8j/Z9Q rR2gX9rk/tjImEFHlSEpg/soz1CIwopiJEHgENjFnq6+FSN5OBuf32W5hjfw1+MINlTQQFY60rZ YJ5NK4kTCakNLFLej3lNptMGLI/fj1c/tFDom5yc7FarymRZ685y6y59Y2YWbesVHruPyW97A6C HDVAg98mB1NNzeNDA6o7YukwnoIwyfjoiqFzBC01vhXFE0XpqtQt7qLB3hNTL9jCy4RolJzu8dH 35Gl+NAPeZZ7DKANwq98ZF8CyhZl9lV/QuJdtREZNIhAt2tikktqNL+4YFg1NWhJj6JZHh2Tb3m 3s+gPh3QdpvMPfBNrWm9QZyX/TdyBw1ImQovLsW9N/UxpEJO3lGMo3zmIBcuOyOZJ/2zWLoUWzR GnAAMPHwJmpd2C2rfAKGrkxH8y8NXTo+Qq6tVsaltO3Qx2ZquD0wQu9paFOf8x X-Google-Smtp-Source: AGHT+IHtPK5F59Ai6OYigl+XGD/2e1KWSwOW9iwSmzj8g138QmguzhRd4e3qCseNG7m/FhMdj7FYtw== X-Received: by 2002:a05:600c:6912:b0:479:3a88:de5d with SMTP id 5b1f17b1804b1-47a8f91dac4mr201159925e9.36.1765981921014; Wed, 17 Dec 2025 06:32:01 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu , Zhao Liu Subject: [PATCH 01/14] target/i386: Remove x86_stl_phys_notdirty() leftover Date: Wed, 17 Dec 2025 15:31:37 +0100 Message-ID: <20251217143150.94463-2-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::336; envelope-from=philmd@linaro.org; helo=mail-wm1-x336.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982018533154100 Last use of x86_stl_phys_notdirty() was removed in commit 4a1e9d4d11c ("target/i386: Use atomic operations for pte updates"), let's remove. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson Reviewed-by: Zhao Liu --- target/i386/cpu.h | 1 - target/i386/helper.c | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index cee1f692a1c..4c0579a5678 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2623,7 +2623,6 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr); uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr); uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr); void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val); -void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val); void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val); void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val); void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val); diff --git a/target/i386/helper.c b/target/i386/helper.c index 72b2e195a31..d14f14e0d4d 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -690,16 +690,6 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t v= al) address_space_stb(as, addr, val, attrs, NULL); } =20 -void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val) -{ - X86CPU *cpu =3D X86_CPU(cs); - CPUX86State *env =3D &cpu->env; - MemTxAttrs attrs =3D cpu_get_mem_attrs(env); - AddressSpace *as =3D cpu_addressspace(cs, attrs); - - address_space_stl_notdirty(as, addr, val, attrs, NULL); -} - void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val) { X86CPU *cpu =3D X86_CPU(cs); --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982054; cv=none; d=zohomail.com; s=zohoarc; b=JSx5bmn3kVJvrQ/CICi2jZTggLu/i6RyBdzeKwAO3wvmgzohOjohgZI1/ErFoGkSJ9AzP3rLcKjstIratX3EXD9+K31SRC0/XroJ4A+q8Ls4tDcJ5TzUjv2OruFFy2n3HVtY/a5UegjbwI4yiDOhpfdOewCdVCPjC5xK/MKJ8OY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982054; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XUlJJIjbDM2EiiD+qKMGI+yB0A491EkhhPxVSB2GOUQ=; b=g1tbDwcJzMd7f9xm3rsNipqKq5Y5w3wV9ghtVwJSKafzY+GFiUP9KxnTtYfFU5PXrGQH0I4NakcqTuID5Tq6mzwZ+fMSMbLduRfO3uyvuJC+YYiaOy6XnrQ05rSHJ02i7qA21qO74T+a3b4uN8s4GXfAKZFcXdROqFTRfAS+Uow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982054445730.439464163236; Wed, 17 Dec 2025 06:34:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaM-0001mJ-0o; Wed, 17 Dec 2025 09:33:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsZa-0001Zx-4N for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:18 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsZX-00073w-EE for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:13 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-47795f6f5c0so37708025e9.1 for ; Wed, 17 Dec 2025 06:32:10 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4310ade81absm4996784f8f.21.2025.12.17.06.32.06 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981928; x=1766586728; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XUlJJIjbDM2EiiD+qKMGI+yB0A491EkhhPxVSB2GOUQ=; b=cdz/JGkV7QX2BMX2n47OwCzpmXVH+BQQPpHMSUX5+p87LEhHM2ZdYYc0D9BsyidC09 xD8svLMUk4l+MtsNj2PEJW5d5FFEhAXreBTuABJV2naOlfGWmCsvDQUhoDtZfgxbRBlX GRqX0wg0cso3Pr3SwPqvtcG71RzJUm9aGsCEx1kIvMki7yoZPtWAzefVYppr9AVAwPtX P+3XM8vYPxOjKKqcLw6rZvyKdEwywuKZ6SwHZFPvGaDNZfKjcyU498blH9a+vc5MQ+fy 91vRBTPB0l5vOp7zbfV9/WUJdv1qcCPLJlPp4IC+NSPnwTfTIOV9US08Tl3t4H1jTr6z hSuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981928; x=1766586728; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XUlJJIjbDM2EiiD+qKMGI+yB0A491EkhhPxVSB2GOUQ=; b=cf1qjnBrTbSmZyZUdyo9LQGg/1HtMqgpvj48fRBcjFSmr9roZNGrWQpmgyfJinhgPV oOetodNApriTsdSTc01DxJHDvieMBNV3c+G21kBZgrlaf57hn1aPKY1VqKrkA2j0xDTt t5qvkO/Dm62QTjGvux7rtqWH7J12iQwx5tCNFyl/c9AInKwb0JDN5cDzWYhrF1w0vydm 4+sWWsfmZgIuKZNT7nYbPDdcsai/TjfTA3rIJDxDfCG0C16Ug+N6mTG8hFZTSNYqfivN 0XpFUg3/22BwkewwJfjYpruXPBDB10pT3W4RUU6VQf6MI9IfFVOs5xaP+v/4EtxH6VGZ gWAQ== X-Gm-Message-State: AOJu0YwyH7k+16yj3KJZcLmycCjWVI8u/nDF0gLPkjOYaOmMwFZbAhUi Bj4jkdWWH9AjudTQKq+Up0Tcb0vIld/P7Ftm5EkdbfE4msQs+BWFIYulUNfiXsFDLVBYn59Ggbh fT/86bHHLUQ== X-Gm-Gg: AY/fxX41AL+bp9Sv/dZvFD3im3wPJlQGQ7/FJY/Xisqg54yvI3lp+Iv73UEzNxvhHrm lCfYejI9NaXABL884bdDdi3RYAAmhqFha/BSd6Mo8btEtT96ArsJ1Nyu6QOxvwCfJgERnsJ4p6J rBmwVn+2kBK/Tzktg5JDoaFuvtybEhWJxCZxyawQR6WZ+7dIBBHhwxkZgoZ921i5zP2pIQBsaKF RqIlvbh3Grc4twimzOkpLlUBvnhrL5NG4mktaWfGYx3NJC+6Zry/xP/tLhU16Esn8bZuB0A9bZT J/h1mUjMeCiw4qEZFyIyezEqd/Wn7qSk62q36gVPKcCppkQ0GyQAawKXxylhJX/PSKVLV0pkHUn W0Ei54IwcyfjEuC3Vnue/cZJ22gLoZ6P2DiRnSvi+6D1Mnc3t2aevNP1q7685CbMVuWqY/e7ZSG IqxLO1h4RojRfdftZsyCsj7D16ANkUmb02dYHf2GbO2r5WDvFLhYm5Ud+p1uzm X-Google-Smtp-Source: AGHT+IGX4yLhEa44exEf/Rh/CWISlnBAjJ9PAnCC0J8qGzSzYorg7KAW+nrmR2GBZzPYfw+iesWwjw== X-Received: by 2002:a05:600c:3f08:b0:477:9c73:2680 with SMTP id 5b1f17b1804b1-47bdd99afdcmr20270145e9.23.1765981928310; Wed, 17 Dec 2025 06:32:08 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 02/14] target/sparc: Update MMU page table using stl_phys() Date: Wed, 17 Dec 2025 15:31:38 +0100 Message-ID: <20251217143150.94463-3-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::331; envelope-from=philmd@linaro.org; helo=mail-wm1-x331.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982056033158500 stl_phys_notdirty() is supposed to do an optimized CODE path store. Here we update the page table via the DATA path, so can use the normal stl_phys() helper. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- target/sparc/mmu_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/sparc/mmu_helper.c b/target/sparc/mmu_helper.c index 217580a4d8c..46bf500ea83 100644 --- a/target/sparc/mmu_helper.c +++ b/target/sparc/mmu_helper.c @@ -189,7 +189,7 @@ static int get_physical_address(CPUSPARCState *env, CPU= TLBEntryFull *full, if (is_dirty) { pde |=3D PG_MODIFIED_MASK; } - stl_phys_notdirty(cs->as, pde_ptr, pde); + stl_phys(cs->as, pde_ptr, pde); } =20 /* the page can be put in the TLB */ --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982034; cv=none; d=zohomail.com; s=zohoarc; b=hZXoCuBVOHcgQUt72B7ivsTbB+xQ3GUwj3jfSzQV1FPtARQZe8pM5WRDfoBi987o6iPYFEbJekAWUmX6Qar0xPRvdgLvNWSJ2Wr7oTIeC1DK51TpHFG6j9M288Cy76TCNbAm2xNFvzdg89a3qo9od9ZrYODItMmGCFdhWEssgyE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982034; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XUbyBOmogDSj3+4c56O0TI6S8LRQ6OyrdzdZ0KcvzLg=; b=VgdvPVYE6/aU43/AgAbT5nO7NSRmzUxGdJzfYjTgs0ZtDwTwUn3H9+4JHTPI7EZgAkCTCaDJnXUXqDNqV2ceaZoxCuAb1IruihcnjbCPQCrshmtU7un3dO211A2gnFzytg6TP/Xscp32hQl91fYGObgd9mHjyiXC4CCmDp/4Ni0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982034325334.6145543751867; Wed, 17 Dec 2025 06:33:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaS-0001qn-Lu; Wed, 17 Dec 2025 09:33:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsZh-0001aQ-7i for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:24 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsZe-000753-QZ for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:19 -0500 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-477bf34f5f5so43221725e9.0 for ; Wed, 17 Dec 2025 06:32:18 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc1edd26sm40175975e9.13.2025.12.17.06.32.14 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981936; x=1766586736; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XUbyBOmogDSj3+4c56O0TI6S8LRQ6OyrdzdZ0KcvzLg=; b=YsqxErFsQ27g95sS63o1nCH5F4ShIdelRUrNx3JyyvRZx039r08rLRJzUOUqaWR4n0 EQgxATXGWqhIwZqnGuyBIKIBOdEuQeoGcWvvSg1suRZPtxwKU1npFn7wZk7jOHntB9qx 3/ZyUBAnAIZsgBVgKTJNVa4PURea9Bel4szdQ6bGJD8RpKvJjFJmdqqHHxthtWWPlaC0 ZmA8zOKCHeDdON3OV0EJOG08sLkld0r6byz0xNpLGfR6RDnBrgjTBaCRB47/v9pbiNMQ WU3YrNSGxkysdkLaxha2QdmE3h6QsUWSUvTgz5zBcaU2CAydUnSBpebh/8BU94NysWAh S6lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981936; x=1766586736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XUbyBOmogDSj3+4c56O0TI6S8LRQ6OyrdzdZ0KcvzLg=; b=lcrG+2w1bXwSS90ghXvmK0dA015hjgSlsWAey+WhC2K0OCoruSm1PXjd3fGIV1vxNw VbMHChItn+GbvU1Fr0vUpKxCkP8xSO+RXk82amu+YhP6b5nq4e88UveEm/0RNNGf4tDJ 6MwsYamg68IHSTkB0G9Darot8STeCT3ucXAKaEn8KTGlTaGEWMaz3LCKGRX23U3o2LKr /LmBrstIXHnK7hLsI8whE/JloPfUrnHfSSoquvG+i+4PBhcMP2Gclai8ufkuwOu9H9/i JH7pgAjPNYISlieXpQ6qOIW/TK24cafcnsuiUrIFYIKMEuUtvWsRr5IO5cfdytO29EQI byJw== X-Gm-Message-State: AOJu0YxbUjYJhl13I2r1ZExLcAY3fUmAi99Fd2NXQTAI5IQvRqZpyE5Q C7njgoiB4TDCSiVwUtWQ+FJUnXUPxjRX7H1otmiOquxi8X6B6HdkN09kdoJijngZhCNlZynkhYJ sK6pFmoiVFg== X-Gm-Gg: AY/fxX62aRalG1sNWQqREfOejGYJxhjH/T6wp+vuSLTI8ZnICcdY8Ezbi/LGXp4iOQS NW4T1mp4ooDGBq6hc3YcoYrDzQScYWgO6Gzl00uRU1NXhZLMO3VfPM0PWHUoVsizzKerK2Wk13+ OLHaRYOWHEKiP+EP2EUJCp6gYJ6JbfmXszeYhcI7FQX85OMCtk7j3bIPYd9Aazx0S743fSvucKQ 3de27A494Iz9mBIxa/WdCw7oBi0MXgBj3u39bxuoiTaHn3wmPCa3La+e9V2KMH8h60dZ+jMr+n8 wIGH/iDQG6y0whRmNgFbsZ7oROnOn5lhD2ApuGG26TpDgy6l2QUR3YeRulcNiRyM18XRsdAIYdN Qq3rTmfNUVFdVEh3L9wnBvmiYOyol4HUOwafrzy3k7HBerorT3kgGGV4caWmAsQcB3K+zeH3BX3 5wE8kXksEFtwufoO3X7ZXTv/Rn+VuCyQTkcvq0mZxkSv52ynJ8Hfla7EuwWATY X-Google-Smtp-Source: AGHT+IG1Sq0CNmTwPcwxmZQwoHtUbY7reyVlCsgJ98GdeAMI7tHBSUVhBVE1wrLWSIs8t3uhywPwkg== X-Received: by 2002:a05:600c:1c1a:b0:477:5c58:3d42 with SMTP id 5b1f17b1804b1-47bda747ed7mr54588085e9.10.1765981935987; Wed, 17 Dec 2025 06:32:15 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu , Richard Henderson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Steven Lee , Troy Lee , Jamin Lin , Andrew Jeffery , Joel Stanley Subject: [PATCH 03/14] hw/arm: Update bootloader generated with '-kernel' using stl_phys() Date: Wed, 17 Dec 2025 15:31:39 +0100 Message-ID: <20251217143150.94463-4-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::335; envelope-from=philmd@linaro.org; helo=mail-wm1-x335.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982036009158500 When the MemTxAttrs value is not specified and no MemTxResult provided, address_space_ld/st() is equivalent to the simpler ld/st_phys() API variant. Use the latter. The _notdirty() variant is supposed to /not/ mark the updated CODE page as dirty, to not re-translate it. However this code is only used with the '-kernel' CLI option after the machine is created and /before/ the vCPUs run, and *only* during the first (cold) reset; not during following (hot) resets. The optimisation is totally not justified, since we haven't translated any guest code yet. Replace by the normal stl_phys() helper. Suggested-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- hw/arm/aspeed.c | 3 +-- hw/arm/boot.c | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 3a5071a3841..8ce82f1f622 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -77,8 +77,7 @@ static void aspeed_reset_secondary(ARMCPU *cpu, CPUState *cs =3D CPU(cpu); =20 /* info->smp_bootreg_addr */ - address_space_stl_notdirty(as, AST_SMP_MBOX_FIELD_GOSIGN, 0, - MEMTXATTRS_UNSPECIFIED, NULL); + stl_phys(as, AST_SMP_MBOX_FIELD_GOSIGN, 0); cpu_set_pc(cs, info->smp_loader_start); } =20 diff --git a/hw/arm/boot.c b/hw/arm/boot.c index b91660208f5..5ca9c8db5cc 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -266,8 +266,7 @@ static void default_reset_secondary(ARMCPU *cpu, AddressSpace *as =3D arm_boot_address_space(cpu, info); CPUState *cs =3D CPU(cpu); =20 - address_space_stl_notdirty(as, info->smp_bootreg_addr, - 0, MEMTXATTRS_UNSPECIFIED, NULL); + stl_phys(as, info->smp_bootreg_addr, 0); cpu_set_pc(cs, info->smp_loader_start); } =20 @@ -277,8 +276,7 @@ static inline bool have_dtb(const struct arm_boot_info = *info) } =20 #define WRITE_WORD(p, value) do { \ - address_space_stl_notdirty(as, p, value, \ - MEMTXATTRS_UNSPECIFIED, NULL); \ + stl_phys(as, p, value); \ p +=3D 4; \ } while (0) =20 --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982084; cv=none; d=zohomail.com; s=zohoarc; b=J3u7Zg4UXomr6/Pk4Ovvp2C6STSztGgOtKd1chWfxsxCaVUGeyYQZAQes9epO4Yo4ufbH0ZbGZ3kAYeNENQ6DEW0u8liDHaw9RtiuRSMfI6MMW9eOxGQInk7c2rmZOpO9EcIDj6V/fGHUGgfWNSxhsR9jkosemnWAFoVFvgUHmc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982084; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fqLzxUppkUl4lLkDpbtOdJVjT4/H3/NN9CQYq0CLc6M=; b=gV2WWdDQQVZ8Pl57q2ysxgTMi9KVqkGT4PH4DymTgqtO7itJfLkpsGExOEWJassIJEmqVsNj80gXjTwH3STGy5NSYoleGoTjYD8dsi6PCfzrifSCZ++bRNKLZqkCVAqtOKeVd/QsDmuCN6OsB6aovm1ZIJrFI3LACNZRK/Y4Clc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982084894748.2517794660325; Wed, 17 Dec 2025 06:34:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaX-000205-4Q; Wed, 17 Dec 2025 09:33:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsZr-0001bp-O3 for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:33 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsZm-000765-Fz for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:27 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-477a219dbcaso51232775e9.3 for ; Wed, 17 Dec 2025 06:32:25 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bd9936809sm32692345e9.6.2025.12.17.06.32.21 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981943; x=1766586743; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fqLzxUppkUl4lLkDpbtOdJVjT4/H3/NN9CQYq0CLc6M=; b=QXpTDq2GdubbvkvEfPitHmSDILVDtYSxY6hv3mU516BO2XmW/kIYKyTJepGiHE7gU2 aHcUFy/pzHcNUm1tmkNtOXuJb6KnUq2oFxaYQ1311q4iIm2ePxr08cPaLkGWPj6l2DUU O8wyWYnJ2+mVpSCUprj3xGxIIbJL66o3HzueCwTFnoNTNVCFzWAf7uvth5uQCcOEecn3 cIWMHlmKsI1EDYWxViE3DHyxAxOE54XavK4i1IvFyXkx1+miX+FAXbzmZvteAeTTBBBG RhDRZyELQ6g35A7rmeOx066Gwtw111Q7AB01mnYw23YzfGaEGGjmxoNB4FYQS9Q8XWvN GQrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981943; x=1766586743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fqLzxUppkUl4lLkDpbtOdJVjT4/H3/NN9CQYq0CLc6M=; b=ExOjx1LYbYEvkbO10ZsH8QiJ2reBgrdaO9byfk/CAqDEP85+wzmUg4TfHgq0y1pGG8 IGLRnTIbAVpYiJ8HnnZ+9rtMYWJ0DEz7TnNVosB4/OFv6J+7GT+Ma3INUQisjGgdeyqS tl341Ubt9k+VPggDlBxlNRwt6q/94Dj/FqmUIe3eqziUin90OMVOnYn7eh7mnZI/FFIY Q6cdbb015pPfZpI5qDTzxLe3CjdXBQhEqQALUSuSwfU0HfV6oVApH+hlmpaSu7h7G89h /U3vfj/evfCzg0VNRK5EPNdIiI1LTJ5gNRCONKKoaX39gn69QZG9KUiyc6mGuwegJkn3 EeQg== X-Gm-Message-State: AOJu0YzRztVK+yKhMVDWpd6sKdhfviIX99Z0/x7Nx72kynCsk3cIZdqM Wig789NCrf2CmbSB20SFapmDw52165Lsc2dVnl7NWVE4iMxelSCKE+4rnHkB4MZHe4b4DZWPLZK /GtjyfG9VYA== X-Gm-Gg: AY/fxX4B6U7JVtX4tKiJlZ4QoV228eJ6LQ1rqaOodFc/bJwGygIk+H9NFZ1Fzhq6EYi +qc9PMuLrL2PdtjslNgfyApOV1fOJ/a6h9tsV4cdFuXI/MXW59RGWx6asWysMsrGMt031X4rrEE +leGWozsCr0QVdT9psY7a94ZwoqKZRxS5Bake4MnMRTeExgStazwQ6M0dkHfuI/A9URiip3wpo9 M/Wvgguckqh3+BLqTX1LI7bb370m1HoyKMwECNLOBXTbJiLqFuEyQzRqk5eFJQVROy0Vh1sdvll ULXHEkaL0mD4RdGepeDLl5QxN5xZ3RqMDqnEc4Mjmb4oGRfKe52GHpOLHGnMBla2/cG3OeblrS8 q6wA0C6pAMTUa6jUuhfzcBwB4vxc/Jhg1pyVUZJ4dG+LH4BljD2tAC4CK0zxqHhWBnU2YTKWlwl bj33y45mJeKhjGNvWpELlLrven/d9Iuaiw417x6aIg25Su24p23XwFXGv3F/cu X-Google-Smtp-Source: AGHT+IFoxo+TUGh02vEzLyb5bAM8cofU9QlTOJGWq9LzgozqJeytl50qEz4YfJUGXmLq82W8VNnw6w== X-Received: by 2002:a05:600c:3f18:b0:477:93f7:bbc5 with SMTP id 5b1f17b1804b1-47a992e2ed8mr144511625e9.10.1765981943462; Wed, 17 Dec 2025 06:32:23 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu , Pierrick Bouvier Subject: [PATCH 04/14] system/memory: Remove address_space_stl_notdirty and stl_phys_notdirty Date: Wed, 17 Dec 2025 15:31:40 +0100 Message-ID: <20251217143150.94463-5-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982087165154100 stl_phys_notdirty() was added in commit 8df1cd076cc ("physical memory access functions") as a (premature?) optimisation for the CODE path. Meanwhile 20 years passed, we might never have understood / used it properly; the code evolved and now the recommended way to access the CODE path is via the cpu_ld/st_mmu*() API. Remove both address_space_stl_notdirty() and stl_phys_notdirty() leftovers. Suggested-by: Pierrick Bouvier Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- include/system/memory.h | 6 ------ include/exec/memory_ldst.h.inc | 2 -- system/memory_ldst.c.inc | 39 ---------------------------------- 3 files changed, 47 deletions(-) diff --git a/include/system/memory.h b/include/system/memory.h index 3bd5ffa5e0d..e69171de05a 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -2850,12 +2850,6 @@ MemTxResult address_space_write_rom(AddressSpace *as= , hwaddr addr, #define ARG1_DECL AddressSpace *as #include "exec/memory_ldst.h.inc" =20 -static inline void stl_phys_notdirty(AddressSpace *as, hwaddr addr, uint32= _t val) -{ - address_space_stl_notdirty(as, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - #define SUFFIX #define ARG1 as #define ARG1_DECL AddressSpace *as diff --git a/include/exec/memory_ldst.h.inc b/include/exec/memory_ldst.h.inc index 7270235c600..173164fee3a 100644 --- a/include/exec/memory_ldst.h.inc +++ b/include/exec/memory_ldst.h.inc @@ -25,8 +25,6 @@ uint32_t glue(address_space_ldl, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint64_t glue(address_space_ldq, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stw, SUFFIX)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stl, SUFFIX)(ARG1_DECL, diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index 333da209d1a..b45bfecd137 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -261,45 +261,6 @@ uint16_t glue(address_space_lduw_be, SUFFIX)(ARG1_DECL, DEVICE_BIG_ENDIAN); } =20 -/* warning: addr must be aligned. The ram page is not masked as dirty - and the code inside is not invalidated. It is useful if the dirty - bits are used to track modified PTEs */ -void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) -{ - uint8_t *ptr; - MemoryRegion *mr; - hwaddr l =3D 4; - hwaddr addr1; - MemTxResult r; - uint8_t dirty_log_mask; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 4 || !memory_access_is_direct(mr, true, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - - r =3D memory_region_dispatch_write(mr, addr1, val, MO_32, attrs); - } else { - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - stl_p(ptr, val); - - dirty_log_mask =3D memory_region_get_dirty_log_mask(mr); - dirty_log_mask &=3D ~(1 << DIRTY_MEMORY_CODE); - physical_memory_set_dirty_range(memory_region_get_ram_addr(mr) + a= ddr, - 4, dirty_log_mask); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); -} - /* warning: addr must be aligned */ static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982069; cv=none; d=zohomail.com; s=zohoarc; b=cGqbGrxJokTKWGePsU48ybtI+DxT/jW3VFAhj9T+ZAL6owpcOiIy1AB6VeKb995GTArxsJpYv09hXg8pBDbb5zptK6HZIVRXeBLXGL8c55D7z33bs5ONdPMvK1jhkVTYZKl4+2hjPUHRkEwFHKHUoxWg31rEGzsLRI4qulolCCw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982069; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KntzN84E4rzQNF1VjNRRJJcnloDQTOOHWlgvhj9Q7tw=; b=HbjMWD6KoU1cwUYq+KCW07mMvp3uFR8Ph18G13513w2uAJo3piwNbuno0ew2j9GKIKL9yXmHlhHS37TLkwREozR6tXFupdIanln49fTKyyuZjiWQQIReH+UaiKuDnjV1MS2baRFPEFjJdvA2PKVZNXNA8eKujZ6uTV6JlvuwRao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982069578238.66116231820365; Wed, 17 Dec 2025 06:34:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaK-0001lg-MU; Wed, 17 Dec 2025 09:33:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsa0-0001cs-AM for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:45 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsZu-00077C-83 for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:37 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-477a2ab455fso62288745e9.3 for ; Wed, 17 Dec 2025 06:32:33 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc1d991fsm43795515e9.5.2025.12.17.06.32.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981951; x=1766586751; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KntzN84E4rzQNF1VjNRRJJcnloDQTOOHWlgvhj9Q7tw=; b=VWkuVG6WKOP0u0MG2u5MISu6YYeCGVYrI3RCuYc3g1IYScwMVMpsQ742MasKzgItbH A+EAAJ6BYoK1RVf3VD9xxDHvA9whGzJG/XxznZGOwLLklFQHr9yQqTXlrUDZ+u5AH+KN WWewDqscsJK2fDgrK/K+DK44V+yL35bUpSKmTdwcYierTdy6uznFDRSUYD9ZuJopCPgO Y4qsoFmH4XE5WKYUK2iRgLdQJfZoTPia8AYiV7UyKpjxx6WzaPCpUH6wIxT5xUNU1ZYa U9R3/KIzZaeFbTcBUIO3fRZ3w4GKGkBUIFA6bM3PO5Loy+WUkylqACXRZFnYYpUwXF5N YJ8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981951; x=1766586751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KntzN84E4rzQNF1VjNRRJJcnloDQTOOHWlgvhj9Q7tw=; b=Y5Xm3I/BIsyrb6Af0PROAqa2o1P9zZzIeqo+5HyArPM8WdPWk+iAJkYS70DcS5xAFY MBTSFK4WtUXrKZqCOKG6nWodwX3K8wqSjIoIAfWpSr3yEDrXEIiFpqVC0zklW0UOVMdd JOSAO0IccEKTVgXR9m5bn+TabKN0zwNtu8LhXxbg9gL7hvWxd2EfLGPOqNN3W9UVoZwv /ePLES59GE25h+l9cwdtj18C4h8fcdGZNx8f0sYtgPu0Mt7BqaQ8KduMSWLsC3Bwqzah DC4KMPKp8ocROYIGp0+s7TLWW/KGGIDLTHQJuqocPgH9EdZGJoDqD4tOAwjCI/hwYc0+ HqvQ== X-Gm-Message-State: AOJu0YzjQpjYKf16zIZBpC3Y4gD3RtFH+CBqr4I547w7QRd3FqDh7Xew nZtYs/eRbbS/L+k0t+ci2afO6T59LB2t/OWvHPCjHuckp2m7L5xd62gSXeHtogAZO8Luhs+UL3b 5E2l5qTbXZQ== X-Gm-Gg: AY/fxX5OP/s9RLnfWWBP1HnuAfLAG4+PGOyx7B9R9EIsSRR3GeKwnjuWaWvjhNLlO2f Bj8VYsWWo7zG4EYI73PYomVdHRKO9RYziD/wGUWrwQz83S+V0BJroDm6d4gqud01XBISxISKn6S x2BKwp6zqXeAVcZXONREZ6O6WLn5uQbyi284sPGabOYsOOA66wwpAzMFvuE/zKf4UjWN2L7JZ7J gVA9r0soAv+avxJhhZdaFbKrnChSLiDq4KeT8A3Yl8a0ENSfd6g4IpTJIDfgJgCFu7OV/h5NwoJ sNuYU3/PkBYYsYngzTCKyZlP06u8DDnwhXGiUlmg0Gfm48FJKf1VhWpqxFhQZXFQ2NAAuaH2bnf LL84bT5hkIPn81lXEgNjLodh486bH2osxhCcTuIcXbxvkvPCj/CyzB2qWmaZta+TWfC0b1wH8Ci yqKXxpWbfq8PelpJdiH8Y1UzF7i7194KWsYbV5totBU6omYuYCQFlRlNzrDXVK X-Google-Smtp-Source: AGHT+IHrmxo58cjk+Ja06ElhCpkbSBp2FLjbJkIVoKszjZU6CJuvhE8j6Kof7/fmcIJtOA46T/2vyw== X-Received: by 2002:a05:600c:4e09:b0:477:9976:9e1a with SMTP id 5b1f17b1804b1-47a8f89bc6cmr199436695e9.6.1765981951134; Wed, 17 Dec 2025 06:32:31 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 05/14] system/physmem: Inline and remove leul_to_cpu() Date: Wed, 17 Dec 2025 15:31:41 +0100 Message-ID: <20251217143150.94463-6-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::330; envelope-from=philmd@linaro.org; helo=mail-wm1-x330.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982070899154100 leul_to_cpu() is only used within physmem.c: inline it and remove. Since @bitmap is of 'unsigned long' type, use its size with ldn_le_p() instead of using HOST_LONG_BITS. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- include/qemu/bswap.h | 11 ----------- system/physmem.c | 5 +++-- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h index 39ba64046a6..65a1b3634f4 100644 --- a/include/qemu/bswap.h +++ b/include/qemu/bswap.h @@ -375,17 +375,6 @@ static inline void stq_be_p(void *ptr, uint64_t v) stq_he_p(ptr, be_bswap(v, 64)); } =20 -static inline unsigned long leul_to_cpu(unsigned long v) -{ -#if HOST_LONG_BITS =3D=3D 32 - return le_bswap(v, 32); -#elif HOST_LONG_BITS =3D=3D 64 - return le_bswap(v, 64); -#else -# error Unknown sizeof long -#endif -} - /* Store v to p as a sz byte value in host order */ #define DO_STN_LDN_P(END) \ static inline void stn_## END ## _p(void *ptr, int sz, uint64_t v) \ diff --git a/system/physmem.c b/system/physmem.c index c9869e4049f..1292f49095f 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -1254,7 +1254,8 @@ uint64_t physical_memory_set_dirty_lebitmap(unsigned = long *bitmap, =20 for (k =3D 0; k < nr; k++) { if (bitmap[k]) { - unsigned long temp =3D leul_to_cpu(bitmap[k]); + unsigned long temp =3D ldn_le_p(&bitmap[k], + sizeof(bitmap[k])); =20 nbits =3D ctpopl(temp); qatomic_or(&blocks[DIRTY_MEMORY_VGA][idx][offset], tem= p); @@ -1301,7 +1302,7 @@ uint64_t physical_memory_set_dirty_lebitmap(unsigned = long *bitmap, */ for (i =3D 0; i < len; i++) { if (bitmap[i] !=3D 0) { - c =3D leul_to_cpu(bitmap[i]); + c =3D ldn_le_p(&bitmap[i], sizeof(bitmap[i])); nbits =3D ctpopl(c); if (unlikely(global_dirty_tracking & GLOBAL_DIRTY_DIRTY_RA= TE)) { total_dirty_pages +=3D nbits; --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982135; cv=none; d=zohomail.com; s=zohoarc; b=GuE6GvFeTFn047ZJQpy+0FEEVy2Ou/aejDYLDjAVKGPSJWw21FX0iG/J3jLkaJj16bNzc3+dhCpWpjPU3WouUuaq3Nkic5wsj0R68812WU+SNV3DtL8RTTjf1LOgyuwcpk3eNURXwnuiuNpV8/3gzf7qU6oxQVRuIjMbrkNbQwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982135; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1fwsgtFaKbQAG4JXp0styAfpJOXTnc0HrVyb3kjNSp4=; b=fpgG6JP31CICzc2xflG8X2KUdJKNjRA2g1LaR3cJlo/FfGIoL25c66lNxUPO57aQmDgnX2NuulxpUKmtvGPMreAErKKroKJeKaa4r7hPeG7X8/AHHYSmpO4zxqvdGxAg9ONYVUVbZOnJ5RiR6yjsc0woEvBQ1yAFcGiTGQOR46Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982135547108.0573675984981; Wed, 17 Dec 2025 06:35:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaW-0001zf-VN; Wed, 17 Dec 2025 09:33:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsa3-0001d7-RF for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:45 -0500 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsa1-00078s-7Q for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:42 -0500 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-430f9ffd4e8so363607f8f.0 for ; Wed, 17 Dec 2025 06:32:40 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4310ade8072sm5311445f8f.25.2025.12.17.06.32.36 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981959; x=1766586759; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1fwsgtFaKbQAG4JXp0styAfpJOXTnc0HrVyb3kjNSp4=; b=ElsVR5X1T7ByU3o0QD90UPFcvxdoYjQ66pZJUgOJEr/qH4HgNAnwze3vHaixQtScsT wAyk1OLw0mvxkrkTDXKburMAmppp8fJMPQA76WAlS813xMSXA4vjUl1xK6PW+cO9owj8 FH9rB+NxtoEnaSDNdHjyJZ6eqw3jxjDua3lTBTxpOt36yqXuVA1+Iz2+zkdDoYNzv9ib 2F6mprjiOtfgPZkXuiI0gRHuIH5ZTtsSPd99OnHNgMYC3HOG+J2bMGHMzFcwKvY4uICo KIR1wq5QpWusF2oszK4o7vwwp8blK+N2r0pldiMcFXx11Uj7vRSx1MgpYLJgka7gpyF3 O/fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981959; x=1766586759; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1fwsgtFaKbQAG4JXp0styAfpJOXTnc0HrVyb3kjNSp4=; b=VbaC3+DE/WpohuhADbdZyJBFkltuJlc/Z0zm3nWfGV+wUagXiQyqoyTbfO/pR94iif p809/uoJcVdtpgYIJ/5S3KmWCVraBf3zil0wc7OOZky2MSpRjRv2jXwW7Erk4XW8j1p5 xMI0XL6Wh5PlzyJa3PIq5G/uK+OPk0riqVSuAT27vvvTaX4gcvbUOclpxUjXEYT4oOEg yYsfoP5WPDudwQvuUzqqzy7xoq2Odfh/+uGs6UdMVvfebk8tOpR86qY5CTQ7s3KNEN4j GxpSWxtNM/jFFEoYrqQVzM4qbvpQpxUAv5gtyD8Nm8lpqA93f+xvmHJnIeMboIafr8sG XE4w== X-Gm-Message-State: AOJu0YxGYf7up62EQVIT6IoI8AL6mtDa4tBJr920nkKsLWooJz7iF+xM hclAsl1Lzf9mmTMVruUxnBl+1ObhLu8861DLPGbLk7oGx9xgXQy2ls/d/5xtiwHKsslRMILsRzq W+0SUzrocEg== X-Gm-Gg: AY/fxX5Pv4hFJ7tCeyhdo3dwD+KaKw37FbEEXW7568uw1H/r9lIHSTyuNkiJ7/X40Bx uxopPAsK5scdoe6to3F+spsRbusXf3Eap6gM3/ez4enNCglW+aaT8g5MUUN0q0AOM9hsSgQDNIX pEGXP+g6PpPwQyTc7Dslimm24bTCxlT45xc311WuJ5QUstYg1bUUSQjXKW/hUYA4uKHQnQqI5Zl iA87F1d2qwp73Fmeb2v2IH/XhtLOrsfX80ytGwGMKEpZhcosVewJlj1DIcE121eIkug/qA7hR5P 0+6q0lfOzDdYBkEQEFBFs5E9iRR/g4cWFB7Be8y5iebjxQj7vPIiGeC477YvCCO4uaXZHj8h8+a 9W0rSU3uSx0jB/usmY2vudIQQaiuxsVdYvJoAifJBhLAVnhcaqoJfQo08A1G4npIO5+RlZMh5G5 zqs/asnQjf2U5hYNbXJ8kVDcPZfnAaPrW+yyOMoib4Fph9s2YIZwIQCW3p5edZ X-Google-Smtp-Source: AGHT+IE0XGXOlrf3bv1/geEBCvD/Tg4G7Dha3GeGD1NXZX2t+fKUE4k3RXS7jdypqPcRBJUj3mvC+w== X-Received: by 2002:a5d:5d09:0:b0:42f:7686:5693 with SMTP id ffacd0b85a97d-42fb3eb87d2mr25060054f8f.16.1765981958541; Wed, 17 Dec 2025 06:32:38 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 06/14] system/physmem: Use explicit endianness in subpage_ops::read/write() Date: Wed, 17 Dec 2025 15:31:42 +0100 Message-ID: <20251217143150.94463-7-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::42b; envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982137964154100 Replace the ldn_p/stn_p() calls by their explicit endianness variants. Duplicate the MemoryRegionOps, replacing the single DEVICE_NATIVE_ENDIAN entry by a pair of LITTLE and BIG ones. Select the proper MemoryRegionOps in subpage_init(). Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- system/physmem.c | 81 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 17 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index 1292f49095f..d8465f085bd 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -2896,8 +2896,8 @@ static MemTxResult flatview_write(FlatView *fv, hwadd= r addr, MemTxAttrs attrs, static bool flatview_access_valid(FlatView *fv, hwaddr addr, hwaddr len, bool is_write, MemTxAttrs attrs); =20 -static MemTxResult subpage_read(void *opaque, hwaddr addr, uint64_t *data, - unsigned len, MemTxAttrs attrs) +static MemTxResult subpage_read_le(void *opaque, hwaddr addr, uint64_t *da= ta, + unsigned len, MemTxAttrs attrs) { subpage_t *subpage =3D opaque; uint8_t buf[8]; @@ -2911,12 +2911,32 @@ static MemTxResult subpage_read(void *opaque, hwadd= r addr, uint64_t *data, if (res) { return res; } - *data =3D ldn_p(buf, len); + *data =3D ldn_le_p(buf, len); return MEMTX_OK; } =20 -static MemTxResult subpage_write(void *opaque, hwaddr addr, - uint64_t value, unsigned len, MemTxAttrs = attrs) +static MemTxResult subpage_read_be(void *opaque, hwaddr addr, uint64_t *da= ta, + unsigned len, MemTxAttrs attrs) +{ + subpage_t *subpage =3D opaque; + uint8_t buf[8]; + MemTxResult res; + +#if defined(DEBUG_SUBPAGE) + printf("%s: subpage %p len %u addr " HWADDR_FMT_plx "\n", __func__, + subpage, len, addr); +#endif + res =3D flatview_read(subpage->fv, addr + subpage->base, attrs, buf, l= en); + if (res) { + return res; + } + *data =3D ldn_be_p(buf, len); + return MEMTX_OK; +} + +static MemTxResult subpage_write_le(void *opaque, hwaddr addr, + uint64_t value, unsigned len, + MemTxAttrs attrs) { subpage_t *subpage =3D opaque; uint8_t buf[8]; @@ -2926,7 +2946,23 @@ static MemTxResult subpage_write(void *opaque, hwadd= r addr, " value %"PRIx64"\n", __func__, subpage, len, addr, value); #endif - stn_p(buf, len, value); + stn_le_p(buf, len, value); + return flatview_write(subpage->fv, addr + subpage->base, attrs, buf, l= en); +} + +static MemTxResult subpage_write_be(void *opaque, hwaddr addr, + uint64_t value, unsigned len, + MemTxAttrs attrs) +{ + subpage_t *subpage =3D opaque; + uint8_t buf[8]; + +#if defined(DEBUG_SUBPAGE) + printf("%s: subpage %p len %u addr " HWADDR_FMT_plx + " value %"PRIx64"\n", + __func__, subpage, len, addr, value); +#endif + stn_be_p(buf, len, value); return flatview_write(subpage->fv, addr + subpage->base, attrs, buf, l= en); } =20 @@ -2944,15 +2980,26 @@ static bool subpage_accepts(void *opaque, hwaddr ad= dr, len, is_write, attrs); } =20 -static const MemoryRegionOps subpage_ops =3D { - .read_with_attrs =3D subpage_read, - .write_with_attrs =3D subpage_write, - .impl.min_access_size =3D 1, - .impl.max_access_size =3D 8, - .valid.min_access_size =3D 1, - .valid.max_access_size =3D 8, - .valid.accepts =3D subpage_accepts, - .endianness =3D DEVICE_NATIVE_ENDIAN, +static const MemoryRegionOps subpage_ops[2] =3D { + [0 ... 1] =3D { + .impl =3D { + .min_access_size =3D 1, + .max_access_size =3D 8, + }, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 8, + .accepts =3D subpage_accepts, + }, + }, + + [0].endianness =3D DEVICE_LITTLE_ENDIAN, + [0].read_with_attrs =3D subpage_read_le, + [0].write_with_attrs =3D subpage_write_le, + + [1].endianness =3D DEVICE_BIG_ENDIAN, + [1].read_with_attrs =3D subpage_read_be, + [1].write_with_attrs =3D subpage_write_be, }; =20 static int subpage_register(subpage_t *mmio, uint32_t start, uint32_t end, @@ -2983,8 +3030,8 @@ static subpage_t *subpage_init(FlatView *fv, hwaddr b= ase) mmio =3D g_malloc0(sizeof(subpage_t) + TARGET_PAGE_SIZE * sizeof(uint1= 6_t)); mmio->fv =3D fv; mmio->base =3D base; - memory_region_init_io(&mmio->iomem, NULL, &subpage_ops, mmio, - NULL, TARGET_PAGE_SIZE); + memory_region_init_io(&mmio->iomem, NULL, &subpage_ops[target_big_endi= an()], + mmio, NULL, TARGET_PAGE_SIZE); mmio->iomem.subpage =3D true; #if defined(DEBUG_SUBPAGE) printf("%s: %p base " HWADDR_FMT_plx " len %08x\n", __func__, --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982153; cv=none; d=zohomail.com; s=zohoarc; b=AA4q47rcVn5VTcc47GXEFg7CkOA6v+4rxfn1mn3lBobVm/xrnrUYRbKROU/IBHEkIPhnM4ct/2BAFNVNyaPOaUTnkGLyaTStZqMSa8REL361B2qCxO40HpClshMnjrYtD+CHXT7zmiKuhCEsaRu7IIpDyy6k9Vhb8yB1QTA4FtM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982153; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6YAsph7okBK8AuJ8n8nNBWNPp4wOy6eiaeIdpcOIdYY=; b=Xoevz4W8F2A0SG/n+Cl94w1uA82tP04Wtle6+OBTYLtW+VA0Hf7Z08I6zZfJodvCUifibekgMSv0Kfh2OYA7P/x9Rm8vRZAgcZVSXjrsLkNPk86MGAk0VL8Ld85BWhqT/UJzv0M/MFnSw+VsWwdUp5vrI49U973NyGny3EWY9cE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982153482238.46110176914328; Wed, 17 Dec 2025 06:35:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaX-00021L-VO; Wed, 17 Dec 2025 09:33:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsaG-0001k6-Or for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:58 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsaB-0007C6-CI for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:32:53 -0500 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-47796a837c7so43028935e9.0 for ; Wed, 17 Dec 2025 06:32:49 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bd9cc37f0sm30740305e9.4.2025.12.17.06.32.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981967; x=1766586767; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6YAsph7okBK8AuJ8n8nNBWNPp4wOy6eiaeIdpcOIdYY=; b=VveX+igSFvrtusPx/FyTD/Y9PBxYGuqxcK62/ua6hafa6f4wE6U7pZ6IoqG171W3PK BIQe69Iyd1iQcfDIMX5ZRbkmH5qc4jklZiYhUuQXGI/q9X5ZyA/7dLvzguYTidsaGp6k bY2AsnX0G4V4/3hqNIwD4E7Wo+1KFGcJz5DgIDuciueNPTyUS/R7HYj42NgB0z01aqdJ p+97Y2/4oXyWlwq5Fog1+RZzKRtIV83GBT5SF2n3Byf4mdDxKR60pZwPcKvQrqAUHyEu uTzRu5K0V9QYBD69k+yyvj9KIzzcPkRo8H5vo9Z85GH80+aBvGSUpWyvtwn0Flx9wurL dqJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981967; x=1766586767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6YAsph7okBK8AuJ8n8nNBWNPp4wOy6eiaeIdpcOIdYY=; b=G+4XbykJl5tH3WoQkwWRrsu7h2V6zLZY3MN7GH6sWRTHhA5y8geBjiO9BLEz2ySW12 sJDQSmRXccmmZNX8yiu8TzUxxLENPYGzroxueCq+ef+Q9gQqgQg0K/W0V7xf9CCmZ4hj DJHL+S1tefFLrTgn3fttXuyhLZ9NLV3CHD83oAWVxYFIxXe32N7xJz8dnllUkgfuj8GL Fhsx3ZyU9GDCfHH0dKN9tsoVYbgf+bbSRQ2DiCoyAMq5hUmN5x1CAS0S2G2Fi+zB/av2 XGRgsmmPjmkHxZbJ1xu7Kt9lkcrwsYFMoxo6tmajZTzkBqHS9RMzPmAVWKKhMkZxM8wE EkWQ== X-Gm-Message-State: AOJu0Yzq8pi/rophYum+IqFOEb+fIihyPnrsebgLDw4RuGVKRzIEyj5Y yu0TK1bmv6/BWACcpdGyB99tnJJYv0aiZMqfhTPbC9OSZeQ7TkCbpx6D2wt7NyWHMe4mIbW48Je rhbWdXmsU8w== X-Gm-Gg: AY/fxX489ecfxo61Vm4c1BXGt3BSKU5YMNFKEume35kv2UiwlUG+IR/KUrNhE1U0L1j 3z3F8HKmo6Ge/W1Rh9nqS+q8tiMKMXLTYJgNFpKR1VMOuApsX+tWnvqAS25k0gFY3gjJuXQzhuG 3FHvNcCJJOwleb6eK3STgq12NAY9kbDbXewHAbURqaDvIvl2fhT0VWsJEfIPWSLeZO4U1pbnW5P mkXdIzE6xZtenW+OQXcMgXmwl1dEib6JMIFvampF69HmAzzA9NitWGeo7hKMNZ/YuoSf5TDr9sE mZai8glNJf5mna44Q8I8nxSUYiKhX0FqD9AFJN5WEWf2RPXuLzoE+iMNekJrvLKky+8IkfnAAkp 83U4ShXrE6qs20o52BNOib8vaJ4y1Y+5J8dfAd5L7x2uEvD+mHFAXCmbC9YY8fefelAeczs6yPD f/FjKsDDchbec1zNaQRL0c7/B6+B1mtNjYPK+fSg3SuYlkeTgr0gj2Eg49lLJi X-Google-Smtp-Source: AGHT+IFf79uMo8hEMhvgn211ETxm0/XeKA7EJwP8+cGqkOr1q7YBaCl5QACRDU32If929/+b35/BzQ== X-Received: by 2002:a05:600c:6748:b0:479:2f95:5179 with SMTP id 5b1f17b1804b1-47a8f8c380emr172015875e9.15.1765981967082; Wed, 17 Dec 2025 06:32:47 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 07/14] system/memory: Split MemoryRegionCache API to 'memory_cached.h' Date: Wed, 17 Dec 2025 15:31:43 +0100 Message-ID: <20251217143150.94463-8-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982156335154100 We have 115 direct inclusions of "system/memory.h", and 91 headers in include/ use it: hundreds of files have to process it. However only one single header really uses the MemoryRegionCache API: "hw/virtio/virtio-access.h". Split it out to a new header, avoiding processing unused inlined functions hundreds of times. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- MAINTAINERS | 1 + include/hw/virtio/virtio-access.h | 1 + include/system/memory.h | 185 -------------------------- include/system/memory_cached.h | 207 ++++++++++++++++++++++++++++++ system/physmem.c | 1 + 5 files changed, 210 insertions(+), 185 deletions(-) create mode 100644 include/system/memory_cached.h diff --git a/MAINTAINERS b/MAINTAINERS index 63e9ba521bc..c299b84d418 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3255,6 +3255,7 @@ S: Supported F: include/system/ioport.h F: include/exec/memop.h F: include/system/memory.h +F: include/system/memory_cached.h F: include/system/physmem.h F: include/system/ram_addr.h F: include/system/ramblock.h diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-a= ccess.h index 07aae69042a..3ea3acfe05a 100644 --- a/include/hw/virtio/virtio-access.h +++ b/include/hw/virtio/virtio-access.h @@ -17,6 +17,7 @@ #define QEMU_VIRTIO_ACCESS_H =20 #include "exec/hwaddr.h" +#include "system/memory_cached.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" =20 diff --git a/include/system/memory.h b/include/system/memory.h index e69171de05a..90f375df5df 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -2855,140 +2855,6 @@ MemTxResult address_space_write_rom(AddressSpace *a= s, hwaddr addr, #define ARG1_DECL AddressSpace *as #include "exec/memory_ldst_phys.h.inc" =20 -struct MemoryRegionCache { - uint8_t *ptr; - hwaddr xlat; - hwaddr len; - FlatView *fv; - MemoryRegionSection mrs; - bool is_write; -}; - -/* address_space_ld*_cached: load from a cached #MemoryRegion - * address_space_st*_cached: store into a cached #MemoryRegion - * - * These functions perform a load or store of the byte, word, - * longword or quad to the specified address. The address is - * a physical address in the AddressSpace, but it must lie within - * a #MemoryRegion that was mapped with address_space_cache_init. - * - * The _le suffixed functions treat the data as little endian; - * _be indicates big endian; no suffix indicates "same endianness - * as guest CPU". - * - * The "guest CPU endianness" accessors are deprecated for use outside - * target-* code; devices should be CPU-agnostic and use either the LE - * or the BE accessors. - * - * @cache: previously initialized #MemoryRegionCache to be accessed - * @addr: address within the address space - * @val: data value, for stores - * @attrs: memory transaction attributes - * @result: location to write the success/failure of the transaction; - * if NULL, this information is discarded - */ - -#define SUFFIX _cached_slow -#define ARG1 cache -#define ARG1_DECL MemoryRegionCache *cache -#include "exec/memory_ldst.h.inc" - -/* Inline fast path for direct RAM access. */ -static inline uint8_t address_space_ldub_cached(MemoryRegionCache *cache, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - assert(addr < cache->len); - if (likely(cache->ptr)) { - return ldub_p(cache->ptr + addr); - } else { - return address_space_ldub_cached_slow(cache, addr, attrs, result); - } -} - -static inline void address_space_stb_cached(MemoryRegionCache *cache, - hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) -{ - assert(addr < cache->len); - if (likely(cache->ptr)) { - stb_p(cache->ptr + addr, val); - } else { - address_space_stb_cached_slow(cache, addr, val, attrs, result); - } -} - -#define ENDIANNESS -#include "exec/memory_ldst_cached.h.inc" - -#define ENDIANNESS _le -#include "exec/memory_ldst_cached.h.inc" - -#define ENDIANNESS _be -#include "exec/memory_ldst_cached.h.inc" - -#define SUFFIX _cached -#define ARG1 cache -#define ARG1_DECL MemoryRegionCache *cache -#include "exec/memory_ldst_phys.h.inc" - -/* address_space_cache_init: prepare for repeated access to a physical - * memory region - * - * @cache: #MemoryRegionCache to be filled - * @as: #AddressSpace to be accessed - * @addr: address within that address space - * @len: length of buffer - * @is_write: indicates the transfer direction - * - * Will only work with RAM, and may map a subset of the requested range by - * returning a value that is less than @len. On failure, return a negative - * errno value. - * - * Because it only works with RAM, this function can be used for - * read-modify-write operations. In this case, is_write should be %true. - * - * Note that addresses passed to the address_space_*_cached functions - * are relative to @addr. - */ -int64_t address_space_cache_init(MemoryRegionCache *cache, - AddressSpace *as, - hwaddr addr, - hwaddr len, - bool is_write); - -/** - * address_space_cache_init_empty: Initialize empty #MemoryRegionCache - * - * @cache: The #MemoryRegionCache to operate on. - * - * Initializes #MemoryRegionCache structure without memory region attached. - * Cache initialized this way can only be safely destroyed, but not used. - */ -static inline void address_space_cache_init_empty(MemoryRegionCache *cache) -{ - cache->mrs.mr =3D NULL; - /* There is no real need to initialize fv, but it makes Coverity happy= . */ - cache->fv =3D NULL; -} - -/** - * address_space_cache_invalidate: complete a write to a #MemoryRegionCache - * - * @cache: The #MemoryRegionCache to operate on. - * @addr: The first physical address that was written, relative to the - * address that was passed to @address_space_cache_init. - * @access_len: The number of bytes that were written starting at @addr. - */ -void address_space_cache_invalidate(MemoryRegionCache *cache, - hwaddr addr, - hwaddr access_len); - -/** - * address_space_cache_destroy: free a #MemoryRegionCache - * - * @cache: The #MemoryRegionCache whose memory should be released. - */ -void address_space_cache_destroy(MemoryRegionCache *cache); - void address_space_flush_icache_range(AddressSpace *as, hwaddr addr, hwadd= r len); =20 /* address_space_get_iotlb_entry: translate an address into an IOTLB @@ -3116,14 +2982,6 @@ MemTxResult flatview_read_continue(FlatView *fv, hwa= ddr addr, MemoryRegion *mr); void *qemu_map_ram_ptr(RAMBlock *ram_block, ram_addr_t addr); =20 -/* Internal functions, part of the implementation of address_space_read_ca= ched - * and address_space_write_cached. */ -MemTxResult address_space_read_cached_slow(MemoryRegionCache *cache, - hwaddr addr, void *buf, hwaddr = len); -MemTxResult address_space_write_cached_slow(MemoryRegionCache *cache, - hwaddr addr, const void *buf, - hwaddr len); - int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr); bool prepare_mmio_access(MemoryRegion *mr); =20 @@ -3201,49 +3059,6 @@ MemTxResult address_space_read(AddressSpace *as, hwa= ddr addr, return result; } =20 -/** - * address_space_read_cached: read from a cached RAM region - * - * @cache: Cached region to be addressed - * @addr: address relative to the base of the RAM region - * @buf: buffer with the data transferred - * @len: length of the data transferred - */ -static inline MemTxResult -address_space_read_cached(MemoryRegionCache *cache, hwaddr addr, - void *buf, hwaddr len) -{ - assert(addr < cache->len && len <=3D cache->len - addr); - fuzz_dma_read_cb(cache->xlat + addr, len, cache->mrs.mr); - if (likely(cache->ptr)) { - memcpy(buf, cache->ptr + addr, len); - return MEMTX_OK; - } else { - return address_space_read_cached_slow(cache, addr, buf, len); - } -} - -/** - * address_space_write_cached: write to a cached RAM region - * - * @cache: Cached region to be addressed - * @addr: address relative to the base of the RAM region - * @buf: buffer with the data transferred - * @len: length of the data transferred - */ -static inline MemTxResult -address_space_write_cached(MemoryRegionCache *cache, hwaddr addr, - const void *buf, hwaddr len) -{ - assert(addr < cache->len && len <=3D cache->len - addr); - if (likely(cache->ptr)) { - memcpy(cache->ptr + addr, buf, len); - return MEMTX_OK; - } else { - return address_space_write_cached_slow(cache, addr, buf, len); - } -} - /** * address_space_set: Fill address space with a constant byte. * diff --git a/include/system/memory_cached.h b/include/system/memory_cached.h new file mode 100644 index 00000000000..1a07774b6ad --- /dev/null +++ b/include/system/memory_cached.h @@ -0,0 +1,207 @@ +/* + * Physical memory management API + * + * Copyright 2011 Red Hat, Inc. and/or its affiliates + * + * Authors: + * Avi Kivity + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef SYSTEM_MEMORY_CACHED_H +#define SYSTEM_MEMORY_CACHED_H + +#include "exec/hwaddr.h" +#include "system/memory.h" + +struct MemoryRegionCache { + uint8_t *ptr; + hwaddr xlat; + hwaddr len; + FlatView *fv; + MemoryRegionSection mrs; + bool is_write; +}; + +/** + * address_space_ld*_cached: load from a cached #MemoryRegion + * address_space_st*_cached: store into a cached #MemoryRegion + * + * These functions perform a load or store of the byte, word, + * longword or quad to the specified address. The address is + * a physical address in the AddressSpace, but it must lie within + * a #MemoryRegion that was mapped with address_space_cache_init. + * + * The _le suffixed functions treat the data as little endian; + * _be indicates big endian; no suffix indicates "same endianness + * as guest CPU". + * + * The "guest CPU endianness" accessors are deprecated for use outside + * target-* code; devices should be CPU-agnostic and use either the LE + * or the BE accessors. + * + * @cache: previously initialized #MemoryRegionCache to be accessed + * @addr: address within the address space + * @val: data value, for stores + * @attrs: memory transaction attributes + * @result: location to write the success/failure of the transaction; + * if NULL, this information is discarded + */ + +#define SUFFIX _cached_slow +#define ARG1 cache +#define ARG1_DECL MemoryRegionCache *cache +#include "exec/memory_ldst.h.inc" + +/* Inline fast path for direct RAM access. */ +static inline uint8_t address_space_ldub_cached(MemoryRegionCache *cache, + hwaddr addr, MemTxAttrs attrs, MemTxResult *result) +{ + assert(addr < cache->len); + if (likely(cache->ptr)) { + return ldub_p(cache->ptr + addr); + } else { + return address_space_ldub_cached_slow(cache, addr, attrs, result); + } +} + +static inline void address_space_stb_cached(MemoryRegionCache *cache, + hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) +{ + assert(addr < cache->len); + if (likely(cache->ptr)) { + stb_p(cache->ptr + addr, val); + } else { + address_space_stb_cached_slow(cache, addr, val, attrs, result); + } +} + +#define ENDIANNESS +#include "exec/memory_ldst_cached.h.inc" + +#define ENDIANNESS _le +#include "exec/memory_ldst_cached.h.inc" + +#define ENDIANNESS _be +#include "exec/memory_ldst_cached.h.inc" + +#define SUFFIX _cached +#define ARG1 cache +#define ARG1_DECL MemoryRegionCache *cache +#include "exec/memory_ldst_phys.h.inc" + +/** + * address_space_cache_init: prepare for repeated access to a physical + * memory region + * + * @cache: #MemoryRegionCache to be filled + * @as: #AddressSpace to be accessed + * @addr: address within that address space + * @len: length of buffer + * @is_write: indicates the transfer direction + * + * Will only work with RAM, and may map a subset of the requested range by + * returning a value that is less than @len. On failure, return a negative + * errno value. + * + * Because it only works with RAM, this function can be used for + * read-modify-write operations. In this case, is_write should be %true. + * + * Note that addresses passed to the address_space_*_cached functions + * are relative to @addr. + */ +int64_t address_space_cache_init(MemoryRegionCache *cache, + AddressSpace *as, + hwaddr addr, + hwaddr len, + bool is_write); + +/** + * address_space_cache_init_empty: Initialize empty #MemoryRegionCache + * + * @cache: The #MemoryRegionCache to operate on. + * + * Initializes #MemoryRegionCache structure without memory region attached. + * Cache initialized this way can only be safely destroyed, but not used. + */ +static inline void address_space_cache_init_empty(MemoryRegionCache *cache) +{ + cache->mrs.mr =3D NULL; + /* There is no real need to initialize fv, but it makes Coverity happy= . */ + cache->fv =3D NULL; +} + +/** + * address_space_cache_invalidate: complete a write to a #MemoryRegionCache + * + * @cache: The #MemoryRegionCache to operate on. + * @addr: The first physical address that was written, relative to the + * address that was passed to @address_space_cache_init. + * @access_len: The number of bytes that were written starting at @addr. + */ +void address_space_cache_invalidate(MemoryRegionCache *cache, + hwaddr addr, + hwaddr access_len); + +/** + * address_space_cache_destroy: free a #MemoryRegionCache + * + * @cache: The #MemoryRegionCache whose memory should be released. + */ +void address_space_cache_destroy(MemoryRegionCache *cache); + +/* + * Internal functions, part of the implementation of address_space_read_ca= ched + * and address_space_write_cached. + */ +MemTxResult address_space_read_cached_slow(MemoryRegionCache *cache, + hwaddr addr, void *buf, hwaddr = len); +MemTxResult address_space_write_cached_slow(MemoryRegionCache *cache, + hwaddr addr, const void *buf, + hwaddr len); + +/** + * address_space_read_cached: read from a cached RAM region + * + * @cache: Cached region to be addressed + * @addr: address relative to the base of the RAM region + * @buf: buffer with the data transferred + * @len: length of the data transferred + */ +static inline MemTxResult +address_space_read_cached(MemoryRegionCache *cache, hwaddr addr, + void *buf, hwaddr len) +{ + assert(addr < cache->len && len <=3D cache->len - addr); + fuzz_dma_read_cb(cache->xlat + addr, len, cache->mrs.mr); + if (likely(cache->ptr)) { + memcpy(buf, cache->ptr + addr, len); + return MEMTX_OK; + } else { + return address_space_read_cached_slow(cache, addr, buf, len); + } +} + +/** + * address_space_write_cached: write to a cached RAM region + * + * @cache: Cached region to be addressed + * @addr: address relative to the base of the RAM region + * @buf: buffer with the data transferred + * @len: length of the data transferred + */ +static inline MemTxResult +address_space_write_cached(MemoryRegionCache *cache, hwaddr addr, + const void *buf, hwaddr len) +{ + assert(addr < cache->len && len <=3D cache->len - addr); + if (likely(cache->ptr)) { + memcpy(cache->ptr + addr, buf, len); + return MEMTX_OK; + } else { + return address_space_write_cached_slow(cache, addr, buf, len); + } +} + +#endif diff --git a/system/physmem.c b/system/physmem.c index d8465f085bd..853a8c00aa2 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -53,6 +53,7 @@ #include "qemu/memalign.h" #include "qemu/memfd.h" #include "system/memory.h" +#include "system/memory_cached.h" #include "system/ioport.h" #include "system/dma.h" #include "system/hostmem.h" --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982074; cv=none; d=zohomail.com; s=zohoarc; b=j8dfq1w2mDw2a5k/fFR6Tqq06EKV0GqvY0wWfFBLZW4P94LrmbCpptaD22lvzQaLUIf580pBtvEf02e/wNpw9XBoAaEx/DEuZLY08igkVNr3IZ2daeRRPljwZHgygAijL44G80Cu3OF+ULG6xSDaQ6yXh4mpj3zJq/fopCcXFbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982074; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SKaSMi3pt0gIgplZvrijN03Z46js5TRmGQTJjQZggCk=; b=eKnOfuFdI27+F+ini9Sf6uEo6LBSOqFtKXCBuzznt74/hJ2zM2Ga+snc0umac6RkgyCWHeppkBDDXWEane0gKuUJDg/LEdMSHfPq12N3z/PM0yuGj7b7YxM81XPEp+UJJv2czg7RZ+j3+WyeQKcqH2xA+YsE/VovOa5IW5/vBYk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176598207475158.15155986907007; Wed, 17 Dec 2025 06:34:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaX-00020e-Cy; Wed, 17 Dec 2025 09:33:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsaM-0001oz-AY for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:04 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsaI-0007EJ-CS for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:00 -0500 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-477b198f4bcso47007635e9.3 for ; Wed, 17 Dec 2025 06:32:56 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc1d20absm43939065e9.4.2025.12.17.06.32.52 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:32:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981974; x=1766586774; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SKaSMi3pt0gIgplZvrijN03Z46js5TRmGQTJjQZggCk=; b=iw3VW9EnFvgK0Ka7oF0kkKjsnkdNSCHiq87BQ8+HzYJzo/ZpYfyDK/ZIiVJFF5cCNk Ex9085VWscYUJioZA9GOHpQDUY5tYcm/kq3bo/qPgvdV3Nwxo9QxEHngvLp+qeRQnJ7Z wLBZZwmUEFhFXsNF7u2cMOOylRRSDQEtit4MWbcg0Dx5Y92+ee3kwxBudfSPeDpdBIYM zWU8f8My2nhdpjBRNMSpJF/qnQGPEh9WjkOROGvCItkB2a2JqyJ23NJxz69FA9kCt43d PJeBQ0RO3LsOkulXNGTs4RU9qxWpqETbQvZri/BQNRBEcKyo2tlMF4QoQOhvwlbKxi/r Ngww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981974; x=1766586774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SKaSMi3pt0gIgplZvrijN03Z46js5TRmGQTJjQZggCk=; b=KD3xmW+aBInsvUYXLmIIivqGR7PKG9vH7UB9QrQx02RkOuePfNKxnXIm1NoI+B18A7 /hvQo3Rpu0VhC+zDRGZ7ta2Tg2GGFQaTUg70kcHg9nMA01p+InfUJq2up3mseSrk24wY /FF3r0Bjnlm9pMErIDsfySvAa+jgB3yC65W83h427pljbty/0VjOSEtPwAgEHLFcj5Wz TQd66wUmv5RVhU1fsbIK2w5PhuSx3Nxuuue5/PeVpdOsUaRXl3vObiu70MnBwhuTMWRX PRWuuMhDSxG51EFJNS71KGKIWPT/KRgthphRLub32n+yFzCVWxLdyEAw03xMpq/lyAL1 QFSw== X-Gm-Message-State: AOJu0Yymqs+XoBfMPtTgnd5VMB1eVHhkaAIB9IpY+M3jvX+ynfMTonNa HlqvWkyw80mjtlsmGoa3pHJABHmLkfGeL9aVzQ3MUDCCz7oSQhKVP56mi39WMugQSUw5WPKPmWm /0NP85nrQyQ== X-Gm-Gg: AY/fxX53esosYbYP5Ey5Kdrnu/uNwWYqruVTtXXqOgujIbBL6wdNWIRyJQdA/euJG/E IRfsr95A6+SW2Z8OyZCBEFNWwkwxd5xArUWvJ0ivVjp0eKEAuRQJJQfvAskHKczyqXx7Wn+hIpb eW8gFxRpeOnAYtkBY1odnzZ2qxXBF0hMTAuRnYHEgUJIERvA+YaHKp2VqW+5LLCwYodWOySU0vD OH4heNF0fFP4YopYEPYwcREMUKaykRa+3xSbSIca8Tb4GWiMAakRm1YH58SMPX0SFClBkspdHen Oc8ub+mi0aml7VmqrZrm0chWA2SkgHI86HKAMpFsn1hEohmXEbmJlUzoH17N/MSVrCh8XR0pbic iEuZNdD/Z3yG1X3wn1Uea9vUHpNa7f1ufLNA+1Rq4Ny8xR09SncBsKuc5eCa45P/9l5P2BDlJpm ULpw8WO9pCChw8DD6ZFy3J7mXsefvtvGvy3uvbzlmk7lgSjaWv7xqcGO8Vhjj1QzkaM5tVlQg= X-Google-Smtp-Source: AGHT+IHRVKUtS2MEM4IPi/MXXjtHq2fsKmWv8GwyE05H6zNhhaPwSybZ3Ilytm6Dcec8WiosK2BWMA== X-Received: by 2002:a05:600c:a46:b0:477:63b5:6f76 with SMTP id 5b1f17b1804b1-47a8f90cefamr184197965e9.25.1765981974512; Wed, 17 Dec 2025 06:32:54 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 08/14] system/memory: Inline address_space_stq_internal() Date: Wed, 17 Dec 2025 15:31:44 +0100 Message-ID: <20251217143150.94463-9-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::329; envelope-from=philmd@linaro.org; helo=mail-wm1-x329.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982076965154100 As its name suggests, address_space_stq_internal() is an internal method which can be inlined like all the other ones in this file. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- system/memory_ldst.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index b45bfecd137..d5776678edf 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -422,7 +422,7 @@ void glue(address_space_stw_be, SUFFIX)(ARG1_DECL, DEVICE_BIG_ENDIAN); } =20 -static void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, +static inline void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982091; cv=none; d=zohomail.com; s=zohoarc; b=hEA6xFplMaZR0jMkijPbP8rgfMq0Nxo3qnjncsukI3vrzS/E2kTgQGCJgCtf7m/AxWipOXVvADVVzyuBvMs4hrDlHwmZRw47yrmSnOBbWVYkDEHL38Gp9r26FOHbDqPlww5t7L2wIXhM75L/M8OPqvIfLPwr/DMjXX9FEVdNcrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982091; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=npahtTZPNb59B+CU/KRSE/J9yiwWz2PKpOjmrQGOCdA=; b=f/zEzObqVgWpj4O2yLwlmjR//qFsOKQPGWFqur9qNp22ulXSCs6bVOugcSYB2C4AR7LX7eRs4mur6BDXFf+tIugd39oLV6nZjZcTGkZz1w0cDF8rMQLPiE10CU3vFo4udXT1M4Zj5bO9rS+z+D42KFc80NCCbAAm9jiS0HQCDK0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17659820911851021.551264300105; Wed, 17 Dec 2025 06:34:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaa-00025n-So; Wed, 17 Dec 2025 09:33:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsaZ-00023g-9r for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:15 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsaU-0007H0-6Y for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:14 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4779cb0a33fso69558475e9.0 for ; Wed, 17 Dec 2025 06:33:05 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4310ada846bsm5016541f8f.9.2025.12.17.06.33.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981982; x=1766586782; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=npahtTZPNb59B+CU/KRSE/J9yiwWz2PKpOjmrQGOCdA=; b=g7Z3X3osHDGvLVW+0g5KjQMQj8GN1odZCDTdd8KzbhojdHwXGqd1SVPmnByP+aTL57 CobuU3TNyOnH1ehCCXzpD+SAJzUtyUKrVArtVoHpQYF/QKOA8kbDrHlrfeN/7O+4THgt kfi61o1KZW/rU0R1g9TXx+Zs4efXOJ1knrRUBF4qHLHy4gQSUNRSBIGw0priWIulQRr1 RBUlvLjbEXhHcSMpChP/m0gb6ZCviXRXrIAdQcHVapQ273lNWEQginTze+4JEH011oso W791bJAahRrkNYn4FQ7NlbkWa28qEum5m4+vprcexy2oNvmZlng6Lyb9siJ88V81rnnL nFiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981982; x=1766586782; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=npahtTZPNb59B+CU/KRSE/J9yiwWz2PKpOjmrQGOCdA=; b=KrL0aDkxd8636c17+JrTjEmdfcfL3yITwrL8jmnf4p99LRtCuhttwjWsVa13IZeXbY WI+h4UWZ8zATRFMkBgxAJ46Je2FTJ0T1+B/n2zq0Np3pXE75xS731Sg1KGBMFYOqXqU/ P1egKI0Lq/59/U4biAgL9dggXvMEzCMdN1Yv+NCsrhBb1p307jZ5utHXAa0Inispj39y G/sFJ1TlRb6ne9nMBLJwjkg1Dr+ypNc4TyRI14UWxYdxdY4b/FyKIjbQeVYx5tEu9Lb8 fRQrZZ/HUbtBjP9SGhFhCgdIdmJDiCbDNYPtz24LwNOpOgYJoTHEePj44ezbgKNvrIwn fS3w== X-Gm-Message-State: AOJu0YxAJw+CDQXxOTFvhbLpDhihLxIp+OVYlX70hirYHpBGYMfTdUXj 7mGVjA2uxfxpgBxssh9uSUq+9H0hCUjiMFNLx/TfaRTair+jEnavCOgn0evwyKkzatev1xohY6Y xYcCd8nM2wg== X-Gm-Gg: AY/fxX4YPVVu3COpx5ly9oN0ZiNyYJsXgYbL4AhbHF8OZN+Dr2FsestfXcvwJGN/d8u ivVyKWnn5de1WLgtzMr9yRWRqbw64Q+ac7+yJarWEAUOZtP668gyZBZ6G28tDk/gC8qL7sUiihb QJw2IPOy/fHypZDfJzlM6PYECyLGtJlrGYN81cy/YVThYp0i5yQI1K1pVzzWbW5a/ILzo/Hegav +F7ay611JnnufgRD9Ml1/6BR1rLCbPY6iE21vvMRwLdqiwszCK6eIijmG5xh9owsZFduziKI435 86X2PgfMDn/g4A3gHmGfvhGSD2m6X/Y5UAyQJzey4cbjvuwmF7TL2eOil4q5slDPejZIG5BOv2F 4fpRKrDUBEukQqMZlALd/kW61p5LBe85uWCoXt0gnWAdtsp5107ZGFHedAXQk5wvDfOGjJO5YJX 63v7DlzAO2Uk9SkAOUPwl37sp/gQFYvh1TDAx9IaJ+X9p8R+nhwtuLkw0IRl8z X-Google-Smtp-Source: AGHT+IFz4aB2FClE+JBr9xpGXt0+LxuKd8VzhrJ8yc0DmbmXqBBLLPlemFmogH3RTY8odeSjZ8qLpg== X-Received: by 2002:a05:600c:8b61:b0:477:6d96:b3ca with SMTP id 5b1f17b1804b1-47a8f89b69fmr211658035e9.5.1765981982100; Wed, 17 Dec 2025 06:33:02 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 09/14] system/memory: Define address_space_ldst[W] endian variants via template Date: Wed, 17 Dec 2025 15:31:45 +0100 Message-ID: <20251217143150.94463-10-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::330; envelope-from=philmd@linaro.org; helo=mail-wm1-x330.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982092153158500 Like we do for other LD/ST APIs, use one template to declare and define all endianness variants of the address_space_lduw() methods. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- MAINTAINERS | 2 + include/exec/memory_ldst.h.inc | 21 ++++---- include/exec/memory_ldst_phys.h.inc | 45 ++++------------ include/system/memory_ldst_endian.h.inc | 25 +++++++++ include/system/memory_ldst_phys_endian.h.inc | 37 ++++++++++++++ system/memory_ldst.c.inc | 54 +++++--------------- system/memory_ldst_endian.c.inc | 42 +++++++++++++++ 7 files changed, 136 insertions(+), 90 deletions(-) create mode 100644 include/system/memory_ldst_endian.h.inc create mode 100644 include/system/memory_ldst_phys_endian.h.inc create mode 100644 system/memory_ldst_endian.c.inc diff --git a/MAINTAINERS b/MAINTAINERS index c299b84d418..41a45904cd5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3256,6 +3256,7 @@ F: include/system/ioport.h F: include/exec/memop.h F: include/system/memory.h F: include/system/memory_cached.h +F: include/system/memory_ldst* F: include/system/physmem.h F: include/system/ram_addr.h F: include/system/ramblock.h @@ -3265,6 +3266,7 @@ F: system/ioport.c F: system/memory.c F: system/memory_mapping.c F: system/physmem.c +F: system/memory_ldst* F: system/memory-internal.h F: system/ram-block-attributes.c F: scripts/coccinelle/memory-region-housekeeping.cocci diff --git a/include/exec/memory_ldst.h.inc b/include/exec/memory_ldst.h.inc index 173164fee3a..73c0366a247 100644 --- a/include/exec/memory_ldst.h.inc +++ b/include/exec/memory_ldst.h.inc @@ -19,24 +19,16 @@ * License along with this library; if not, see . */ =20 -uint16_t glue(address_space_lduw, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint32_t glue(address_space_ldl, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint64_t glue(address_space_ldq, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stw, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stl, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stq, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint16_t glue(address_space_lduw_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint16_t glue(address_space_lduw_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint32_t glue(address_space_ldl_le, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint32_t glue(address_space_ldl_be, SUFFIX)(ARG1_DECL, @@ -47,10 +39,6 @@ uint64_t glue(address_space_ldq_be, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stw_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stw_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stl_le, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stl_be, SUFFIX)(ARG1_DECL, @@ -60,6 +48,15 @@ void glue(address_space_stq_le, SUFFIX)(ARG1_DECL, void glue(address_space_stq_be, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); =20 +#define ENDIANNESS +#include "system/memory_ldst_endian.h.inc" + +#define ENDIANNESS _le +#include "system/memory_ldst_endian.h.inc" + +#define ENDIANNESS _be +#include "system/memory_ldst_endian.h.inc" + #undef ARG1_DECL #undef ARG1 #undef SUFFIX diff --git a/include/exec/memory_ldst_phys.h.inc b/include/exec/memory_ldst= _phys.h.inc index db67de75251..71c2e64ff0f 100644 --- a/include/exec/memory_ldst_phys.h.inc +++ b/include/exec/memory_ldst_phys.h.inc @@ -19,12 +19,6 @@ * License along with this library; if not, see . */ =20 -static inline uint16_t glue(lduw_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_lduw, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline uint32_t glue(ldl_phys, SUFFIX)(ARG1_DECL, hwaddr addr) { return glue(address_space_ldl, SUFFIX)(ARG1, addr, @@ -37,12 +31,6 @@ static inline uint64_t glue(ldq_phys, SUFFIX)(ARG1_DECL,= hwaddr addr) MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline void glue(stw_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint16_t= val) -{ - glue(address_space_stw, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline void glue(stl_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t= val) { glue(address_space_stl, SUFFIX)(ARG1, addr, val, @@ -61,18 +49,6 @@ static inline uint8_t glue(ldub_phys, SUFFIX)(ARG1_DECL,= hwaddr addr) MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline uint16_t glue(lduw_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_lduw_le, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NUL= L); -} - -static inline uint16_t glue(lduw_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_lduw_be, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NUL= L); -} - static inline uint32_t glue(ldl_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr) { return glue(address_space_ldl_le, SUFFIX)(ARG1, addr, @@ -103,18 +79,6 @@ static inline void glue(stb_phys, SUFFIX)(ARG1_DECL, hw= addr addr, uint8_t val) MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline void glue(stw_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint1= 6_t val) -{ - glue(address_space_stw_le, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - -static inline void glue(stw_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint1= 6_t val) -{ - glue(address_space_stw_be, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline void glue(stl_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint3= 2_t val) { glue(address_space_stl_le, SUFFIX)(ARG1, addr, val, @@ -139,6 +103,15 @@ static inline void glue(stq_be_phys, SUFFIX)(ARG1_DECL= , hwaddr addr, uint64_t va MEMTXATTRS_UNSPECIFIED, NULL); } =20 +#define ENDIANNESS +#include "system/memory_ldst_phys_endian.h.inc" + +#define ENDIANNESS _le +#include "system/memory_ldst_phys_endian.h.inc" + +#define ENDIANNESS _be +#include "system/memory_ldst_phys_endian.h.inc" + #undef ARG1_DECL #undef ARG1 #undef SUFFIX diff --git a/include/system/memory_ldst_endian.h.inc b/include/system/memor= y_ldst_endian.h.inc new file mode 100644 index 00000000000..4efd7f19f7e --- /dev/null +++ b/include/system/memory_ldst_endian.h.inc @@ -0,0 +1,25 @@ +/* + * Physical memory access endian templates + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2015 Linaro, Inc. + * Copyright (c) 2016 Red Hat, Inc. + * Copyright (c) 2025 Linaro Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#define ADDRESS_SPACE_LD(size) \ + glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX)) +#define ADDRESS_SPACE_ST(size) \ + glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX)) + +uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result); +void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, + MemTxAttrs attrs, MemTxResult *result); + +#undef ADDRESS_SPACE_LD +#undef ADDRESS_SPACE_ST + +#undef ENDIANNESS diff --git a/include/system/memory_ldst_phys_endian.h.inc b/include/system/= memory_ldst_phys_endian.h.inc new file mode 100644 index 00000000000..6c00edc2148 --- /dev/null +++ b/include/system/memory_ldst_phys_endian.h.inc @@ -0,0 +1,37 @@ +/* + * Physical memory access endian templates + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2015 Linaro, Inc. + * Copyright (c) 2016 Red Hat, Inc. + * Copyright (c) 2025 Linaro Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#define LD_PHYS(size) \ + glue(glue(ld, size), glue(ENDIANNESS, glue(_phys, SUFFIX))) +#define ADDRESS_SPACE_LD(size) \ + glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX)) + +#define ST_PHYS(size) \ + glue(glue(st, size), glue(ENDIANNESS, glue(_phys, SUFFIX))) +#define ADDRESS_SPACE_ST(size) \ + glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX)) + +static inline uint16_t LD_PHYS(uw)(ARG1_DECL, hwaddr addr) +{ + return ADDRESS_SPACE_LD(uw)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); +} + +static inline void ST_PHYS(w)(ARG1_DECL, hwaddr addr, uint16_t val) +{ + ADDRESS_SPACE_ST(w)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); +} + +#undef LD_PHYS +#undef ST_PHYS +#undef ADDRESS_SPACE_LD +#undef ADDRESS_SPACE_ST + +#undef ENDIANNESS diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index d5776678edf..c37a07b4f4a 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -240,27 +240,6 @@ static inline uint16_t glue(address_space_lduw_interna= l, SUFFIX)(ARG1_DECL, return val; } =20 -uint16_t glue(address_space_lduw, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_lduw_internal, SUFFIX)(ARG1, addr, attrs, re= sult, - DEVICE_NATIVE_ENDIAN); -} - -uint16_t glue(address_space_lduw_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_lduw_internal, SUFFIX)(ARG1, addr, attrs, re= sult, - DEVICE_LITTLE_ENDIAN); -} - -uint16_t glue(address_space_lduw_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_lduw_internal, SUFFIX)(ARG1, addr, attrs, re= sult, - DEVICE_BIG_ENDIAN); -} - /* warning: addr must be aligned */ static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, @@ -401,27 +380,6 @@ static inline void glue(address_space_stw_internal, SU= FFIX)(ARG1_DECL, RCU_READ_UNLOCK(); } =20 -void glue(address_space_stw, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stw_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_NATIVE_ENDIAN); -} - -void glue(address_space_stw_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stw_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_LITTLE_ENDIAN); -} - -void glue(address_space_stw_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stw_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_BIG_ENDIAN); -} - static inline void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) @@ -486,6 +444,18 @@ void glue(address_space_stq_be, SUFFIX)(ARG1_DECL, DEVICE_BIG_ENDIAN); } =20 +#define ENDIANNESS +#define DEVICE_ENDIANNESS DEVICE_NATIVE_ENDIAN +#include "memory_ldst_endian.c.inc" + +#define ENDIANNESS _le +#define DEVICE_ENDIANNESS DEVICE_LITTLE_ENDIAN +#include "memory_ldst_endian.c.inc" + +#define ENDIANNESS _be +#define DEVICE_ENDIANNESS DEVICE_BIG_ENDIAN +#include "memory_ldst_endian.c.inc" + #undef ARG1_DECL #undef ARG1 #undef SUFFIX diff --git a/system/memory_ldst_endian.c.inc b/system/memory_ldst_endian.c.= inc new file mode 100644 index 00000000000..8aa6ebeebb2 --- /dev/null +++ b/system/memory_ldst_endian.c.inc @@ -0,0 +1,42 @@ +/* + * Physical memory access endian templates + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2015 Linaro, Inc. + * Copyright (c) 2016 Red Hat, Inc. + * Copyright (c) 2025 Linaro Ltd. + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#define ADDRESS_SPACE_LD(size) \ + glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX)) +#define ADDRESS_SPACE_LD_INTERNAL(size) \ + glue(glue(address_space_ld, size), glue(_internal, SUFFIX)) + +#define ADDRESS_SPACE_ST(size) \ + glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX)) +#define ADDRESS_SPACE_ST_INTERNAL(size) \ + glue(glue(address_space_st, size), glue(_internal, SUFFIX)) + +uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result) +{ + return ADDRESS_SPACE_LD_INTERNAL(uw)(ARG1, addr, attrs, result, + DEVICE_ENDIANNESS); +} + +void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, + MemTxAttrs attrs, MemTxResult *result) +{ + ADDRESS_SPACE_ST_INTERNAL(w)(ARG1, addr, val, attrs, result, + DEVICE_ENDIANNESS); +} + +#undef ADDRESS_SPACE_LD +#undef ADDRESS_SPACE_LD_INTERNAL +#undef ADDRESS_SPACE_ST +#undef ADDRESS_SPACE_ST_INTERNAL + +#undef ENDIANNESS +#undef DEVICE_ENDIANNESS --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982072; cv=none; d=zohomail.com; s=zohoarc; b=PMUiUZhuy02yRscNOXFBddYromdJBwpeprL2XzIa3wMRNI1YPyWgOazLaUi3LEOgo8qMw/pVNiFRpEa31Jp9Dt/2o5RXA9/kLwGV7vVtAXF3xCD/cu23BjYnHC3fsgaITVzjLyyfUDWA1fPlmMSwG5bDwrx/gEE3kPYxkOoRPog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982072; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Se/V+8BAK4KJDNn9hIaPFGW+dBpbxSjDuDrSzg2IXOc=; b=W5PD+y7AuUba7K1viLr93YDwcww6PdPUBSSDo/+cJhvAFEboMI4k7F0xLkUAj9f3i1y35fJzRnDNbsA9XUJynm0d3QmHQCZ69YieoPHmHsRFK+juS4pUXHXX3VVfqDVwPBAbdJHm8MyA8zhdPWKxA1F4QDypFIfRrDk46Oki894= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982072788464.8490849517092; Wed, 17 Dec 2025 06:34:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsac-000278-8R; Wed, 17 Dec 2025 09:33:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsaa-00025d-7V for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:16 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsaX-0007J5-E0 for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:15 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-42e2d02a3c9so3612298f8f.3 for ; Wed, 17 Dec 2025 06:33:12 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4310ada856bsm5070561f8f.3.2025.12.17.06.33.07 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981990; x=1766586790; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Se/V+8BAK4KJDNn9hIaPFGW+dBpbxSjDuDrSzg2IXOc=; b=yB6lrN8r+/N9VqRZfhP2emjiloCddgCHFLSnQ9YSsoCpdIoOIBcR6WyvQSF5Z5FdW1 KfXjpO521rQ05AdU85IAFlH3QuXAXzDBiETam2rwsAgxnRMOtJPiFZzGJFU7hdmKbNLn 1wo9AaSrUUOEuia9CyvfkmOkX6JC2+HJPNYT67bARdj4F7aKmUlCtlMiSRj6aYJhHgGB K81slLMf2mgjnijaJPpsPvQjloORXLSBZUHt0lxAEQ4mTWMd9NGiscyHkTjS5o3hv3Pt gmrXQ9c5c+BMxhNdYQXeRFbGBD+xc20BrFj1Lo7wE5V8KlHM6oDtaVITOCkKy6GPuQ2X UbIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981990; x=1766586790; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Se/V+8BAK4KJDNn9hIaPFGW+dBpbxSjDuDrSzg2IXOc=; b=h9sRs8BbKaiVKu4CUqUBhvs2ji5Jf622MFRvODEXd8t24MpE35vd0zwlGPvAj9kBAu pBNNuv7UE3Ge+UzcCxTwuIJy00fiBK9T2643J6DkSM5cla5Y3tvB4P1FVt11ZtZgrDsb 6IIVlY+GocVDgm8NtGjMkzFvmeKpUix3BGUSv2S9LkreZgC0VWKMDN1ATqW8hcPzziPA 87nHDFey5ylx+TBm0q9c9lPyVV50UjK3aoNFA/EG1qBVslE1Rq4KdIdN3PjeCw35bBnF IAgq/lUO5sOhb3E7NkIeF32EEBmJ0kY6bKSS172cWuZQdV2+Gqk6UiQ/F0mY/N+p5PCN KgkA== X-Gm-Message-State: AOJu0YxAZMYGzGUCBqAt7gxbiK5+6wiIdO0Cmbf3n+yrEueemfyv16+r RXdm1OZUCNpzcMD3mnJ43j1ETRAdNu72EEqGevFXDPIeUPRB3Fs26Tz2OlQpOc6cEXd1XwGK1PU N6aRM0oeCaQ== X-Gm-Gg: AY/fxX6eaq9OV+5F4WLp3SwEh0mtK6iHGHvEhxWpFIuHu8AFvieLGWTYtc9kQOR5ija K3yQ+NTEXwywyjpz8Bi6CeKjE2WIiUy3VPXsPbfGB/TLOTVch7z3i8CGj1ajp3fBv33XK6i1SLF 1MLsUL9g4tZ8UEqiB3Wz4c83OX93TR5OW/H8mkKt3ossSEfZ8yKdIFrvyd4KDj9qRDJxQKKPZJO K5pDbSo78X/12aZlB2J4qGHkcxKxUgowVMbbE7IzTCkExwqOid+Oo/ZBO51S5fARbBtsSo1KflN nLk8Wk32F0+gU80ApxGbIyrCGCKgElcZ8w0TiUKtxmpwLGHkbHVa/KullgiVeqoeZVz6XLsVQyX +kWN60XBrig7tFLM/TOLw+H1Z+nwG18RhEGgf2AEC73uF0xkm5f5mDyKX8eX2hgoCAjVmIyVENX 3tmAIsWF4M4+ct64hZ2HF0QtfeG1n//EdVPcOOAvO/CVQpvVDo+aMiKdPHLg8U X-Google-Smtp-Source: AGHT+IEdhSWDIcM3um0Yf2Hnk13xDc4MCzagEKQ0ytuZpPMu9wkN6itBog4ll5aiTeL5cIoSnOJAIQ== X-Received: by 2002:a05:6000:4212:b0:431:9c5:8c3b with SMTP id ffacd0b85a97d-43109c58d6fmr5325582f8f.41.1765981990021; Wed, 17 Dec 2025 06:33:10 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 10/14] system/memory: Define address_space_ldst[L] endian variants via template Date: Wed, 17 Dec 2025 15:31:46 +0100 Message-ID: <20251217143150.94463-11-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::42d; envelope-from=philmd@linaro.org; helo=mail-wr1-x42d.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982074895154100 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- include/exec/memory_ldst.h.inc | 12 ------ include/exec/memory_ldst_phys.h.inc | 36 ----------------- include/system/memory_ldst_endian.h.inc | 4 ++ include/system/memory_ldst_phys_endian.h.inc | 10 +++++ system/memory_ldst.c.inc | 42 -------------------- system/memory_ldst_endian.c.inc | 14 +++++++ 6 files changed, 28 insertions(+), 90 deletions(-) diff --git a/include/exec/memory_ldst.h.inc b/include/exec/memory_ldst.h.inc index 73c0366a247..7ccca46f2a9 100644 --- a/include/exec/memory_ldst.h.inc +++ b/include/exec/memory_ldst.h.inc @@ -19,30 +19,18 @@ * License along with this library; if not, see . */ =20 -uint32_t glue(address_space_ldl, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint64_t glue(address_space_ldq, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stl, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stq, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint32_t glue(address_space_ldl_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint32_t glue(address_space_ldl_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint64_t glue(address_space_ldq_le, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint64_t glue(address_space_ldq_be, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stl_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stl_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stq_le, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); void glue(address_space_stq_be, SUFFIX)(ARG1_DECL, diff --git a/include/exec/memory_ldst_phys.h.inc b/include/exec/memory_ldst= _phys.h.inc index 71c2e64ff0f..c3c73419e61 100644 --- a/include/exec/memory_ldst_phys.h.inc +++ b/include/exec/memory_ldst_phys.h.inc @@ -19,24 +19,12 @@ * License along with this library; if not, see . */ =20 -static inline uint32_t glue(ldl_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldl, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline uint64_t glue(ldq_phys, SUFFIX)(ARG1_DECL, hwaddr addr) { return glue(address_space_ldq, SUFFIX)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline void glue(stl_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint32_t= val) -{ - glue(address_space_stl, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline void glue(stq_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t= val) { glue(address_space_stq, SUFFIX)(ARG1, addr, val, @@ -49,18 +37,6 @@ static inline uint8_t glue(ldub_phys, SUFFIX)(ARG1_DECL,= hwaddr addr) MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline uint32_t glue(ldl_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldl_le, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL= ); -} - -static inline uint32_t glue(ldl_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldl_be, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL= ); -} - static inline uint64_t glue(ldq_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr) { return glue(address_space_ldq_le, SUFFIX)(ARG1, addr, @@ -79,18 +55,6 @@ static inline void glue(stb_phys, SUFFIX)(ARG1_DECL, hwa= ddr addr, uint8_t val) MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline void glue(stl_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint3= 2_t val) -{ - glue(address_space_stl_le, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - -static inline void glue(stl_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint3= 2_t val) -{ - glue(address_space_stl_be, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline void glue(stq_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint6= 4_t val) { glue(address_space_stq_le, SUFFIX)(ARG1, addr, val, diff --git a/include/system/memory_ldst_endian.h.inc b/include/system/memor= y_ldst_endian.h.inc index 4efd7f19f7e..a3f543a715c 100644 --- a/include/system/memory_ldst_endian.h.inc +++ b/include/system/memory_ldst_endian.h.inc @@ -16,8 +16,12 @@ =20 uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); +uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result); void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); +void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val, + MemTxAttrs attrs, MemTxResult *result); =20 #undef ADDRESS_SPACE_LD #undef ADDRESS_SPACE_ST diff --git a/include/system/memory_ldst_phys_endian.h.inc b/include/system/= memory_ldst_phys_endian.h.inc index 6c00edc2148..0ec550979fa 100644 --- a/include/system/memory_ldst_phys_endian.h.inc +++ b/include/system/memory_ldst_phys_endian.h.inc @@ -24,11 +24,21 @@ static inline uint16_t LD_PHYS(uw)(ARG1_DECL, hwaddr ad= dr) return ADDRESS_SPACE_LD(uw)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); } =20 +static inline uint32_t LD_PHYS(l)(ARG1_DECL, hwaddr addr) +{ + return ADDRESS_SPACE_LD(l)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); +} + static inline void ST_PHYS(w)(ARG1_DECL, hwaddr addr, uint16_t val) { ADDRESS_SPACE_ST(w)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); } =20 +static inline void ST_PHYS(l)(ARG1_DECL, hwaddr addr, uint32_t val) +{ + ADDRESS_SPACE_ST(l)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); +} + #undef LD_PHYS #undef ST_PHYS #undef ADDRESS_SPACE_LD diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index c37a07b4f4a..ab2df6e429b 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -67,27 +67,6 @@ static inline uint32_t glue(address_space_ldl_internal, = SUFFIX)(ARG1_DECL, return val; } =20 -uint32_t glue(address_space_ldl, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldl_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_NATIVE_ENDIAN); -} - -uint32_t glue(address_space_ldl_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldl_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_LITTLE_ENDIAN); -} - -uint32_t glue(address_space_ldl_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldl_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_BIG_ENDIAN); -} - /* warning: addr must be aligned */ static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result, @@ -284,27 +263,6 @@ static inline void glue(address_space_stl_internal, SU= FFIX)(ARG1_DECL, RCU_READ_UNLOCK(); } =20 -void glue(address_space_stl, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stl_internal, SUFFIX)(ARG1, addr, val, attrs, - result, DEVICE_NATIVE_ENDIAN); -} - -void glue(address_space_stl_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stl_internal, SUFFIX)(ARG1, addr, val, attrs, - result, DEVICE_LITTLE_ENDIAN); -} - -void glue(address_space_stl_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stl_internal, SUFFIX)(ARG1, addr, val, attrs, - result, DEVICE_BIG_ENDIAN); -} - void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) { diff --git a/system/memory_ldst_endian.c.inc b/system/memory_ldst_endian.c.= inc index 8aa6ebeebb2..5bb59ff3d8e 100644 --- a/system/memory_ldst_endian.c.inc +++ b/system/memory_ldst_endian.c.inc @@ -26,6 +26,13 @@ uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, DEVICE_ENDIANNESS); } =20 +uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result) +{ + return ADDRESS_SPACE_LD_INTERNAL(l)(ARG1, addr, attrs, result, + DEVICE_ENDIANNESS); +} + void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) { @@ -33,6 +40,13 @@ void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_= t val, DEVICE_ENDIANNESS); } =20 +void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val, + MemTxAttrs attrs, MemTxResult *result) +{ + ADDRESS_SPACE_ST_INTERNAL(l)(ARG1, addr, val, attrs, result, + DEVICE_ENDIANNESS); +} + #undef ADDRESS_SPACE_LD #undef ADDRESS_SPACE_LD_INTERNAL #undef ADDRESS_SPACE_ST --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982053; cv=none; d=zohomail.com; s=zohoarc; b=JLo8nhnIN8eEXRRPqGdyFhxlD/0A59r2uKTKC42qQ/Eraez3oJkvjKW1P1AmL5gdSJKYxwvZgEF7hFSIm8DqyJBHnsH8zQse7OhZeFPLcDXv6phvPi3tfKYrZgnQKdMxXj5sD39UQZT3S0xF4YloUGwJXQwd/JhbS/IyEyrOoNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982053; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tGtVi4FJTCWPT5ULhRnfu9tg9XpQ523eSmroDWOUFuQ=; b=ZM9cpNuWgL28fvDhZD3OEzR2xniAD2i+7fHZuW4nB8ssr0JKhyrtgDx0xd9bbVAac3RSPVKqHh9gAivi0uWIYZhbk2c0QOZSFk80TJ+cR+X9ZzusKej+skOCU7CP9djrZCwIksGXTI5GP3dg5Bb0GEO12aWRfYobf9F+rYrM7Sc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982053738990.6197591369064; Wed, 17 Dec 2025 06:34:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsaj-0002DG-4z; Wed, 17 Dec 2025 09:33:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsag-0002Al-Aj for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:22 -0500 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsae-0007LL-Bw for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:22 -0500 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-42fbc3056afso2759820f8f.2 for ; Wed, 17 Dec 2025 06:33:20 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4310ade8063sm5091612f8f.23.2025.12.17.06.33.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765981998; x=1766586798; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tGtVi4FJTCWPT5ULhRnfu9tg9XpQ523eSmroDWOUFuQ=; b=LckkI9Uj2WGDyKgagJtgDxyAsXAtgLSsXtkgFEtha0SHz0sDOW/DSBjSHBweKiYR/0 ACv0oiIS8IazAx2ZnzBk7+oLSYfCsAZhONuw58VNtB9MQjGUyWsTRi1jBOeTVZYjr+rw 1EzRtpgy7Ey6XHXbgW9gOuCLgCRyQ4juCKi6aKavGlq37g7e+0VkueL7u7/OW3xqOzeO hp31sCG5ATe9bWYEUwjMq4CtNyLcf4zelGw7Z4IJdRirA5CqronUl+OXlOUddR32J6aU WftMlAV/7tT1BojS06cFB9Y1YFyD0s8dorvG7B31IuzjdEG/BFP22WTRpgC68TN26+7P AS0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765981998; x=1766586798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tGtVi4FJTCWPT5ULhRnfu9tg9XpQ523eSmroDWOUFuQ=; b=gVl0s7MD+lvGwtICNnZ8jd9f/JXyXrhpJbdwhGYhDUr84M0etp/etNf8kb4l8QpqCB k1eITRKYxki4bSiW7pZRTgoJi9d8/QPnNjMvDGBwBUUojKq2CsAuRewrsW+flMPegJpN iAs/g2cPFbClfLi/qpA2dnNLB5k6yiWxWK0sO0B5IpHAElJmRKR5ltSdLe4rwSeDSv3h 6+DxNafII7WVE2ETHVlls/UEwv1TlIM/glRebuuI58fPrKVA/Az4gdEbUfUz0byJ7MD0 3EjW4GWu6BUPFuAT+JXFWCSgE8UeJno80huwcTFHdbZYGGiIG10vn4cGfxHsqFJGquGw zRjw== X-Gm-Message-State: AOJu0Yz4I5L7K0LK3KBgTCAvf0JCPeVRcidOgb/uh3PA9vhbssIoSzBm xzxXpynSrCM5n5cMipEoAdzp8mOdaHjYd2kTMFuk/NkUpyskLhfxiYKgebpKFuDvJ0PULd78u28 836nbBeS/4Q== X-Gm-Gg: AY/fxX77kY2yt3cviwYwTZaCZlpgLNLYIxXXisMBc8TzjYyu0D/t48h4bjpTkjca96Z 7VPDcF25yB6DN6wjjAk52mx0qDT8Nfk2/lA1TXoK4zszGQBtq7DSDga1L6G9+vz8OfgW2C0FhQ2 TOlYkWrVGbhAAuDUrpniMzj7pbZnsUmHu89IybyNJOz4f8DCLliUS90KuY+w3LRL9TSAgxU0iEY VuSwMeXv5eNVGouBWl8y3tpD12m0/pYbiUhWOqaRcsIURGW2JmvKgWEdcAVxZ7egFaAzTU54TOD ZQTW/H212x/ayb+n0+b8qW+aIwkFjTfScEPetdfRbdrpEtgqdm3jZh/aMyeOxKoB7X1HDwWL8QV dMzhu1/A+wVDBtx4fnYER2u2317DBxP68Wu1wRujpCmXIpPwlQCOC+LwryzScT7xx2Upxb6H1sy 9/rDM2q3luO1wWQc67xhbSVLtq1a6aEIB23vwGVfX9NOQ7LhtBmqyBE52NSteU X-Google-Smtp-Source: AGHT+IH3wD0jf3vBt3nc1C3rifjOoYh+5dgzgRaMjiIvq9zK3lw1hFLZCdXPyHuSWfJgwBRpABOCyA== X-Received: by 2002:a05:6000:18a3:b0:431:9f1:e4c7 with SMTP id ffacd0b85a97d-43109f1e649mr4225119f8f.21.1765981997656; Wed, 17 Dec 2025 06:33:17 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 11/14] system/memory: Define address_space_ldst[Q] endian variants via template Date: Wed, 17 Dec 2025 15:31:47 +0100 Message-ID: <20251217143150.94463-12-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::42c; envelope-from=philmd@linaro.org; helo=mail-wr1-x42c.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982054793154100 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- include/exec/memory_ldst.h.inc | 17 ++------ include/exec/memory_ldst_phys.h.inc | 36 ----------------- include/system/memory_ldst_endian.h.inc | 4 ++ include/system/memory_ldst_phys_endian.h.inc | 10 +++++ system/memory_ldst.c.inc | 42 -------------------- system/memory_ldst_endian.c.inc | 14 +++++++ 6 files changed, 31 insertions(+), 92 deletions(-) diff --git a/include/exec/memory_ldst.h.inc b/include/exec/memory_ldst.h.inc index 7ccca46f2a9..dd1fb482eac 100644 --- a/include/exec/memory_ldst.h.inc +++ b/include/exec/memory_ldst.h.inc @@ -19,22 +19,11 @@ * License along with this library; if not, see . */ =20 -uint64_t glue(address_space_ldq, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stq, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint64_t glue(address_space_ldq_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); -uint64_t glue(address_space_ldq_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result); + hwaddr addr, MemTxAttrs attrs, MemTxResult *result); + void glue(address_space_stb, SUFFIX)(ARG1_DECL, - hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stq_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); -void glue(address_space_stq_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result); + hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result); =20 #define ENDIANNESS #include "system/memory_ldst_endian.h.inc" diff --git a/include/exec/memory_ldst_phys.h.inc b/include/exec/memory_ldst= _phys.h.inc index c3c73419e61..f4c91dc7a91 100644 --- a/include/exec/memory_ldst_phys.h.inc +++ b/include/exec/memory_ldst_phys.h.inc @@ -19,54 +19,18 @@ * License along with this library; if not, see . */ =20 -static inline uint64_t glue(ldq_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldq, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL); -} - -static inline void glue(stq_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t= val) -{ - glue(address_space_stq, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - static inline uint8_t glue(ldub_phys, SUFFIX)(ARG1_DECL, hwaddr addr) { return glue(address_space_ldub, SUFFIX)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline uint64_t glue(ldq_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldq_le, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL= ); -} - -static inline uint64_t glue(ldq_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr) -{ - return glue(address_space_ldq_be, SUFFIX)(ARG1, addr, - MEMTXATTRS_UNSPECIFIED, NULL= ); -} - static inline void glue(stb_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t = val) { glue(address_space_stb, SUFFIX)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); } =20 -static inline void glue(stq_le_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint6= 4_t val) -{ - glue(address_space_stq_le, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - -static inline void glue(stq_be_phys, SUFFIX)(ARG1_DECL, hwaddr addr, uint6= 4_t val) -{ - glue(address_space_stq_be, SUFFIX)(ARG1, addr, val, - MEMTXATTRS_UNSPECIFIED, NULL); -} - #define ENDIANNESS #include "system/memory_ldst_phys_endian.h.inc" =20 diff --git a/include/system/memory_ldst_endian.h.inc b/include/system/memor= y_ldst_endian.h.inc index a3f543a715c..ec86e42afbc 100644 --- a/include/system/memory_ldst_endian.h.inc +++ b/include/system/memory_ldst_endian.h.inc @@ -18,10 +18,14 @@ uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result); +uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result); void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result); void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result); +void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val, + MemTxAttrs attrs, MemTxResult *result); =20 #undef ADDRESS_SPACE_LD #undef ADDRESS_SPACE_ST diff --git a/include/system/memory_ldst_phys_endian.h.inc b/include/system/= memory_ldst_phys_endian.h.inc index 0ec550979fa..9603d886867 100644 --- a/include/system/memory_ldst_phys_endian.h.inc +++ b/include/system/memory_ldst_phys_endian.h.inc @@ -29,6 +29,11 @@ static inline uint32_t LD_PHYS(l)(ARG1_DECL, hwaddr addr) return ADDRESS_SPACE_LD(l)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); } =20 +static inline uint64_t LD_PHYS(q)(ARG1_DECL, hwaddr addr) +{ + return ADDRESS_SPACE_LD(q)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL); +} + static inline void ST_PHYS(w)(ARG1_DECL, hwaddr addr, uint16_t val) { ADDRESS_SPACE_ST(w)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); @@ -39,6 +44,11 @@ static inline void ST_PHYS(l)(ARG1_DECL, hwaddr addr, ui= nt32_t val) ADDRESS_SPACE_ST(l)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); } =20 +static inline void ST_PHYS(q)(ARG1_DECL, hwaddr addr, uint64_t val) +{ + ADDRESS_SPACE_ST(q)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL); +} + #undef LD_PHYS #undef ST_PHYS #undef ADDRESS_SPACE_LD diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index ab2df6e429b..823fc3a7561 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -115,27 +115,6 @@ static inline uint64_t glue(address_space_ldq_internal= , SUFFIX)(ARG1_DECL, return val; } =20 -uint64_t glue(address_space_ldq, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldq_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_NATIVE_ENDIAN); -} - -uint64_t glue(address_space_ldq_le, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldq_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_LITTLE_ENDIAN); -} - -uint64_t glue(address_space_ldq_be, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldq_internal, SUFFIX)(ARG1, addr, attrs, res= ult, - DEVICE_BIG_ENDIAN); -} - uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { @@ -381,27 +360,6 @@ static inline void glue(address_space_stq_internal, SU= FFIX)(ARG1_DECL, RCU_READ_UNLOCK(); } =20 -void glue(address_space_stq, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stq_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_NATIVE_ENDIAN); -} - -void glue(address_space_stq_le, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stq_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_LITTLE_ENDIAN); -} - -void glue(address_space_stq_be, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) -{ - glue(address_space_stq_internal, SUFFIX)(ARG1, addr, val, attrs, resul= t, - DEVICE_BIG_ENDIAN); -} - #define ENDIANNESS #define DEVICE_ENDIANNESS DEVICE_NATIVE_ENDIAN #include "memory_ldst_endian.c.inc" diff --git a/system/memory_ldst_endian.c.inc b/system/memory_ldst_endian.c.= inc index 5bb59ff3d8e..16d686b50f7 100644 --- a/system/memory_ldst_endian.c.inc +++ b/system/memory_ldst_endian.c.inc @@ -33,6 +33,13 @@ uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, DEVICE_ENDIANNESS); } =20 +uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *result) +{ + return ADDRESS_SPACE_LD_INTERNAL(q)(ARG1, addr, attrs, result, + DEVICE_ENDIANNESS); +} + void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) { @@ -47,6 +54,13 @@ void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_= t val, DEVICE_ENDIANNESS); } =20 +void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val, + MemTxAttrs attrs, MemTxResult *result) +{ + ADDRESS_SPACE_ST_INTERNAL(q)(ARG1, addr, val, attrs, result, + DEVICE_ENDIANNESS); +} + #undef ADDRESS_SPACE_LD #undef ADDRESS_SPACE_LD_INTERNAL #undef ADDRESS_SPACE_ST --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982091; cv=none; d=zohomail.com; s=zohoarc; b=khWOAqNrxBvvnFFDa+k9+gOLwADglOaZp+FdYZyP99VXEotBg0oHEeCDVAmbUNekfO1gyAn3quIL05z5QFDFXZ/P0OE6w9SngSg2GzF0GisCAQoNPYYi6dqs6fOvlemk/hUwEHptXEqfLYsFnEb3Pgoo/T3xlF4PSVvHiV56Iu4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982091; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yTrLTCQAR+WIjoXDYPtn5NC7w8Km68fucdOgKRYF8+w=; b=nyovf5oc5zJL/bGYbBat0ybxk0jcSkIhCSlS5uCXpbmg3MSFY8L5gwpefbzXrhRQrXdPhgS+eGoaHv9GaG3s6mB/PuqHUSkkZaGI1hpKcSWRuWbMa4hJCSP5AeM0oPR2ACm3eVJlMspmYzKACuJnIzTjc9ZjxjV5E7LqOjQRfY8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176598209128691.96600300288685; Wed, 17 Dec 2025 06:34:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsas-0002FD-KX; Wed, 17 Dec 2025 09:33:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsao-0002Eo-RD for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:30 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsam-0007NO-Qk for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:30 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-477aa218f20so39436805e9.0 for ; Wed, 17 Dec 2025 06:33:27 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc1efda5sm41204055e9.15.2025.12.17.06.33.23 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765982005; x=1766586805; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yTrLTCQAR+WIjoXDYPtn5NC7w8Km68fucdOgKRYF8+w=; b=Sl3Y7HCfeYEvXkubXuwWPKfA1roNEzXQV2ljZdRuRcAhwctvxIfztj0bA9JHdINQxE +fKhQ0zE0ljO9GITNQMWNwq9WFJFJbZ0/MqNbvzVlmpuLDAdLjoeyUaMYJ8sgSJxbwic n03NlShzU789ozO+s7dYlmU7FcIRi/sZ4pdhWEmcj2tRLUJp07QkzmygPeyaSyGIqOTK wGkDCpmZO9kAzEiYyYb5NOvQgGUgSjzewAaKSAIUacLjz2Tn6r8YAQfp8Ktqm84+lP1I 6oKmGFFE0TOtV6ORlBW/3iTiiDk5oYKt0TVd36uP2ABk630x2wJUJHPMXr+8PYyz2Dt3 gu1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765982005; x=1766586805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yTrLTCQAR+WIjoXDYPtn5NC7w8Km68fucdOgKRYF8+w=; b=mPeqTHz+yG9LJSwRCCtrbwbyu/uuXlX2w1pIZztDqqnaW3t3X33Hzjl75dzXPPVdKq DFlIwbb8u41+pQE0CODwnKPLnft8UYaAOEGeA/pyExyg8gOXQ1ZLyKuwVELSZj30aVj9 4/qtR9NHqpQa655uO3+tuM1RKPsyazIi4/Ih3cuY7wmsL6UF8KpDANrlolVerH66z/kY XXUlzCL4tYRyW/58fyHUP7tEs4iRqrocYWwytyWyiPukn3xRD5i8+PawbI17L6umeSdO zuyFgTB5+kaW82PwfWA4lQAackdvyJq63ejsyd3xHjtCrakpQj/ot8jE4Lu52j9XWl61 8hcw== X-Gm-Message-State: AOJu0YwVcrMXrdfHabcguxCj52+iliCc9GyQMPqxBAiLvTwUG50r88wQ zTuEat/KGGdT5j0yPLm7kzdatA9NuxXsyeMg2r1SlnrzjHR/FkIuQhJam+77Y8rrG/H4z0crqkN ApCp4YotSxQ== X-Gm-Gg: AY/fxX4oN/fdV0PCbZuVO4xEnO5MxBAOw+4un0f1+7gj7AUaxdhuEaqIhm1jqEyI7Lt qCoa8HF3F9mNFIGEzWJcq7TnuuWlxPhyw4XAtm2mh5LWFPuBe9A3RyPf4jud2UGuOVp5STYJ03T l5XfyvNBjUWOwFIlyLjgpBy8QaaojQyi4rb7QN3QHlpFSLb45axnJ8bt/Gedydc2N8fwvMa2tnn a+mtCskLFuhVu1ukax11Zw5kegBdVHhIAGXXKgci1gy8Jd+Eb4qrf60Qmqo6GCrqYiVuJvCkp60 mgQAw2/OpGE5A3iHbjzDQ71bOdF8QWgnd7BGvYaCRq/g2UZtXtW7xks0gTQOfNw1Ppvsv8UbfZg kH89GnazpL+Ls6uP4ztEoXgQRt0RnfwlRmucBYS6g3UH6IKRnJZ2BcHQfPTeUTnRfrjiJ2JxEi/ 56pqad+pXHanIdLi+L3JXt9503EnrwTgM17MfiKiZjsFpqLguCMDEQcsiEZuFk X-Google-Smtp-Source: AGHT+IFTin2JM+CLAmSbZODJyBZA4akFudZGUkoGoluWu+1O0xt3/YpAGKNEU8E8K+a+3YdonoBhUA== X-Received: by 2002:a05:600c:3588:b0:477:9cdb:e337 with SMTP id 5b1f17b1804b1-47a933a89a1mr190058025e9.7.1765982005321; Wed, 17 Dec 2025 06:33:25 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 12/14] system/memory: Factor address_space_ldst[M]_internal() helper out Date: Wed, 17 Dec 2025 15:31:48 +0100 Message-ID: <20251217143150.94463-13-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::332; envelope-from=philmd@linaro.org; helo=mail-wm1-x332.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982092138158500 All the LD/ST[W,L,Q] variants use the same template, only modifying the access size used. Unify as a single pair of LD/ST methods taking a MemOp argument. Thus use the 'm' suffix for MemOp. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- system/memory_ldst.c.inc | 289 ++++++++------------------------------- 1 file changed, 58 insertions(+), 231 deletions(-) diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index 823fc3a7561..e0c0c3f5dca 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -20,39 +20,43 @@ */ =20 /* warning: addr must be aligned */ -static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result, - enum device_endian endian) +static inline +uint64_t glue(address_space_ldm_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, + MemTxAttrs attrs, + MemTxResult *result, + enum device_endian endia= n) { + const unsigned size =3D memop_size(mop); uint8_t *ptr; uint64_t val; MemoryRegion *mr; - hwaddr l =3D 4; + hwaddr l =3D size; hwaddr addr1; MemTxResult r; bool release_lock =3D false; =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 4 || !memory_access_is_direct(mr, false, attrs)) { + if (l < size || !memory_access_is_direct(mr, false, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ r =3D memory_region_dispatch_read(mr, addr1, &val, - MO_32 | devend_memop(endian), attr= s); + mop | devend_memop(endian), attrs); } else { /* RAM case */ - fuzz_dma_read_cb(addr, 4, mr); + fuzz_dma_read_cb(addr, size, mr); ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); switch (endian) { case DEVICE_LITTLE_ENDIAN: - val =3D ldl_le_p(ptr); + val =3D ldn_le_p(ptr, size); break; case DEVICE_BIG_ENDIAN: - val =3D ldl_be_p(ptr); + val =3D ldn_be_p(ptr, size); break; default: - val =3D ldl_p(ptr); + val =3D ldn_p(ptr, size); break; } r =3D MEMTX_OK; @@ -67,87 +71,30 @@ static inline uint32_t glue(address_space_ldl_internal,= SUFFIX)(ARG1_DECL, return val; } =20 +/* warning: addr must be aligned */ +static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL, + hwaddr addr, MemTxAttrs attrs, MemTxResult *result, + enum device_endian endian) +{ + return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_32, addr, + attrs, result, endian); +} + /* warning: addr must be aligned */ static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { - uint8_t *ptr; - uint64_t val; - MemoryRegion *mr; - hwaddr l =3D 8; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 8 || !memory_access_is_direct(mr, false, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - - /* I/O case */ - r =3D memory_region_dispatch_read(mr, addr1, &val, - MO_64 | devend_memop(endian), attr= s); - } else { - /* RAM case */ - fuzz_dma_read_cb(addr, 8, mr); - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: - val =3D ldq_le_p(ptr); - break; - case DEVICE_BIG_ENDIAN: - val =3D ldq_be_p(ptr); - break; - default: - val =3D ldq_p(ptr); - break; - } - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); - return val; + return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_64, addr, + attrs, result, endian); } =20 uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - uint8_t *ptr; - uint64_t val; - MemoryRegion *mr; - hwaddr l =3D 1; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (!memory_access_is_direct(mr, false, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - - /* I/O case */ - r =3D memory_region_dispatch_read(mr, addr1, &val, MO_8, attrs); - } else { - /* RAM case */ - fuzz_dma_read_cb(addr, 1, mr); - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - val =3D ldub_p(ptr); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); - return val; + return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_8, addr, + attrs, result, + DEVICE_NATIVE_ENDIAN); } =20 /* warning: addr must be aligned */ @@ -155,37 +102,46 @@ static inline uint16_t glue(address_space_lduw_intern= al, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { + return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_16, addr, + attrs, result, endian); +} + +static inline +void glue(address_space_stm_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, uint64_t val, + MemTxAttrs attrs, + MemTxResult *result, + enum device_endian endian) +{ + const unsigned size =3D memop_size(mop); uint8_t *ptr; - uint64_t val; MemoryRegion *mr; - hwaddr l =3D 2; + hwaddr l =3D size; hwaddr addr1; MemTxResult r; bool release_lock =3D false; =20 RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 2 || !memory_access_is_direct(mr, false, attrs)) { + mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); + if (l < size || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); - - /* I/O case */ - r =3D memory_region_dispatch_read(mr, addr1, &val, - MO_16 | devend_memop(endian), attr= s); + r =3D memory_region_dispatch_write(mr, addr1, val, + mop | devend_memop(endian), attrs= ); } else { /* RAM case */ - fuzz_dma_read_cb(addr, 2, mr); ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); switch (endian) { case DEVICE_LITTLE_ENDIAN: - val =3D lduw_le_p(ptr); + stn_le_p(ptr, size, val); break; case DEVICE_BIG_ENDIAN: - val =3D lduw_be_p(ptr); + stn_be_p(ptr, size, val); break; default: - val =3D lduw_p(ptr); + stn_p(ptr, size, val); break; } + invalidate_and_set_dirty(mr, addr1, size); r =3D MEMTX_OK; } if (result) { @@ -195,7 +151,6 @@ static inline uint16_t glue(address_space_lduw_internal= , SUFFIX)(ARG1_DECL, bql_unlock(); } RCU_READ_UNLOCK(); - return val; } =20 /* warning: addr must be aligned */ @@ -203,74 +158,16 @@ static inline void glue(address_space_stl_internal, S= UFFIX)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { - uint8_t *ptr; - MemoryRegion *mr; - hwaddr l =3D 4; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 4 || !memory_access_is_direct(mr, true, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - r =3D memory_region_dispatch_write(mr, addr1, val, - MO_32 | devend_memop(endian), att= rs); - } else { - /* RAM case */ - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: - stl_le_p(ptr, val); - break; - case DEVICE_BIG_ENDIAN: - stl_be_p(ptr, val); - break; - default: - stl_p(ptr, val); - break; - } - invalidate_and_set_dirty(mr, addr1, 4); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); + glue(address_space_stm_internal, SUFFIX)(ARG1, MO_32, addr, val, + attrs, result, endian); } =20 void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) { - uint8_t *ptr; - MemoryRegion *mr; - hwaddr l =3D 1; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (!memory_access_is_direct(mr, true, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - r =3D memory_region_dispatch_write(mr, addr1, val, MO_8, attrs); - } else { - /* RAM case */ - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - stb_p(ptr, val); - invalidate_and_set_dirty(mr, addr1, 1); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); + glue(address_space_stm_internal, SUFFIX)(ARG1, MO_8, addr, val, + attrs, result, + DEVICE_NATIVE_ENDIAN); } =20 /* warning: addr must be aligned */ @@ -278,86 +175,16 @@ static inline void glue(address_space_stw_internal, S= UFFIX)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { - uint8_t *ptr; - MemoryRegion *mr; - hwaddr l =3D 2; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 2 || !memory_access_is_direct(mr, true, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - r =3D memory_region_dispatch_write(mr, addr1, val, - MO_16 | devend_memop(endian), att= rs); - } else { - /* RAM case */ - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: - stw_le_p(ptr, val); - break; - case DEVICE_BIG_ENDIAN: - stw_be_p(ptr, val); - break; - default: - stw_p(ptr, val); - break; - } - invalidate_and_set_dirty(mr, addr1, 2); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); + glue(address_space_stm_internal, SUFFIX)(ARG1, MO_16, addr, val, + attrs, result, endian); } =20 static inline void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result, enum device_endian endian) { - uint8_t *ptr; - MemoryRegion *mr; - hwaddr l =3D 8; - hwaddr addr1; - MemTxResult r; - bool release_lock =3D false; - - RCU_READ_LOCK(); - mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 8 || !memory_access_is_direct(mr, true, attrs)) { - release_lock |=3D prepare_mmio_access(mr); - r =3D memory_region_dispatch_write(mr, addr1, val, - MO_64 | devend_memop(endian), att= rs); - } else { - /* RAM case */ - ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: - stq_le_p(ptr, val); - break; - case DEVICE_BIG_ENDIAN: - stq_be_p(ptr, val); - break; - default: - stq_p(ptr, val); - break; - } - invalidate_and_set_dirty(mr, addr1, 8); - r =3D MEMTX_OK; - } - if (result) { - *result =3D r; - } - if (release_lock) { - bql_unlock(); - } - RCU_READ_UNLOCK(); + glue(address_space_stm_internal, SUFFIX)(ARG1, MO_64, addr, val, + attrs, result, endian); } =20 #define ENDIANNESS --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982115; cv=none; d=zohomail.com; s=zohoarc; b=Y+1WO4WKtbwB3K8HTd+UoEHTC61p7lSanbL61XjFYOIAd18l4jeKKUkevCGYnLznnJDgLawXVA78V1ySybhK1h42qk25f2LhLDlwOHszHqoSRJ1/6OPbg+UR8PONZyUtw0sA1jdiwNr2PdUbT3twTq2vqTKilfCcoPz32Cmz294= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982115; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ruVgiLAX4pIcKIdX5Gb+1F0dTqHySf0+5Iyb0GQxoak=; b=f8b3qjyeLHsMT3DYV4X4mdfJKMtl69axMzns8KmTZYw518e2Y8b7QqPVdVGTOngMQsBDY+EP98bO2PwQsqkbl4+AJ2ykYNXgfISObzcnXu1Bcn6goTrTEBEsmpvGTaTuhacsA8GjCEaYAesMESFLjmmsUzOItIMi+1P1Q8XJBp8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982115561907.9417440136772; Wed, 17 Dec 2025 06:35:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsax-0002Pd-6O; Wed, 17 Dec 2025 09:33:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsav-0002Lj-PF for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:37 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsat-0007RF-PR for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:37 -0500 Received: by mail-wm1-x344.google.com with SMTP id 5b1f17b1804b1-477aa218f20so39438215e9.0 for ; Wed, 17 Dec 2025 06:33:35 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bdc2221e3sm38847355e9.10.2025.12.17.06.33.31 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765982013; x=1766586813; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ruVgiLAX4pIcKIdX5Gb+1F0dTqHySf0+5Iyb0GQxoak=; b=GH2MbCMP0PC6IENO0Lm9oOlwyptLOlSxFevQ9Rch49qlTmRPy9O3+zMp2iTSRr1zO3 y88lBzE6INSABm6yOOPTeQApvA4B6JNTQrCGTb+81Ehh5rO0ghy77jxf+pQxRTiCrTYu 49B5W20Klk/kEX13Gc3LbZLx2housSlmnmk+tPLw/Qgv/afeZvS3I0ufkx/xFzty5jRk 4P8ak9cQucTfKMchS3m87isIzrztcgCFruKrtOurb97hq0TlxinnjvTIm/ncbhSPJ2T7 JjeGUdYMW/7hKzlZ4fmGEqXdyWAWV29nFJMaEmPK4U0+Hba2huRKM2ZzmJEkOFnbhDgU nzIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765982013; x=1766586813; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ruVgiLAX4pIcKIdX5Gb+1F0dTqHySf0+5Iyb0GQxoak=; b=uhlnyPDSLuM/4+YrCUYJ3vHCPaAx+0hbFRGWxvo4NDdRyvbKPzHTtxiDhr7r+kJ5ud 7raSjDJF5dwizH2ZPivlcYx+sAyoG3pJrou8qoDUwAwAmrobZdh8guk1fCxdLvdJyrRf UWyAS4ZMNlpH4GqFDjKKz8Kk55ewB2bSB5RuO3F6VdPctuBxai6DVj3WcWiXQo4noEJi 4PEa28y9LRU8RF3B61RuX6/W3lDL0eLYecQEq4V4NMhNcfs86xhz6pdxJ/A3qQ9Ni7ud gaQRjb4OenrJWcMNt+sljfnC39xWVr4DrqZLBjCAlmbHfczATkxO9IH7Sk2yoktIrsdD ZXpA== X-Gm-Message-State: AOJu0YyAJuLITT1cA7WVoDmH+CZuBf0SvXe5m6Fb+jVLTgPJYkP7BLDn ovFAEGXFHU7i+igbzDQy4znXn9hZ7kF4Ups22Uh5rMq5vnANT906fmuRFpYSQ6EmXZE6Qtk+tP8 zmAx5+SEMXP/a X-Gm-Gg: AY/fxX4YB03RWF76hsXCJpVLcYCKTknOYeVH3PlyUaAfMCTinDxvOxQ8qwDyfZz3ruE behm/+aMIlKqLZLqHRv+nN46NE/1wATWYADAdTjtVhXVskLe6h5oHuTv5IbTYR2LEgJAnIr/DQW uyaDUKzgDkoNo2Ukh7ZHfpPIsfPBAGGEcaKmgDKoIUxqNGdnxvADYLpxuZw2nTW8o7aiPFLbm+L jCNw/GtNeD7UXsyHyIvHh71+6+Ow/sM2070GnRu/kKMIeTWogVviGGs19uKZ02+jc8iZ1KUhj/4 M9lTly1Ra0KhEXsH0RaT7DbZyEetjvKSpX6HjPt29D69z0KLxcZAjHujSYA9OIcj17jE2OxX2KJ Lwln1m0N1gl3199FjFWHHWCcM4U0W0Kdo2JAoEmDt7EJlJaO2V/6m5outHcUOYr248ADqIkND7L aYzOUnXYtT0Kt7uxdcpAPlDNvG9OAg4f0cg+TtoLFgb3w7tlp6LuEf3GYe19EO X-Google-Smtp-Source: AGHT+IFbwGs5GMaGym0pvXkgDiFIXfgS0x9fXYvOKPoEBdrV9yaQyQYlbKisrdSkEYf1RQdx6Pp9Ug== X-Received: by 2002:a05:600c:4711:b0:475:da1a:53f9 with SMTP id 5b1f17b1804b1-47a8f8c13a4mr158132765e9.14.1765982012772; Wed, 17 Dec 2025 06:33:32 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 13/14] system/memory: Pass device_endian argument as MemOp bit Date: Wed, 17 Dec 2025 15:31:49 +0100 Message-ID: <20251217143150.94463-14-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::344; envelope-from=philmd@linaro.org; helo=mail-wm1-x344.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982117740154100 Use the MemOp argument to hold both the access size and its endianness. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- system/memory_ldst.c.inc | 86 ++++++++++++--------------------- system/memory_ldst_endian.c.inc | 20 +++----- 2 files changed, 38 insertions(+), 68 deletions(-) diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index e0c0c3f5dca..6387bb9d332 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -24,8 +24,7 @@ static inline uint64_t glue(address_space_ldm_internal, SUFFIX)(ARG1_DECL, MemOp mop, hwaddr addr, MemTxAttrs attrs, - MemTxResult *result, - enum device_endian endia= n) + MemTxResult *result) { const unsigned size =3D memop_size(mop); uint8_t *ptr; @@ -42,22 +41,15 @@ uint64_t glue(address_space_ldm_internal, SUFFIX)(ARG1_= DECL, MemOp mop, release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ - r =3D memory_region_dispatch_read(mr, addr1, &val, - mop | devend_memop(endian), attrs); + r =3D memory_region_dispatch_read(mr, addr1, &val, mop, attrs); } else { /* RAM case */ fuzz_dma_read_cb(addr, size, mr); ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: + if ((mop & MO_BSWAP) =3D=3D MO_LE) { val =3D ldn_le_p(ptr, size); - break; - case DEVICE_BIG_ENDIAN: + } else { val =3D ldn_be_p(ptr, size); - break; - default: - val =3D ldn_p(ptr, size); - break; } r =3D MEMTX_OK; } @@ -73,45 +65,40 @@ uint64_t glue(address_space_ldm_internal, SUFFIX)(ARG1_= DECL, MemOp mop, =20 /* warning: addr must be aligned */ static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result, - enum device_endian endian) + MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_32, addr, - attrs, result, endian); + return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_32, add= r, + attrs, result); } =20 /* warning: addr must be aligned */ static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result, - enum device_endian endian) + MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_64, addr, - attrs, result, endian); + return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_64, add= r, + attrs, result); } =20 uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_8, addr, - attrs, result, - DEVICE_NATIVE_ENDIAN); + attrs, result); } =20 /* warning: addr must be aligned */ static inline uint16_t glue(address_space_lduw_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result, - enum device_endian endian) + MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_16, addr, - attrs, result, endian); + return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_16, add= r, + attrs, result); } =20 static inline void glue(address_space_stm_internal, SUFFIX)(ARG1_DECL, MemOp mop, hwaddr addr, uint64_t val, MemTxAttrs attrs, - MemTxResult *result, - enum device_endian endian) + MemTxResult *result) { const unsigned size =3D memop_size(mop); uint8_t *ptr; @@ -125,21 +112,14 @@ void glue(address_space_stm_internal, SUFFIX)(ARG1_DE= CL, MemOp mop, mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); if (l < size || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); - r =3D memory_region_dispatch_write(mr, addr1, val, - mop | devend_memop(endian), attrs= ); + r =3D memory_region_dispatch_write(mr, addr1, val, mop, attrs); } else { /* RAM case */ ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); - switch (endian) { - case DEVICE_LITTLE_ENDIAN: + if ((mop & MO_BSWAP) =3D=3D MO_LE) { stn_le_p(ptr, size, val); - break; - case DEVICE_BIG_ENDIAN: + } else { stn_be_p(ptr, size, val); - break; - default: - stn_p(ptr, size, val); - break; } invalidate_and_set_dirty(mr, addr1, size); r =3D MEMTX_OK; @@ -155,48 +135,44 @@ void glue(address_space_stm_internal, SUFFIX)(ARG1_DE= CL, MemOp mop, =20 /* warning: addr must be aligned */ static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, uint32_t val, MemTxAttrs attrs, - MemTxResult *result, enum device_endian endian) + MemOp mop, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *r= esult) { - glue(address_space_stm_internal, SUFFIX)(ARG1, MO_32, addr, val, - attrs, result, endian); + glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_32, addr, val, + attrs, result); } =20 void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) { glue(address_space_stm_internal, SUFFIX)(ARG1, MO_8, addr, val, - attrs, result, - DEVICE_NATIVE_ENDIAN); + attrs, result); } =20 /* warning: addr must be aligned */ static inline void glue(address_space_stw_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, uint16_t val, MemTxAttrs attrs, - MemTxResult *result, enum device_endian endian) + MemOp mop, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *r= esult) { - glue(address_space_stm_internal, SUFFIX)(ARG1, MO_16, addr, val, - attrs, result, endian); + glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_16, addr, val, + attrs, result); } =20 static inline void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, - hwaddr addr, uint64_t val, MemTxAttrs attrs, - MemTxResult *result, enum device_endian endian) + MemOp mop, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *r= esult) { - glue(address_space_stm_internal, SUFFIX)(ARG1, MO_64, addr, val, - attrs, result, endian); + glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_64, addr, val, + attrs, result); } =20 #define ENDIANNESS -#define DEVICE_ENDIANNESS DEVICE_NATIVE_ENDIAN +#define MO_ENDIAN (target_big_endian() ? MO_BE : MO_LE) #include "memory_ldst_endian.c.inc" =20 #define ENDIANNESS _le -#define DEVICE_ENDIANNESS DEVICE_LITTLE_ENDIAN +#define MO_ENDIAN MO_LE #include "memory_ldst_endian.c.inc" =20 #define ENDIANNESS _be -#define DEVICE_ENDIANNESS DEVICE_BIG_ENDIAN +#define MO_ENDIAN MO_BE #include "memory_ldst_endian.c.inc" =20 #undef ARG1_DECL diff --git a/system/memory_ldst_endian.c.inc b/system/memory_ldst_endian.c.= inc index 16d686b50f7..8a4b4a3d220 100644 --- a/system/memory_ldst_endian.c.inc +++ b/system/memory_ldst_endian.c.inc @@ -22,43 +22,37 @@ uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return ADDRESS_SPACE_LD_INTERNAL(uw)(ARG1, addr, attrs, result, - DEVICE_ENDIANNESS); + return ADDRESS_SPACE_LD_INTERNAL(uw)(ARG1, MO_ENDIAN, addr, attrs, res= ult); } =20 uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return ADDRESS_SPACE_LD_INTERNAL(l)(ARG1, addr, attrs, result, - DEVICE_ENDIANNESS); + return ADDRESS_SPACE_LD_INTERNAL(l)(ARG1, MO_ENDIAN, addr, attrs, resu= lt); } =20 uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { - return ADDRESS_SPACE_LD_INTERNAL(q)(ARG1, addr, attrs, result, - DEVICE_ENDIANNESS); + return ADDRESS_SPACE_LD_INTERNAL(q)(ARG1, MO_ENDIAN, addr, attrs, resu= lt); } =20 void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) { - ADDRESS_SPACE_ST_INTERNAL(w)(ARG1, addr, val, attrs, result, - DEVICE_ENDIANNESS); + ADDRESS_SPACE_ST_INTERNAL(w)(ARG1, MO_ENDIAN, addr, val, attrs, result= ); } =20 void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) { - ADDRESS_SPACE_ST_INTERNAL(l)(ARG1, addr, val, attrs, result, - DEVICE_ENDIANNESS); + ADDRESS_SPACE_ST_INTERNAL(l)(ARG1, MO_ENDIAN, addr, val, attrs, result= ); } =20 void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) { - ADDRESS_SPACE_ST_INTERNAL(q)(ARG1, addr, val, attrs, result, - DEVICE_ENDIANNESS); + ADDRESS_SPACE_ST_INTERNAL(q)(ARG1, MO_ENDIAN, addr, val, attrs, result= ); } =20 #undef ADDRESS_SPACE_LD @@ -67,4 +61,4 @@ void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t= val, #undef ADDRESS_SPACE_ST_INTERNAL =20 #undef ENDIANNESS -#undef DEVICE_ENDIANNESS +#undef MO_ENDIAN --=20 2.52.0 From nobody Mon Feb 9 08:12:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1765982075; cv=none; d=zohomail.com; s=zohoarc; b=dZE/M2j1aaPaaVzoHvtdikyzKnJ+uc3AuJ8YvXXQwUG7IHXd9Yz926ffIKvuV9Cdhh4s5LlFT/b+8s6iePPmLAH//BrQqE8D7ozyA8JuaQ/vWkOD6ydS4ffKVMgCUOMXpobrQQGrCrR2qZmVZKBaQKQOZhUkCF0BUn1hgZ+SrEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765982075; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hw1yIVI7Fe2b/MFRMttYe0v8MoYDRmNEX3bk78jaHXE=; b=YufD4obr452fSZTtD6vK0wK6wStkrH11h1+OLf/F4rbQQ03oUaPzELTu7EO1TRlW7+WzKqfVq99zQvz3ev9wkyotahqTmuUtFgXctFxYNEgIGDUODS2QEZGrTPxWEWKiMspC8ypWCGcT+FfrLvDiGwfGsVTL3wcr3DfuYbwCTfQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765982075510225.5990968653456; Wed, 17 Dec 2025 06:34:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vVsb3-00039Z-Nf; Wed, 17 Dec 2025 09:33:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vVsb2-00032H-MF for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:44 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vVsb0-0007XU-Ri for qemu-devel@nongnu.org; Wed, 17 Dec 2025 09:33:44 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-477563e28a3so4023465e9.1 for ; Wed, 17 Dec 2025 06:33:42 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47bd932a3e5sm30579265e9.0.2025.12.17.06.33.38 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 17 Dec 2025 06:33:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765982020; x=1766586820; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hw1yIVI7Fe2b/MFRMttYe0v8MoYDRmNEX3bk78jaHXE=; b=CkgU2my3sFwFCmgO4FfFQQ01w7kA7XLxoa3Zst3hYbFt8n/c5V7yZc79ZTozVEoRo9 zZaXIMjm0OrY42bMA4TqqGW8scfloBletIESrNor20Pw1fWXGRUbVJBRWy5bCpddbUsJ MbjJdVA6DLhlF3C+3pIkx4q8NF9uASW/809b6MVXPxFBz8ileP6Rrl3irnawx8sdbi0m SiuwBZVsXs0/ftw/C9+T1lUmdZFaQCzuJf1BKH8cvSNYDlo8wQS0VFlWFQBXdabfhtxm mKz6V6+h9Sf+aquCuH1YWiPzIzY4yUqoNlpS5/Kk5MKQHWuvnXb2cJgKNwTxc6B/QqFx KZUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765982020; x=1766586820; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hw1yIVI7Fe2b/MFRMttYe0v8MoYDRmNEX3bk78jaHXE=; b=UjA2ZjW7pKjl1Sz5ATMjBDh231CSqsgIuF8Lg547ocut9mbAzHVDEcLNjilmdiGjYx nOvYLlVwpxOYLNBGVtfTH+jfqjMEoOaOHQhuBGOGGR5BM3X0DFn3F5XkAY8U0oDgIRTR vpCmu0Qn8mLfhh2zkdld0PiYAWoADCu5mXD9ySKqm86wPhEKPvfJTOOGnD+fx77XCIQm Zw2A6JW9NIV93zBhlOTwxPdezIMYouoMXchjod+GW/4SCOYfd9hb1+yFmUijKaQySxuv AU0gYpuKdAchGHOGVy7KO2ZXnefl6LjMm/VDgWDWAcleKASQMoYMHQPjX1U6GLyjNI8E jsgA== X-Gm-Message-State: AOJu0YyR+GYNJTLZP+j5zbSsqxBh3rReaEgB0a/YYoGd9za56UyPLbIw nwH5n3LEJZ34z0xBehqCKPr8qmzAA7/rRwiX+9NjMzy4gpTgN7WCIG5cyaVMrVredeuw6z14Iut gcrrff1SCXw== X-Gm-Gg: AY/fxX7WrEpx2HDJZRiA1vTAUK00QBZcGatjME1B0k2XnV9pxLNiwEDE1p5iTX91B9O ccgl53ugmdkDnLNk1tcVkp8SJtmHc3M9Y75YR6NYEnQvQOaweLirDhkQi34jWhHvDam6pqcvfuA YRZJZnFXxaD/b0DWC768G3ZKJeVFnArRGreXMXD3ZfMfXjGqyfqHTYrWbviaA2D0vh6BtXAqyv1 7DVtxZz0Q0vqb3/iJjFdMZ7/Ihjuc9l1qM7R+fn3hs0r1E78+FWrrPizHs/mzMkyzj4G7QJbFWt scrUFA2Hk3z6R4ZQ4AwXwXu2WAherq1Wt8h5/UQjX85Gph+ukabGzxdAaxkE43P7qlyZWz+Qikf qQt/ZSLuQpFVyl699a/SC2Ha5ky9ZeQAmGcgkkkJ1m35Auy9wrAB0vqU6mJZHAhJ7RKz86Kdlad 1eowXlhYHKF1meokOgA1dkCFWyYbF1w4AfxPa+DiTj4njNjVp6TO0PoUuFaDMm X-Google-Smtp-Source: AGHT+IFTRmhLCWL5HUIOCsnG2fw+BtwoGKxqtqDZUh4rn48UcNyYBTSdMWLpzSeYPavUYAquibmLbg== X-Received: by 2002:a05:600c:64cf:b0:479:255f:8805 with SMTP id 5b1f17b1804b1-47a8f094212mr166712095e9.4.1765982020332; Wed, 17 Dec 2025 06:33:40 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anton Johansson , qemu-arm@nongnu.org, Mark Cave-Ayland , Paolo Bonzini , "Michael S. Tsirkin" , Artyom Tarasenko , Peter Maydell , David Hildenbrand , Peter Xu Subject: [PATCH 14/14] system/memory: Sort methods in memory_ldst.c.inc file Date: Wed, 17 Dec 2025 15:31:50 +0100 Message-ID: <20251217143150.94463-15-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251217143150.94463-1-philmd@linaro.org> References: <20251217143150.94463-1-philmd@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=2a00:1450:4864:20::32d; envelope-from=philmd@linaro.org; helo=mail-wm1-x32d.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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1765982078050158500 For clarity, sort methods by access size (B, W, L, Q). Fix coding style. Only code movement, no logical change. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- system/memory_ldst.c.inc | 86 ++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 34 deletions(-) diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index 6387bb9d332..5a979ea6ac3 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -63,37 +63,46 @@ uint64_t glue(address_space_ldm_internal, SUFFIX)(ARG1_= DECL, MemOp mop, return val; } =20 -/* warning: addr must be aligned */ -static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_32, add= r, - attrs, result); -} - -/* warning: addr must be aligned */ -static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) -{ - return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_64, add= r, - attrs, result); -} - -uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, - hwaddr addr, MemTxAttrs attrs, MemTxResult *result) +uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, hwaddr addr, + MemTxAttrs attrs, MemTxResult *re= sult) { return glue(address_space_ldm_internal, SUFFIX)(ARG1, MO_8, addr, attrs, result); } =20 /* warning: addr must be aligned */ -static inline uint16_t glue(address_space_lduw_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) +static inline +uint16_t glue(address_space_lduw_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, + MemTxAttrs attrs, + MemTxResult *result) { return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_16, add= r, attrs, result); } =20 +/* warning: addr must be aligned */ +static inline +uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, + MemTxAttrs attrs, + MemTxResult *result) +{ + return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_32, add= r, + attrs, result); +} + +/* warning: addr must be aligned */ +static inline +uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, + MemTxAttrs attrs, + MemTxResult *result) +{ + return glue(address_space_ldm_internal, SUFFIX)(ARG1, mop | MO_64, add= r, + attrs, result); +} + static inline void glue(address_space_stm_internal, SUFFIX)(ARG1_DECL, MemOp mop, hwaddr addr, uint64_t val, @@ -133,31 +142,40 @@ void glue(address_space_stm_internal, SUFFIX)(ARG1_DE= CL, MemOp mop, RCU_READ_UNLOCK(); } =20 -/* warning: addr must be aligned */ -static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *r= esult) -{ - glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_32, addr, val, - attrs, result); -} - -void glue(address_space_stb, SUFFIX)(ARG1_DECL, - hwaddr addr, uint8_t val, MemTxAttrs attrs, MemTxResult *result) +void glue(address_space_stb, SUFFIX)(ARG1_DECL, hwaddr addr, uint8_t val, + MemTxAttrs attrs, MemTxResult *result) { glue(address_space_stm_internal, SUFFIX)(ARG1, MO_8, addr, val, attrs, result); } =20 /* warning: addr must be aligned */ -static inline void glue(address_space_stw_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *r= esult) +static inline +void glue(address_space_stw_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, uint16_t val, + MemTxAttrs attrs, + MemTxResult *result) { glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_16, addr, val, attrs, result); } =20 -static inline void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, - MemOp mop, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *r= esult) +/* warning: addr must be aligned */ +static inline +void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, uint32_t val, + MemTxAttrs attrs, + MemTxResult *result) +{ + glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_32, addr, val, + attrs, result); +} + +static inline +void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL, MemOp mop, + hwaddr addr, uint64_t val, + MemTxAttrs attrs, + MemTxResult *result) { glue(address_space_stm_internal, SUFFIX)(ARG1, mop | MO_64, addr, val, attrs, result); --=20 2.52.0