From nobody Fri Nov 14 22:20:19 2025 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=1759961127; cv=none; d=zohomail.com; s=zohoarc; b=fz1qiynV6Qyvl+90f4gC0zeDTM3Qi4UyKdz0Ts0Ua6F93E4EBWTUk1gkd6bZEknH1B0luv+smXvHLXUQ7wo25UKH5zGDOB+yq/RystG0Nl2GehCyMpMPJeZzz4eLgQgrZpI1IQZaa3s5Yg02rA2kbabMYNUVnDkzBp+jXSWWL1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961127; h=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=qKAGfZs2aUn7WyuimaFd4lNQuJHE6KaST0vvQSal6OY=; b=Hisi/40Wf6tL4TdBU/vGDqna5JXpHa1l0FuTLOXNDuAjXX+7ttRhZdSSO2GAnf0m0STbjcrOV7d2le+VEUPLNty/0jhukajeDuQXa/HDYnXhxWLJTdBbnTQsV7e7FKW1YG7rNALPs8nItkcbHCbBWYE8qZMEVe0T91Bwxukw1+U= 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 1759961127796803.5618770498726; Wed, 8 Oct 2025 15:05:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9M-0003vI-1s; Wed, 08 Oct 2025 17:56:44 -0400 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 1v6c9G-0003tc-SJ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:38 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c8x-0006cP-AR for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:38 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-27eec33b737so4614605ad.1 for ; Wed, 08 Oct 2025 14:56:17 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960575; x=1760565375; 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=qKAGfZs2aUn7WyuimaFd4lNQuJHE6KaST0vvQSal6OY=; b=KolnlsBOqe7oIlW+BvMDVaV2tX29HSY8HvzGDczXYmf2iU8Q+C2jb+FTY6h5QWHpDS w6OVZ9QdNXTvtz4ugQIcLdQ4XmWyrZHj6M4MOc6gEpCt0Q9Al266LDmgLdPgFImeBvIr sMN6OCwJ9Yrn+C/1NJdRBJ8wy4wOk+lWlAVlgRi3cAcX1bT1rtqgRLUJbVcHII20dhAq Yb4ZzcCZgFAdZ88y7Mp2HmE6ONw8TmeJEigMJbCU02/zeixo+pRy53J4Dp93DlomjDZ1 ysCzfXc8UB39Tq4I+HUC0opGXvFHR4gb1ImEcJ/rfKmvg465u6MDvRtaQG3nTNlSbovs PzTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960575; x=1760565375; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qKAGfZs2aUn7WyuimaFd4lNQuJHE6KaST0vvQSal6OY=; b=cTa0W3r6F8JlgL/jrm66pY9BfqsHx/fMu+nFTBaURdR3g0nE5g4VkVrrZ5qBEpcJ6J FOEs8fRBBhKbdBHL5Vr4f0etH4tK4YvbtBlbXUlmfsd+gfHjePXzwPzx7IptnxNzaT0K AEWMWJWd2P095Eqh0RPRoVZK+69stabeImaW4zidzyBlYDqoFsWvjw3+QbBDl54JF+Y4 SCT3yjBNL+dLCnuBmYx1qq+hvjkHaSbJ/yTar5c+GCC5F++vDC2ios6hRGp38GgiF0lW IWccHAFi6aEJsgWCquEW519kaGlyKsYACcOR/sWye1D2PBspWT+HZTUeERD5pL7Qri5+ LC0Q== X-Gm-Message-State: AOJu0YyzVHRiSxZOqbF+pCjAUnCstz0WPnJ82NY08jO2AAR8AkbTLEmp DVM2BpaO8ZNldW2/BFZNvd5/ckC8sRnLH9IsDVR8G7iuzApilARuRqHW2Zw1m7bBLxCapHjsOhH l+1IHlCk= X-Gm-Gg: ASbGnctx1RoKEOQIU7pfA+Hsr/whvS52LkI5p96oczBMij3xxkqmwQf9myKeEe4tA+Q WDYhREv+nTzStX0hwEEI1+AZDcFjlVduuH0utSoewxKVqYb+7yoAESMvggzU3+J8KdmE6Xm9leT MN0ktEbGABDVN8nwxGZa/nfkeA3PU/4xCkLWUYzZSMrvAGjtGVh+Y55XTRBLBi7GtpL4rBbV9mD me9w1ds3s4Lc8QJcvRI6V8CaTpuHwWkOU2HeKUn1tBdQcO6NKDm0DDpMqVFNmtKUWs415n7V5tB 225CgBodeMveD5jOde5sCwjiewcAb+YHfR12llNuGi5z947PSRDRmtQrlzDda0jpQ4vAcIcsWjh Cu+CWwqb3q6V5UNEu9L+s5oWGje8qNG4q9JRl6kX/izNBYntNYu2ydQOF X-Google-Smtp-Source: AGHT+IEi4ndwlg8/dfO34ERJz1qGEiG5DKmWz1edUyAE0RlDMpD33nKkzhV6S+DZ4xjN0WZ/9XlUxw== X-Received: by 2002:a17:903:2343:b0:25c:b543:2da7 with SMTP id d9443c01a7336-290272159e7mr51517395ad.9.1759960575258; Wed, 08 Oct 2025 14:56:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 01/73] tests/functional: update tests using TF-A/TF-RMM to support FEAT_GCS Date: Wed, 8 Oct 2025 14:55:01 -0700 Message-ID: <20251008215613.300150-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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, T_SPF_TEMPERROR=0.01 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: 1759961131126116600 Content-Type: text/plain; charset="utf-8" From: Pierrick Bouvier Signed-off-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tests/functional/aarch64/test_device_passthrough.py | 4 ++-- tests/functional/aarch64/test_rme_sbsaref.py | 4 ++-- tests/functional/aarch64/test_rme_virt.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/functional/aarch64/test_device_passthrough.py b/tests/fu= nctional/aarch64/test_device_passthrough.py index 17437784bb..05a3f52d5e 100755 --- a/tests/functional/aarch64/test_device_passthrough.py +++ b/tests/functional/aarch64/test_device_passthrough.py @@ -85,8 +85,8 @@ class Aarch64DevicePassthrough(QemuSystemTest): # https://docs.kernel.org/driver-api/vfio.html#vfio-device-cde ASSET_DEVICE_PASSTHROUGH_STACK =3D Asset( ('https://github.com/pbo-linaro/qemu-linux-stack/' - 'releases/download/build/device_passthrough-c3fb84a.tar.xz'), - '15ac2b02bed0c0ea8e3e007de0bcfdaf6fd51c1ba98213f841dc7d01d6f72f04= ') + 'releases/download/build/device_passthrough-a9612a2.tar.xz'), + 'f7d2f70912e7231986e6e293e1a2c4786dd02bec113a7acb6bfc619e96155455= ') =20 # This tests the device passthrough implementation, by booting a VM # supporting it with two nvme disks attached, and launching a nested VM diff --git a/tests/functional/aarch64/test_rme_sbsaref.py b/tests/functiona= l/aarch64/test_rme_sbsaref.py index ca892e0a8c..6f92858397 100755 --- a/tests/functional/aarch64/test_rme_sbsaref.py +++ b/tests/functional/aarch64/test_rme_sbsaref.py @@ -25,8 +25,8 @@ class Aarch64RMESbsaRefMachine(QemuSystemTest): # ./build.sh && ./archive_artifacts.sh out.tar.xz ASSET_RME_STACK_SBSA =3D Asset( ('https://github.com/pbo-linaro/qemu-linux-stack/' - 'releases/download/build/rme_sbsa_release-a7f02cf.tar.xz'), - '27d8400b11befb828d6db0cab97e7ae102d0992c928d3dfbf38b24b6cf6c324c= ') + 'releases/download/build/rme_sbsa_release-6a2dfc5.tar.xz'), + '5adba482aa069912292a8da746c6b21268224d9d81c97fe7c0bed690579ebdcb= ') =20 # This tests the FEAT_RME cpu implementation, by booting a VM supporti= ng it, # and launching a nested VM using it. diff --git a/tests/functional/aarch64/test_rme_virt.py b/tests/functional/a= arch64/test_rme_virt.py index bb603aaa26..5e23773f93 100755 --- a/tests/functional/aarch64/test_rme_virt.py +++ b/tests/functional/aarch64/test_rme_virt.py @@ -23,8 +23,8 @@ class Aarch64RMEVirtMachine(QemuSystemTest): # ./build.sh && ./archive_artifacts.sh out.tar.xz ASSET_RME_STACK_VIRT =3D Asset( ('https://github.com/pbo-linaro/qemu-linux-stack/' - 'releases/download/build/rme_release-86101e5.tar.xz'), - 'e42fef8439badb52a071ac446fc33cff4cb7d61314c7a28fdbe61a11e1faad3a= ') + 'releases/download/build/rme_release-56bc99e.tar.xz'), + '0e3dc6b8a4b828dbae09c951a40dcb710eded084b32432b50c69cf4173ffa4be= ') =20 # This tests the FEAT_RME cpu implementation, by booting a VM supporti= ng it, # and launching a nested VM using it. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960955; cv=none; d=zohomail.com; s=zohoarc; b=KcTBvsz7RF8szF9csny1mo9rA+Djti5U8Pyz8Cp2gsXhlqxN8dA/27eH8H7QgSdUHusi954q0HyY/ZEm/ZlSxMdJorzUx6dtDwEqOoB2+n4Nl718dKaREhlvAHmVgR6bWc5RBwvip6jwtNQYT3EK1K10A3zphspzWvgKnRqb45k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960955; h=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=6SQAAU0LUd+YJ4w3rVEYpCD6XNIllbO9nR7KElVuTa0=; b=Om0TkC6g8poPqFLcqlAdfU7SLI/RgxCF55CjmYuG47g4M4cVTxIKjRIVRgRrWViI6DBKP8vA0VDm5UMa2kEWwA4bhqmqkjDeVihLOpDNtZgyHVQh3rBj+GqalCkerPyAN2R6jqh5E/BndlaU6aykFPESRZmaB3Qq9Plu60FkVnw= 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 1759960955448640.4716519031913; Wed, 8 Oct 2025 15:02:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9G-0003tF-3a; Wed, 08 Oct 2025 17:56:39 -0400 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 1v6c9F-0003t4-2N for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:37 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c8z-0006cT-Sb for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:35 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-27eceb38eb1so3163285ad.3 for ; Wed, 08 Oct 2025 14:56:17 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960576; x=1760565376; 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=6SQAAU0LUd+YJ4w3rVEYpCD6XNIllbO9nR7KElVuTa0=; b=jZY9nQNY3Fvk5OI+JzkZ0a8tQV3Z3aF1YoRXtyebTN8MyowidecGnJGgiSjwTDf0vP 6Qy47kx7heMzyoSjr7vCYPwA2C4kJB/dtKSLjbuahXrK9ugPuEUT4Q+Hgr2L+G8oIxls 3E+0c82hFHpUXpWLVU5Us3TNDsHEqEGA4YlhbODYuy4XRz6usB4MPTDxe8ok5iC05tNZ Eskr7J80yo6NW6kyr7cTsa1+69GrCNmZV0Hb6LHfyvHXSOEyDu9OX3vZXEfrghVecIJ4 83GuT/41VREjSp5eI37jg3EaEhKlE14WfKD556rHiZeVRelpK0+QTXRTKmCwBFpeZQE/ dj9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960576; x=1760565376; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6SQAAU0LUd+YJ4w3rVEYpCD6XNIllbO9nR7KElVuTa0=; b=EQjBGOJ1o/fx2mpz4YlPYRmRRb7DfmzQWgz/F8n4AK2/wWxmr/38gFmJlT1U/mI+PT EKXNLvFZIsVW8VO8eAMo7lrYadtsCevlvCv5ioep2u0a5lq3RSFQptGh7El1yP+VrWBb 6nBbZw2b4DLRl7zN8v5W+6ucZYJCiJpMNajI6xYhk6lIo8ZcmgRTBLvqF4zkh9e5MWQS +NqgidGDusjp23AXifmyLiWoz5a1gUrIp9mJCEmo4d5Gq1sMbgN7Cs2pjp1IOfYy0xKB +wbP391lTfNJWr+g7BKr98vsKxR+bAt5lgfnq1P4e5xGCiCUmqF/kCW986L9rQOBwNTs kw8w== X-Gm-Message-State: AOJu0YxBIjGVzYCrK3N1N26Et6HSqdeCyKPsgTow6rartrVZEfBH08wZ Gc/k0kDJBUO3b/eGyFIek9PLS4IeZSdpMztGNRKEteOYvDUEsT/9sGtg6px/GKdQrs/SS18AxK5 RFyS2lnM= X-Gm-Gg: ASbGncvdi2cRtnF3VH/F90te4EtbDkdWC8nhf/+AALWj4Nq0IgZa8FDTFz1FNe20rog Ne9jgWYP+m4dIxBb5q1PTWBNmbexIfFkzH1Cq4IKyQ8m2PwNtXFzczLC5b65oCZBsvGoqA/B2bC 6JPML6oSZNJbdXsZtiLSyMxHwFzOTV3rQRcYhqExI6gWkIB6gin0aSGpX4Prsysy1T5bCq9/DPl CmF36JnAyltN66bCHgW/J4cT/dOOJURi6lbNPcXwE2O3CQPRkmYPdn4Bco5ANLKp0bZoDCgQX2h WD9/JSBBNlZ7uiPqcNdLHSVTFlF/RRUt4aK/dAWHaJipKEoJdk1rCSRNcrCP40dnyvqwkz+AY07 k9US3G6huMYjfbJvzlgNS6qBTGerBW8f95ugIHPJFsm3L1I8xGCJpsjzE X-Google-Smtp-Source: AGHT+IH6btP/21lQ4QAi54Y29iKhyNTAJKPbBZY3akXiWVz6M94tk3uBCAQBX64ZMjMVJm8tEv2pjA== X-Received: by 2002:a17:903:948:b0:249:37ad:ad03 with SMTP id d9443c01a7336-290273ee21fmr66086965ad.34.1759960575974; Wed, 08 Oct 2025 14:56:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 02/73] target/arm: Add isar feature test for FEAT_S1PIE, FEAT_S2PIE Date: Wed, 8 Oct 2025 14:55:02 -0700 Message-ID: <20251008215613.300150-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.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, T_SPF_TEMPERROR=0.01 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: 1759960961184116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f59c18b6ef..f3e90408f7 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1349,6 +1349,16 @@ static inline bool isar_feature_aa64_sctlr2(const AR= MISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64MMFR3, SCTLRX) !=3D 0; } =20 +static inline bool isar_feature_aa64_s1pie(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64MMFR3, S1PIE) !=3D 0; +} + +static inline bool isar_feature_aa64_s2pie(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64MMFR3, S2PIE) !=3D 0; +} + static inline bool isar_feature_aa64_pmuv3p1(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64DFR0, PMUVER) >=3D 4 && --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961075; cv=none; d=zohomail.com; s=zohoarc; b=P5XbJOQVWY7xgIq/fGabu0L6SAWFVZOt1eliIOXxW/X//ec28kvfMou6IpzU0Vu/cUMeRvufaOjLCNfZgcCtnAE/kPO+bC3nuyRnTxXX/rpn9CnPNVVXBmjMHh3ZwJZlrjkl4MgeuWcYe7y/WF4LjgzQnYinoRYhfelQvY8+a2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961075; h=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=rWJOhjURiEbCRYa8c3KW2+y29uA+cSYlWdH7crvrg6I=; b=hb9k+GtgtLvtE6zYy++v7VTbf4L7xTCk3I2va8WiYhQvkE2joyPflY1AEqWdLjOsBL4avymx4SO7X/QE/DlYPCW12GRINCARiAixW+NC5SWErJop16/Pfn7Roj9A2pC61OKXNVINlRVI/+WcyAX/h63Kifqji6O91hfK3t5yVLs= 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 1759961074988838.1100147656829; Wed, 8 Oct 2025 15:04:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9E-0003t5-9P; Wed, 08 Oct 2025 17:56:36 -0400 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 1v6c9B-0003sJ-3G for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:33 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c8z-0006cY-SE for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:32 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-27eec33b737so4614915ad.1 for ; Wed, 08 Oct 2025 14:56:20 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960577; x=1760565377; 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=rWJOhjURiEbCRYa8c3KW2+y29uA+cSYlWdH7crvrg6I=; b=M8X7xigI4FTNliIB0bgQh3e/hgdGybTSEzm7sEv0PheIWAVpVnpdHs2Qc0XYEkNDsV LM2obklonWW0p1lDiARAXCgKKNn3wXypXbOx09wCMYr009nidCQL0wQIthyiT4Iif1BL AzI9SaKJIs5p8qAcbFJMokirVsYvd3D1YuxUAwcJU3vztsry0e5zuqD0oLWbpDVBqabJ qVtr6MyQ4pupWudap7joeWkY+Ri7sSyH5rjtvBzhVkbMLZ1oGLUsB/8sq0/BCQ/a3tTq OgbH7RelunCKkQzBfRE8eDcUd3Bct8oHlvoE3hbL3IEkwhGh7I1Bwy8VxLORe6kJOaf9 AorA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960577; x=1760565377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rWJOhjURiEbCRYa8c3KW2+y29uA+cSYlWdH7crvrg6I=; b=DtwzOD+ZfcS90E8vnmAGPGrNvlkHJxbdehdpaBGrhAhK0kWfzYROrH/q1Yb8e/CW6u WCTQwZZojtlhxQP3jlhCap7T/ihTfsFWR4hyWNd0BynTn4NWPbK00yWc80tG8JWifgvh bwVPDwK9bModdNhIFwK9Al0GSW51Kbq6yJz12MVTF//Llhrk9zYOOqdulgIpBqibQsF2 +rWR0eUldZigIgSQRSczxRMmgTJjUMlB1NOuPumJts1NzJ2DJQ4qt37xvks4bpXqZiak HvDk6XOra/O9goxHtOJQYEj9Svxov+FcdM8pMMRLY/7oUC2Nm+Pnq14StXVzq9bu46zN +9QA== X-Gm-Message-State: AOJu0YxVrORrXHqPsUXO+3AceykAmVdjDOnwi8rD1+ywNsltBJtMAoa1 t8pXI18CNp2DYOAFk6DhBZall1XXDDGdiE9ztHskCD4Ddi8zog0zAghqTvd+aCOt8tVmog4SJX5 IprGSWCw= X-Gm-Gg: ASbGnct+oxcn3tjkZ6RFhisp5AfExVFbaZYmoLDFpczIzJrfMzO8K0xsGdPdDPsFgd+ PM9jNZclWSJwZuln+8BxsB+AAilosGbAjZoem0K/ICMtVmIIQYgl3AEkGO9AhAZy5WBG74IbXB2 nNeJ9uHhZjwKeDgSYd5K6NYPS1W8PoVuuZM3QYJbf4SUA4LVBzeiIij54MW/CJiiqNDslnpOIXw PQmrqwbyxSIZGkQZh4q1Eft3DXeobuf8kTlkSJQc4vO9na/4ZxLdd5nc8rnfe28haxPHNQKfpqH LRMFKWp35UQnXuqsFvcpjIIImaAWQpkkmR1R7/690nYneaWnjSpYIxRp3U8bImZEi1Wzm8FJKAO sPPv4UfDh+xh6ESpeLwvkjliW3IrfG43cMLOD6yBn3K8BKszHBkjWhib5 X-Google-Smtp-Source: AGHT+IEgurIOkx0WpZz/bZ8oRZg00njRa41uQsTCAmc35sWDU2EHECKuywkmLiBDYmWWlR5EGZkmDQ== X-Received: by 2002:a17:902:ce81:b0:266:f01a:98c4 with SMTP id d9443c01a7336-2902723e35cmr65703875ad.13.1759960576617; Wed, 08 Oct 2025 14:56:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 03/73] target/arm: Enable TCR2_ELx.PIE Date: Wed, 8 Oct 2025 14:55:03 -0700 Message-ID: <20251008215613.300150-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1759961079994116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/helper.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index b7bf45afc1..c9ebdf144e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -5902,8 +5902,12 @@ static CPAccessResult tcr2_el1_access(CPUARMState *e= nv, const ARMCPRegInfo *ri, static void tcr2_el1_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { + ARMCPU *cpu =3D env_archcpu(env); uint64_t valid_mask =3D 0; =20 + if (cpu_isar_feature(aa64_s1pie, cpu)) { + valid_mask |=3D TCR2_PIE; + } value &=3D valid_mask; raw_write(env, ri, value); } @@ -5911,8 +5915,12 @@ static void tcr2_el1_write(CPUARMState *env, const A= RMCPRegInfo *ri, static void tcr2_el2_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { + ARMCPU *cpu =3D env_archcpu(env); uint64_t valid_mask =3D 0; =20 + if (cpu_isar_feature(aa64_s1pie, cpu)) { + valid_mask |=3D TCR2_PIE; + } value &=3D valid_mask; raw_write(env, ri, value); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961718; cv=none; d=zohomail.com; s=zohoarc; b=ItbSngELOR4/+KKYRQYjWWlhvAWzppjmxWFowHnbac5M12M9JwZuriAkwbP6MzGjn4HEo2il9A/onI3ThfahyiAo8jGQaz3DR5frEG1gpmv1krIccl0ss3RkXQH/wxkA1TJbGsI1+mY+d5rSKT3VuRxqLEzhLRgf6oBVL+kF13E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961718; h=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=ljT+klz7QiInf7zPlE5MZU3+N0davfLw04QflCAzQnk=; b=MH8xmaM3jcINSmThZVmIL4eStfeVfNWiSyDRnZU3ggKszwWzuyITGV1c12vsHjNd1KqKKd3RlXg5/dAqGjF9/4ynP4B/H53hFbmgp8wlCcHq7TXaeW0hzMYMqWILJZjQP04KQuIg0G02T+cYVPps+83W6EEX8lGVOCcV7acgY0o= 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 1759961718341546.5534578247973; Wed, 8 Oct 2025 15:15:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9Q-0003x3-Q1; Wed, 08 Oct 2025 17:56:48 -0400 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 1v6c9N-0003w2-JG for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:45 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c91-0006cd-I6 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:45 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-b609a32a9b6so156078a12.2 for ; Wed, 08 Oct 2025 14:56:19 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960577; x=1760565377; 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=ljT+klz7QiInf7zPlE5MZU3+N0davfLw04QflCAzQnk=; b=EKAI5eYIEz4bLdGD/k7lu9ci2A42DgqKN0Yv8p6xRSFhjcj+LeMXR1k+xO8yT9ViHB hstoXnFRrbZTvLOB2dcpWblWA1/P6/fLMO/SSF3A1S1Q2glWiBmeuMs4dvR/VrwAKMZm UEoxmCI5P/LsWy1ZDMfqCJCsA0saMbieFe/l0+LyAhj7HP9SNng9b2afQBN4ufNG5o+2 WsTWa3laeQ8C+jEcgnTgp7jOnTjAit+UAqBP9ygd+iCcM+H7/0+FDqa6wWbJt4E9T2/9 BNs2hFd1vvX4yISNUSP4K/fSWAxczdVcgYLqcA+JTiSkNHnqTBwoAepzaiUHQA0CVy1u s/Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960577; x=1760565377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ljT+klz7QiInf7zPlE5MZU3+N0davfLw04QflCAzQnk=; b=feemyczJ+46MvMOIXnjMa+6uilS1pJterQL8Eqzb0O1XivP7GI/HIh9YPh0bq6b4Ms tx/HCtYHV6mXwphDsV3u+LE8jbn7wb6PFsveCZ7Sz4TTAak7RZdwPEGzLE+NyrGPmIBg KASSUGE2Uez233rzEgXATxi1CHdYIHCVRmi07igHjhUZFsvKUrzbEQRDMZ+tnrwviZg2 ImnxevYsA88R7+JOGtL+rkPSBhm3c8/NGDKHbCQ2OJ19a647nJgyy8JKp5krq5UDfSM6 zl4I3Cs24FBDAXUmD4dplHayjhulE7VTk7Z+p7P7zu6MrlNbd34KFSnJsyF6oqVaEXAe ExfQ== X-Gm-Message-State: AOJu0YzFmYhvsW+p15AL7TsPGjQ7CwfUmp4ImVb3JhW/1DOg+u4exgNw IVBqNQTggI16nD6bMzTjqL86RVjEWneKBW4zUPrnDTlU76gftGZjPYBiwZtg2PDHCHRI0o4c+DO myux796M= X-Gm-Gg: ASbGncua4r5Rqkyx/nJQa/GszAvIzaGAQgay8vHpa8sySRRT/UsKkIr2fgjIjBhixhE Qd7C5NTLcvmEGsxoYQa3nfayuPnzESzK16xf3Sox64A/HnA+5hTCA666ZEG8nzhoOyFyFG4OdZe hiS7GW/LaOsIeJp4xt302dVhJF+wc3KvZfsc6L37ScX9SAqWub/GHdSEZhN93kRLNaX6D0XhdcW zZEcE16PGLIbn7nxrTiTKXTRmJds7+gWGLqOR6Ldeq+EJvHg4DQYbIL3O8TzBKRZgaPeZjq2mNw lEt0/lbNmBFR/29lWfq3HMftWBDzC5pi2tqmI7IL1VZEmAwNrKmHA4mHzBJ/4FOR/OvQJf0XUdM 1lqUfeByM6jmd0eVW0Zy13wJSgKu+fgL3H01xN+yO7zb+/tzXo3XcFHsz X-Google-Smtp-Source: AGHT+IHShHoHZBNDzi+ri9qi0X41IFefWRK2M677bux/VH2NFb7WH+M6DFj74exKDV4qG2Tmk2Fo+g== X-Received: by 2002:a17:903:384f:b0:267:9aa5:f6a6 with SMTP id d9443c01a7336-29027240de5mr65433895ad.19.1759960577305; Wed, 08 Oct 2025 14:56:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 04/73] target/arm: Implement PIR_ELx, PIRE0_ELx, S2PIR_EL2 registers Date: Wed, 8 Oct 2025 14:55:04 -0700 Message-ID: <20251008215613.300150-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.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: 1759961720438154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 2 ++ target/arm/cpu.h | 4 +++ target/arm/cpu.c | 4 +++ target/arm/helper.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 57fde5f57a..f48c4df30f 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -781,6 +781,8 @@ typedef enum FGTBit { DO_BIT(HFGRTR, ERRIDR_EL1), DO_REV_BIT(HFGRTR, NSMPRI_EL1), DO_REV_BIT(HFGRTR, NTPIDR2_EL0), + DO_REV_BIT(HFGRTR, NPIRE0_EL1), + DO_REV_BIT(HFGRTR, NPIR_EL1), =20 /* Trap bits in HDFGRTR_EL2 / HDFGWTR_EL2, starting from bit 0. */ DO_BIT(HDFGRTR, DBGBCRN_EL1), diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 41414ac22b..c9ea160d03 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -368,6 +368,9 @@ typedef struct CPUArchState { uint64_t tcr2_el[3]; uint64_t vtcr_el2; /* Virtualization Translation Control. */ uint64_t vstcr_el2; /* Secure Virtualization Translation Control. = */ + uint64_t pir_el[4]; /* PIRE0_EL1, PIR_EL1, PIR_EL2, PIR_EL3 */ + uint64_t pire0_el2; + uint64_t s2pir_el2; uint32_t c2_data; /* MPU data cacheable bits. */ uint32_t c2_insn; /* MPU instruction cacheable bits. */ union { /* MMU domain access control register @@ -1720,6 +1723,7 @@ static inline void xpsr_write(CPUARMState *env, uint3= 2_t val, uint32_t mask) #define SCR_ENTP2 (1ULL << 41) #define SCR_TCR2EN (1ULL << 43) #define SCR_SCTLR2EN (1ULL << 44) +#define SCR_PIEN (1ULL << 45) #define SCR_GPF (1ULL << 48) #define SCR_NSE (1ULL << 62) =20 diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 30e29fd315..9bca1b8eae 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -641,6 +641,10 @@ void arm_emulate_firmware_reset(CPUState *cpustate, in= t target_el) if (cpu_isar_feature(aa64_sctlr2, cpu)) { env->cp15.scr_el3 |=3D SCR_SCTLR2EN; } + if (cpu_isar_feature(aa64_s1pie, cpu) || + cpu_isar_feature(aa64_s2pie, cpu)) { + env->cp15.scr_el3 |=3D SCR_PIEN; + } } =20 if (target_el =3D=3D 2) { diff --git a/target/arm/helper.c b/target/arm/helper.c index c9ebdf144e..20a189ef4f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -770,6 +770,10 @@ static void scr_write(CPUARMState *env, const ARMCPReg= Info *ri, uint64_t value) if (cpu_isar_feature(aa64_sctlr2, cpu)) { valid_mask |=3D SCR_SCTLR2EN; } + if (cpu_isar_feature(aa64_s1pie, cpu) || + cpu_isar_feature(aa64_s2pie, cpu)) { + valid_mask |=3D SCR_PIEN; + } } else { valid_mask &=3D ~(SCR_RW | SCR_ST); if (cpu_isar_feature(aa32_ras, cpu)) { @@ -5941,6 +5945,64 @@ static const ARMCPRegInfo tcr2_reginfo[] =3D { .fieldoffset =3D offsetof(CPUARMState, cp15.tcr2_el[2]) }, }; =20 +static CPAccessResult pien_access(CPUARMState *env, const ARMCPRegInfo *ri, + bool isread) +{ + if (arm_feature(env, ARM_FEATURE_EL3) + && !(env->cp15.scr_el3 & SCR_PIEN) + && arm_current_el(env) < 3) { + return CP_ACCESS_TRAP_EL3; + } + return CP_ACCESS_OK; +} + +static CPAccessResult pien_el1_access(CPUARMState *env, const ARMCPRegInfo= *ri, + bool isread) +{ + CPAccessResult ret =3D access_tvm_trvm(env, ri, isread); + if (ret =3D=3D CP_ACCESS_OK) { + ret =3D pien_access(env, ri, isread); + } + return ret; +} + +static const ARMCPRegInfo s1pie_reginfo[] =3D { + { .name =3D "PIR_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .opc2 =3D 3, .crn =3D 10, .crm =3D 2, + .access =3D PL1_RW, .accessfn =3D pien_el1_access, + .fgt =3D FGT_NPIR_EL1, .nv2_redirect_offset =3D 0x2a0 | NV2_REDIR_NV= 1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 10, 2, 3), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 10, 2, 3), + .fieldoffset =3D offsetof(CPUARMState, cp15.pir_el[1]) }, + { .name =3D "PIR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 3, .crn =3D 10, .crm =3D 2, + .access =3D PL2_RW, .accessfn =3D pien_access, + .fieldoffset =3D offsetof(CPUARMState, cp15.pir_el[2]) }, + { .name =3D "PIR_EL3", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 6, .opc2 =3D 3, .crn =3D 10, .crm =3D 2, + .access =3D PL3_RW, + .fieldoffset =3D offsetof(CPUARMState, cp15.pir_el[3]) }, + { .name =3D "PIRE0_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .opc2 =3D 2, .crn =3D 10, .crm =3D 2, + .access =3D PL1_RW, .accessfn =3D pien_el1_access, + .fgt =3D FGT_NPIRE0_EL1, .nv2_redirect_offset =3D 0x290 | NV2_REDIR_= NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 10, 2, 2), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 10, 2, 2), + .fieldoffset =3D offsetof(CPUARMState, cp15.pir_el[0]) }, + { .name =3D "PIRE0_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 2, .crn =3D 10, .crm =3D 2, + .access =3D PL2_RW, .accessfn =3D pien_access, + .fieldoffset =3D offsetof(CPUARMState, cp15.pire0_el2) }, +}; + +static const ARMCPRegInfo s2pie_reginfo[] =3D { + { .name =3D "S2PIR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 5, .crn =3D 10, .crm =3D 2, + .access =3D PL2_RW, .accessfn =3D pien_access, + .nv2_redirect_offset =3D 0x2b0, + .fieldoffset =3D offsetof(CPUARMState, cp15.s2pir_el2) }, +}; + void register_cp_regs_for_features(ARMCPU *cpu) { /* Register all the coprocessor registers based on feature bits */ @@ -7173,6 +7235,13 @@ void register_cp_regs_for_features(ARMCPU *cpu) define_arm_cp_regs(cpu, tcr2_reginfo); } =20 + if (cpu_isar_feature(aa64_s1pie, cpu)) { + define_arm_cp_regs(cpu, s1pie_reginfo); + } + if (cpu_isar_feature(aa64_s2pie, cpu)) { + define_arm_cp_regs(cpu, s2pie_reginfo); + } + if (cpu_isar_feature(any_predinv, cpu)) { define_arm_cp_regs(cpu, predinv_reginfo); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961340; cv=none; d=zohomail.com; s=zohoarc; b=LDnLDpZzy+dHuJYRjOEyONvvKTOIqUiDDs7K7frAoicjp4M6iHR89dpEU37czfNhE1g4NspZZnRq6cKcgxuc2L8LEuLRehrh5pNOCj7eipIud1xsL6rEHyIaC+LDMEkiGpojQbp6gVQQxQSr2nlNMG2ufPOnOYlhaJ23TcrElcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961340; h=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=VOmykAHgNa3WEY/QflE4W9ZlUUYk2FsFplQhf4AR8Po=; b=TRsYeyJnT6dQ990DxNSlMY0lxR1YIg5nxgiIhNtM+nTRpkTGPQHBY7tklCYzrQa3+VS4eBwiqbsbaVDDMs7XEHPCbxDyqN0SzG7Nm3OyQuSCoi3/49TougtqduQWtq40IKIToz/beeyw1uKsQJ4GPmBoWTExbv8wCoLXQwJOg1Q= 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 1759961340947872.2084862333061; Wed, 8 Oct 2025 15:09:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9P-0003vk-3q; Wed, 08 Oct 2025 17:56:47 -0400 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 1v6c9M-0003vK-2o for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:44 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c91-0006cn-AX for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:43 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-b57bffc0248so313048a12.0 for ; Wed, 08 Oct 2025 14:56:20 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960578; x=1760565378; 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=VOmykAHgNa3WEY/QflE4W9ZlUUYk2FsFplQhf4AR8Po=; b=YOl6EAI+U0Mw7IfQW2cFV6GzZecUs+ikyRswWKtQERxILkm3ZmdF0QoqsQeRHA0GBr L8/QLkxe1l+Z/QQtIsRLMiqQSHURCdspwBTkeC45kW0sVxzZCQMdYzSje6Dgt+Y4Sjj+ 1uMt64S66EMuwo70D2s2Og1ZYzcONEpr+pmEHHnNnW1Y16y+YkvcgedgEvZ1QHRqv5RA ANC7iQxtU+WcHvZB/ArYZo9iEqhAin2KmT7QyuGyHdBBSJ5hdb8KAIqP7kCPokl6jk0p 8nTmhG+cshfDLOH6AoODmPWJkGSur2kBavyQRPBolHs4UtqwdXxOFfOmnxULWcpLke42 aatw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960578; x=1760565378; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VOmykAHgNa3WEY/QflE4W9ZlUUYk2FsFplQhf4AR8Po=; b=ccTmBdHU3Zco5D/5LL3TGi4lnGWgo6xikj9hy3L/QSGdTrv0RAcrD9Q/hHzuPKi/um eePTHhSFC6Sf0MliGsNKWpBTFM1XU8z48MQ/8dz7UJSsVIfa/CMqMwHJBDHNH4w4Teq/ lz783D2IAs6dhA4rPWdJGLGuOu74XUWEGmnq1Do0oYHRss4TvwwKhsWeC0mR0jnUi7CX HC0FMr70SXvCt7ljnrrBwT8EX0TVwDYVeSsc+KVwukLP6qjhPrM7nfz62XLAB+MGsOMY IWouBhK7vA4i4hYASN2TsFQPquB8bPHF545fC1Gk3FkLKwvKczOuJln7RHC6hhgYGRt2 0wmw== X-Gm-Message-State: AOJu0YwTET3BFd1r2nm1hQKFeVsmvlGtcDrkw+Zm+5tNxDmtUSQP6fyg 7kWtlME/OU60s4mTnM7BFfhcWh3hYqpGg9CFBB6mk4SRH4voJaQti8MrP5Q2pXhyOBdHYlQqNra QVGLMEB4= X-Gm-Gg: ASbGncsZm6SwvCDGF8vq5z7ecb3pu0/6vJ39qP6+JpYPGX+4n++c6n07tasqxt8w+OM xtbagFSA+utsVwoBWThEmHC7b7HSOJDxrDW9yrTIf+2v2yeDREbvOiYq8FE+be4nlHlB5OyrBYl bOoc2BdujxvPOolU8YH/jpDHkJHulzs4aBZIZS3svp4Ev7ufD0JLutyhFy4b1x/Ez+KlstL7QMe u246X97GdKq/2oz4rAPXn44fm7YjfEu38ZMSs3KG6Zkr6VSLR8VIPB/NDPSGnEwekR4hFAgC+Va 2QpGJwXtPS8iSjJn4apmQPUbWtAGWdFFIIMxQFIfMmLXmRS115BY5cgflzvWkzERLhFFA4BhsA9 rYDnHW9o99rvlFEHcKf0RfxehWxoe3SW6j9t1ldSfCK02uFqaHlIeDz3x X-Google-Smtp-Source: AGHT+IFIc1sMRWQ1DMGeLiD5H5uxjSFsVuPFglAK653ydnsFUyyjNZ+EJagFGxU1YzpTaBwMxV7asQ== X-Received: by 2002:a17:903:1a06:b0:27d:6995:990d with SMTP id d9443c01a7336-29027f0cccamr57745065ad.19.1759960578033; Wed, 08 Oct 2025 14:56:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 05/73] target/arm: Force HPD for stage2 translations Date: Wed, 8 Oct 2025 14:55:05 -0700 Message-ID: <20251008215613.300150-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.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: 1759961343933116600 Content-Type: text/plain; charset="utf-8" Stage2 translations do not have hierarchial permissions. Setting HPD means we can eliminate an extra check against regime_is_stage2. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/helper.c | 7 +++++-- target/arm/ptw.c | 24 +++++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 20a189ef4f..b7bc27436f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9397,8 +9397,11 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env,= uint64_t va, tsz =3D extract32(tcr, 0, 6); gran =3D tg0_to_gran_size(extract32(tcr, 14, 2)); if (stage2) { - /* VTCR_EL2 */ - hpd =3D false; + /* + * Stage2 does not have hierarchical permissions. + * Thus disabling them makes things easier during ptw. + */ + hpd =3D true; } else { hpd =3D extract32(tcr, 24, 1); } diff --git a/target/arm/ptw.c b/target/arm/ptw.c index e03657f309..2657023120 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1507,8 +1507,12 @@ static ARMVAParameters aa32_va_parameters(CPUARMStat= e *env, uint32_t va, } tsz =3D sextract32(tcr, 0, 4) + 8; select =3D 0; - hpd =3D false; epd =3D false; + /* + * Stage2 does not have hierarchical permissions. + * Thus disabling them makes things easier during ptw. + */ + hpd =3D true; } else if (el =3D=3D 2) { /* HTCR */ tsz =3D extract32(tcr, 0, 3); @@ -2014,16 +2018,14 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1= Translate *ptw, * except NSTable (which we have already handled). */ attrs =3D new_descriptor & (MAKE_64BIT_MASK(2, 10) | MAKE_64BIT_MASK(5= 0, 14)); - if (!regime_is_stage2(mmu_idx)) { - if (!param.hpd) { - attrs |=3D extract64(tableattrs, 0, 2) << 53; /* XN, PXN */ - /* - * The sense of AP[1] vs APTable[0] is reversed, as APTable[0]= =3D=3D 1 - * means "force PL1 access only", which means forcing AP[1] to= 0. - */ - attrs &=3D ~(extract64(tableattrs, 2, 1) << 6); /* !APT[0] =3D= > AP[1] */ - attrs |=3D extract32(tableattrs, 3, 1) << 7; /* APT[1] =3D>= AP[2] */ - } + if (!param.hpd) { + attrs |=3D extract64(tableattrs, 0, 2) << 53; /* XN, PXN */ + /* + * The sense of AP[1] vs APTable[0] is reversed, as APTable[0] =3D= =3D 1 + * means "force PL1 access only", which means forcing AP[1] to 0. + */ + attrs &=3D ~(extract64(tableattrs, 2, 1) << 6); /* !APT[0] =3D> AP= [1] */ + attrs |=3D extract32(tableattrs, 3, 1) << 7; /* APT[1] =3D> AP[= 2] */ } =20 ap =3D extract32(attrs, 6, 2); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960631; cv=none; d=zohomail.com; s=zohoarc; b=Yo2meyO+naBcGxTtRqYjbjIXRglbqruAHsFqSqy3IJOnUSTqnZAFRqzJQMXgLM99cwWLE0No6vqVn8kL5x1wit2d+aUso0fr9G1Q5M8SSH2vDH5JpzUreV/ZpHrZXSTm66rH6o0aX3kdutWkZrXe28BUCrwzgny1VP9QKXhRASY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960631; h=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=mMlnh8zeYNwcYH9t58MHsQn/aIeWjLHUQw8sUnZOUp0=; b=FVgBmlUcBfauUTm4JamYa1iahr7FRZUPxEyOq1IeUElf5lDX+QhXHFVuHN8lgLhpwLkIvUBav1QlEP9dOz2QfNj4uGgHR7QNWujJeeVh11QnvvUP3IbuURcod9w5VfbBosCveCGiDtrojw0ASND2FvHPhFE7IxDOh0DALNNBpG4= 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 1759960631566179.86290335295644; Wed, 8 Oct 2025 14:57:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9D-0003sd-KC; Wed, 08 Oct 2025 17:56:35 -0400 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 1v6c9A-0003s3-To for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:32 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c8z-0006d6-Lw for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:32 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-27edcbbe7bfso3903505ad.0 for ; Wed, 08 Oct 2025 14:56:21 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960579; x=1760565379; 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=mMlnh8zeYNwcYH9t58MHsQn/aIeWjLHUQw8sUnZOUp0=; b=DI1u872UZ3KGvyYmp1kdBz8bWAQ2eGbbZ7l3LH/yPZXDqXwKMSF3Lp0djN/DVs2M/A tXKoicIg533zAZCHVOzMvznwkuMylsXHpIFLmcLcq1TrGOohS21l5zdfWRYugM4rN/Tf UcyELHaI57t5dTbIJmf+S/+aZSIeqtKc/5AsiHVPPN7MUGdGvsDZ0+k+yX4UFBQwech2 80Db1NE1sLMr8nkC0jc4PRQWUQTueLOLYIMV9AMDsmhOrN+7Kx3fBwF8jKpFd+XRHicA OC65meieJ11gQ1M6vi+dPbPhpY/SvFbV9/Ui2dvMcm3Wqw/5h0TTI+rCroE7UF6dsn7C 58BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960579; x=1760565379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mMlnh8zeYNwcYH9t58MHsQn/aIeWjLHUQw8sUnZOUp0=; b=IpYF+6kahR8filymsbnB3JNzudxjhP98qARw0MlI8beLjosmZHHfUQaRycwEN2lmMS fzjuYjPuBJL9FlqaBuX1rcNsNeoGAjPylq7yTwkwnjlmj8Pk6zueFqFA+JHZlpVjpyYL 6EGF9maFJa91A1HEu0JOiUPDSlXhR5LVFVYtqo6S6GHGUU6eM1bOGPieFrwiPkcloMg9 Cxu+iusLMaxPBcoeq0Bom7Tea1R694W4hukqMCEWrz4tJPBuJCJMcEWhhjOVWJYO9jIP 2NmMLB4LjD+1AC/nk5VbyBUYGA56+QVyLyoyK1CDqqKLrZKhunA5RNJB0IvwPk/nTiL0 1rxw== X-Gm-Message-State: AOJu0YwLD70YPAccWCXXmt/Y6OF9zbUM1HQ12yzGJnd3Cw8zTkrFZUQu bf22GFK4av/pNfU8O+GJmpESV39UOvIUfmqlz4oJT8X0BH89bQ5Qy6gNN9JMduStan2FztdOnyS n+UELKlM= X-Gm-Gg: ASbGnctSqkCWdASPNUTVIb792XRWxO2USEUt6uMHMf+GlmgqPaP/mhnMUnNez6Ah60q LO05QnRgkGk3eqvLwiSMm9zHykINtbIcXDG4AFkA06NFnBjD0D3Wf0BiZbzYfEI8FAOW9qDQqkl 98uIlHj4XGkg3/3FjDOh5euGelvIe3XR7qf9rsfM4LGiW6+h0hblalBxasVmVVJSNVh76VRRgqG ueGdfhR1SM3RDRC0XYDn40RKjDt+L1ru7jVdGBltUs0RlXMBZBXLfkKLAGQOuP5t50/0zSI/ft3 Aih43q1IVPiIwZpGyxoHtvv9XV7Zn7LkslKn3ydlXD6C5oF0xdejno+0fSvRhakvNImjbUy9jKo GY41cdrK0YmG9EAILOsA9mr1ZAUkGpVcQ36d+S0psoNArNjp/+B0HUZUn3KFV9lFyOOg= X-Google-Smtp-Source: AGHT+IGKUJMgtTlHWw2o2IM+XK9NJdl39lmRv4DQjNRNl4uCeuXQSyhzPVZnqCh5rAYVcLLn91if7w== X-Received: by 2002:a17:903:a90:b0:27e:f201:ec90 with SMTP id d9443c01a7336-29027264d78mr66582075ad.25.1759960578669; Wed, 08 Oct 2025 14:56:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 06/73] target/arm: Cache NV1 early in get_phys_addr_lpae Date: Wed, 8 Oct 2025 14:55:06 -0700 Message-ID: <20251008215613.300150-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: 1759960634235154100 Content-Type: text/plain; charset="utf-8" We were not using the correct security space in the existing call to nv_nv1_enabled, because it may have been modified for NSTable. Cache it early, as we will shortly need it elsewhere as well. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/ptw.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 2657023120..e1515675eb 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -79,6 +79,8 @@ typedef struct S1Translate { * may be suppressed for debug or AT insns. */ uint8_t in_prot_check; + /* Cached EffectiveHCR_EL2_NVx() bit */ + bool in_nv1; bool out_rw; bool out_be; ARMSecuritySpace out_space; @@ -1677,12 +1679,6 @@ static bool lpae_block_desc_valid(ARMCPU *cpu, bool = ds, } } =20 -static bool nv_nv1_enabled(CPUARMState *env, S1Translate *ptw) -{ - uint64_t hcr =3D arm_hcr_el2_eff_secstate(env, ptw->in_space); - return (hcr & (HCR_NV | HCR_NV1)) =3D=3D (HCR_NV | HCR_NV1); -} - /** * get_phys_addr_lpae: perform one stage of page table walk, LPAE format * @@ -1734,6 +1730,16 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, !arm_el_is_aa64(env, 1)); level =3D 0; =20 + /* + * Cache NV1 before we adjust ptw->in_space for NSTable. + * Note that this is only relevant for EL1&0, and that + * computing it would assert for ARMSS_Root. + */ + if (el =3D=3D 1) { + uint64_t hcr =3D arm_hcr_el2_eff_secstate(env, ptw->in_space); + ptw->in_nv1 =3D (hcr & (HCR_NV | HCR_NV1)) =3D=3D (HCR_NV | HC= R_NV1); + } + /* * If TxSZ is programmed to a value larger than the maximum, * or smaller than the effective minimum, it is IMPLEMENTATION @@ -2109,7 +2115,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, xn =3D extract64(attrs, 54, 1); pxn =3D extract64(attrs, 53, 1); =20 - if (el =3D=3D 1 && nv_nv1_enabled(env, ptw)) { + if (el =3D=3D 1 && ptw->in_nv1) { /* * With FEAT_NV, when HCR_EL2.{NV,NV1} =3D=3D {1,1}, the block= /page * descriptor bit 54 holds PXN, 53 is RES0, and the effective = value --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961067; cv=none; d=zohomail.com; s=zohoarc; b=nsOdFLaIwX0S/z028QdhRpMDicGR3jJEkmCv80kgPwSRMPnwxJFB65hM/fGgT7yXjFJ3ee2xU9UkVL17x4bwkuwxWiUSR1Y3P0qRZKUFQJy6ts3ocnHKmTXy0saQoHCERlYqoVpC+6bnElpKv2SepwfVzjNd0KFvcLg61osw0D4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961067; h=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=zQVWUvLcDou/AxWVkjzuguGXQD36QliqcWswbcaqJJI=; b=ZBY/Welby+rA4yTmmbgIj/iJMv9Xij7SDcePayCqFk2LKoJO+4KI4NWu6m5tQhvToDVnswOAx/WvAUGb0UlkXH7rxM5fuLr/wLz2eeZEaqF4TOl4qhnLYzWzZd1CMhYR0tTwVFz5/+p3y6Y0vjtGiffl0chsPXPpiU9lnMvKdM8= 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 1759961067618746.3624425417731; Wed, 8 Oct 2025 15:04:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9f-00042f-3y; Wed, 08 Oct 2025 17:57:03 -0400 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 1v6c9a-00040p-OJ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:58 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c91-0006dE-I6 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:57 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-b4fb8d3a2dbso174841a12.3 for ; Wed, 08 Oct 2025 14:56:21 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960579; x=1760565379; 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=zQVWUvLcDou/AxWVkjzuguGXQD36QliqcWswbcaqJJI=; b=pBatbaAR17qFvO4NlMU3CeZV1P2wbvXC5y7Du+yxWN4NKLUsmo/oFP9LDTJ7/o9cXR TvVORUT42H1rpSD/RRHhdPmvv0XhYEfpsoJ/qXJc638Ey23xMPBQrwz7qBCTpnt+QV7Z AAnwo/1xJ5qULLFFK83kseG+fMn46NUgY6uixhgXQ+2hrM1AtEKNMnS4f0LFhQf7QSaY R7tCrGX/nxHjOyX1TUsE3B7vFQw2cikoxiXxABeg2tXZslj6BxRSN2DAfkj799ODgQwt rUb7La2jenzXWstQO2EPSx8aLwtHcXyu1gyDnkIIhyZVq0kZl/Tyx/2dtud1VaKn4hdD LLPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960579; x=1760565379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zQVWUvLcDou/AxWVkjzuguGXQD36QliqcWswbcaqJJI=; b=YnnWVC6zHrdCNI75Qw3hVo4At3V0fZMDBk+/39x/FtAOQzg437BZxPNDJlI9uw7Krj vWSqnbLF98T1ymtw/W8JSlpc/5VeI6H3edyfHyBBMtO1wh5V1nU1/KuUNxGAKYpWoRgt ex4cNQ0WhXNw3yh4DKPi/tx50oV4yTDjSGHC94A02XpyLXMu2D8JiuV4FhgQwRCWUI6T 7d4219QpBLvI0+2LcRS8fizJp36ogpqa8bnfaipHCBhKMy9dz9rw2f6Xl7vYCdFX1jV/ 5XHFZy+4zTfTRsrsah242HKqEFzj1mkQbRbJ8YcVXr9tAOUP9Nhcef4/dc0FqKwgpdRY oDMA== X-Gm-Message-State: AOJu0Yw8UzI497YGo9jEjL9BJtX1lr8DvL9MTquiU34ufyOgaQYplapP 5Xbhitpqu0qK4c3tR3+B1QHYaaHK1Gb/CCfJPs+yfxjQSqaZNgNi2Vv9qplZciV2ojVsm4N+QmP kzmom8lo= X-Gm-Gg: ASbGncvfoLpnRhYx0QM3doaMCaM06KqN9jrvMHtmO3H5iepF/4i6AccH0tvzv+yBNPt aVdiTQ0xPT+IXWyiVtu2coorpVq+2/btc3oHvnYS4cFiiOW73t8bprHEuKWo1ZFpuZsaWT1j+Am 7IdrSevqAlxjxaUbLCAFL61HqWeq3SQMwkUMGk1REA6/91CTyFFnzK9bb1YSTteel+Qvz8VLrdz KIV5o0S44oIIbDxIZ+ExdgBOaMDz0yw3AW/OKoF+LTuEhlx5N5suEev2e9jn7UOUoOVCdTvBtRX A+YrXyINmZnwmfYzFH1cBph1pzbVfFEj7RRVZ19EJBIIsUgAUAIgsN2TYmWZCwDXnAKUghQA/DB 3/WbAFEo9ka0QTy1pOT2kboT/jL6+l0OMCK5u6qAy0BUvHjP74l8xTNmz X-Google-Smtp-Source: AGHT+IHyChMPFRve0iq//XRfsI8/WyMhHAz0/pznFkr3Co/Vy6DFVo5EbBZV+6xkf4EkPM5nNqToJg== X-Received: by 2002:a17:903:2a87:b0:25a:24f2:af00 with SMTP id d9443c01a7336-2902721305cmr73599595ad.12.1759960579447; Wed, 08 Oct 2025 14:56:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 07/73] target/arm: Populate PIE in aa64_va_parameters Date: Wed, 8 Oct 2025 14:55:07 -0700 Message-ID: <20251008215613.300150-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1759961075698116600 Content-Type: text/plain; charset="utf-8" Select the PIE bit for the translation regime. With PIE, the PTE layout changes, forcing HPD. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 3 ++- target/arm/helper.c | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 1d958dbf68..face1019f5 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1491,7 +1491,7 @@ static inline int arm_granule_bits(ARMGranuleSize gra= n) =20 /* * Parameters of a given virtual address, as extracted from the - * translation control register (TCR) for a given regime. + * translation controls for a given regime. */ typedef struct ARMVAParameters { unsigned tsz : 8; @@ -1506,6 +1506,7 @@ typedef struct ARMVAParameters { bool ha : 1; bool hd : 1; ARMGranuleSize gran : 2; + bool pie : 1; } ARMVAParameters; =20 /** diff --git a/target/arm/helper.c b/target/arm/helper.c index b7bc27436f..37865bf70e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9386,11 +9386,12 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, bool el1_is_aa32) { uint64_t tcr =3D regime_tcr(env, mmu_idx); - bool epd, hpd, tsz_oob, ds, ha, hd; + bool epd, hpd, tsz_oob, ds, ha, hd, pie =3D false; int select, tsz, tbi, max_tsz, min_tsz, ps, sh; ARMGranuleSize gran; ARMCPU *cpu =3D env_archcpu(env); bool stage2 =3D regime_is_stage2(mmu_idx); + int r_el =3D regime_el(env, mmu_idx); =20 if (!regime_has_2_ranges(mmu_idx)) { select =3D 0; @@ -9402,8 +9403,17 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env,= uint64_t va, * Thus disabling them makes things easier during ptw. */ hpd =3D true; + pie =3D extract64(tcr, 36, 1) && cpu_isar_feature(aa64_s2pie, = cpu); } else { hpd =3D extract32(tcr, 24, 1); + if (r_el =3D=3D 3) { + pie =3D (extract64(tcr, 35, 1) + && cpu_isar_feature(aa64_s1pie, cpu)); + } else { + pie =3D ((env->cp15.tcr2_el[2] & TCR2_PIE) + && (!arm_feature(env, ARM_FEATURE_EL3) + || (env->cp15.scr_el3 & SCR_TCR2EN))); + } } epd =3D false; sh =3D extract32(tcr, 12, 2); @@ -9443,7 +9453,13 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env,= uint64_t va, regime_is_user(env, mmu_idx)) { epd =3D true; } + + pie =3D ((env->cp15.tcr2_el[r_el] & TCR2_PIE) + && (!arm_feature(env, ARM_FEATURE_EL3) + || (env->cp15.scr_el3 & SCR_TCR2EN)) + && (r_el =3D=3D 2 || (arm_hcrx_el2_eff(env) & HCRX_TCR2EN))= ); } + hpd |=3D pie; =20 gran =3D sanitize_gran_size(cpu, gran, stage2); =20 @@ -9522,6 +9538,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, .ha =3D ha, .hd =3D ha && hd, .gran =3D gran, + .pie =3D pie, }; } =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961226; cv=none; d=zohomail.com; s=zohoarc; b=BVg8RmQF/oLruIXPbVvLlmbQ8WtQQPTLJtew2fFMfmllXyze42To9hp0/SKBtCvoOzyGvJGAnpwePmn8irlRw52vf8YgYlEBtPZCKgPflwjjpl2LuzzvSLra9bdTr+g4KpiReOK2ABfQYUcChJg0wMHk9STFxcjLjk4Iu27E5uA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961226; h=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=vPXa4J7vTcsuHyJDfp39GjPEdE8Jk9DcDrsqJJqeM7s=; b=bl6zmLgCX3IbTJdq3PmVaRrF4yOcrKF09Itg0UQWLZhHYz+8hzOg0BXW2BfuN/WTda26sq0N+MgJThH13EqXFI4RHz0m5htS+OxSBB9KdRa+wjKTJcqU/13xnYrEjoqf42cKyz5Ew/12TOy2HqGsgut0fNUF8h3v0CnON/IXvr8= 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 1759961226865842.18176090001; Wed, 8 Oct 2025 15:07:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9Y-0003zf-JU; Wed, 08 Oct 2025 17:56:56 -0400 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 1v6c9T-0003xe-3z for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:51 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c91-0006dh-IQ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:49 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-27d3540a43fso2936745ad.3 for ; Wed, 08 Oct 2025 14:56:22 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960580; x=1760565380; 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=vPXa4J7vTcsuHyJDfp39GjPEdE8Jk9DcDrsqJJqeM7s=; b=UI+h4Ayt23BJg7fxR0X1pJdWJyO81vC38cd9KgQ5KdAcLPHfnUUfopWUBJmV9qqYVa mVXR6D25rOcIYFb0ydQ0A3ZkuVk5Zzl6RwdvQJdnzGDoV+TyomTES//juYJ1xMGnPA/j svXPQwHD4b9XgpUMyuPaH9CBw2rWHCw4c6MwshDmjiHZ/dok4fYyRhgg80/qFoG6i9qf /Uc0F/ldLZFOXoC5ZaQtG4K5AFc3UErKDCHYckj0z2SLx8Q7Pjnu/dFZN+YNZ+TWMHvv Wg/32IX2Du11rqxGptciK62v1jdh0PgfK4iboY9azuE/sBPKOWbAaIGqZdUEXNxyUtwt nGQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960580; x=1760565380; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vPXa4J7vTcsuHyJDfp39GjPEdE8Jk9DcDrsqJJqeM7s=; b=SZst153CmbzTfY0ahilaVqlhL0Hq0bcALaK2A20W8lDggkekbe9DTBwo+XHaKLOYl4 ++50q3/1smH29+d4OOa4TCwQu/geVs7E95TA60cavAbwnL484UZgym+TiKWn5lBwNE9e 4PqsOPPF5ScsNtg0El8VztdAcw3h1bBdz9DsE5PjWwujL5dTJZsB9iaYZIKTwhvHeNfM DKPP3YPd+DPdMVUwkllEzLQ0r5l/6Hg0ssm6/a95MB61YI1uy02G3hZ+NUrV1sf5Q356 F5Uw4vcmAq7LPMxsjBrFGFEozgthgQqbNcyO49jkwxt9qft8Q3qYsxJ5Rr9gV8Ay89/b z/9w== X-Gm-Message-State: AOJu0YxCfKktVWenslBQum7nSgYwF6vasmWWcjp4/kVj0syCd8bXDXWf TIfAQ/FaPvgtKjE4XKWQAuWn3fZY7KLFoeJ1x02TiYg13SXwTc3BozK3UtOHwZwqrOQHb/2bOaP s0zqNq/A= X-Gm-Gg: ASbGncvqqxv5LxoZPvr0CBtKb9fj77/atNS8UsBWl8j5uH+9NmuOmLTky4D7WVtq/SR TkpGIk2BRq7oFJV41lnIoPXBghyM0/1+wTlEXflTJlFX01t9TTTcu6NFDD1SdsGbTf7b0y4NLYZ CYksDfKYzfiQApzZVicD+HI2rYprJ+W857+20U+pDSt4UbVKVfQB6NcXq29Q7BHwgQ+RDaP6zQm +JhRwc7BAlF0lmqCWmq6XrRCkt3CbDQn0THsqB2ktrOxD+Tzl6A3bqAyHiN2aiCI83yExTC3wjU JGA2hyGUKpZzdLCpH9DsKHFNkIGz7EluY+4AzkX8plZGUH0CzCqXMSbbTshwEnyM5r2xcsLyz2v qzCs5S/z5+mMrmOhvb4Zv3HN7t9JLRi+OwKrFU29uQRCtp8PbL7FsDvTe X-Google-Smtp-Source: AGHT+IEzM9zcctUqd2KRESzpG2YQQyAPhEFjCjGUnKq5+1NtVL1coXofFCBsj+23FdwA7iQJpCnlQA== X-Received: by 2002:a17:903:1aae:b0:273:7d52:e510 with SMTP id d9443c01a7336-290273038c3mr62294065ad.58.1759960580075; Wed, 08 Oct 2025 14:56:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 08/73] target/arm: Implement get_S1prot_indirect Date: Wed, 8 Oct 2025 14:55:08 -0700 Message-ID: <20251008215613.300150-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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, 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: 1759961228809154100 Content-Type: text/plain; charset="utf-8" This approximately corresponds to AArch64.S1IndirectBasePermissions and the tail of AArch64.S1ComputePermissions which applies WXN. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/ptw.c | 161 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 139 insertions(+), 22 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index e1515675eb..5913556077 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1484,6 +1484,106 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx m= mu_idx, bool is_aa64, return prot_rw | PAGE_EXEC; } =20 +/* Extra page permission bits, during get_S1prot_indirect only. */ +#define PAGE_GCS (1 << 3) +#define PAGE_WXN (1 << 4) +#define PAGE_OVERLAY (1 << 5) +QEMU_BUILD_BUG_ON(PAGE_RWX & (PAGE_GCS | PAGE_WXN | PAGE_OVERLAY)); + +static int get_S1prot_indirect(CPUARMState *env, S1Translate *ptw, + ARMMMUIdx mmu_idx, int pi_index, int po_ind= ex, + ARMSecuritySpace in_pa, ARMSecuritySpace ou= t_pa) +{ + static const uint8_t perm_table[16] =3D { + /* 0 */ PAGE_OVERLAY, /* no access */ + /* 1 */ PAGE_OVERLAY | PAGE_READ, + /* 2 */ PAGE_OVERLAY | PAGE_EXEC, + /* 3 */ PAGE_OVERLAY | PAGE_READ | PAGE_EXEC, + /* 4 */ PAGE_OVERLAY, /* reserved */ + /* 5 */ PAGE_OVERLAY | PAGE_READ | PAGE_WRITE, + /* 6 */ PAGE_OVERLAY | PAGE_READ | PAGE_WRITE | PAGE_EXEC | PAGE_W= XN, + /* 7 */ PAGE_OVERLAY | PAGE_READ | PAGE_WRITE | PAGE_EXEC, + /* 8 */ PAGE_READ, + /* 9 */ PAGE_READ | PAGE_GCS, + /* A */ PAGE_READ | PAGE_EXEC, + /* B */ 0, /* reserved */ + /* C */ PAGE_READ | PAGE_WRITE, + /* D */ 0, /* reserved */ + /* E */ PAGE_READ | PAGE_WRITE | PAGE_EXEC, + /* F */ 0, /* reserved */ + }; + + uint32_t el =3D regime_el(env, mmu_idx); + uint64_t pir =3D env->cp15.pir_el[el]; + uint64_t pire0 =3D 0; + int perm; + + if (el < 3) { + if (arm_feature(env, ARM_FEATURE_EL3) + && !(env->cp15.scr_el3 & SCR_PIEN)) { + pir =3D 0; + } else if (el =3D=3D 2) { + pire0 =3D env->cp15.pire0_el2; + } else if (!ptw->in_nv1) { + pire0 =3D env->cp15.pir_el[0]; + } + } + perm =3D perm_table[extract64(pir, pi_index * 4, 4)]; + + if (regime_has_2_ranges(mmu_idx)) { + int p_perm =3D perm; + int u_perm =3D perm_table[extract64(pire0, pi_index * 4, 4)]; + + if ((p_perm & (PAGE_EXEC | PAGE_GCS)) && + (u_perm & (PAGE_WRITE | PAGE_GCS))) { + p_perm &=3D ~(PAGE_RWX | PAGE_GCS); + u_perm &=3D ~(PAGE_RWX | PAGE_GCS); + } + if ((u_perm & (PAGE_RWX | PAGE_GCS)) && regime_is_pan(env, mmu_idx= )) { + p_perm &=3D ~(PAGE_READ | PAGE_WRITE); + } + perm =3D regime_is_user(env, mmu_idx) ? u_perm : p_perm; + } + + if (in_pa !=3D out_pa) { + switch (in_pa) { + case ARMSS_Root: + /* + * R_ZWRVD: permission fault for insn fetched from non-Root, + * I_WWBFB: SIF has no effect in EL3. + */ + perm &=3D ~(PAGE_EXEC | PAGE_GCS); + break; + case ARMSS_Realm: + /* + * R_PKTDS: permission fault for insn fetched from non-Realm, + * for Realm EL2 or EL2&0. The corresponding fault for EL1&0 + * happens during any stage2 translation. + */ + if (el =3D=3D 2) { + perm &=3D ~(PAGE_EXEC | PAGE_GCS); + } + break; + case ARMSS_Secure: + if (env->cp15.scr_el3 & SCR_SIF) { + perm &=3D ~(PAGE_EXEC | PAGE_GCS); + } + break; + default: + /* Input NonSecure must have output NonSecure. */ + g_assert_not_reached(); + } + } + + if (perm & PAGE_WXN) { + perm &=3D ~PAGE_EXEC; + } + + /* TODO: FEAT_GCS */ + + return perm & PAGE_RWX; +} + static ARMVAParameters aa32_va_parameters(CPUARMState *env, uint32_t va, ARMMMUIdx mmu_idx) { @@ -1713,7 +1813,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, int32_t stride; int addrsize, inputsize, outputsize; uint64_t tcr =3D regime_tcr(env, mmu_idx); - int ap, xn, pxn; + int ap; uint32_t el =3D regime_el(env, mmu_idx); uint64_t descaddrmask; bool aarch64 =3D arm_el_is_aa64(env, el); @@ -2047,7 +2147,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, out_space =3D ARMSS_NonSecure; result->f.prot =3D get_S2prot_noexecute(ap); } else { - xn =3D extract64(attrs, 53, 2); + int xn =3D extract64(attrs, 53, 2); result->f.prot =3D get_S2prot(env, ap, xn, ptw->in_s1_is_el0); } =20 @@ -2063,7 +2163,6 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, int nse, ns =3D extract32(attrs, 5, 1); uint8_t attrindx; uint64_t mair; - int user_rw, prot_rw; =20 switch (out_space) { case ARMSS_Root: @@ -2112,29 +2211,47 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1= Translate *ptw, default: g_assert_not_reached(); } - xn =3D extract64(attrs, 54, 1); - pxn =3D extract64(attrs, 53, 1); =20 - if (el =3D=3D 1 && ptw->in_nv1) { + if (param.pie) { + int pi =3D extract64(attrs, 6, 1) + | (extract64(attrs, 51, 1) << 1) + | (extract64(attrs, 53, 2) << 2); + int po =3D extract64(attrs, 60, 3); /* - * With FEAT_NV, when HCR_EL2.{NV,NV1} =3D=3D {1,1}, the block= /page - * descriptor bit 54 holds PXN, 53 is RES0, and the effective = value - * of UXN is 0. Similarly for bits 59 and 60 in table descript= ors - * (which we have already folded into bits 53 and 54 of attrs). - * AP[1] (descriptor bit 6, our ap bit 0) is treated as 0. - * Similarly, APTable[0] from the table descriptor is treated = as 0; - * we already folded this into AP[1] and squashing that to 0 d= oes - * the right thing. + * Note that we modified ptw->in_space earlier for NSTable, but + * result->f.attrs retains a copy of the original security spa= ce. */ - pxn =3D xn; - xn =3D 0; - ap &=3D ~1; - } + result->f.prot =3D get_S1prot_indirect(env, ptw, mmu_idx, pi, = po, + result->f.attrs.space, + out_space); + } else { + int xn =3D extract64(attrs, 54, 1); + int pxn =3D extract64(attrs, 53, 1); + int user_rw, prot_rw; =20 - user_rw =3D simple_ap_to_rw_prot_is_user(ap, true); - prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); - result->f.prot =3D get_S1prot(env, mmu_idx, aarch64, user_rw, prot= _rw, - xn, pxn, ptw->in_space, out_space); + if (el =3D=3D 1 && ptw->in_nv1) { + /* + * With FEAT_NV, when HCR_EL2.{NV,NV1} =3D=3D {1,1}, + * the block/page descriptor bit 54 holds PXN, + * 53 is RES0, and the effective value of UXN is 0. + * Similarly for bits 59 and 60 in table descriptors + * (which we have already folded into bits 53 and 54 of at= trs). + * AP[1] (descriptor bit 6, our ap bit 0) is treated as 0. + * Similarly, APTable[0] from the table descriptor is trea= ted + * as 0; we already folded this into AP[1] and squashing + * that to 0 does the right thing. + */ + pxn =3D xn; + xn =3D 0; + ap &=3D ~1; + } + + user_rw =3D simple_ap_to_rw_prot_is_user(ap, true); + prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); + result->f.prot =3D get_S1prot(env, mmu_idx, aarch64, + user_rw, prot_rw, xn, pxn, + ptw->in_space, out_space); + } =20 /* Index into MAIR registers for cache attributes */ attrindx =3D extract32(attrs, 2, 3); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960753; cv=none; d=zohomail.com; s=zohoarc; b=aOqjPwVYyVL1hQny+E9B10jnlWK+QkSgWk++WvBpMqgU2K/g+OS/ZkPRBc6yyJKq/KpWnZKoiozn3bLj0bMV+fAluhd5jxsU9QPkkI218+ka3P6sn/n9qny+jJlO+MlAsB8BKf6vkUTBYSZ5D5UYeAUQYgOpA2MslO0Z209UJMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960753; h=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=Z690H6zz6yiAYTAVgVYDL7negkYhmlGaX7RjPC+kJjs=; b=EgtFtHDbYtH+Sr7kJ58GMWVSB4H3M804af3JAy1HQbdcBul8FJN+1R95xXu67WQbNEZur4o1OG6vgjJd30FEtItT+YLMQXxEGK06cXHCmNYUdZVfFQlftDbblgh0eRyQVjilRO+z/7DFU4JFRE1F/TYSgEun2uWaNA0tj6GfyIU= 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 175996075301723.927793859541907; Wed, 8 Oct 2025 14:59:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9U-0003xW-Vw; Wed, 08 Oct 2025 17:56:54 -0400 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 1v6c9Q-0003x4-NJ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:48 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c93-0006dv-5k for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:47 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-b609a32a9b6so156107a12.2 for ; Wed, 08 Oct 2025 14:56:23 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960581; x=1760565381; 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=Z690H6zz6yiAYTAVgVYDL7negkYhmlGaX7RjPC+kJjs=; b=xDQ/ytplzIebkyiTbJRd42Bc8+NwdwaDU72L8qvyWIQWhZczbEVfWG6PCBuIjD4yAK j9y8b8VH34oaedQqqywAB58sH8jgUPKwSm616yIPkjZcyPmEHRZspI1bA127JRQiHXKo yhG0FWSSalb24FdG5GbMheKZgzca1y2mDSNY2PjbPh3hKtMSJuBtPgQv/LiLtZ6JhrpK eEhUM6O7rjRvPHQs5528lkV7KtQa+lLI5p1MeF1fKo8ESX0/CZf8ohpL0TbO3VpJJkit 5zutRipKO4FfAdkcx5H/6aBsoCVH5sSCz2bS5RxOqE2GFWH4GmydhQvp9NpD2NqQMOSE q9qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960581; x=1760565381; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z690H6zz6yiAYTAVgVYDL7negkYhmlGaX7RjPC+kJjs=; b=dg/zGX06BrTfWEJReLFQENamc2JCQFCDxsImV8a8hi60E8ogXHiKZDmDv1Aj6NOB/O PZ5N6LesUMcgNmJRWvPUrn77hhixxoaTVJlWTJkGu/TAPpZaVuuls2a0UJLBB1AFLc9O 0YCdBLdLHbCzJM+LcXFpWTtZ3Gv12km5HxavAUSuYSkTbsevluY9QP9WQ2aZXQBIgSVL AxgWtfMNH0EN1w/YSEvDeRvQMJm3PSzlfRtC32t0wfDOUqyuNiDtM6nDPNm/G+pjq+eC mNooz0v0+ND6P2iU+8iwOh5qm5W7VtHhAO1ZlNi9mZi2+Zl33ncr9qYeZssBw18Mv6NA ZOPg== X-Gm-Message-State: AOJu0Yw9HiDSVC4gjH4cGLW3w3jxGmBr4qBDnVxPN7Z6DFr8mtbEv6Km ejXfRqBSnuXxYYa9RVYuWMcvmvGr9WJN8J6IgQ1qIywbe3LwwENeqlpvcdMHDT1D0w/FOjAdMfS nQ6Jcy4o= X-Gm-Gg: ASbGncv/KsuRxfyFiePPePAv+1/Lqy0KTWanSoJxEQrYzWAAuclg2ZBWbE3Y5oJcMUN ErWVr356sUvYPZFOmPdY8lL93LarU7/sK9xhWbVuwahkfv53Z0ho8VH3KEwxXXsfw/xTv7ao0P3 RD+5MLYYSwqvmYdYQBE/rTP9uknsSfVx3Ya1ypl6tAFrFvcaMFqPbWinz/FDHxCKHmyzh2mJfz2 fBnaAz6EK+5QdtIZj+35JhVq0SHLkbFCacYlcjbZ51JSXA2InHOOKOtBDLECM20kITIjA5jMBdr NBTAxktw800lcGgEPIRPdyzTXFzqmSjm04ok5RHK2FlDDPM6n3IycUp7Nu/baCnHXeDYfmPFXjm OlUYWJbzVqg+EwUcfGsn2mFSUwAZ0G9hx6Ktf27zQ1xE2UpgL9hZbcMVO X-Google-Smtp-Source: AGHT+IEsGFv6OKznPp3y93k5oTPaQVp5KV9QoVVUxpH3SelL2vgY49hq1QYa8pNweTIIPKBarWHG4Q== X-Received: by 2002:a17:903:1987:b0:24c:7b94:2f53 with SMTP id d9443c01a7336-29027215b7amr64583335ad.6.1759960580741; Wed, 08 Oct 2025 14:56:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 09/73] target/arm: Implement get_S2prot_indirect Date: Wed, 8 Oct 2025 14:55:09 -0700 Message-ID: <20251008215613.300150-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.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: 1759960756793116600 Content-Type: text/plain; charset="utf-8" Move the stage2 permissions for normal accesses to GetPhysAddrResult.s2prot. Put the stage2 permissions for page table walking in CPUTLBEntryFull.prot. This allows the permission checks in S1_ptw_translate and arm_casq_ptw to see the right permission. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 7 ++++ target/arm/ptw.c | 81 +++++++++++++++++++++++++++++++----------- 2 files changed, 68 insertions(+), 20 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index face1019f5..22947c4b78 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1577,6 +1577,13 @@ typedef struct ARMCacheAttrs { typedef struct GetPhysAddrResult { CPUTLBEntryFull f; ARMCacheAttrs cacheattrs; + /* + * For ARMMMUIdx_Stage2*, the protection installed into f.prot + * is the result for AccessType_TTW, i.e. the page table walk itself. + * The protection installed info s2prot is the one to be merged + * with the stage1 protection. + */ + int s2prot; } GetPhysAddrResult; =20 /** diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 5913556077..2e026a7c59 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1316,7 +1316,7 @@ do_fault: * @xn: XN (execute-never) bits * @s1_is_el0: true if this is S2 of an S1+2 walk for EL0 */ -static int get_S2prot_noexecute(int s2ap) +static int get_S2prot(CPUARMState *env, int s2ap, int xn, bool s1_is_el0) { int prot =3D 0; =20 @@ -1326,12 +1326,6 @@ static int get_S2prot_noexecute(int s2ap) if (s2ap & 2) { prot |=3D PAGE_WRITE; } - return prot; -} - -static int get_S2prot(CPUARMState *env, int s2ap, int xn, bool s1_is_el0) -{ - int prot =3D get_S2prot_noexecute(s2ap); =20 if (cpu_isar_feature(any_tts2uxn, env_archcpu(env))) { switch (xn) { @@ -1363,6 +1357,44 @@ static int get_S2prot(CPUARMState *env, int s2ap, in= t xn, bool s1_is_el0) return prot; } =20 +static int get_S2prot_indirect(CPUARMState *env, GetPhysAddrResult *result, + int pi_index, int po_index, bool s1_is_el0) +{ + /* Last index is (priv, unpriv, ttw) */ + static const uint8_t perm_table[16][3] =3D { + /* 0 */ { 0, 0, 0 }, /* no access */ + /* 1 */ { 0, 0, 0 }, /* reserved */ + /* 2 */ { PAGE_READ, PAGE_READ, PAGE_READ | PAGE_WRITE }, + /* 3 */ { PAGE_READ, PAGE_READ, PAGE_READ | PAGE_WRITE }, + /* 4 */ { PAGE_WRITE, PAGE_WRITE, 0 }, + /* 5 */ { 0, 0, 0 }, /* reserved */ + /* 6 */ { PAGE_READ, PAGE_READ, PAGE_READ | PAGE_WRITE }, + /* 7 */ { PAGE_READ, PAGE_READ, PAGE_READ | PAGE_WRITE }, + /* 8 */ { PAGE_READ, PAGE_READ, PAGE_READ }, + /* 9 */ { PAGE_READ, PAGE_READ | PAGE_EXEC, PAGE_READ }, + /* A */ { PAGE_READ | PAGE_EXEC, PAGE_READ, PAGE_READ }, + /* B */ { PAGE_READ | PAGE_EXEC, PAGE_READ | PAGE_EXEC, PAGE_READ = }, + /* C */ { PAGE_READ | PAGE_WRITE, + PAGE_READ | PAGE_WRITE, + PAGE_READ | PAGE_WRITE }, + /* D */ { PAGE_READ | PAGE_WRITE, + PAGE_READ | PAGE_WRITE | PAGE_EXEC, + PAGE_READ | PAGE_WRITE }, + /* E */ { PAGE_READ | PAGE_WRITE | PAGE_EXEC, + PAGE_READ | PAGE_WRITE, + PAGE_READ | PAGE_WRITE }, + /* F */ { PAGE_READ | PAGE_WRITE | PAGE_EXEC, + PAGE_READ | PAGE_WRITE | PAGE_EXEC, + PAGE_READ | PAGE_WRITE }, + }; + + uint64_t pir =3D (env->cp15.scr_el3 & SCR_PIEN ? env->cp15.s2pir_el2 := 0); + int s2pi =3D extract64(pir, pi_index * 4, 4); + + result->f.prot =3D perm_table[s2pi][2]; + return perm_table[s2pi][s1_is_el0]; +} + /* * Translate section/page access permissions to protection flags * @env: CPUARMState @@ -1813,7 +1845,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, int32_t stride; int addrsize, inputsize, outputsize; uint64_t tcr =3D regime_tcr(env, mmu_idx); - int ap; + int ap, prot; uint32_t el =3D regime_el(env, mmu_idx); uint64_t descaddrmask; bool aarch64 =3D arm_el_is_aa64(env, el); @@ -2137,6 +2169,18 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, ap =3D extract32(attrs, 6, 2); out_space =3D ptw->cur_space; if (regime_is_stage2(mmu_idx)) { + if (param.pie) { + int pi =3D extract64(attrs, 6, 1) + | (extract64(attrs, 51, 1) << 1) + | (extract64(attrs, 53, 2) << 2); + int po =3D extract64(attrs, 60, 3); + prot =3D get_S2prot_indirect(env, result, pi, po, ptw->in_s1_i= s_el0); + } else { + int xn =3D extract64(attrs, 53, 2); + prot =3D get_S2prot(env, ap, xn, ptw->in_s1_is_el0); + /* Install TTW permissions in f.prot. */ + result->f.prot =3D prot & (PAGE_READ | PAGE_WRITE); + } /* * R_GYNXY: For stage2 in Realm security state, bit 55 is NS. * The bit remains ignored for other security states. @@ -2145,11 +2189,9 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, */ if (out_space =3D=3D ARMSS_Realm && extract64(attrs, 55, 1)) { out_space =3D ARMSS_NonSecure; - result->f.prot =3D get_S2prot_noexecute(ap); - } else { - int xn =3D extract64(attrs, 53, 2); - result->f.prot =3D get_S2prot(env, ap, xn, ptw->in_s1_is_el0); + prot &=3D ~PAGE_EXEC; } + result->s2prot =3D prot; =20 result->cacheattrs.is_s2_format =3D true; result->cacheattrs.attrs =3D extract32(attrs, 2, 4); @@ -2221,9 +2263,8 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, * Note that we modified ptw->in_space earlier for NSTable, but * result->f.attrs retains a copy of the original security spa= ce. */ - result->f.prot =3D get_S1prot_indirect(env, ptw, mmu_idx, pi, = po, - result->f.attrs.space, - out_space); + prot =3D get_S1prot_indirect(env, ptw, mmu_idx, pi, po, + result->f.attrs.space, out_space); } else { int xn =3D extract64(attrs, 54, 1); int pxn =3D extract64(attrs, 53, 1); @@ -2248,10 +2289,10 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1= Translate *ptw, =20 user_rw =3D simple_ap_to_rw_prot_is_user(ap, true); prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); - result->f.prot =3D get_S1prot(env, mmu_idx, aarch64, - user_rw, prot_rw, xn, pxn, - ptw->in_space, out_space); + prot =3D get_S1prot(env, mmu_idx, aarch64, user_rw, prot_rw, + xn, pxn, ptw->in_space, out_space); } + result->f.prot =3D prot; =20 /* Index into MAIR registers for cache attributes */ attrindx =3D extract32(attrs, 2, 3); @@ -2297,7 +2338,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, result->f.tlb_fill_flags =3D 0; } =20 - if (ptw->in_prot_check & ~result->f.prot) { + if (ptw->in_prot_check & ~prot) { fi->type =3D ARMFault_Permission; goto do_fault; } @@ -3495,7 +3536,7 @@ static bool get_phys_addr_twostage(CPUARMState *env, = S1Translate *ptw, fi->s2addr =3D ipa; =20 /* Combine the S1 and S2 perms. */ - result->f.prot &=3D s1_prot; + result->f.prot =3D s1_prot & result->s2prot; =20 /* If S2 fails, return early. */ if (ret) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961569; cv=none; d=zohomail.com; s=zohoarc; b=XWuagq/J8cucHOuN34clwsDBavoJHC1t78G35Yu3VmWkR8J5V6boQreJE0NAxSOneUzHWJY/QJLq70PE3k0TbRvyPi3oJa+RnDnDp9rPhfpiYQ9iuVbMmJNVby1aPD/MMHFFXmkQm3pgbzDTu5RmjQhj+rARex52+82UA9amrkw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961569; h=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=ZcOCks6UmABFWVi0tC8ZkV/VoNMSt0hRAlHP6icAWxo=; b=K++k8gHSCJF94F8PO1IC8S8JPNETvcnhkYaTBTF9Momh6ms6WdldlwWEyipabnTJr9AxuBIXuMFFW8HxdWd3wXCUceNlOq69MEbQGEj5OqD9Bbhnx2e7I8W3EIlGM+Uc/E2jGwoIjE6roNqF62HGSwfgo929wf7ZGT7XttXBoH8= 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 1759961569641644.4108426233288; Wed, 8 Oct 2025 15:12:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9g-00044B-7y; Wed, 08 Oct 2025 17:57:04 -0400 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 1v6c9c-00042J-VF for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:02 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c95-0006eO-4n for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:00 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-27d3540a43fso2936865ad.3 for ; Wed, 08 Oct 2025 14:56:24 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960581; x=1760565381; 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=ZcOCks6UmABFWVi0tC8ZkV/VoNMSt0hRAlHP6icAWxo=; b=B6V1kAq5oTuCeYSIGEQFYnKslDQRTJ09gZOacbDVB8G/w89PDKM8rXHzF2cyjX6Wj0 B+uXebyP6ITcXkJY5m5MxX/2+rOnGIANLQrweYB57QAu/HOnmV4tCn3G6FjfxVhtYiDf Fi8v36+m7kPvfFbW8oC75xzDZK23z6/lpvqRq8liSLggWGkqPxW78LM0d6xOpGESh/RR wWXBEUTOu6WIa5EiGzuHpV2KRKIW3SAFl44DmIXNZCsxqF+ANEzHdIVYNq/UXgp0xxVC QYH7mPYGWxscdrY3tjvo5pzjpyitvrHtF/jZ3s9AXXhuoXaQ6lBMaEtd0JvPu4aV07CU Pu9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960581; x=1760565381; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZcOCks6UmABFWVi0tC8ZkV/VoNMSt0hRAlHP6icAWxo=; b=a5FqRG13aP0j/T1n0PtsSvPQBuvx/Vb69yOpWmB3wklQfNQaKP36V/+SQbtOVdNQEN XnmSc3J+LCXL9UKKa6IrVJF257ys5jrCqGxiVtInU9wWUaNo6ZDFKspOVN2IIOW4lLNr qA5HnHdZ02wcXkmWcDr/rhB0DFCKEYkgqX2Tv5iWjZjWkCMRZjgCf+1HuHvDla6x/EY3 EGoH1LKjYUipUbb/0Xq3IIVPeiS+apeEEnpe/Aww09g3rGh7paVMx8kurVOa5u/2Ribw Rf9UrQlRd5XwpybJMJpuCLRh/hpDziQcZWxQ8CFu5R+ycUmzLABy64VTaXoZlhYq7eKy xz4Q== X-Gm-Message-State: AOJu0Yzl85Fih4/qpUa/8v0IMKL/hFPSkVe3Yqh/ufhA7ts8fMVe0J16 VVtQj3MM+Al4MivVYG6pGLSDvGe83+x9+g5YeRdZmnxoReCwlrIq1I6057+8DQYm0fq0r8nuN9y H4B1KNOM= X-Gm-Gg: ASbGncsAGJkLjomHlFWO/gIpoutY1QBMAo+LOe1/wc46KEmy1cPfvAroVjq0iOnxjnq chwKuMdHsUdyJcIp2kkpuz9G5W4LMfbPDpe6byVL0KSDMXjGhz+13s+iA1S3XmrZ0JF6BTiHuGQ ZL2EzfIQJnMkt8OglJ3h3RidWePSRXHjiUaLJwq7RNaAgJIbItN7fnFc5BI4zp+FBYzj+7JLENU ZOP+9lLlFQpGO9AxoIurIbBVvZKxzoq4r6Jh7dQgVUS/8CoIq3DLmj1ZpvjoCgmgZ6zCnMz5Spr 198Rfscq2jxCp+5naQy58TxNQ8Kco0/AXyG5Y2c+mjZcp0sJmbS5mG/d8ouOtWiBGyHfk6QyQMD S03cvRUbGvSXiiXxun7SbhV1AajXL0N6E9nQYSWDIdGEO7lIAWNxCmG2F X-Google-Smtp-Source: AGHT+IFkx1bp/NklMzonOAneiMaz6VUAnT1QJ7ajMjIHXVZ4/nnq/BRP0RlIt33i6YmmVCdFaFlZAA== X-Received: by 2002:a17:902:ce88:b0:26a:8171:daf7 with SMTP id d9443c01a7336-2902723f086mr81679915ad.16.1759960581451; Wed, 08 Oct 2025 14:56:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 10/73] target/arm: Expand CPUARMState.exception.syndrome to 64 bits Date: Wed, 8 Oct 2025 14:55:10 -0700 Message-ID: <20251008215613.300150-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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: 1759961578245116600 Content-Type: text/plain; charset="utf-8" This will be used for storing the ISS2 portion of the ESR_ELx registers in aarch64 state. Re-order the fsr member to eliminate two structure holes. Drop the comment about "if we implement EL2" since we have already done so. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu.h | 7 ++----- target/arm/helper.c | 2 +- target/arm/machine.c | 32 +++++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index c9ea160d03..04b57f1dc5 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -633,13 +633,10 @@ typedef struct CPUArchState { * entry process. */ struct { - uint32_t syndrome; /* AArch64 format syndrome register */ - uint32_t fsr; /* AArch32 format fault status register info */ + uint64_t syndrome; /* AArch64 format syndrome register */ uint64_t vaddress; /* virtual addr associated with exception, if a= ny */ + uint32_t fsr; /* AArch32 format fault status register info */ uint32_t target_el; /* EL the exception should be targeted for */ - /* If we implement EL2 we will also need to store information - * about the intermediate physical address for stage 2 faults. - */ } exception; =20 /* Information associated with an SError */ diff --git a/target/arm/helper.c b/target/arm/helper.c index 37865bf70e..bd5321348a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9196,7 +9196,7 @@ void arm_cpu_do_interrupt(CPUState *cs) new_el); if (qemu_loglevel_mask(CPU_LOG_INT) && !excp_is_internal(cs->exception_index)) { - qemu_log_mask(CPU_LOG_INT, "...with ESR 0x%x/0x%" PRIx32 "\n", + qemu_log_mask(CPU_LOG_INT, "...with ESR 0x%x/0x%" PRIx64 "\n", syn_get_ec(env->exception.syndrome), env->exception.syndrome); } diff --git a/target/arm/machine.c b/target/arm/machine.c index 6666a0c50c..ce20b46f50 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -848,6 +848,23 @@ static const VMStateInfo vmstate_powered_off =3D { .put =3D put_power, }; =20 +static bool syndrome64_needed(void *opaque) +{ + ARMCPU *cpu =3D opaque; + return cpu->env.exception.syndrome > UINT32_MAX; +} + +static const VMStateDescription vmstate_syndrome64 =3D { + .name =3D "cpu/syndrome64", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D syndrome64_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64(env.exception.syndrome, ARMCPU), + VMSTATE_END_OF_LIST() + }, +}; + static int cpu_pre_save(void *opaque) { ARMCPU *cpu =3D opaque; @@ -1065,7 +1082,19 @@ const VMStateDescription vmstate_arm_cpu =3D { VMSTATE_UINT64(env.exclusive_val, ARMCPU), VMSTATE_UINT64(env.exclusive_high, ARMCPU), VMSTATE_UNUSED(sizeof(uint64_t)), - VMSTATE_UINT32(env.exception.syndrome, ARMCPU), + /* + * If any bits are set in the upper 32 bits of syndrome, + * then the cpu/syndrome64 subsection will override this + * with the full 64 bit state. + */ + { + .name =3D "env.exception.syndrome", + .version_id =3D 0, + .size =3D sizeof(uint32_t), + .info =3D &vmstate_info_uint32, + .flags =3D VMS_SINGLE, + .offset =3D offsetoflow32(ARMCPU, env.exception.syndrome), + }, VMSTATE_UINT32(env.exception.fsr, ARMCPU), VMSTATE_UINT64(env.exception.vaddress, ARMCPU), VMSTATE_TIMER_PTR(gt_timer[GTIMER_PHYS], ARMCPU), @@ -1098,6 +1127,7 @@ const VMStateDescription vmstate_arm_cpu =3D { &vmstate_serror, &vmstate_irq_line_state, &vmstate_wfxt_timer, + &vmstate_syndrome64, NULL } }; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961204; cv=none; d=zohomail.com; s=zohoarc; b=LzXO8RjmeTRHn/Sf6QM+adS998bZPSOT6qao+en10QIQghhYX4TVI7V/DjKnc8L+PXZWeSCSraoYM1I63N+Y37L/RHS4FtY4SypLjbaM6O1ew3hpBLWuxuALNpP8KTJ8dZ4g78TQ/YulFlUj0SPZgjVpiBHVDYjmADUTfrUs9j4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961204; h=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=u8jzmwbEOdXd1Y+zB9l972AjYHk0b/qSjoQoHCfbnn8=; b=b3XNpHHXcQ3tY3H7HahSBNChqIokXy6re39WtCUuxeBnOWiW+Oo3fyuhGWX57lAtyoFdAXLIHhWtA5xzjyTnAxasiQwhTrpgSZlcxmhAc9VdO2e2rZdh5QKupq6GMnMJIlThwp4zY6GxEw9TaQSereTOnOfS/LXpz7FRU408+u8= 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 1759961203967440.8468061387164; Wed, 8 Oct 2025 15:06:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9b-00041Y-QK; Wed, 08 Oct 2025 17:57:00 -0400 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 1v6c9a-00040N-AA for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:58 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c93-0006eG-IF for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:56:56 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-b62fcddfa21so176458a12.1 for ; Wed, 08 Oct 2025 14:56:24 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960582; x=1760565382; 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=u8jzmwbEOdXd1Y+zB9l972AjYHk0b/qSjoQoHCfbnn8=; b=mCwAKay2RXiDtvUn5i5SCoURZS/tjFXmdS8bc0h3MDbkUHcbsFGEdBkLcbniYQSUBQ JO4yjX33ASZn0zjePIoS7poOyrJC3Y5Mz5WtT05UdyvAHDiubPhiuQflrJIaqPlpP2uT 62mbN9xfyDG5LOHcYaFnGn2qbd8uRJMms/p/F3JQxyclUmxN68NKqEJHX8nD6j0//wms auvRnMBkKVH6O/kLntP67FIcpKCIbzj4Il1akytm6h7T7tx+xTp6/zlJLTcDaMGwUW7k YeCFwhMpWkVbliQr0sDp2E57+0twLfqkiol3pSQmssh2uys3GfEpRTB2N7aSzNIdZpAE ELmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960582; x=1760565382; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u8jzmwbEOdXd1Y+zB9l972AjYHk0b/qSjoQoHCfbnn8=; b=XUJYe6qv/k42yViOrp3BQN0z8MMDmgBML+BYX3a3z7q53AeTeBoIuUY+qKRWQ6Pv7U SVVtgXhDF9+vbAOT7nXOctX6wvE+t3ravHLwjU3SoY4VbzU63p2vg9euRdok8TIgB/No Uyi05jTHPImden0o/NRTDXV3m7eVLrbKWPQkzNcLddILh2kZFbdVPy0ig9tGpYZeLVKa dUEOkD2FAnvwWGshjUqpGO+3TnWnbteVLAPzwg0aCXC5kzwSWVsHry400ruTC0yO+Dw+ ecsCyh30eBBPO6gJwM69Mj2NgndMh1JHrBblMsR5zpi85eJOalIjrV0Kh++oRDz/FG+l meaA== X-Gm-Message-State: AOJu0YwlP6yu+hWsMc7l+h9y9nE/iZ9zV2bScK91xOQA46Jp36pXQuCA faL6k1G5BwJ/G+9pvNqokIpb4L7jczhbg5hwDabZlq/3rFOnmf6WnFjzi4FmakpzMiteWNkIu9Q ajeMc/OY= X-Gm-Gg: ASbGncvwoTI3hkaexGuUGkNgPn7WaTH3nHWop3JOiWlJFkI8PXcL9O8m3YR+SLqJvoG B+D/3qQ9msApKDh9eVILkUOtsY3aatO4RIWaXuDGRNXj/C1zjytrsBUcSI7/M665H+EkF86FPsB EIrYEyZ77hLNk9C/TL5oKz2vPuHl2zX/um/kvMVc9I4qBKA1rvRmmYuGLj9TA2gKn7j4o5Cnre6 req225r2XpN5CZG5d430bVd3POpVPxf8RmkD+kLoUM+AMG0SpXDK0+lmwxgG1aqmsZZkRwXLZA8 +GX9zbvAxL1rMgmfa7kABSj1HkVbDXsBTO/g8DNufuW/d1yYbJHNk8pruD0vy45nAWzY3RmxkEZ Rf5tdPPNqioDR9FAb4qPu00d2nyGylhmS4BVH0iIwBOO9RyxqXx4rAIUN2AewAY5VJaM= X-Google-Smtp-Source: AGHT+IF5wkEP2yRVuvkjCG85rUX4HHWM/TXYTR0Az8Quw73+hNrAeNv6eZANJaKLqP9QjTGmBpY9kg== X-Received: by 2002:a17:903:1aeb:b0:26d:72f8:8d0a with SMTP id d9443c01a7336-2902721672amr67151065ad.12.1759960582139; Wed, 08 Oct 2025 14:56:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 11/73] target/arm: Expand syndrome parameter to raise_exception* Date: Wed, 8 Oct 2025 14:55:11 -0700 Message-ID: <20251008215613.300150-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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, T_SPF_TEMPERROR=0.01 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: 1759961211952116600 Content-Type: text/plain; charset="utf-8" Prepare for raising exceptions with 64-bit syndromes. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 6 +++--- target/arm/tcg-stubs.c | 2 +- target/arm/tcg/op_helper.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 22947c4b78..b59650959e 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -304,14 +304,14 @@ FIELD(CNTHCTL, CNTPMASK, 19, 1) * and never returns because we will longjump back up to the CPU main loop. */ G_NORETURN void raise_exception(CPUARMState *env, uint32_t excp, - uint32_t syndrome, uint32_t target_el); + uint64_t syndrome, uint32_t target_el); =20 /* * Similarly, but also use unwinding to restore cpu state. */ G_NORETURN void raise_exception_ra(CPUARMState *env, uint32_t excp, - uint32_t syndrome, uint32_t target_e= l, - uintptr_t ra); + uint64_t syndrome, uint32_t target_el, + uintptr_t ra); =20 /* * For AArch64, map a given EL to an index in the banked_spsr array. diff --git a/target/arm/tcg-stubs.c b/target/arm/tcg-stubs.c index aac99b2672..aeeede8066 100644 --- a/target/arm/tcg-stubs.c +++ b/target/arm/tcg-stubs.c @@ -16,7 +16,7 @@ void write_v7m_exception(CPUARMState *env, uint32_t new_e= xc) g_assert_not_reached(); } =20 -void raise_exception_ra(CPUARMState *env, uint32_t excp, uint32_t syndrome, +void raise_exception_ra(CPUARMState *env, uint32_t excp, uint64_t syndrome, uint32_t target_el, uintptr_t ra) { g_assert_not_reached(); diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index 5373e0e998..dd3700dc6f 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -46,7 +46,7 @@ int exception_target_el(CPUARMState *env) } =20 void raise_exception(CPUARMState *env, uint32_t excp, - uint32_t syndrome, uint32_t target_el) + uint64_t syndrome, uint32_t target_el) { CPUState *cs =3D env_cpu(env); =20 @@ -70,7 +70,7 @@ void raise_exception(CPUARMState *env, uint32_t excp, cpu_loop_exit(cs); } =20 -void raise_exception_ra(CPUARMState *env, uint32_t excp, uint32_t syndrome, +void raise_exception_ra(CPUARMState *env, uint32_t excp, uint64_t syndrome, uint32_t target_el, uintptr_t ra) { CPUState *cs =3D env_cpu(env); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960810; cv=none; d=zohomail.com; s=zohoarc; b=gWI1bxF+xvwWemw0qGtS1Eq3jYR8ORQbpuHataVDNqCmLuyEEGTD/EoM31tImkQYb6peuSHTCGdQuT/k/Zqj/z+4spLP1TNRasUtOV7ZzvWgBEOMKB/h82dmiTyfM8VrQiSWMRN5Md6VifOBoKBXFo8sPj+u/c7kulunebz/NAs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960810; h=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=ZNEq7tf22h55P79weG8h1uGDuCjZ7MVsDsPwVEVDLf8=; b=Dq8Y/CUBV4uaHAm1gvRK73R88uxInkT+bbTGZvy+jTjv6XwAb7LNC7yBER7BKiHRwloY5wuidyNHk92hy7g2PeUd7TXqEOO8gDRlsSqHGT20IIwVw3y82xmN+cmbLKq0pvNboM9hIibaWkU4SJcIxJLihoorG2jNJsPUcZ/W4qg= 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 1759960810955967.8413659460292; Wed, 8 Oct 2025 15:00:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9o-0004A7-U9; Wed, 08 Oct 2025 17:57:12 -0400 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 1v6c9m-00049R-Pv for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:10 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c95-0006eV-UA for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:10 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-3304dd2f119so294997a91.2 for ; Wed, 08 Oct 2025 14:56:26 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960583; x=1760565383; 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=ZNEq7tf22h55P79weG8h1uGDuCjZ7MVsDsPwVEVDLf8=; b=hujiBAkp0I72H0T77fDmgHpVDYvgoAr7zs/1z41bx6f5WUtGIwmlTK1gC4RPpWXrLC fQDwIL8YgvMrFVnELnP5pOBQTc4FfS7RONs+/Bp+oYCrrbE3qsZ630faL+xnrlplukJ4 c8ucHvnOEjopewmkRkxaTxcj3OgEQA0Jf54xRc4NIHc+xoh5k5n7QVf+l5FoTdrl/sfV XHRdqzlWFzeHs8OOHQWRZWfYUb++tUNWO4Ggaza1U5ELQ+1pHMVRzNaKL4dpJZE+cUot LeBRii9pB8TN+cg1zDZF2kiLD89hl5BvlVR8UDb7zbk4I+0IlsRouXEyeICw2ZRZvJvp F7FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960583; x=1760565383; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZNEq7tf22h55P79weG8h1uGDuCjZ7MVsDsPwVEVDLf8=; b=Sk+vTGJfJC0d6ZdhhZBjYahxWKxPVUSlT3Jxh6ZCpCQM7wyXZ5cPBk5HOBoU2+ek/e +1qHwI1WILWkXXpLPlfMZhBEA/WezXAujh+UK5DMw4s7jJ7sJGuH2D7jzrDLri2juspf zSIAQAKeBVVZF6WgUijryTMWKqm1lVIhCOmuM9ZXTUVTVXYF5gHEen8UuRj8LuMboClN /DHTHtsR4MIAUJtAwlWTUsV+l/WVlbO+qFR7JrXt453SCSzAkP29AbNnFO6dxWgFlg6d 21Bepq1KVMkX+TJWoBmLS1t4hVV3WXMuE03TCUS5rWr/ODDOfGeJSQcZFqXGZyUoocAf 7jGg== X-Gm-Message-State: AOJu0YykmLpObbc3dDPuNZMvsRy6Mly/jwJl2QOq4yx/oIWsv2Lxn108 wiWAOfi7tlNyF9mYPNnteyP8OcRGvY9szjTovQ3+RKOM429+ubCrn430bL3hmJs+kf4B6GLJHB1 /hw+ikgI= X-Gm-Gg: ASbGncvtK3DscvYgGXlLPw871OL4k6LYY0rqTzlhav3y48WlPGzEfs7aPOMovLAMcR+ rbbfi72p4swT5xcKxlQbZfMOn/htXtXRs5PwDjYZC0UplMsWR9aMK1y1lPPHen0S9/pQC09AhXM vS6l91gS4rN+nFoZ+sKxjK0cRNPjDT7paMQARwgiu6pGId5oLMOiBUSd0dfBs+vkDXwA6HsTrXb UTEKuMu4M8kQiWbizjO7IYGeCVJydqu18yV9rw9DnRChTK2eKOzaO1OLmHH66xYVeIyl5Mfjd+Q MHv7ZABmnWduijslnndp+/QVW/Tf8KIHNkhPziGQU6RPVp6ayDC44jNv6mdIUwNjVNxMP6SYx7D uz0jnqcxBy8EZDLqe0vQzP7QU7iTEfjaGZtUjUGxkwyKe0d/wpMDqBHqGhuF89JY4koY= X-Google-Smtp-Source: AGHT+IHnSxXlu4kFisQfT2vMCInjCaTQ93M3a7q+wK22gggnRpU71GiqBfCx1Y9IbzvqLAkhaqyhTg== X-Received: by 2002:a17:902:f612:b0:269:8072:5be7 with SMTP id d9443c01a7336-29027303931mr68312465ad.56.1759960582854; Wed, 08 Oct 2025 14:56:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 12/73] target/arm: Implement dirtybit check for PIE Date: Wed, 8 Oct 2025 14:55:12 -0700 Message-ID: <20251008215613.300150-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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: 1759960813487154100 Content-Type: text/plain; charset="utf-8" Both S1PIE and S2PIE have a bit to make software tracking of dirty pages easier. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 1 + target/arm/ptw.c | 16 ++++++++++++++++ target/arm/tcg/tlb_helper.c | 12 +++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index b59650959e..69eb1df617 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -752,6 +752,7 @@ struct ARMMMUFaultInfo { bool s1ptw; bool s1ns; bool ea; + bool dirtybit; /* FEAT_S1PIE, FEAT_S2PIE */ }; =20 /** diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 2e026a7c59..21540a1ec3 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -2343,6 +2343,22 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, goto do_fault; } =20 + /* S1PIE and S2PIE both have a bit for software dirty page tracking. */ + if (access_type =3D=3D MMU_DATA_STORE && param.pie) { + /* + * For S1PIE, bit 7 is nDirty and both HA and HD are checked. + * For S2PIE, bit 7 is Dirty and only HD is checked. + */ + bool bit7 =3D extract64(attrs, 7, 1); + if (regime_is_stage2(mmu_idx) + ? !bit7 && !param.hd + : bit7 && !(param.ha && param.hd)) { + fi->type =3D ARMFault_Permission; + fi->dirtybit =3D true; + goto do_fault; + } + } + /* If FEAT_HAFDBS has made changes, update the PTE. */ if (new_descriptor !=3D descriptor) { new_descriptor =3D arm_casq_ptw(env, descriptor, new_descriptor, p= tw, fi); diff --git a/target/arm/tcg/tlb_helper.c b/target/arm/tcg/tlb_helper.c index 23c72a99f5..ae2acd6727 100644 --- a/target/arm/tcg/tlb_helper.c +++ b/target/arm/tcg/tlb_helper.c @@ -24,13 +24,13 @@ bool arm_s1_regime_using_lpae_format(CPUARMState *env, = ARMMMUIdx mmu_idx) return regime_using_lpae_format(env, mmu_idx); } =20 -static inline uint32_t merge_syn_data_abort(uint32_t template_syn, +static inline uint64_t merge_syn_data_abort(uint32_t template_syn, ARMMMUFaultInfo *fi, unsigned int target_el, bool same_el, bool is_write, int fsc) { - uint32_t syn; + uint64_t syn; =20 /* * ISV is only set for stage-2 data aborts routed to EL2 and @@ -75,6 +75,10 @@ static inline uint32_t merge_syn_data_abort(uint32_t tem= plate_syn, /* Merge the runtime syndrome with the template syndrome. */ syn |=3D template_syn; } + + /* Form ISS2 at the top of the syndrome. */ + syn |=3D (uint64_t)fi->dirtybit << 37; + return syn; } =20 @@ -176,7 +180,9 @@ void arm_deliver_fault(ARMCPU *cpu, vaddr addr, int target_el =3D exception_target_el(env); int current_el =3D arm_current_el(env); bool same_el; - uint32_t syn, exc, fsr, fsc; + uint32_t exc, fsr, fsc; + uint64_t syn; + /* * We know this must be a data or insn abort, and that * env->exception.syndrome contains the template syndrome set --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960774; cv=none; d=zohomail.com; s=zohoarc; b=Lwj5G7xG8V0+Jutzzo1XYUOF/Q1ibxU9ZmeQxPvfzgLR7y4pOtI4XdUhq9wJ46A/z7otUfIexn+Xe+OAq7hNs1XhbrE6s0sKXznGy4S9BILgFazQ7G/YpWC7mFVV1afZToCOpQIYircGFf5WjCCwNf1VEPIcftCbZQzuxLk+Gd4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960774; h=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=2ud9vGgDdoT6jxZodqNWxrrBEL296XjYMaUJkjzXXc8=; b=RfZAfKThRveBcS15U4A5Fo3uCKvFdxzsRPyqp3/1NwDkaz/ZvjUMpN+AVHKUDwmxxpiuf6nIVpImg6/Qwc4u4Y/8cV6pHA5B7I/fPFS21nUlU2+z4uz1EI/drkfMb/QHryyRDDXFgvWotOFqo1/83cUmOELyKPn9/0TDyIXbemE= 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 1759960774640988.2067887545711; Wed, 8 Oct 2025 14:59:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9k-00047w-Lr; Wed, 08 Oct 2025 17:57:09 -0400 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 1v6c9i-00044j-A5 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:06 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c95-0006eb-Rm for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:05 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-b633b54d05dso164933a12.2 for ; Wed, 08 Oct 2025 14:56:26 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960583; x=1760565383; 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=2ud9vGgDdoT6jxZodqNWxrrBEL296XjYMaUJkjzXXc8=; b=TnJ6DlJv0eE4sod6Nu3uprVJl2ssi3Sc/EGXprGISAxvR2te+BvTejRzKg8nkc47se NlMnU5fKj/DblBFUonEBPuNZBQmbAa2Ga8uyXufjs+Fikm33ENB6VjTAAymgIyL6LeWj 0wpX4gY3NzTDtsdrcZAeNN2XXRszv5rwRue2LZ9bxhQoiVdFk39WDJO9Sp7yvQpw/mOE VyIrOi90HTI6sj1BYAHsr2jrOh4slbvYxEQsHpEPhpKFnKAcMk30zce8J9suvCqLcn73 ZPb8DGv4vfqYC38uOoaOLO9ff1fv/oc0fjW9XE/1lNxClKhCfgFh/jPcHlFBfSSg2Pja kXwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960583; x=1760565383; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2ud9vGgDdoT6jxZodqNWxrrBEL296XjYMaUJkjzXXc8=; b=qrhDPsVzq2IKBNK/YdM18L//AOG5pIf9KFk2IlRylu3oMx3kz5HzVY/GbgUh7tceHs 3HEQygL3cMorn5gzGJnOXrlfvWizHk3xaevfWstr2vAxZsP2aRLbQ7/IQm+ewuXybaO1 sl///CGCLdNTxv00SwbB8kMnFfpIdvigx+0R/U1t+kkwHMdEP4WqXTazgUqT6opcp7ts szStUmGbjGRLkwN/1Toic7L78CyubfVHoEMk/1v2B6HPogYn7ggDaO8oOfxkcqJUhldx W/dFmcTH18ApOo7BTzVcfNNxWpVxGvlijBa4F+9JWmKWIaS58iwMcxue6d+297UtYuss Xf9w== X-Gm-Message-State: AOJu0YwLeeuW9Oy8wqZo9O41Mgz1layJYlCZs1i6qfLhHuVOzESrzNvA 4Klstf9pNDo9JWYD9om4qrjNs54fHpSPlmMGXkP1rMEmqVRLdIRMPOYJoMIc7CUoQq7k5KW30wl 6UL2+D6o= X-Gm-Gg: ASbGncs4gUg9FBtP+/UaxQoB40afQmFIkrAmFCNgudEIpd82XVdVniUDUXV9k0BWaEe yMGIftwhzNumsdfdP8lK1TOSLU1zC+GNWzpDxXMW8zFdieT+mmzaMfRQ6FsLDVZGSFv2izmcmUr kN4d5uY0IMdAA476wkaO++RYmDfNKAPFd7i+cwydkd+np23hXCf/NFkoRnguGbsV4aFZu4YeGuQ AKOLWL35p8DkHJmE0JcPKHNg32qXaaxrcfd48IBv5oIyWoA1klkKC3OC0mvOA50Uvws2EYo4cZd jrVSOsKbTIoWpj0K3MZdEOHkkKQLvAtTlK9NaE1sqGo6ofJuAnWnnctlt75iGRH4uFQZveIY4nh N4uho9to/Nhp4c62X7H0cNsHIzrUpSIG1bKcoCteSYnqEM/RMDTfmdXQK X-Google-Smtp-Source: AGHT+IGtW3HUHCMOpO6gAGqW4C7T7rObNClbEPu+KsdQaPx9O0fcj/O7WjMhenl835XYvshj+vyrag== X-Received: by 2002:a17:903:9cb:b0:28e:caee:40dc with SMTP id d9443c01a7336-29027237d65mr61947215ad.14.1759960583551; Wed, 08 Oct 2025 14:56:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 13/73] target/arm: Enable FEAT_S1PIE and FEAT_S2PIE on -cpu max Date: Wed, 8 Oct 2025 14:55:13 -0700 Message-ID: <20251008215613.300150-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.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, T_SPF_TEMPERROR=0.01 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: 1759960776870116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 8c617fe37b..f024db1d29 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1327,6 +1327,8 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64MMFR3, TCRX, 1); /* FEAT_TCR2 */ t =3D FIELD_DP64(t, ID_AA64MMFR3, SCTLRX, 1); /* FEAT_SCTLR2 */ t =3D FIELD_DP64(t, ID_AA64MMFR3, SPEC_FPACC, 1); /* FEAT_FPACC_SPEC */ + t =3D FIELD_DP64(t, ID_AA64MMFR3, S1PIE, 1); /* FEAT_S1PIE */ + t =3D FIELD_DP64(t, ID_AA64MMFR3, S2PIE, 1); /* FEAT_S2PIE */ SET_IDREG(isar, ID_AA64MMFR3, t); =20 t =3D GET_IDREG(isar, ID_AA64ZFR0); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 1aa0a6e4c3..c779a50570 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -123,6 +123,8 @@ the following architecture extensions: - FEAT_RME_GPC2 (RME Granule Protection Check 2 Extension) - FEAT_RNG (Random number generator) - FEAT_RPRES (Increased precision of FRECPE and FRSQRTE) +- FEAT_S1PIE (Stage 1 permission indirections) +- FEAT_S2PIE (Stage 2 permission indirections) - FEAT_S2FWB (Stage 2 forced Write-Back) - FEAT_SB (Speculation Barrier) - FEAT_SCTLR2 (Extension to SCTLR_ELx) --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960755; cv=none; d=zohomail.com; s=zohoarc; b=VtJQqglXn/nuZ7J3teL7tO9xGKETDDaRcoRv4+hUMC36+dMRG1j3OHzQSI2S8cxNzrVSmyK16TvIXwnOL2PpVxXidMODg0EbfzvnQUgPSUHY7KnSIXbZgacjzVbaS41qr5uuGEJoVqP+uPJbU5IkmfD1nHrtASZ0+GYp93DVdQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960755; h=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=jHDom8RqSvFBhHj/9Q/rXAoVV+sGpC/X8GRYrjCGKNI=; b=i+UnfI8Ac3YjX4YgBJA7bMxrAfmQ6lvgx6SnM/v1IDn1wLFgSflJgcppZxtgJU34j1Ri4NtOfAwnF3nLUxGLvC1XxKEfn5IPVB5TyRm+dmTEpKbdJr++VY5pKjZPMeRs7gopliphE1ewEtMET2hVSVkAhkVORsBmDEf1R1p1Ce8= 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 1759960755048887.9516363481538; Wed, 8 Oct 2025 14:59:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9j-00045d-US; Wed, 08 Oct 2025 17:57:07 -0400 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 1v6c9g-00043d-Iw for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:04 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c95-0006ep-IZ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:03 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-b6093f8f71dso156933a12.3 for ; Wed, 08 Oct 2025 14:56:26 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960584; x=1760565384; 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=jHDom8RqSvFBhHj/9Q/rXAoVV+sGpC/X8GRYrjCGKNI=; b=y5GICm7YjWuLVFzNDqZE3wNbcZS9BUmDQcjzbBLiBbxZqVcqog/mXdDApVz7MA5aqa 37X8AlQiM0IfhEWeoyvV9YYf7v8QNRoULD+PT0rA0D6T9T+qlp6J3PLE1DeDjskNNubg vKBuQfm5TmUwOsLUxnMGT5HkSGz7gYUIiiK29zJwkLyfhBXs0yBKfbym1y2Oo4HnOQzH My4iiBwa3+jwlngBLvNw0Zj30H3bZvUXFv1gCQuoCKk3l6ZzSSk9PyT2vjuSMTmt1WFU 88CLqRTRsQ4LRsAZMg5+eWpHgs3PlkYdFjkOGVFXP6vApG/MPO7NXS8A6zCD3EKKxgRW 58mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960584; x=1760565384; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jHDom8RqSvFBhHj/9Q/rXAoVV+sGpC/X8GRYrjCGKNI=; b=WgJamBkEQBHICATszWQcwgMIDlU4rqLfTxrVEdVuMJhPX2NA7/DRoEhrvFbIMpyExS Avu6sRJlepaPB+TXXV+i1beZ/vNXaCLT7vnvbfjYzowTsnYfrJHJOHyk0w9BO5WB98Cs gdVQyXzN5sgIH5C0BhBcDcg8Zu/cYlzgOZsjlRvjzLFJLnJHdJZBg8Nf5Ies5c+jl6PT Ms/lFKhXXUWZHE/teYIrUp4oqdO7cQA8ufqJhBgufZZC9pWTXqQRh06lvdhHVZ39pTrF D5jtC98VCqLMY2isaucZquyukvEGfPtslNjS7N+MR5YDRatuWENR+tbmqcGk/PWRt2T0 KNhg== X-Gm-Message-State: AOJu0Yz6ZPsP1kkeSIajSDDSZ/3IMFR8RgdO3A+FUCnv4v9YfLximVOs 4GNLrEQoNCv0QjKm2Pisp6IhTVyyHVohk44KnKbg0EnItEgugc1JDBjKJzLP8Ys3BIooArGa/pR p21lBmZU= X-Gm-Gg: ASbGncudVLsrl5kwWiM6ljDS1raZmdajyrtfn7/bZnZJOgRsrGrIxgGw0BbnLtjSZHH vEXQ4gYbSFAxJmKMAnEpBRdXqezhoredp20+jnrI26RJjVLr3lkRuKYhJgNE0SG+snNRZSlRgly +tZ+wy1JMwdvCBGssO5oUSfBuk/yhsEsCh6kjriglMYXQQHQaKrg7nXc+sJvNSbXGNeX3C4eahg 52NSWKmX35CX6PClcojqi+mWXqMhQu6DkHHWjakXZxkAZMgc6rY1ACKvXNbLZq6rJbk2Y5z7B2D VL7vC44oNuwrU92WwAA4SUc3nd401GXYg28iyagyPST3ThQKIi07/RpKCh2ujz1DJJuazK1Sy0h pP5UmKjpUFBIPrFeyWCuC5/2ws6XeQsMWR5/CwtrFGJBPOPPoxMgW7qwqBZHQ/+zo1/o= X-Google-Smtp-Source: AGHT+IHZUNxr5tyFMX/LVvuxMwWa8eNnPnV1fPRZuNPVG/xlk1ZDyJuYtBvPVWcvjyu6UvgO8ISt8A== X-Received: by 2002:a17:903:1670:b0:28e:cb51:122f with SMTP id d9443c01a7336-290274191d9mr66167255ad.52.1759960584167; Wed, 08 Oct 2025 14:56:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 14/73] include/exec/memopidx: Adjust for 32 mmu indexes Date: Wed, 8 Oct 2025 14:55:14 -0700 Message-ID: <20251008215613.300150-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 1759960757441116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/exec/memopidx.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/include/exec/memopidx.h b/include/exec/memopidx.h index eb7f1591a3..66d9c58b3a 100644 --- a/include/exec/memopidx.h +++ b/include/exec/memopidx.h @@ -25,9 +25,10 @@ typedef uint32_t MemOpIdx; static inline MemOpIdx make_memop_idx(MemOp op, unsigned idx) { #ifdef CONFIG_DEBUG_TCG - assert(idx <=3D 15); + assert(idx <=3D 31); + assert(clz32(op) >=3D 5); #endif - return (op << 4) | idx; + return (op << 5) | idx; } =20 /** @@ -38,7 +39,7 @@ static inline MemOpIdx make_memop_idx(MemOp op, unsigned = idx) */ static inline MemOp get_memop(MemOpIdx oi) { - return oi >> 4; + return oi >> 5; } =20 /** @@ -49,7 +50,7 @@ static inline MemOp get_memop(MemOpIdx oi) */ static inline unsigned get_mmuidx(MemOpIdx oi) { - return oi & 15; + return oi & 31; } =20 #endif --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960772; cv=none; d=zohomail.com; s=zohoarc; b=mlxF+Cc2JPp4SuI+W+NwJVy4HvS4NJzZ2nx00wygH+GVJ5bWfpjuR/Irv390IQvXWtq4/Q4E4I0OMpu+/qX6TDcCUcIGRrRdDK1Y5zMu+ldEgMEA8rnHO98l5vNfjwcoRZJ/I+jXcKD2QnCK2GKL5Jk3TKl1gvIo9wDhS2X7clc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960772; h=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=sl08bFFOE8sFkEmJSjjl1K0xzgVR4D+vJUoRJse3hLM=; b=BvKsjI7Cj80tfv2xaxCkUxAl380a7kUQusVL+B9tnkxODzB8L11JgRme8jK5CRKkcyiru5YJnwm/4NqZt54O7sIELi+gFD7w1a19fBU54AAet0vrBhYJmcXb6IyBuU5YI5by8VhhMsmNEVCKQDZ+xCUhqhA8AcOgCaBbQUIXM+c= 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 1759960772147691.4720955204135; Wed, 8 Oct 2025 14:59:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9n-00049i-1m; Wed, 08 Oct 2025 17:57:11 -0400 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 1v6c9i-00045P-NV for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:06 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c96-0006f0-U8 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:06 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-7835321bc98so322492b3a.2 for ; Wed, 08 Oct 2025 14:56:27 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960585; x=1760565385; 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=sl08bFFOE8sFkEmJSjjl1K0xzgVR4D+vJUoRJse3hLM=; b=kf9o61edQEhdpqChyKmR8DC05dNcAyoD9jZrJ/6g8YnV//2wGlWPvt0i+QV3lT0X0O ZEkY7YhthHNsVPW4WSgTYHYD8VcUrJ9Pzsj+jcGVAqozLkxXJZspZgLjM1Ef3tlxhaZO fPUd7r1R9RXgk2Jpa2iNEy8OToJUa3k4qeVsTC6S0DwYFjCG00Mpj5FJtLIDQ2KbHWl+ HIchiXhDNvCNcm93wDJzqrgT9pitITxZYHdMpCvkHiBRajjwmWDEDNGjsU0nmZiquV0P WBfj4tSH63EkXCztvzL7U32gPbKHQGU4j/owAZEWIpY2DLHl9ljLEwYCFCpIbLXvD6hI rI3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960585; x=1760565385; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sl08bFFOE8sFkEmJSjjl1K0xzgVR4D+vJUoRJse3hLM=; b=bDczZT5hMOh5LSjkf5/CTkgbClhYtxOJYjD6WVt/PINt0dfd6kpAXQb1NYubsJhUIo gfyXGQLisw0DMG6JmeS9N2ELd1SFgCAfop/WKmhoH0lpK9y93y4ssT+WrAkx8DMq1ZXa rRuH923AHKUsyuXyY60Q9Iqbn4Zg088aiv8dUa6VG/vVG0eGV1VMiThSzTz2/1LdgQfd Ihf62xwMw7iiFVxkHufqM99M6VEEVd9eFZOfwdBouaMAOHslKeSydppMPAeaK7Zr2H5t kdjGS6KeVbUpj02S6SKhKUcqzUEAFUvNZXlx+V4/1NG0X0h/sNSU0fyy24/9EgVk1Bmo KOfw== X-Gm-Message-State: AOJu0YwZShOyL8CypRvIZiFKC5S801AI3lFd6Y1rhzg8Dm9lgUYXoGPd gBxtBxB6SFf0T2dseCGBO4i9xep1gnzumwPFFC7CEZ7RLgKRAO7sBN9WypvXXuyN0kO2KUr5KfI /fEKT/3k= X-Gm-Gg: ASbGncvwsyGSz55xYqn7XBPJeziou72tMpUEW9HhWf5CoWomYIaWndEhY5hI/1iDVjC mYl0rNz+12VozSVtkRPSv+nar3ryNFvXr2bn7Vp6ZBCRc+sSCYweGutnMxRlmxDtZrRyRWFBKEb nx04zOkmpVnWAgqRZOCKilGJ0kwfmTqI1cM7RLrTeNR0oHcoor0bFx8Dx0NN9ojUDchHtRqtQvo R/GC6IJ31EvYHYoLCC6oLWbPdK902Dv6mVllLV77bZf2lZRUajwVoizgXNaFnf+y/jwoPAHU+9p LSrxS6XVM3o72H7BOX37DbgyX3gTiyrry3GZK28zOT+MAfJDH8ARAA6IX51Tuhegga8nkirXQvx F1bvBaRmBwpfJxVsUsFbRZrfsTvppkZxGbx9qAGb8iBLp34W3eiNo6L1g0eBagKp9uoc= X-Google-Smtp-Source: AGHT+IHTCQuboYi6oG5QQPvPWIx9xKjEdOacQgwXoOT1OSXj+uitngiUCFSXJXjDVoV3EbuPWy68ZQ== X-Received: by 2002:a17:903:38cf:b0:25c:25f1:542d with SMTP id d9443c01a7336-29027342b50mr58558595ad.36.1759960584789; Wed, 08 Oct 2025 14:56:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 15/73] include/hw/core/cpu: Widen MMUIdxMap Date: Wed, 8 Oct 2025 14:55:15 -0700 Message-ID: <20251008215613.300150-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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: 1759960773150154100 Content-Type: text/plain; charset="utf-8" Widen MMUIdxMap to 32 bits. Do not yet expand NB_MMU_MODES, but widen the map type in preparation. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/hw/core/cpu.h | 2 +- accel/tcg/cputlb.c | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 0fcbc923f3..60d3f01900 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -201,7 +201,7 @@ struct CPUClass { * Fix the number of mmu modes to 16. */ #define NB_MMU_MODES 16 -typedef uint16_t MMUIdxMap; +typedef uint32_t MMUIdxMap; =20 /* Use a fully associative victim tlb of 8 entries. */ #define CPU_VTLB_SIZE 8 diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 7214d41cb5..3010dd4f5d 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -90,9 +90,6 @@ */ QEMU_BUILD_BUG_ON(sizeof(vaddr) > sizeof(run_on_cpu_data)); =20 -/* We currently can't handle more than 16 bits in the MMUIDX bitmask. - */ -QEMU_BUILD_BUG_ON(NB_MMU_MODES > 16); #define ALL_MMUIDX_BITS ((1 << NB_MMU_MODES) - 1) =20 static inline size_t tlb_n_entries(CPUTLBDescFast *fast) --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961238; cv=none; d=zohomail.com; s=zohoarc; b=FglHje6+vX7t54IUW3JbOqBzp1vQvfgCUwG3GxbMGpcoHhmYTC8LZc+k+pqQ9JnOm02c60Ob27mL6H8NVg4LZ7HfdGhVjx3JetqW4Rs+DOoRDug4nn4OXxb7zP52EgpDl76hNJ/8YIgpw8szo+l8rU6HgR4eMdiYRVcZEZ6rVkg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961238; 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=TYjYvDL5gLiV2jjWSzKtL4GS0JyMjlUaVGLLiKyqzZc=; b=ArXclFLFFe3GXRAWfyTuBLfApTo5MaUWr+UWzUUK8z1Ythw9shGgs9xCsZhuugQYhkZvsBHX5ZL/mxtbbCIMlITJwLgL7Wvh5DT7emdSzC99jyHQ0YI2msOlgrCIx6m1r6ZvYEIpbg3MNlhb7ryW4xD/hYXmaVkIuJyosqmcVk8= 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 1759961238688435.80595326143634; Wed, 8 Oct 2025 15:07:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAt-0004je-7y; Wed, 08 Oct 2025 17:58:19 -0400 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 1v6cA0-0004Ed-Ah for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:24 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9A-0006fp-FJ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:21 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-33082c95fd0so472673a91.1 for ; Wed, 08 Oct 2025 14:56:28 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960585; x=1760565385; 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=TYjYvDL5gLiV2jjWSzKtL4GS0JyMjlUaVGLLiKyqzZc=; b=thtXB7iV0qCXsCiRspPDgY8V6a7TCy1dFli1A+iyOlVkpeQ4sjSXzbtCGWyv3HPBE5 ehKU8bEOC5xJXEKTC/nb3zg/AjTadiKp8DSTukQk9UM3rYBzl4gt27hjvYsMLywx5jA2 JrT/2VQatVQUDdPIDswrCvcStpcEBkIkdsp3aIeNNARDjYSaUErAyW3tqAC/SuJehFMA ZWxhoOwsdzXJx3dTzscy49KShVGD83vl+OBUb4cj8VaHnhTxibwwWo7dv+gwh8x1tK4g 0hkQmYXv9wmKEoIZB27ISdRQj5R7bOa69iyx/3VSKoQd7jHjQHkNixvyaTptSM5JHKvh OsoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960586; x=1760565386; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TYjYvDL5gLiV2jjWSzKtL4GS0JyMjlUaVGLLiKyqzZc=; b=OOPxZTOvuHw5twd2rT+rpnihCC9SADx4i1ViZJ+UL3yu5T/+XWgD9iv31gmnCdY7PD x1IH1l+am7bZkhQyrFL7/GY1AIc+x5fCqVOHx7DcMcYiVuZxuWcVhMLevDMGcbqnDSfq Qh8odz8wbMAeLIJ74whD43VyTH2S37Cd8asQsUYXBEjx2zkiTeJsKot+P2ONxOJdNUsi vwyw3YjkastewUgPSWd+pkny251HRxwVXrRB5U5h1CpjJR0bXFG7zVgIu9HcYuokasd9 9GCaJcgCc2MEp3q8s+Hy2N+u8tCR4OIKSLAyFPQ8Vp6MElZ6aVDXDm9xGCa4n1+hW7ii 8W0g== X-Gm-Message-State: AOJu0YxxLUj1vybwlQmT4tf1oEpOAg2S3cfjbh9qoLlQIIcCPDFAA53f KEhKykpPes7e2DktqaFr03rjPQGvXH+U9rHhma6gTDSD7yq7+b1UMyZL3z+grVVCiOYe/Vz3V50 YNbC1YyE= X-Gm-Gg: ASbGncsRwE5HWDs610iPu+i4i/jHulAlg7j6yE+e+aleU8iGob4BxTV2ZvaQyFeDPZK wazwku5ImYA+5XQF99dDtb7gKMtm1YQi7hYgMg4CvTF6FelbNWncJxav4OxSYy77xZorzgmQao7 2rJLAxnw78QCVEGcHaNeX1CtCVao+gYa+JL6pbKeoRdwjq/rwIpLFUCeZLe4bo+zHvwGuK4k+/F S/W46N4coGLBByp3VoZHFJjgl9KXgNoipJK4mW6nqMPXY/fp0yh2QbyBlowPiQCDuyhpcOFSFnx sIsEbzxARwl0YxCeb286WXHrUkUD1UUMwufLKqw6JIJuhL6AW00QUGIaJWIeDUZUAnbtEn9cGJ6 VT/DxEbv0yyogXzNOt9ATvnNa0xl7n3Cx6JUPru6VekX6dTOF3aN3l1VaW0ZTgC6d6O0= X-Google-Smtp-Source: AGHT+IHtXkI4SOlsMuwFe00xbvlXVGjh7gaf7Efo1imnRxBlq2uOmqxIbxzCAWU4vi+ncE9kB43SeQ== X-Received: by 2002:a17:903:1b46:b0:270:4964:ad82 with SMTP id d9443c01a7336-290273ef0d7mr70345215ad.38.1759960585449; Wed, 08 Oct 2025 14:56:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 16/73] target/arm: Split out mmuidx.h from cpu.h Date: Wed, 8 Oct 2025 14:55:16 -0700 Message-ID: <20251008215613.300150-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.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: 1759961242744116600 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu.h | 207 +----------------------------------------- target/arm/mmuidx.h | 216 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 217 insertions(+), 206 deletions(-) create mode 100644 target/arm/mmuidx.h diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 04b57f1dc5..6773676973 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -33,6 +33,7 @@ #include "target/arm/multiprocessing.h" #include "target/arm/gtimer.h" #include "target/arm/cpu-sysregs.h" +#include "target/arm/mmuidx.h" =20 #define EXCP_UDEF 1 /* undefined instruction */ #define EXCP_SWI 2 /* software interrupt */ @@ -2301,212 +2302,6 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_s= ync); =20 #define TYPE_ARM_HOST_CPU "host-" TYPE_ARM_CPU =20 -/* ARM has the following "translation regimes" (as the ARM ARM calls them): - * - * If EL3 is 64-bit: - * + NonSecure EL1 & 0 stage 1 - * + NonSecure EL1 & 0 stage 2 - * + NonSecure EL2 - * + NonSecure EL2 & 0 (ARMv8.1-VHE) - * + Secure EL1 & 0 stage 1 - * + Secure EL1 & 0 stage 2 (FEAT_SEL2) - * + Secure EL2 (FEAT_SEL2) - * + Secure EL2 & 0 (FEAT_SEL2) - * + Realm EL1 & 0 stage 1 (FEAT_RME) - * + Realm EL1 & 0 stage 2 (FEAT_RME) - * + Realm EL2 (FEAT_RME) - * + EL3 - * If EL3 is 32-bit: - * + NonSecure PL1 & 0 stage 1 - * + NonSecure PL1 & 0 stage 2 - * + NonSecure PL2 - * + Secure PL1 & 0 - * (reminder: for 32 bit EL3, Secure PL1 is *EL3*, not EL1.) - * - * For QEMU, an mmu_idx is not quite the same as a translation regime beca= use: - * 1. we need to split the "EL1 & 0" and "EL2 & 0" regimes into two mmu_i= dxes, - * because they may differ in access permissions even if the VA->PA ma= p is - * the same - * 2. we want to cache in our TLB the full VA->IPA->PA lookup for a stage= 1+2 - * translation, which means that we have one mmu_idx that deals with t= wo - * concatenated translation regimes [this sort of combined s1+2 TLB is - * architecturally permitted] - * 3. we don't need to allocate an mmu_idx to translations that we won't = be - * handling via the TLB. The only way to do a stage 1 translation with= out - * the immediate stage 2 translation is via the ATS or AT system insns, - * which can be slow-pathed and always do a page table walk. - * The only use of stage 2 translations is either as part of an s1+2 - * lookup or when loading the descriptors during a stage 1 page table = walk, - * and in both those cases we don't use the TLB. - * 4. we can also safely fold together the "32 bit EL3" and "64 bit EL3" - * translation regimes, because they map reasonably well to each other - * and they can't both be active at the same time. - * 5. we want to be able to use the TLB for accesses done as part of a - * stage1 page table walk, rather than having to walk the stage2 page - * table over and over. - * 6. we need separate EL1/EL2 mmu_idx for handling the Privileged Access - * Never (PAN) bit within PSTATE. - * 7. we fold together most secure and non-secure regimes for A-profile, - * because there are no banked system registers for aarch64, so the - * process of switching between secure and non-secure is - * already heavyweight. - * 8. we cannot fold together Stage 2 Secure and Stage 2 NonSecure, - * because both are in use simultaneously for Secure EL2. - * - * This gives us the following list of cases: - * - * EL0 EL1&0 stage 1+2 (aka NS PL0 PL1&0 stage 1+2) - * EL1 EL1&0 stage 1+2 (aka NS PL1 PL1&0 stage 1+2) - * EL1 EL1&0 stage 1+2 +PAN (aka NS PL1 P1&0 stage 1+2 +PAN) - * EL0 EL2&0 - * EL2 EL2&0 - * EL2 EL2&0 +PAN - * EL2 (aka NS PL2) - * EL3 (aka AArch32 S PL1 PL1&0) - * AArch32 S PL0 PL1&0 (we call this EL30_0) - * AArch32 S PL1 PL1&0 +PAN (we call this EL30_3_PAN) - * Stage2 Secure - * Stage2 NonSecure - * plus one TLB per Physical address space: S, NS, Realm, Root - * - * for a total of 16 different mmu_idx. - * - * R profile CPUs have an MPU, but can use the same set of MMU indexes - * as A profile. They only need to distinguish EL0 and EL1 (and - * EL2 for cores like the Cortex-R52). - * - * M profile CPUs are rather different as they do not have a true MMU. - * They have the following different MMU indexes: - * User - * Privileged - * User, execution priority negative (ie the MPU HFNMIENA bit may apply) - * Privileged, execution priority negative (ditto) - * If the CPU supports the v8M Security Extension then there are also: - * Secure User - * Secure Privileged - * Secure User, execution priority negative - * Secure Privileged, execution priority negative - * - * The ARMMMUIdx and the mmu index value used by the core QEMU TLB code - * are not quite the same -- different CPU types (most notably M profile - * vs A/R profile) would like to use MMU indexes with different semantics, - * but since we don't ever need to use all of those in a single CPU we - * can avoid having to set NB_MMU_MODES to "total number of A profile MMU - * modes + total number of M profile MMU modes". The lower bits of - * ARMMMUIdx are the core TLB mmu index, and the higher bits are always - * the same for any particular CPU. - * Variables of type ARMMUIdx are always full values, and the core - * index values are in variables of type 'int'. - * - * Our enumeration includes at the end some entries which are not "true" - * mmu_idx values in that they don't have corresponding TLBs and are only - * valid for doing slow path page table walks. - * - * The constant names here are patterned after the general style of the na= mes - * of the AT/ATS operations. - * The values used are carefully arranged to make mmu_idx =3D> EL lookup e= asy. - * For M profile we arrange them to have a bit for priv, a bit for negpri - * and a bit for secure. - */ -#define ARM_MMU_IDX_A 0x10 /* A profile */ -#define ARM_MMU_IDX_NOTLB 0x20 /* does not have a TLB */ -#define ARM_MMU_IDX_M 0x40 /* M profile */ - -/* Meanings of the bits for M profile mmu idx values */ -#define ARM_MMU_IDX_M_PRIV 0x1 -#define ARM_MMU_IDX_M_NEGPRI 0x2 -#define ARM_MMU_IDX_M_S 0x4 /* Secure */ - -#define ARM_MMU_IDX_TYPE_MASK \ - (ARM_MMU_IDX_A | ARM_MMU_IDX_M | ARM_MMU_IDX_NOTLB) -#define ARM_MMU_IDX_COREIDX_MASK 0xf - -typedef enum ARMMMUIdx { - /* - * A-profile. - */ - ARMMMUIdx_E10_0 =3D 0 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_0 =3D 1 | ARM_MMU_IDX_A, - ARMMMUIdx_E10_1 =3D 2 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_2 =3D 3 | ARM_MMU_IDX_A, - ARMMMUIdx_E10_1_PAN =3D 4 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_2_PAN =3D 5 | ARM_MMU_IDX_A, - ARMMMUIdx_E2 =3D 6 | ARM_MMU_IDX_A, - ARMMMUIdx_E3 =3D 7 | ARM_MMU_IDX_A, - ARMMMUIdx_E30_0 =3D 8 | ARM_MMU_IDX_A, - ARMMMUIdx_E30_3_PAN =3D 9 | ARM_MMU_IDX_A, - - /* - * Used for second stage of an S12 page table walk, or for descriptor - * loads during first stage of an S1 page table walk. Note that both - * are in use simultaneously for SecureEL2: the security state for - * the S2 ptw is selected by the NS bit from the S1 ptw. - */ - ARMMMUIdx_Stage2_S =3D 10 | ARM_MMU_IDX_A, - ARMMMUIdx_Stage2 =3D 11 | ARM_MMU_IDX_A, - - /* TLBs with 1-1 mapping to the physical address spaces. */ - ARMMMUIdx_Phys_S =3D 12 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_NS =3D 13 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_Root =3D 14 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_Realm =3D 15 | ARM_MMU_IDX_A, - - /* - * These are not allocated TLBs and are used only for AT system - * instructions or for the first stage of an S12 page table walk. - */ - ARMMMUIdx_Stage1_E0 =3D 0 | ARM_MMU_IDX_NOTLB, - ARMMMUIdx_Stage1_E1 =3D 1 | ARM_MMU_IDX_NOTLB, - ARMMMUIdx_Stage1_E1_PAN =3D 2 | ARM_MMU_IDX_NOTLB, - - /* - * M-profile. - */ - ARMMMUIdx_MUser =3D ARM_MMU_IDX_M, - ARMMMUIdx_MPriv =3D ARM_MMU_IDX_M | ARM_MMU_IDX_M_PRIV, - ARMMMUIdx_MUserNegPri =3D ARMMMUIdx_MUser | ARM_MMU_IDX_M_NEGPRI, - ARMMMUIdx_MPrivNegPri =3D ARMMMUIdx_MPriv | ARM_MMU_IDX_M_NEGPRI, - ARMMMUIdx_MSUser =3D ARMMMUIdx_MUser | ARM_MMU_IDX_M_S, - ARMMMUIdx_MSPriv =3D ARMMMUIdx_MPriv | ARM_MMU_IDX_M_S, - ARMMMUIdx_MSUserNegPri =3D ARMMMUIdx_MUserNegPri | ARM_MMU_IDX_M_S, - ARMMMUIdx_MSPrivNegPri =3D ARMMMUIdx_MPrivNegPri | ARM_MMU_IDX_M_S, -} ARMMMUIdx; - -/* - * Bit macros for the core-mmu-index values for each index, - * for use when calling tlb_flush_by_mmuidx() and friends. - */ -#define TO_CORE_BIT(NAME) \ - ARMMMUIdxBit_##NAME =3D 1 << (ARMMMUIdx_##NAME & ARM_MMU_IDX_COREIDX_M= ASK) - -typedef enum ARMMMUIdxBit { - TO_CORE_BIT(E10_0), - TO_CORE_BIT(E20_0), - TO_CORE_BIT(E10_1), - TO_CORE_BIT(E10_1_PAN), - TO_CORE_BIT(E2), - TO_CORE_BIT(E20_2), - TO_CORE_BIT(E20_2_PAN), - TO_CORE_BIT(E3), - TO_CORE_BIT(E30_0), - TO_CORE_BIT(E30_3_PAN), - TO_CORE_BIT(Stage2), - TO_CORE_BIT(Stage2_S), - - TO_CORE_BIT(MUser), - TO_CORE_BIT(MPriv), - TO_CORE_BIT(MUserNegPri), - TO_CORE_BIT(MPrivNegPri), - TO_CORE_BIT(MSUser), - TO_CORE_BIT(MSPriv), - TO_CORE_BIT(MSUserNegPri), - TO_CORE_BIT(MSPrivNegPri), -} ARMMMUIdxBit; - -#undef TO_CORE_BIT - -#define MMU_USER_IDX 0 - /* Indexes used when registering address spaces with cpu_address_space_ini= t */ typedef enum ARMASIdx { ARMASIdx_NS =3D 0, diff --git a/target/arm/mmuidx.h b/target/arm/mmuidx.h new file mode 100644 index 0000000000..5b9b4bc84f --- /dev/null +++ b/target/arm/mmuidx.h @@ -0,0 +1,216 @@ +/* + * QEMU Arm software mmu index definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef TARGET_ARM_MMUIDX_H +#define TARGET_ARM_MMUIDX_H + +/* + * Arm has the following "translation regimes" (as the Arm ARM calls them): + * + * If EL3 is 64-bit: + * + NonSecure EL1 & 0 stage 1 + * + NonSecure EL1 & 0 stage 2 + * + NonSecure EL2 + * + NonSecure EL2 & 0 (ARMv8.1-VHE) + * + Secure EL1 & 0 stage 1 + * + Secure EL1 & 0 stage 2 (FEAT_SEL2) + * + Secure EL2 (FEAT_SEL2) + * + Secure EL2 & 0 (FEAT_SEL2) + * + Realm EL1 & 0 stage 1 (FEAT_RME) + * + Realm EL1 & 0 stage 2 (FEAT_RME) + * + Realm EL2 (FEAT_RME) + * + EL3 + * If EL3 is 32-bit: + * + NonSecure PL1 & 0 stage 1 + * + NonSecure PL1 & 0 stage 2 + * + NonSecure PL2 + * + Secure PL1 & 0 + * (reminder: for 32 bit EL3, Secure PL1 is *EL3*, not EL1.) + * + * For QEMU, an mmu_idx is not quite the same as a translation regime beca= use: + * 1. we need to split the "EL1 & 0" and "EL2 & 0" regimes into two mmu_i= dxes, + * because they may differ in access permissions even if the VA->PA ma= p is + * the same + * 2. we want to cache in our TLB the full VA->IPA->PA lookup for a stage= 1+2 + * translation, which means that we have one mmu_idx that deals with t= wo + * concatenated translation regimes [this sort of combined s1+2 TLB is + * architecturally permitted] + * 3. we don't need to allocate an mmu_idx to translations that we won't = be + * handling via the TLB. The only way to do a stage 1 translation with= out + * the immediate stage 2 translation is via the ATS or AT system insns, + * which can be slow-pathed and always do a page table walk. + * The only use of stage 2 translations is either as part of an s1+2 + * lookup or when loading the descriptors during a stage 1 page table = walk, + * and in both those cases we don't use the TLB. + * 4. we can also safely fold together the "32 bit EL3" and "64 bit EL3" + * translation regimes, because they map reasonably well to each other + * and they can't both be active at the same time. + * 5. we want to be able to use the TLB for accesses done as part of a + * stage1 page table walk, rather than having to walk the stage2 page + * table over and over. + * 6. we need separate EL1/EL2 mmu_idx for handling the Privileged Access + * Never (PAN) bit within PSTATE. + * 7. we fold together most secure and non-secure regimes for A-profile, + * because there are no banked system registers for aarch64, so the + * process of switching between secure and non-secure is + * already heavyweight. + * 8. we cannot fold together Stage 2 Secure and Stage 2 NonSecure, + * because both are in use simultaneously for Secure EL2. + * + * This gives us the following list of cases: + * + * EL0 EL1&0 stage 1+2 (aka NS PL0 PL1&0 stage 1+2) + * EL1 EL1&0 stage 1+2 (aka NS PL1 PL1&0 stage 1+2) + * EL1 EL1&0 stage 1+2 +PAN (aka NS PL1 P1&0 stage 1+2 +PAN) + * EL0 EL2&0 + * EL2 EL2&0 + * EL2 EL2&0 +PAN + * EL2 (aka NS PL2) + * EL3 (aka AArch32 S PL1 PL1&0) + * AArch32 S PL0 PL1&0 (we call this EL30_0) + * AArch32 S PL1 PL1&0 +PAN (we call this EL30_3_PAN) + * Stage2 Secure + * Stage2 NonSecure + * plus one TLB per Physical address space: S, NS, Realm, Root + * + * for a total of 16 different mmu_idx. + * + * R profile CPUs have an MPU, but can use the same set of MMU indexes + * as A profile. They only need to distinguish EL0 and EL1 (and + * EL2 for cores like the Cortex-R52). + * + * M profile CPUs are rather different as they do not have a true MMU. + * They have the following different MMU indexes: + * User + * Privileged + * User, execution priority negative (ie the MPU HFNMIENA bit may apply) + * Privileged, execution priority negative (ditto) + * If the CPU supports the v8M Security Extension then there are also: + * Secure User + * Secure Privileged + * Secure User, execution priority negative + * Secure Privileged, execution priority negative + * + * The ARMMMUIdx and the mmu index value used by the core QEMU TLB code + * are not quite the same -- different CPU types (most notably M profile + * vs A/R profile) would like to use MMU indexes with different semantics, + * but since we don't ever need to use all of those in a single CPU we + * can avoid having to set NB_MMU_MODES to "total number of A profile MMU + * modes + total number of M profile MMU modes". The lower bits of + * ARMMMUIdx are the core TLB mmu index, and the higher bits are always + * the same for any particular CPU. + * Variables of type ARMMUIdx are always full values, and the core + * index values are in variables of type 'int'. + * + * Our enumeration includes at the end some entries which are not "true" + * mmu_idx values in that they don't have corresponding TLBs and are only + * valid for doing slow path page table walks. + * + * The constant names here are patterned after the general style of the na= mes + * of the AT/ATS operations. + * The values used are carefully arranged to make mmu_idx =3D> EL lookup e= asy. + * For M profile we arrange them to have a bit for priv, a bit for negpri + * and a bit for secure. + */ +#define ARM_MMU_IDX_A 0x10 /* A profile */ +#define ARM_MMU_IDX_NOTLB 0x20 /* does not have a TLB */ +#define ARM_MMU_IDX_M 0x40 /* M profile */ + +/* Meanings of the bits for M profile mmu idx values */ +#define ARM_MMU_IDX_M_PRIV 0x1 +#define ARM_MMU_IDX_M_NEGPRI 0x2 +#define ARM_MMU_IDX_M_S 0x4 /* Secure */ + +#define ARM_MMU_IDX_TYPE_MASK \ + (ARM_MMU_IDX_A | ARM_MMU_IDX_M | ARM_MMU_IDX_NOTLB) +#define ARM_MMU_IDX_COREIDX_MASK 0xf + +typedef enum ARMMMUIdx { + /* + * A-profile. + */ + ARMMMUIdx_E10_0 =3D 0 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_0 =3D 1 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_1 =3D 2 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_2 =3D 3 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_1_PAN =3D 4 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_2_PAN =3D 5 | ARM_MMU_IDX_A, + ARMMMUIdx_E2 =3D 6 | ARM_MMU_IDX_A, + ARMMMUIdx_E3 =3D 7 | ARM_MMU_IDX_A, + ARMMMUIdx_E30_0 =3D 8 | ARM_MMU_IDX_A, + ARMMMUIdx_E30_3_PAN =3D 9 | ARM_MMU_IDX_A, + + /* + * Used for second stage of an S12 page table walk, or for descriptor + * loads during first stage of an S1 page table walk. Note that both + * are in use simultaneously for SecureEL2: the security state for + * the S2 ptw is selected by the NS bit from the S1 ptw. + */ + ARMMMUIdx_Stage2_S =3D 10 | ARM_MMU_IDX_A, + ARMMMUIdx_Stage2 =3D 11 | ARM_MMU_IDX_A, + + /* TLBs with 1-1 mapping to the physical address spaces. */ + ARMMMUIdx_Phys_S =3D 12 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_NS =3D 13 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_Root =3D 14 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_Realm =3D 15 | ARM_MMU_IDX_A, + + /* + * These are not allocated TLBs and are used only for AT system + * instructions or for the first stage of an S12 page table walk. + */ + ARMMMUIdx_Stage1_E0 =3D 0 | ARM_MMU_IDX_NOTLB, + ARMMMUIdx_Stage1_E1 =3D 1 | ARM_MMU_IDX_NOTLB, + ARMMMUIdx_Stage1_E1_PAN =3D 2 | ARM_MMU_IDX_NOTLB, + + /* + * M-profile. + */ + ARMMMUIdx_MUser =3D ARM_MMU_IDX_M, + ARMMMUIdx_MPriv =3D ARM_MMU_IDX_M | ARM_MMU_IDX_M_PRIV, + ARMMMUIdx_MUserNegPri =3D ARMMMUIdx_MUser | ARM_MMU_IDX_M_NEGPRI, + ARMMMUIdx_MPrivNegPri =3D ARMMMUIdx_MPriv | ARM_MMU_IDX_M_NEGPRI, + ARMMMUIdx_MSUser =3D ARMMMUIdx_MUser | ARM_MMU_IDX_M_S, + ARMMMUIdx_MSPriv =3D ARMMMUIdx_MPriv | ARM_MMU_IDX_M_S, + ARMMMUIdx_MSUserNegPri =3D ARMMMUIdx_MUserNegPri | ARM_MMU_IDX_M_S, + ARMMMUIdx_MSPrivNegPri =3D ARMMMUIdx_MPrivNegPri | ARM_MMU_IDX_M_S, +} ARMMMUIdx; + +/* + * Bit macros for the core-mmu-index values for each index, + * for use when calling tlb_flush_by_mmuidx() and friends. + */ +#define TO_CORE_BIT(NAME) \ + ARMMMUIdxBit_##NAME =3D 1 << (ARMMMUIdx_##NAME & ARM_MMU_IDX_COREIDX_M= ASK) + +typedef enum ARMMMUIdxBit { + TO_CORE_BIT(E10_0), + TO_CORE_BIT(E20_0), + TO_CORE_BIT(E10_1), + TO_CORE_BIT(E10_1_PAN), + TO_CORE_BIT(E2), + TO_CORE_BIT(E20_2), + TO_CORE_BIT(E20_2_PAN), + TO_CORE_BIT(E3), + TO_CORE_BIT(E30_0), + TO_CORE_BIT(E30_3_PAN), + TO_CORE_BIT(Stage2), + TO_CORE_BIT(Stage2_S), + + TO_CORE_BIT(MUser), + TO_CORE_BIT(MPriv), + TO_CORE_BIT(MUserNegPri), + TO_CORE_BIT(MPrivNegPri), + TO_CORE_BIT(MSUser), + TO_CORE_BIT(MSPriv), + TO_CORE_BIT(MSUserNegPri), + TO_CORE_BIT(MSPrivNegPri), +} ARMMMUIdxBit; + +#undef TO_CORE_BIT + +#define MMU_USER_IDX 0 + +#endif /* TARGET_ARM_MMUIDX_H */ --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961520; cv=none; d=zohomail.com; s=zohoarc; b=ltoKnaDzkZb1EJbvpYL5BYk6Vgck9fJFdb+FOkUiQEUb2200SywyZtZMFYK8TZ3H1lNSEX1Gc7A9qc7j4zE3WrikX6ji5azwxkjaa4EKqR5G7i/Gc2r2nXDo22JD/OaeuaCnkmVo5YSN4tIBdubAm8YI3PSTr7gXaDQref3RGmY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961520; 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=qzsy8UIkvSbR8Kg1jCRAVhHmlPSWiDpdwP0nL6me4gI=; b=iVEtq9trWBpL0CU33g52YLySf9E1H8x2DW95g/JoA/VUIGbV08kxLHa6J6F0wWf7ksMHzQyLxEdpnjRN2OlOjEu/ZXSbAwpzT8i3sv6pjtP1TZBlMMC2kd1VH6DUX+C6boZm7jIbbTlbAe930fZWXLyikw4vMyZykI2p72WWPHA= 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 1759961520260344.4108547832384; Wed, 8 Oct 2025 15:12:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9m-00048q-9N; Wed, 08 Oct 2025 17:57:10 -0400 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 1v6c9l-00048D-Du for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:09 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c97-0006fk-52 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:08 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-b5579235200so154665a12.3 for ; Wed, 08 Oct 2025 14:56:28 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960586; x=1760565386; 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=qzsy8UIkvSbR8Kg1jCRAVhHmlPSWiDpdwP0nL6me4gI=; b=vNnKFEs/XFa1BXNuJremp2iymNnqSE5DPc+O+oF0284JhYg4K5ilnayZFStfEAJp4j EYiG2woceYfRsZQXKFaXFuK6RfWbCKZ3ujeZpb2hP8hEug6eM/GhzKRGRzpIppCG3qYw AMJsAoCpttpdbVbR8I0Kz2oK4YcmBAoEa1oNB/QAC1T+Ia+feHdwx6+04edHgAo3RuwZ idio0IBAAToHXV4bRSa9+tb/6SN3YY4UVi0BmOdBxn5D/fK4TEqcUVmjNZMGf7tRHnll Hz2d3HOnWhfiYr7g/8xbWYh7NvU4ouQSOiqdrrR3tbxpptglZscUhy+wIp1YIl8P97eZ jzVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960586; x=1760565386; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qzsy8UIkvSbR8Kg1jCRAVhHmlPSWiDpdwP0nL6me4gI=; b=DcWd56/YXHnRyEziGHhazqy+rLPU1kbiUMN8BtsYPbyAU1AL6c5LZamcDbmA0RzEIv af9gyuSjyNdTgHgjfg9GAm+K+1fnB4Z71vsmVO3w5eM3ESmsnWVm2R5Ee/cVc1Q4Y686 1RLRncJPHCPHjfL2MiGGuD1rvEmnP5WoirJWy5Q2Hj6FeeJkdoxAjH3Uu9fJZWrN7RJy ie5TRGASBe4vj5o8a4yFzjuCwLtkyB5P0nMdH1DTlNYXKaFCrr6rONn1za2K9r4Xpey0 tWJbm5ylXcu+pGZxs9O5iZayhsInPcgnU8KTxeqQrfMgvFsVEeATIKk5e06Qz7bkDHYf eiow== X-Gm-Message-State: AOJu0YxjBgrdRd2takdqfUummrR/VWs18jSVeG3yEQox+ky4dmFPs27m WvQBQD+T7+X5BbXPAD4jhItbyG7gElL2yXG2BCp1koA/+dr0jAyLYDbep0X3zgr/nlSYZDFifUd +q58X/AE= X-Gm-Gg: ASbGncvdZqg+3pe12tug1kOKao+ZHWzkjL7JdmQC8YlYGuIxP/whYaqFS6riLjiihCN dM5V98zqC9wNHnsmBDr13zLuSbvZodQcZ/I3sXC6AowpkYtGTVZobPUElfeBgcjODZ/1KGqblx/ KaXrJbFn9vfB59tujEmHD6pOnBs4b7MRxbXgcbhvdaEV8D+UY1QiRNbmaoLIka2k0spmvcwXx+N xhSuYAajQVbDic8T6s2cT5+kF74xn/AFZZ+aoMM8OO8LdpyTAg7YNG6bQizrpeNQZnwCKP8qtBP v9B2luBBYWigX6rWpGswk76SMSFQ+P5rz82H68y62pk9hs/U9jslJf2WCD4G5N3tid3O+49x3J9 vEVrLLbecSwnN59KfPhyTimLw55tEgx4wnxPq7KhZjJ/WXY3eFyBbHgqE X-Google-Smtp-Source: AGHT+IEwlHX/8EnLdH4c85UaTvP52ALAyNoUvPA/bnHog84SQcD00uS4SICW3vp5tcTLSG2f10GJzQ== X-Received: by 2002:a17:902:e788:b0:286:456f:8c8a with SMTP id d9443c01a7336-290272dfad8mr61813815ad.50.1759960586067; Wed, 08 Oct 2025 14:56:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 17/73] target/arm: Convert arm_mmu_idx_to_el from switch to table Date: Wed, 8 Oct 2025 14:55:17 -0700 Message-ID: <20251008215613.300150-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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: 1759961522220154100 In an effort to keep all ARMMMUIdx data in one place, begin construction of an info table describing all of the properties of the mmu_idx. Begin with the access EL. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 3 +-- target/arm/mmuidx-internal.h | 29 +++++++++++++++++++++++++ target/arm/helper.c | 27 ------------------------ target/arm/mmuidx.c | 41 ++++++++++++++++++++++++++++++++++++ target/arm/meson.build | 7 +++++- 5 files changed, 77 insertions(+), 30 deletions(-) create mode 100644 target/arm/mmuidx-internal.h create mode 100644 target/arm/mmuidx.c diff --git a/target/arm/internals.h b/target/arm/internals.h index 69eb1df617..1a234d41c2 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -34,6 +34,7 @@ #include "system/memory.h" #include "syndrome.h" #include "cpu-features.h" +#include "mmuidx-internal.h" =20 /* register banks for CPU modes */ #define BANK_USRSYS 0 @@ -984,8 +985,6 @@ static inline ARMMMUIdx core_to_aa64_mmu_idx(int mmu_id= x) return mmu_idx | ARM_MMU_IDX_A; } =20 -int arm_mmu_idx_to_el(ARMMMUIdx mmu_idx); - /* Return the MMU index for a v7M CPU in the specified security state */ ARMMMUIdx arm_v7m_mmu_idx_for_secstate(CPUARMState *env, bool secstate); =20 diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h new file mode 100644 index 0000000000..29bba4ecb5 --- /dev/null +++ b/target/arm/mmuidx-internal.h @@ -0,0 +1,29 @@ +/* + * QEMU Arm software mmu index internal definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef TARGET_ARM_MMUIDX_INTERNAL_H +#define TARGET_ARM_MMUIDX_INTERNAL_H + +#include "mmuidx.h" +#include "tcg/debug-assert.h" +#include "hw/registerfields.h" + + +FIELD(MMUIDXINFO, EL, 0, 2) +FIELD(MMUIDXINFO, ELVALID, 2, 1) + +extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; + +#define arm_mmuidx_is_valid(x) ((unsigned)(x) < ARRAY_SIZE(arm_mmuidx_tab= le)) + +/* Return the exception level associated with this mmu index. */ +static inline int arm_mmu_idx_to_el(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + tcg_debug_assert(FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, ELVALID= )); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, EL); +} + +#endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/helper.c b/target/arm/helper.c index bd5321348a..b1d68da133 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9653,33 +9653,6 @@ int fp_exception_el(CPUARMState *env, int cur_el) return 0; } =20 -/* Return the exception level we're running at if this is our mmu_idx */ -int arm_mmu_idx_to_el(ARMMMUIdx mmu_idx) -{ - if (mmu_idx & ARM_MMU_IDX_M) { - return mmu_idx & ARM_MMU_IDX_M_PRIV; - } - - switch (mmu_idx) { - case ARMMMUIdx_E10_0: - case ARMMMUIdx_E20_0: - case ARMMMUIdx_E30_0: - return 0; - case ARMMMUIdx_E10_1: - case ARMMMUIdx_E10_1_PAN: - return 1; - case ARMMMUIdx_E2: - case ARMMMUIdx_E20_2: - case ARMMMUIdx_E20_2_PAN: - return 2; - case ARMMMUIdx_E3: - case ARMMMUIdx_E30_3_PAN: - return 3; - default: - g_assert_not_reached(); - } -} - #ifndef CONFIG_TCG ARMMMUIdx arm_v7m_mmu_idx_for_secstate(CPUARMState *env, bool secstate) { diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c new file mode 100644 index 0000000000..309b1d68df --- /dev/null +++ b/target/arm/mmuidx.c @@ -0,0 +1,41 @@ +/* + * QEMU Arm software mmu index definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "mmuidx-internal.h" + + +#define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK) + +const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { + /* + * A-profile. + */ + [ARMMMUIdx_E10_0] =3D EL(0), + [ARMMMUIdx_E10_1] =3D EL(1), + [ARMMMUIdx_E10_1_PAN] =3D EL(1), + + [ARMMMUIdx_E20_0] =3D EL(0), + [ARMMMUIdx_E20_2] =3D EL(2), + [ARMMMUIdx_E20_2_PAN] =3D EL(2), + + [ARMMMUIdx_E2] =3D EL(2), + + [ARMMMUIdx_E3] =3D EL(3), + [ARMMMUIdx_E30_0] =3D EL(0), + [ARMMMUIdx_E30_3_PAN] =3D EL(3), + + /* + * M-profile. + */ + [ARMMMUIdx_MUser] =3D EL(0), + [ARMMMUIdx_MPriv] =3D EL(1), + [ARMMMUIdx_MUserNegPri] =3D EL(0), + [ARMMMUIdx_MPrivNegPri] =3D EL(1), + [ARMMMUIdx_MSUser] =3D EL(0), + [ARMMMUIdx_MSPriv] =3D EL(1), + [ARMMMUIdx_MSUserNegPri] =3D EL(0), + [ARMMMUIdx_MSPrivNegPri] =3D EL(1), +}; diff --git a/target/arm/meson.build b/target/arm/meson.build index 638ee62525..f9f0beef05 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -6,7 +6,12 @@ arm_ss.add(files( =20 arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'cpu64.c', - 'gdbstub64.c')) + 'gdbstub64.c' +)) + +arm_common_ss.add(files( + 'mmuidx.c', +)) =20 arm_system_ss =3D ss.source_set() arm_common_system_ss =3D ss.source_set() --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961525; cv=none; d=zohomail.com; s=zohoarc; b=krpYSP6F7wFBCCRyYt2a0QlxrNe8nSjgrXfq5dcqPhPg+xla0R4m2okA4kv+HichDDU84Uk5EGWzMHDX5wsgO803BmhBwnL/HF7u0+NbNWOsG/vd4qfVVUGuW1jlY39eH3P9fACNewE574di1rEZ1fRVXfzXWT+drqWN0ymbjEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961525; 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=tcWiqvd7bQJMhEj/N/IxijJBC+Ptfbyu+s086cQOv8I=; b=AVzx3sHYxCozXa5znZ28Gjk7MxjEUx4hdsVQYCVhDBXCTeapCPQi828cfA4Y7b522DLGwbydHOABprMWOrYoeKq1vG2guKzdfH6FqPw8vhlc1iem1bbMl3qMeJEeeyBGkWrphrjlAKn2oLPDidTDvLBbvl0pKPJV0N2EXthriys= 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 1759961525799766.5326975277713; Wed, 8 Oct 2025 15:12:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cA2-0004FL-06; Wed, 08 Oct 2025 17:57:26 -0400 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 1v6c9y-0004Dt-Nh for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:22 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c98-0006fs-Po for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:20 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-28832ad6f64so3545785ad.1 for ; Wed, 08 Oct 2025 14:56:29 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960587; x=1760565387; 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=tcWiqvd7bQJMhEj/N/IxijJBC+Ptfbyu+s086cQOv8I=; b=gYrbzmJsP3OVCuw39Bh4LLs8CChpGH7BoJ55n7qvVtCHnRxBb8Tvyb/+xqhxFhEuh8 C/VPy9Y2RdcZT7l5cCmbNTsq0Ct2a9AQLNt406TecG2ZsSItiO8Yi+mSXD07qN35KLBn cQkhMaOGIDiOxQYAnZrr3jyAOBssQZqYo3K2MvNjKio+W2T4YrbqAbc1Eg8zSfwoSTcJ 7NtNhzVKgO3DxDK23W+aBmLKIhMe+6OAeIYU2pRlZHfJ8Eklg8ALBp04qoV2pWfQcZg7 B42dXwkvn/Yq3TNpGshvxEM2XZoAni3+6oNmR98upJ6MSSNH23ScWFzgXsNLI5uBvJ2U +mAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960587; x=1760565387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tcWiqvd7bQJMhEj/N/IxijJBC+Ptfbyu+s086cQOv8I=; b=FwDg9Z3qeOAXxqs+QB8Xle4t4chmF4XtKqgSh6fzyuBrhlHp3+gA9Sr4D6jZdUwpEn +8PA2fhaOtocPgxK1ssvlOpOxbYrtj/fw2ecYplnNN7qGPsl1ilhgHIsR/bDEavIdUgW NwjWJ5I6UH2AQTMyjgRknMECG4nj/sIurKMeDmLkux9forIkFKO6IQH5l3NfvwwxN0l7 4DWZMuCHKYizzYbo8/KCkTFIRCBbaww4iUz15bmg5lB0K6zlrrutZSck70KEtf1Lco/c gc48v9Fc5lYK2qdk4jp1D+eW4qgC5MAdt8WANPrdCqndO4SjhsmUhM+MgypQWYcI0hxQ 5iGQ== X-Gm-Message-State: AOJu0YxrBXlYYLMHpoqq9h+6RUbMhUtnRzGYVJoSQec4ia02XFunAM+y rPQ2IEOKUALhj5qWX9lyYr2FolQ4baGM+mE+J6/vtq1uDQYiXvFoTpO+8bITG7lFlwGwNQZxRQ8 LHZaH0qQ= X-Gm-Gg: ASbGncucjEoiCwa+JnxZZ2jUT7G7OxOKqT8r5pd5IQ7VKOrOfHHsTBF5bu9+CfwuJ9X 45l69xdW2musUz94kbWBX8rZgl9+Vjy+ybEu8g6cVnFfn1ZUFcIcBmmpsxAsxMejeNK3RXeJ77H gTK03EaSee577imVPzYvbqfiP0zs+F2xIQ9otfNh/zxcvpsBOKWVspYfk/+k+CQEDnvz+FdRxLq kkQksPndaHx/icIGI3GNpMYxzTuZM55fxmj3jbsqz8ufABPQwGoWVtKWsykYiiUAE+0JA4ItxlR IYynlbN4nV972RnEIorigcTlmGUeolf2Zx+UMjeDj8aVIwZxgQXoXVRePCaBzmKKIHxR/0+rBHx bVkVdBeYfv5IIx8r7GklegKnaJxZ6JFAWLTdOBL6/1V+Oil4S3adKssXO X-Google-Smtp-Source: AGHT+IGnSIlw7GjZhSMx0aBO28ynUtURA+7fy6lP4in1GdD+fDSZVsOpZdn9O0EGJmzqz/BaM6cDxA== X-Received: by 2002:a17:903:19e8:b0:28e:ccd7:dd61 with SMTP id d9443c01a7336-29027305380mr65222095ad.57.1759960586645; Wed, 08 Oct 2025 14:56:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 18/73] target/arm: Remove unused env argument from regime_el Date: Wed, 8 Oct 2025 14:55:18 -0700 Message-ID: <20251008215613.300150-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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: 1759961532549116600 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 8 ++++---- target/arm/helper.c | 2 +- target/arm/ptw.c | 34 +++++++++++++++++----------------- target/arm/tcg/mte_helper.c | 2 +- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 1a234d41c2..bd7ea82067 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1074,7 +1074,7 @@ static inline bool regime_is_stage2(ARMMMUIdx mmu_idx) } =20 /* Return the exception level which controls this address translation regi= me */ -static inline uint32_t regime_el(CPUARMState *env, ARMMMUIdx mmu_idx) +static inline uint32_t regime_el(ARMMMUIdx mmu_idx) { switch (mmu_idx) { case ARMMMUIdx_E20_0: @@ -1128,7 +1128,7 @@ static inline bool regime_is_user(CPUARMState *env, A= RMMMUIdx mmu_idx) /* Return the SCTLR value which controls this address translation regime */ static inline uint64_t regime_sctlr(CPUARMState *env, ARMMMUIdx mmu_idx) { - return env->cp15.sctlr_el[regime_el(env, mmu_idx)]; + return env->cp15.sctlr_el[regime_el(mmu_idx)]; } =20 /* @@ -1160,13 +1160,13 @@ static inline uint64_t regime_tcr(CPUARMState *env,= ARMMMUIdx mmu_idx) v |=3D env->cp15.vtcr_el2 & VTCR_SHARED_FIELD_MASK; return v; } - return env->cp15.tcr_el[regime_el(env, mmu_idx)]; + return env->cp15.tcr_el[regime_el(mmu_idx)]; } =20 /* Return true if the translation regime is using LPAE format page tables = */ static inline bool regime_using_lpae_format(CPUARMState *env, ARMMMUIdx mm= u_idx) { - int el =3D regime_el(env, mmu_idx); + int el =3D regime_el(mmu_idx); if (el =3D=3D 2 || arm_el_is_aa64(env, el)) { return true; } diff --git a/target/arm/helper.c b/target/arm/helper.c index b1d68da133..a55161ef40 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9391,7 +9391,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, ARMGranuleSize gran; ARMCPU *cpu =3D env_archcpu(env); bool stage2 =3D regime_is_stage2(mmu_idx); - int r_el =3D regime_el(env, mmu_idx); + int r_el =3D regime_el(mmu_idx); =20 if (!regime_has_2_ranges(mmu_idx)) { select =3D 0; diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 21540a1ec3..9c89ffe8a5 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -235,9 +235,9 @@ static uint64_t regime_ttbr(CPUARMState *env, ARMMMUIdx= mmu_idx, int ttbrn) return env->cp15.vsttbr_el2; } if (ttbrn =3D=3D 0) { - return env->cp15.ttbr0_el[regime_el(env, mmu_idx)]; + return env->cp15.ttbr0_el[regime_el(mmu_idx)]; } else { - return env->cp15.ttbr1_el[regime_el(env, mmu_idx)]; + return env->cp15.ttbr1_el[regime_el(mmu_idx)]; } } =20 @@ -1059,7 +1059,7 @@ static bool get_phys_addr_v5(CPUARMState *env, S1Tran= slate *ptw, } type =3D (desc & 3); domain =3D (desc >> 5) & 0x0f; - if (regime_el(env, ptw->in_mmu_idx) =3D=3D 1) { + if (regime_el(ptw->in_mmu_idx) =3D=3D 1) { dacr =3D env->cp15.dacr_ns; } else { dacr =3D env->cp15.dacr_s; @@ -1198,7 +1198,7 @@ static bool get_phys_addr_v6(CPUARMState *env, S1Tran= slate *ptw, /* Page or Section. */ domain =3D (desc >> 5) & 0x0f; } - if (regime_el(env, mmu_idx) =3D=3D 1) { + if (regime_el(mmu_idx) =3D=3D 1) { dacr =3D env->cp15.dacr_ns; } else { dacr =3D env->cp15.dacr_s; @@ -1489,7 +1489,7 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx mmu= _idx, bool is_aa64, xn =3D pxn || (user_rw & PAGE_WRITE); } } else if (arm_feature(env, ARM_FEATURE_V7)) { - switch (regime_el(env, mmu_idx)) { + switch (regime_el(mmu_idx)) { case 1: case 3: if (is_user) { @@ -1545,7 +1545,7 @@ static int get_S1prot_indirect(CPUARMState *env, S1Tr= anslate *ptw, /* F */ 0, /* reserved */ }; =20 - uint32_t el =3D regime_el(env, mmu_idx); + uint32_t el =3D regime_el(mmu_idx); uint64_t pir =3D env->cp15.pir_el[el]; uint64_t pire0 =3D 0; int perm; @@ -1620,7 +1620,7 @@ static ARMVAParameters aa32_va_parameters(CPUARMState= *env, uint32_t va, ARMMMUIdx mmu_idx) { uint64_t tcr =3D regime_tcr(env, mmu_idx); - uint32_t el =3D regime_el(env, mmu_idx); + uint32_t el =3D regime_el(mmu_idx); int select, tsz; bool epd, hpd; =20 @@ -1846,7 +1846,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, int addrsize, inputsize, outputsize; uint64_t tcr =3D regime_tcr(env, mmu_idx); int ap, prot; - uint32_t el =3D regime_el(env, mmu_idx); + uint32_t el =3D regime_el(mmu_idx); uint64_t descaddrmask; bool aarch64 =3D arm_el_is_aa64(env, el); uint64_t descriptor, new_descriptor; @@ -2296,7 +2296,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, =20 /* Index into MAIR registers for cache attributes */ attrindx =3D extract32(attrs, 2, 3); - mair =3D env->cp15.mair_el[regime_el(env, mmu_idx)]; + mair =3D env->cp15.mair_el[regime_el(mmu_idx)]; assert(attrindx <=3D 7); result->cacheattrs.is_s2_format =3D false; result->cacheattrs.attrs =3D extract64(mair, attrindx * 8, 8); @@ -2774,7 +2774,7 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, static uint32_t *regime_rbar(CPUARMState *env, ARMMMUIdx mmu_idx, uint32_t secure) { - if (regime_el(env, mmu_idx) =3D=3D 2) { + if (regime_el(mmu_idx) =3D=3D 2) { return env->pmsav8.hprbar; } else { return env->pmsav8.rbar[secure]; @@ -2784,7 +2784,7 @@ static uint32_t *regime_rbar(CPUARMState *env, ARMMMU= Idx mmu_idx, static uint32_t *regime_rlar(CPUARMState *env, ARMMMUIdx mmu_idx, uint32_t secure) { - if (regime_el(env, mmu_idx) =3D=3D 2) { + if (regime_el(mmu_idx) =3D=3D 2) { return env->pmsav8.hprlar; } else { return env->pmsav8.rlar[secure]; @@ -2816,7 +2816,7 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, uint32_t addr_page_limit =3D addr_page_base + (TARGET_PAGE_SIZE - 1); int region_counter; =20 - if (regime_el(env, mmu_idx) =3D=3D 2) { + if (regime_el(mmu_idx) =3D=3D 2) { region_counter =3D cpu->pmsav8r_hdregion; } else { region_counter =3D cpu->pmsav7_dregion; @@ -2942,7 +2942,7 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, xn =3D 1; } =20 - if (regime_el(env, mmu_idx) =3D=3D 2) { + if (regime_el(mmu_idx) =3D=3D 2) { result->f.prot =3D simple_ap_to_rw_prot_is_user(ap, mmu_idx !=3D ARMMMUIdx_E2); } else { @@ -2951,7 +2951,7 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, =20 if (!arm_feature(env, ARM_FEATURE_M)) { uint8_t attrindx =3D extract32(matched_rlar, 1, 3); - uint64_t mair =3D env->cp15.mair_el[regime_el(env, mmu_idx)]; + uint64_t mair =3D env->cp15.mair_el[regime_el(mmu_idx)]; uint8_t sh =3D extract32(matched_rlar, 3, 2); =20 if (regime_sctlr(env, mmu_idx) & SCTLR_WXN && @@ -2959,7 +2959,7 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, xn =3D 0x1; } =20 - if ((regime_el(env, mmu_idx) =3D=3D 1) && + if ((regime_el(mmu_idx) =3D=3D 1) && regime_sctlr(env, mmu_idx) & SCTLR_UWXN && ap =3D=3D 0x1) { pxn =3D 0x1; } @@ -3444,7 +3444,7 @@ static bool get_phys_addr_disabled(CPUARMState *env, break; =20 default: - r_el =3D regime_el(env, mmu_idx); + r_el =3D regime_el(mmu_idx); if (arm_el_is_aa64(env, r_el)) { int pamax =3D arm_pamax(env_archcpu(env)); uint64_t tcr =3D env->cp15.tcr_el[r_el]; @@ -3697,7 +3697,7 @@ static bool get_phys_addr_nogpc(CPUARMState *env, S1T= ranslate *ptw, */ if (address < 0x02000000 && mmu_idx !=3D ARMMMUIdx_Stage2 && !arm_feature(env, ARM_FEATURE_V8)) { - if (regime_el(env, mmu_idx) =3D=3D 3) { + if (regime_el(mmu_idx) =3D=3D 3) { address +=3D env->cp15.fcseidr_s; } else { address +=3D env->cp15.fcseidr_ns; diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index b96c953f80..bb48fe359b 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -605,7 +605,7 @@ void mte_check_fail(CPUARMState *env, uint32_t desc, int el, reg_el, tcf; uint64_t sctlr; =20 - reg_el =3D regime_el(env, arm_mmu_idx); + reg_el =3D regime_el(arm_mmu_idx); sctlr =3D env->cp15.sctlr_el[reg_el]; =20 switch (arm_mmu_idx) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961430; cv=none; d=zohomail.com; s=zohoarc; b=W34zfZUczmPNa6HtUpw0cJnbMxFv3Jt2xEzNR/9GnjBtnCMkcn24afeW4efe02PsZehviHzWOu+b9c4P0GvN2Wl1QnkCRIBCV++0WqPT9VCdeN1/B5hF5SlmS1vGbvVJlOm2UQyKRVv2wr5iL8RLQbtCQL5Od6l3qa58nlXQz9c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961430; h=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=gN3TW4VhQzzFlOW6UC1TsHCE40S2BpskX9OHncDp0PQ=; b=ZiFY24+cHoVFguYyLrVvtD+Dp/68sLQlA4ylpLvjOb8x073W5aWd8BuIhVXW33kfxxKxOCocmOJ0XC79V7bcCw3hDVvZKOhDXaLs3kraS1xWeOROtksnoJSheU6Eix0caXMJ/Q+KZIoWuPOSeQqypxv0mQNZn0/cPFecRRZ7x50= 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 1759961430383893.5662180790882; Wed, 8 Oct 2025 15:10:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6c9x-0004Cd-1s; Wed, 08 Oct 2025 17:57:21 -0400 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 1v6c9r-0004Bj-OA for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:15 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c99-0006gA-1y for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:15 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-26a0a694ea8so2078235ad.3 for ; Wed, 08 Oct 2025 14:56:29 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960587; x=1760565387; 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=gN3TW4VhQzzFlOW6UC1TsHCE40S2BpskX9OHncDp0PQ=; b=xeYSPVR6MD670xp260XKMkOK7JaGS0Lg6jLjrUFKR4Fm7inar8YAp+HY0Sfnog6WWs NnXnHNzNKPzHYsOO/bWGaNdZOTSjx8+QxYlFUpXXwJak7Gk5FjfmcXm+Vgh6dRT5jjDY raa42JA5Wcq6hKHkpxIFVWsFUd3cXw13HBDWPR9XrQXdomoA74UAF51bWXQkA3C7H6Y1 aYCDmeplB66D20y+tpxKiyufuMqV4VOKzOzWhWARCA4vKCx4icHnzizCfthVwdG8ZwkT /jiMn/5lEaHA7pZhu19aj46g3m7zMhZ/A7plVnX6q88Suorj03ogb3hV6IK7mq3ugeVX iPVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960587; x=1760565387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gN3TW4VhQzzFlOW6UC1TsHCE40S2BpskX9OHncDp0PQ=; b=Ooa41jHH6VA12EliHig5HmY/uB+8I1ZK1gpXyQ2AN8fIs2sxhfm6K/8QV/w8XFKH6I 1pHxVDuo29Uxfd1/jcsQZ1yDS5Y/3AHXKO5RlSsPktSyY38ThhRU5rUfBr2O4w2YskON nlATeMUmWgo+rHZdRNNFYSsRd+dM7DZa7DLdKkp4CUG8CzRqu0Eg0aF+oZykdL1FW4e4 JOnMp3JefJUTq9VhEq9eh2xVgOLUdVWoBXdfvINQl3QKVXJbtWpgdXXBCqNPJm/DhxfU ncOWWFSvN9RbO6IyH9UWIqH9QInb1uwsPd3k/2+mdfUWW+bdVIbjSbAfmzYIJiz9HjIg e1rA== X-Gm-Message-State: AOJu0YyUJG8DpkyMz5OPq611C7gWalPER0BSeAlI1Dlobk+CxAQOtTVy 9i1WyKt0HvA5Ir7B51koWRevHtm7pvCFPKsgTXXUdxLW8xl1sguS8Ky4xfDwacE8QWeVuxX/oqN KCzZ/7iE= X-Gm-Gg: ASbGncs1qB3LmKzco+SbIOwVB1bLbGAgRcxxZWu5tXUUl+JSnexGsbQaW0LK4LDYu1I lM9jeO2cdxdB8L4kDru+8OCg8sAbIRVKde1nKpUXKkEzOGjr2boQXi2ihMy5qYLv6newTgoduA4 vr77Qorq1ufHaM0Yh5UMSiEtOpqcPUf6lroOSh68cSLea8pIaKmrQ/I7O2WDdu8+a035YAaQKx4 Al/BqtsC8YyDWlJiPe0ExnBp/4oY6QgTGX+8K8eihmNOrwAJXThncVdUhOnamBQbSNh+bCXqEtX pbBzwvCTXwNYeNEQUi/PusVgD3jwJIXyF7AgjoophIGMmOjNbzggHZzVJvPUd2rIOs1eOz9vfXF bX/tDcgVgsa6hNKpjf+gxzjUL5kZkPxbP6PP0YvRen9zqJaJkXtUGEmSu X-Google-Smtp-Source: AGHT+IEkmwSEf6hvKP4WhLUiao0LSkt/hkI9aG7HqIbzCYAhxAX8BnxAaiZUqoBN8eTejIBblT+fGA== X-Received: by 2002:a17:903:247:b0:264:a34c:c6d with SMTP id d9443c01a7336-29027344965mr59781905ad.37.1759960587270; Wed, 08 Oct 2025 14:56:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 19/73] target/arm: Convert regime_el from switch to table Date: Wed, 8 Oct 2025 14:55:19 -0700 Message-ID: <20251008215613.300150-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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: 1759961433301154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 35 ---------------------------- target/arm/mmuidx-internal.h | 13 +++++++++++ target/arm/mmuidx.c | 44 +++++++++++++++++++++--------------- 3 files changed, 39 insertions(+), 53 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index bd7ea82067..319c39a4ac 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1073,41 +1073,6 @@ static inline bool regime_is_stage2(ARMMMUIdx mmu_id= x) return mmu_idx =3D=3D ARMMMUIdx_Stage2 || mmu_idx =3D=3D ARMMMUIdx_Sta= ge2_S; } =20 -/* Return the exception level which controls this address translation regi= me */ -static inline uint32_t regime_el(ARMMMUIdx mmu_idx) -{ - switch (mmu_idx) { - case ARMMMUIdx_E20_0: - case ARMMMUIdx_E20_2: - case ARMMMUIdx_E20_2_PAN: - case ARMMMUIdx_Stage2: - case ARMMMUIdx_Stage2_S: - case ARMMMUIdx_E2: - return 2; - case ARMMMUIdx_E3: - case ARMMMUIdx_E30_0: - case ARMMMUIdx_E30_3_PAN: - return 3; - case ARMMMUIdx_E10_0: - case ARMMMUIdx_Stage1_E0: - case ARMMMUIdx_Stage1_E1: - case ARMMMUIdx_Stage1_E1_PAN: - case ARMMMUIdx_E10_1: - case ARMMMUIdx_E10_1_PAN: - case ARMMMUIdx_MPrivNegPri: - case ARMMMUIdx_MUserNegPri: - case ARMMMUIdx_MPriv: - case ARMMMUIdx_MUser: - case ARMMMUIdx_MSPrivNegPri: - case ARMMMUIdx_MSUserNegPri: - case ARMMMUIdx_MSPriv: - case ARMMMUIdx_MSUser: - return 1; - default: - g_assert_not_reached(); - } -} - static inline bool regime_is_user(CPUARMState *env, ARMMMUIdx mmu_idx) { switch (mmu_idx) { diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 29bba4ecb5..d8d64a14d6 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -13,6 +13,8 @@ =20 FIELD(MMUIDXINFO, EL, 0, 2) FIELD(MMUIDXINFO, ELVALID, 2, 1) +FIELD(MMUIDXINFO, REL, 3, 2) +FIELD(MMUIDXINFO, RELVALID, 5, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -26,4 +28,15 @@ static inline int arm_mmu_idx_to_el(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, EL); } =20 +/* + * Return the exception level for the address translation regime + * associated with this mmu index. + */ +static inline uint32_t regime_el(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + tcg_debug_assert(FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, RELVALI= D)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, REL); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 309b1d68df..6dfefa56c2 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -8,34 +8,42 @@ =20 =20 #define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK) +#define REL(X) ((X << R_MMUIDXINFO_REL_SHIFT) | R_MMUIDXINFO_RELVALID_MASK) =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* * A-profile. */ - [ARMMMUIdx_E10_0] =3D EL(0), - [ARMMMUIdx_E10_1] =3D EL(1), - [ARMMMUIdx_E10_1_PAN] =3D EL(1), + [ARMMMUIdx_E10_0] =3D EL(0) | REL(1), + [ARMMMUIdx_E10_1] =3D EL(1) | REL(1), + [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1), =20 - [ARMMMUIdx_E20_0] =3D EL(0), - [ARMMMUIdx_E20_2] =3D EL(2), - [ARMMMUIdx_E20_2_PAN] =3D EL(2), + [ARMMMUIdx_E20_0] =3D EL(0) | REL(2), + [ARMMMUIdx_E20_2] =3D EL(2) | REL(2), + [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2), =20 - [ARMMMUIdx_E2] =3D EL(2), + [ARMMMUIdx_E2] =3D EL(2) | REL(2), =20 - [ARMMMUIdx_E3] =3D EL(3), - [ARMMMUIdx_E30_0] =3D EL(0), - [ARMMMUIdx_E30_3_PAN] =3D EL(3), + [ARMMMUIdx_E3] =3D EL(3) | REL(3), + [ARMMMUIdx_E30_0] =3D EL(0) | REL(3), + [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3), + + [ARMMMUIdx_Stage2_S] =3D REL(2), + [ARMMMUIdx_Stage2] =3D REL(2), + + [ARMMMUIdx_Stage1_E0] =3D REL(1), + [ARMMMUIdx_Stage1_E1] =3D REL(1), + [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1), =20 /* * M-profile. */ - [ARMMMUIdx_MUser] =3D EL(0), - [ARMMMUIdx_MPriv] =3D EL(1), - [ARMMMUIdx_MUserNegPri] =3D EL(0), - [ARMMMUIdx_MPrivNegPri] =3D EL(1), - [ARMMMUIdx_MSUser] =3D EL(0), - [ARMMMUIdx_MSPriv] =3D EL(1), - [ARMMMUIdx_MSUserNegPri] =3D EL(0), - [ARMMMUIdx_MSPrivNegPri] =3D EL(1), + [ARMMMUIdx_MUser] =3D EL(0) | REL(1), + [ARMMMUIdx_MPriv] =3D EL(1) | REL(1), + [ARMMMUIdx_MUserNegPri] =3D EL(0) | REL(1), + [ARMMMUIdx_MPrivNegPri] =3D EL(1) | REL(1), + [ARMMMUIdx_MSUser] =3D EL(0) | REL(1), + [ARMMMUIdx_MSPriv] =3D EL(1) | REL(1), + [ARMMMUIdx_MSUserNegPri] =3D EL(0) | REL(1), + [ARMMMUIdx_MSPrivNegPri] =3D EL(1) | REL(1), }; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960711; cv=none; d=zohomail.com; s=zohoarc; b=UUaTxx09XbQcOVt4V/KbK0ii1wITfwh35pcUKopbyrsCZkfuJu8YkmyYgDcs7Trl0Wz/H4laDyS+KmkmFBSXDH1Z+M8Nl/oIL9vqsed/eXRDGWvJq4yc+eBjNz62jgHze/+7rY8YnDYhvOZ7iP8PlLHR8i7SzquJpwBPODrHey0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960711; h=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=bSTMFZ3bSv7ykqKeMgQXNsnQ4mB7pENj/novtEHzNcs=; b=fprqDBRR83Ru6J/U17HiR412Dq6wmy2E1lltw6Io/gC43lNB3vqEeplMn99kNe3kaIMlmSmj8PNEY/kP893eLs8XuZkxH0d48RH/Mr+r2+fB6bXRKnhXJByZoLGAeMEhhx/cYdpxMb8T/yeAawmd+aQA9Hdf/K4QrxhHC2NQQHs= 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 1759960711211559.5031813679559; Wed, 8 Oct 2025 14:58:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cA1-0004Fo-Ug; Wed, 08 Oct 2025 17:57:26 -0400 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 1v6c9y-0004EB-N9 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:22 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9A-0006gO-8M for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:20 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-271d1305ad7so4759865ad.2 for ; Wed, 08 Oct 2025 14:56:30 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960588; x=1760565388; 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=bSTMFZ3bSv7ykqKeMgQXNsnQ4mB7pENj/novtEHzNcs=; b=kNiSCfWfh0XuZVB/1vMtYmNVej0yKIxvnm02FyGD/j1gOTbLPvDZT4E7DQpUlQzxpp YUscRgKdrOHjbYl/8ye9u45/ZLuRLF/go0QivLijoA27fCfameos9LeyUKqHbGu3LoNm NsaZmYYTXURw3FcGKZzTFhWUUU50E06wHemzQL3QpVHJYfJcJhaXpiVTqRVIQ39Hmbfi giqgdXQpOyUcEixHQf+yV77t+1O9EOsBR1sDcWUcizqeeZaYvvvs00/2Rx/sg33WQ4SH +nx2yjmonm0yk91KoA4s4lw9k8Uc/CG0c14QrXjC+h7LJkeFE+rBJ8kB0YHZDJTSVF2g jiWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960588; x=1760565388; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bSTMFZ3bSv7ykqKeMgQXNsnQ4mB7pENj/novtEHzNcs=; b=EMaXUmJPPk0v2pLeShd96F4l63Kciy4ZbKvMMzoQvevzeq13o6mx/vJa+OEOp+gRz5 7xo3mpPMsHXUjG8jKqVuPypcQdU6Sycpt+NizQD5Mlry2LBse+BZFh8a5ztmbiYY0ibI Ihh+3UVtlYgnehiJo2va7EWbviYbuvCqSuYAr8ckH0bJccOubkERQ2fa/Akqc7sXVNI2 T3hzI3nAQGBFlzi8FTy0G9LQO12WNXVQs3OO9xHkDxTPzVOGzC6twNp7jwkjvQi+VPS5 1rNfGp0wx0ZJAHvcsLNPsXHRe8RiTmUAwg0H3MF+L5bRcnP8NPoWl/mJiI5LwMrrnxEi kl/A== X-Gm-Message-State: AOJu0YwtT3SFKk2lMPBOQmddsvMNo7NIt1/iaNWQ5fLwnlw99KqpiUj/ xFpf6PolXRltid0she67wtu57dw2/btXeI03/hJnAfuqvPnnqzuVstDH/e48xwBsBAJd6xFk25E VcbnSoOc= X-Gm-Gg: ASbGncsP9moQKN/7sTlGHSD6Pt3CG7fItOdbutWP6fnaaC5mY2Rg6HHSSCkdQQxsLMd FdLnavACTaxOd9QGYrm78aorNad2C4mFbfEIkyFQI/MexrGP4MjSkNbCgVjz+ZsDyIdPneLvWDW AukN4znTChrtW3MFXHhbBDu9l4ST3cu6C6kx7LQbvKIK+baJcG0C5p9qFCi+ZgtV+3N3OowcIWL cAzOEn+beWRY5XQOyuqftF9GMoC898MRNa5XVfJaRyvNwyBF9PKF2KFTlWy9fSAk5lYcX25fbi8 ih8K3KWejYgHnw+OSFNuXhweoIyqAIeimbNGeGJ9hQoBOpsRFAPa7bX/d+vxsPaY0divFUfj/K3 griEzr71+pHC2EJUq23ICytPKrZZEWweoQ9o7ujDA3QcmlOlVwK15O5CK X-Google-Smtp-Source: AGHT+IGqkyJo1kjJWVoC8Yo/TxktH7Oz1FdjKPKyjThCvJaQOwIGiC1FJLYOg491zgHk2T1BNyIu1Q== X-Received: by 2002:a17:902:d545:b0:27e:da3a:32bc with SMTP id d9443c01a7336-290273eca19mr66881255ad.33.1759960587864; Wed, 08 Oct 2025 14:56:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 20/73] target/arm: Convert regime_has_2_ranges from switch to table Date: Wed, 8 Oct 2025 14:55:20 -0700 Message-ID: <20251008215613.300150-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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, T_SPF_TEMPERROR=0.01 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: 1759960712718154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 28 ---------------------------- target/arm/mmuidx-internal.h | 17 +++++++++++++++++ target/arm/mmuidx.c | 19 ++++++++++--------- 3 files changed, 27 insertions(+), 37 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 319c39a4ac..061472a943 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1027,34 +1027,6 @@ static inline void arm_call_el_change_hook(ARMCPU *c= pu) } } =20 -/* - * Return true if this address translation regime has two ranges. - * Note that this will not return the correct answer for AArch32 - * Secure PL1&0 (i.e. mmu indexes E3, E30_0, E30_3_PAN), but it is - * never called from a context where EL3 can be AArch32. (The - * correct return value for ARMMMUIdx_E3 would be different for - * that case, so we can't just make the function return the - * correct value anyway; we would need an extra "bool e3_is_aarch32" - * argument which all the current callsites would pass as 'false'.) - */ -static inline bool regime_has_2_ranges(ARMMMUIdx mmu_idx) -{ - switch (mmu_idx) { - case ARMMMUIdx_Stage1_E0: - case ARMMMUIdx_Stage1_E1: - case ARMMMUIdx_Stage1_E1_PAN: - case ARMMMUIdx_E10_0: - case ARMMMUIdx_E10_1: - case ARMMMUIdx_E10_1_PAN: - case ARMMMUIdx_E20_0: - case ARMMMUIdx_E20_2: - case ARMMMUIdx_E20_2_PAN: - return true; - default: - return false; - } -} - static inline bool regime_is_pan(CPUARMState *env, ARMMMUIdx mmu_idx) { switch (mmu_idx) { diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index d8d64a14d6..f03a2ab94c 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -15,6 +15,7 @@ FIELD(MMUIDXINFO, EL, 0, 2) FIELD(MMUIDXINFO, ELVALID, 2, 1) FIELD(MMUIDXINFO, REL, 3, 2) FIELD(MMUIDXINFO, RELVALID, 5, 1) +FIELD(MMUIDXINFO, 2RANGES, 6, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -39,4 +40,20 @@ static inline uint32_t regime_el(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, REL); } =20 +/* + * Return true if this address translation regime has two ranges. + * Note that this will not return the correct answer for AArch32 + * Secure PL1&0 (i.e. mmu indexes E3, E30_0, E30_3_PAN), but it is + * never called from a context where EL3 can be AArch32. (The + * correct return value for ARMMMUIdx_E3 would be different for + * that case, so we can't just make the function return the + * correct value anyway; we would need an extra "bool e3_is_aarch32" + * argument which all the current callsites would pass as 'false'.) + */ +static inline bool regime_has_2_ranges(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, 2RANGES); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 6dfefa56c2..f880d21606 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -9,18 +9,19 @@ =20 #define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK) #define REL(X) ((X << R_MMUIDXINFO_REL_SHIFT) | R_MMUIDXINFO_RELVALID_MASK) +#define R2 R_MMUIDXINFO_2RANGES_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* * A-profile. */ - [ARMMMUIdx_E10_0] =3D EL(0) | REL(1), - [ARMMMUIdx_E10_1] =3D EL(1) | REL(1), - [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1), + [ARMMMUIdx_E10_0] =3D EL(0) | REL(1) | R2, + [ARMMMUIdx_E10_1] =3D EL(1) | REL(1) | R2, + [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2, =20 - [ARMMMUIdx_E20_0] =3D EL(0) | REL(2), - [ARMMMUIdx_E20_2] =3D EL(2) | REL(2), - [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2), + [ARMMMUIdx_E20_0] =3D EL(0) | REL(2) | R2, + [ARMMMUIdx_E20_2] =3D EL(2) | REL(2) | R2, + [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2, =20 [ARMMMUIdx_E2] =3D EL(2) | REL(2), =20 @@ -31,9 +32,9 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_Stage2_S] =3D REL(2), [ARMMMUIdx_Stage2] =3D REL(2), =20 - [ARMMMUIdx_Stage1_E0] =3D REL(1), - [ARMMMUIdx_Stage1_E1] =3D REL(1), - [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1), + [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2, + [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2, + [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2, =20 /* * M-profile. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961127; cv=none; d=zohomail.com; s=zohoarc; b=X0lOTLJJYOUPNadse6QMlenb8SOW7DnI5Avf9HW8n8CPI1rHpWg1kNH7I9+/NZD5Czffz0SvMhC2QN6ALz/a3ZFS0hQvXK7xqDnB1iu77CiVVH7rWXtP6hLephz39ltPeBhr5CbkHSAOxuZuYDUAIlQVO6708WEL6MBfEEePFvU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961127; 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=N9r+qjPCi/YxIE5NGkpLP7uv12jecqWEAb1ZemlLCdc=; b=BPO1Br/02eAmkh8LpBqQjwhK03DG81Jm/rEhaF1V0DIHApXm0Neutagfb1k4ZUUnA4eLj1tyiGkOaCYyM5CmldA/yNtehPyx+WRK8Y9RzvmgxsKsXLNJZ1ECtfaoyB5pPLSYKFbb7hi9xgGgBXUdHyYKJGcN5l+rRyv0NlTGxOA= 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 1759961127334881.7466483618807; Wed, 8 Oct 2025 15:05:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAZ-0004St-PZ; Wed, 08 Oct 2025 17:58:00 -0400 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 1v6c9y-0004EG-VB for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:23 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c99-0006gh-Qw for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:22 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-b4755f37c3eso208122a12.3 for ; Wed, 08 Oct 2025 14:56:29 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960588; x=1760565388; 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=N9r+qjPCi/YxIE5NGkpLP7uv12jecqWEAb1ZemlLCdc=; b=CTlivMV9s+gyMg0jyHu7dGGRwuGQxiRQDR2qMGROy3FTKGZnfruP2guwQX6ZE6kjR9 aNV8uw24pivBOWu5pNGuXFIrfTt8fsbaYRxjAr2u9J2gh0wKKp0QaSFyInnWrVGO2Yw2 PqY3gMbynR1I1QM+keLszBNWOjML5F0/1AH8W7xrT5DoFKSSVuwVax4FcakmKV3JSv8J OshVjUXgUtO8kp0RX8snyOnD/9rAvOsHCrzr06QNCTYbemIv3+HuCJOOX1kyqdDoTJ+z 1ff9k7givWQEPKFdOCT4zobEZfmJvJ1vIaaq54TNXOwWiUjhXV7HMGDHcWY9hG2fxrMf GU7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960588; x=1760565388; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N9r+qjPCi/YxIE5NGkpLP7uv12jecqWEAb1ZemlLCdc=; b=XUrRXglkLTVlg3sUaR/skX45rhII3ti2rFS3EGbmzCfCtr18uxCWJmTpdl7Ub3CT9q 0KVWPmhEsRDp4Y0aYZiPmFFngub4ZWejavh3hU7wSg67YB+DP8g0jXLUIQQva2Nu65/V 3pp+e5gsLiPf8M/ZibvPFCl14F78J0tXu2icN8M79jAiEeAnejKNJjkzkj4vbh6x8gjf URnJEU0caYY+70/R7QlgPwTMJGM5dZ44w9ljk0/fjro1YU+4STYOfRo4WVnqJOnj+5dQ Dm1tXn+BHczILIzEcbXgrNMnmBtgaLENn39TL+qHGUH7d1Glvj2m5xtkQ3XgiZN/aqys w2xA== X-Gm-Message-State: AOJu0YyPURl1x8U6WmImJYuH8pDyZD+bJ1ral7h9PKn2BqztG9nT3XVE 70UoO1HiG9WCxbGFCp9SRiGuKb9wkzHrGNbG8RR8/9yxbmTbMMQJ8GtXxek6npqH+mfEuczd6jK 7DbBOXDc= X-Gm-Gg: ASbGncvqONGwyO00Oo+yTafdFINFuWJ4uzQvusH7loxavjUinEb0DlIHZKmNYoTZ7u+ YJNTtfDCZ/NnL+u3Nx8iVe6wH7EjlzTXIt79SGd7GjObW5l6FQyAX2fPOc0uo6LwRVVU1QrEpgZ iYrHM/K+rLydiMxeVMIvmx5dBmmVjRrSNGP5qld1FPtIwjGHyMZhJEelgeH1gAr8DmmEw9LBdok CWf6faMnq8T7Uf3onfJMAd8f2Wo5FnHPjFtDNUOdsjGx1kb2iGzuluvXMA5Jl0s71Opro+CHA0T mJKTnoyd66RIfY5YTB5/Aua9AxjBrg8ogIEgMCHz2kpcBz2dV8xl2qBJssKowNpLF8ZhpCWrOJY 6gbczWkzKP8h3Exbom0V26GntsJx1NKBbft7CiF7bg14bAIN0Rl+aVU1c X-Google-Smtp-Source: AGHT+IGysLccaQiYOb/n9LJflb20NwTjxOMhCAkFTuNI5KHTx0HidwfDoOGM8P1gXeqkEpB/6LHPgQ== X-Received: by 2002:a17:902:ccc4:b0:24c:e6fa:2a38 with SMTP id d9443c01a7336-2902739ad2emr63888965ad.25.1759960588514; Wed, 08 Oct 2025 14:56:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 21/73] target/arm: Remove unused env argument from regime_is_pan Date: Wed, 8 Oct 2025 14:55:21 -0700 Message-ID: <20251008215613.300150-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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, T_SPF_TEMPERROR=0.01 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: 1759961129612154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 2 +- target/arm/ptw.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 061472a943..cb2ffeff59 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1027,7 +1027,7 @@ static inline void arm_call_el_change_hook(ARMCPU *cp= u) } } =20 -static inline bool regime_is_pan(CPUARMState *env, ARMMMUIdx mmu_idx) +static inline bool regime_is_pan(ARMMMUIdx mmu_idx) { switch (mmu_idx) { case ARMMMUIdx_Stage1_E1_PAN: diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 9c89ffe8a5..1080b6d69d 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1429,10 +1429,10 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx m= mu_idx, bool is_aa64, * We make the IMPDEF choices that SCR_EL3.SIF and Realm EL2&0 * do not affect EPAN. */ - if (user_rw && regime_is_pan(env, mmu_idx)) { + if (user_rw && regime_is_pan(mmu_idx)) { prot_rw =3D 0; } else if (cpu_isar_feature(aa64_pan3, cpu) && is_aa64 && - regime_is_pan(env, mmu_idx) && + regime_is_pan(mmu_idx) && (regime_sctlr(env, mmu_idx) & SCTLR_EPAN) && !xn) { prot_rw =3D 0; } @@ -1571,7 +1571,7 @@ static int get_S1prot_indirect(CPUARMState *env, S1Tr= anslate *ptw, p_perm &=3D ~(PAGE_RWX | PAGE_GCS); u_perm &=3D ~(PAGE_RWX | PAGE_GCS); } - if ((u_perm & (PAGE_RWX | PAGE_GCS)) && regime_is_pan(env, mmu_idx= )) { + if ((u_perm & (PAGE_RWX | PAGE_GCS)) && regime_is_pan(mmu_idx)) { p_perm &=3D ~(PAGE_READ | PAGE_WRITE); } perm =3D regime_is_user(env, mmu_idx) ? u_perm : p_perm; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961122; cv=none; d=zohomail.com; s=zohoarc; b=et0fR7hUTR79CyLvltPLsL9JWRebUgJpaykigkyrhjddEsKpZzxrQ92B+opJWIz5BvcWybRDdg9i8brKa37fRmxmGsmZLnUjS6p37QCdGnHvGKag8C6bxfVZoxcPqXceILIQjiqSC9iqH6owRf6PfUz0odfFLGPMLUB6Beuil3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961122; h=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=OOmjEL78vAj/qpk42Yir5qx6ESIUS3UfNsoScCN3OOA=; b=jQyt2OX2pv49u3S2935r4B8c0aBaRWbtB0HYNwbsr7s5zoIRwqzrkOfCCUyIEz6Xdj/WVgKaAFGQpnMblvGHBFGhbNvB49OIiMr76ALPtDL7gv4U/MQHF0rC10ZkwO6ADpqiTDSYUxrpC7kq3PerEJf3/Q7iTtMTZimqiCsSZcg= 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 1759961122674894.3178597277168; Wed, 8 Oct 2025 15:05:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBK-0005Gf-2k; Wed, 08 Oct 2025 17:58:46 -0400 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 1v6cA9-0004K2-Su for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:37 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9A-0006h8-N4 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:27 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-269639879c3so2687665ad.2 for ; Wed, 08 Oct 2025 14:56:30 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960589; x=1760565389; 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=OOmjEL78vAj/qpk42Yir5qx6ESIUS3UfNsoScCN3OOA=; b=qB3k+e2qY5DDcrCBBjVTrMNkvm+dfKz+bNHLmdd53/wv1en8s8LunTYnfVzuQRasxM cv0Z7aoGu2EqgupgSVwFMLPYY2xrBgX7rMehqBtUsNmfnT5rCV7tFKHRK7UZDTomoojC bsun1nbZy8sJ9vCv+D8zxcwXCjwAWcI4AiZ1aaX/omWN2Pxv+53nf87aIcaYwT6L1Hz0 5lIJzJ6Kr6l7lDSKlxhR60wQMcPRAgaaCn07I/yKpan4400fXnBagQaVTrRUM4g+ETKw XC7pYIDy1ubVBt8hIHTtSg41D/siaWhDWKUAh7Y1pgZffrOJTcwZZrbRBGvRA3m+9JeU yRGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960589; x=1760565389; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OOmjEL78vAj/qpk42Yir5qx6ESIUS3UfNsoScCN3OOA=; b=d0DL/4Gd6xQG1BiRTNFG7q1QDgInI/InHAOnxm7j4zE3r0grqbW8avwTL7UUSNhLAu WHkrtIl6C1K39bD6AR4f3XbUFfuOgzQtZb7l03z9y8b2zMgob/weYgp3RkJkhMxuJL3w RtaLGq8t3tsJJBtz3ARWWcPjEs2t6cai9NH9HeIzFIsddO+ft8DKSgzqNVGl4LJ8p3Tk LdLRnbpq9PszmXuXkLNfjeWuNKbirarwh+X/770yP/WsmFAdKczj24RrJ/MF+TAatFdZ DDFu35RZGdGNiT26257uwUaKtDCfXbDajrs3LxBWYITooG5fE1FAUzm+8kjsyaAUyfv4 bnjQ== X-Gm-Message-State: AOJu0YxEPfP6AzxXy4I1N39vi1kKuhgr7hp6ecTr7OvsHjpOvu/NMqdx QB7dBTrOppaywpf524AykzM+GEmpvWGPlfYpj0ZfLXWpuQEbqtKTLIA13GeNOandVD41lVPjCj1 72n2s5bc= X-Gm-Gg: ASbGncvjF5XuxA7ybHtOUgq5OTBQyqVhHzYIXB2s8gjtpSAv824jMpmwB8h2o+0jT+5 s3QJgp2ffnpa7o5w/CLHy/t33EtKBCzxoSInEn7km8flWI0sF4xkcUSK5ZKvJgNBo4/g9pjgvU8 QtG2EuAaHul29UlCd/zE2HKDgQ7+fVNHYI0LDbcRIqaT4v2UXfIpN+Nk+dDW5QX7aEWWlDBwYtj yWqhx82h65UbvqFgqb3eH81wQM60whDEWNaco7uQg64Gxho2eUiAT2Y77FyBN7AFFXndIGk1GtM 5mt1Y+xoVVFaG5fOxDMzmx+qFz5U6aHQhjWVMliXPRBnIr1xjno1Bcm0lYjAOBMUXeesqQ9QHHI GALDJKUsobtee0kaNKYgBgmIqLee7Bz+eQI83cNhtBO0cmU9L3HVeqJOU X-Google-Smtp-Source: AGHT+IEX9zCHIOODwKK4zXLuwqQkzxW6f4aaGaxGulDjbkx2OlHZsHu5AjjIETTJVbv96X/OJiECmg== X-Received: by 2002:a17:902:f641:b0:28e:cc41:b0e1 with SMTP id d9443c01a7336-290273ef139mr59739075ad.36.1759960589104; Wed, 08 Oct 2025 14:56:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 22/73] target/arm: Convert regime_is_pan from switch to table Date: Wed, 8 Oct 2025 14:55:22 -0700 Message-ID: <20251008215613.300150-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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, 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: 1759961130963116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 13 ------------- target/arm/mmuidx-internal.h | 8 ++++++++ target/arm/mmuidx.c | 9 +++++---- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index cb2ffeff59..819ada7a5d 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1027,19 +1027,6 @@ static inline void arm_call_el_change_hook(ARMCPU *c= pu) } } =20 -static inline bool regime_is_pan(ARMMMUIdx mmu_idx) -{ - switch (mmu_idx) { - case ARMMMUIdx_Stage1_E1_PAN: - case ARMMMUIdx_E10_1_PAN: - case ARMMMUIdx_E20_2_PAN: - case ARMMMUIdx_E30_3_PAN: - return true; - default: - return false; - } -} - static inline bool regime_is_stage2(ARMMMUIdx mmu_idx) { return mmu_idx =3D=3D ARMMMUIdx_Stage2 || mmu_idx =3D=3D ARMMMUIdx_Sta= ge2_S; diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index f03a2ab94c..41baf1a003 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -16,6 +16,7 @@ FIELD(MMUIDXINFO, ELVALID, 2, 1) FIELD(MMUIDXINFO, REL, 3, 2) FIELD(MMUIDXINFO, RELVALID, 5, 1) FIELD(MMUIDXINFO, 2RANGES, 6, 1) +FIELD(MMUIDXINFO, PAN, 7, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -56,4 +57,11 @@ static inline bool regime_has_2_ranges(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, 2RANGES); } =20 +/* Return true if Privileged Access Never is enabled for this mmu index. */ +static inline bool regime_is_pan(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, PAN); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index f880d21606..98db02b8e5 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -10,6 +10,7 @@ #define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK) #define REL(X) ((X << R_MMUIDXINFO_REL_SHIFT) | R_MMUIDXINFO_RELVALID_MASK) #define R2 R_MMUIDXINFO_2RANGES_MASK +#define PAN R_MMUIDXINFO_PAN_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* @@ -17,24 +18,24 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { */ [ARMMMUIdx_E10_0] =3D EL(0) | REL(1) | R2, [ARMMMUIdx_E10_1] =3D EL(1) | REL(1) | R2, - [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2, + [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2 | PAN, =20 [ARMMMUIdx_E20_0] =3D EL(0) | REL(2) | R2, [ARMMMUIdx_E20_2] =3D EL(2) | REL(2) | R2, - [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2, + [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2 | PAN, =20 [ARMMMUIdx_E2] =3D EL(2) | REL(2), =20 [ARMMMUIdx_E3] =3D EL(3) | REL(3), [ARMMMUIdx_E30_0] =3D EL(0) | REL(3), - [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3), + [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3) | PAN, =20 [ARMMMUIdx_Stage2_S] =3D REL(2), [ARMMMUIdx_Stage2] =3D REL(2), =20 [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2, [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2, - [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2, + [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | PAN, =20 /* * M-profile. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961397; cv=none; d=zohomail.com; s=zohoarc; b=dXF3/5o4VmGbFM/iamp49ie7BzMi+5NX4JBuX1j+oPGfU/VMZdoNlU+WUMQuYYgBjptM4GYkWPNjk6YsT34rX44k+dzJfmb1i0nV2Q7wbyf5juN5Yiq6EEaJfkEo93EEcVoRjhcSvZL9Q55kt9uv46eBbiMsrg77MlibJaz4MsM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961397; 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=Iq3OAeD6sXFj+ZhBz9kaPvsScw2upOaorX+smCRSY5s=; b=d98RjABrtjUEy/zF78rdYt29judVK2tZkilsq3S2soZgr/U7nxkPFqek5WlI4VvN3G1t5F/AGO3o1itTXf0o9cz3b9w5I9HcasU9x3IIcfKundeKNn6qGotULT0W2MTXoItpi03QkeIv22NH4xryQh0YXwCLMtiBpn3Z5mW4ijU= 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 1759961397208988.3777676210381; Wed, 8 Oct 2025 15:09:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAw-0004qb-Su; Wed, 08 Oct 2025 17:58:23 -0400 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 1v6cA9-0004K1-Sv for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:37 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9B-0006hT-Ub for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:28 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b631b435d59so185461a12.0 for ; Wed, 08 Oct 2025 14:56:32 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960590; x=1760565390; 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=Iq3OAeD6sXFj+ZhBz9kaPvsScw2upOaorX+smCRSY5s=; b=fWhiObXJRLZlUg/SHwCrFsNJKFuNqx0D5z4vEpiMOOcVXsRRN0im9B2vlDxiZgiZjW /HZGqt3txbfy0i2Swy+wao4pNxYUkjqjt9+CjnxawuYBuASV+/ThiaoDEdrFz64mat6+ kHJXNBjCdtyArkBgdCR+P96iaHoW1UDq502km2gXM2iBETyHLHUKcQ+y6btP63gAb6im ec2yg9K1AKMuRq3+VAUImc/ojutF9eaxfoj/rVm091W0e6rD+JwohW1JR44/ldsoxFZC O9UiCEc/WCQG+JH8agAekYchjn1+orXihOMfeHFgmNIO7QAif1OcpK+I3YiKtWD1XU86 nx4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960590; x=1760565390; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Iq3OAeD6sXFj+ZhBz9kaPvsScw2upOaorX+smCRSY5s=; b=Wl6ScPR+oJBcODPLz0hA07fYaYXzokp2/bWYu8dfPLjPWWt/HXyhOBdmOkR4f8+JbJ cMEG8b1SLZmLEVMHkJzaYjtW7WEGuoVcREfAu/P29Pk+dBuSdYF7rei6yNRI16yCHSe3 R3neHQZvGTs9K6vQsV+ZD2X6g2nFJUFLsMoDz3fYQTfOU4sSkK7jqCPqESElmMQM/h+9 h0hfmQw7R+aj+z7jpm1dbcr6dubvB/B/hfPkAn1qB9mIW63CA4Xlaevskibv6+xJMar8 h7ilZkBEXRpzTJnyU+zif+X2GnfP7+zX7rHlXHlL4HUV0M8xdsI0ZV4ePC3goWvW61UN wjFA== X-Gm-Message-State: AOJu0YyJqFwugk8hva3eMM5rsY2UyAaXIleTWup/HaI6NAjf4zsj0Mpu VXb5fGOaNR/hQfcAibAEv3GRdd8q+lGvqeKgwsguVtI6zDke8zi8L/2z1oN26NQ7w5ci+CpFmOc Kba+Sv3Y= X-Gm-Gg: ASbGncvvMhpaqxlnmceyWkunhlE7H1CIZ0kHY9Cj5XQ4lL3nDFTpdifc490CntDTfLI gACFxEDB6oU6vu2ZuFl9qscOlTyRE3OR7Um/XENj2mxW2Yfo4JmaeOlNiZTq6QtoMNzVsrDd9cF RCu6Emh1SRuHjkL6DthpaCMMI/2VR1i7r5392CEemSCuzomEzSyJdlvA1BWqYBiZ4AmR5uzoR+G PQO6yaIQuRJN+AUPpMiyqfRWpwppoq51oNB8gqjaYRybu9LJNF21+cmJNK09lmnBV83ZWBTi6Ja kAzBpuJbRdunysef9B4UVgnJmcFbEYZ7z25sGfElBym5wfLjPkolv9SoUXP98DzRR/1QAX7RkMf 1bhQgOlRop5gvkte6YPoW85A2PJecxj/5Kw/33ahE2d6DLlyCQfJKCt4CluaqV1Mct9U= X-Google-Smtp-Source: AGHT+IHiWq7ojIoncac74qyk3rJbfyFXSIajI4PZhcy/fJGiHEVqC7FhuHLuzEXYI+t8kHHFY8Y8Lw== X-Received: by 2002:a17:902:f641:b0:27e:edd9:576e with SMTP id d9443c01a7336-290273ef199mr57700945ad.30.1759960589722; Wed, 08 Oct 2025 14:56:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 23/73] target/arm: Remove unused env argument from regime_is_user Date: Wed, 8 Oct 2025 14:55:23 -0700 Message-ID: <20251008215613.300150-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: 1759961398950154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 2 +- target/arm/helper.c | 2 +- target/arm/ptw.c | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 819ada7a5d..d0d976cbb0 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1032,7 +1032,7 @@ static inline bool regime_is_stage2(ARMMMUIdx mmu_idx) return mmu_idx =3D=3D ARMMMUIdx_Stage2 || mmu_idx =3D=3D ARMMMUIdx_Sta= ge2_S; } =20 -static inline bool regime_is_user(CPUARMState *env, ARMMMUIdx mmu_idx) +static inline bool regime_is_user(ARMMMUIdx mmu_idx) { switch (mmu_idx) { case ARMMMUIdx_E10_0: diff --git a/target/arm/helper.c b/target/arm/helper.c index a55161ef40..aed245fd86 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9450,7 +9450,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, ds =3D extract64(tcr, 59, 1); =20 if (e0pd && cpu_isar_feature(aa64_e0pd, cpu) && - regime_is_user(env, mmu_idx)) { + regime_is_user(mmu_idx)) { epd =3D true; } =20 diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 1080b6d69d..d6d4bf3b23 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1000,7 +1000,7 @@ static int ap_to_rw_prot(CPUARMState *env, ARMMMUIdx = mmu_idx, int ap, int domain_prot) { return ap_to_rw_prot_is_user(env, mmu_idx, ap, domain_prot, - regime_is_user(env, mmu_idx)); + regime_is_user(mmu_idx)); } =20 /* @@ -1026,7 +1026,7 @@ static int simple_ap_to_rw_prot_is_user(int ap, bool = is_user) =20 static int simple_ap_to_rw_prot(CPUARMState *env, ARMMMUIdx mmu_idx, int a= p) { - return simple_ap_to_rw_prot_is_user(ap, regime_is_user(env, mmu_idx)); + return simple_ap_to_rw_prot_is_user(ap, regime_is_user(mmu_idx)); } =20 static bool get_phys_addr_v5(CPUARMState *env, S1Translate *ptw, @@ -1412,7 +1412,7 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx mmu= _idx, bool is_aa64, ARMSecuritySpace in_pa, ARMSecuritySpace out_pa) { ARMCPU *cpu =3D env_archcpu(env); - bool is_user =3D regime_is_user(env, mmu_idx); + bool is_user =3D regime_is_user(mmu_idx); bool have_wxn; int wxn =3D 0; =20 @@ -1574,7 +1574,7 @@ static int get_S1prot_indirect(CPUARMState *env, S1Tr= anslate *ptw, if ((u_perm & (PAGE_RWX | PAGE_GCS)) && regime_is_pan(mmu_idx)) { p_perm &=3D ~(PAGE_READ | PAGE_WRITE); } - perm =3D regime_is_user(env, mmu_idx) ? u_perm : p_perm; + perm =3D regime_is_user(mmu_idx) ? u_perm : p_perm; } =20 if (in_pa !=3D out_pa) { @@ -2421,7 +2421,7 @@ static bool get_phys_addr_pmsav5(CPUARMState *env, uint32_t mask; uint32_t base; ARMMMUIdx mmu_idx =3D ptw->in_mmu_idx; - bool is_user =3D regime_is_user(env, mmu_idx); + bool is_user =3D regime_is_user(mmu_idx); =20 if (regime_translation_disabled(env, mmu_idx, ptw->in_space)) { /* MPU disabled. */ @@ -2588,7 +2588,7 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, ARMCPU *cpu =3D env_archcpu(env); int n; ARMMMUIdx mmu_idx =3D ptw->in_mmu_idx; - bool is_user =3D regime_is_user(env, mmu_idx); + bool is_user =3D regime_is_user(mmu_idx); bool secure =3D arm_space_is_secure(ptw->in_space); =20 result->f.phys_addr =3D address; @@ -2808,7 +2808,7 @@ bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t add= ress, * memory system to use a subpage. */ ARMCPU *cpu =3D env_archcpu(env); - bool is_user =3D regime_is_user(env, mmu_idx); + bool is_user =3D regime_is_user(mmu_idx); int n; int matchregion =3D -1; bool hit =3D false; @@ -3689,7 +3689,7 @@ static bool get_phys_addr_nogpc(CPUARMState *env, S1T= ranslate *ptw, break; } =20 - result->f.attrs.user =3D regime_is_user(env, mmu_idx); + result->f.attrs.user =3D regime_is_user(mmu_idx); =20 /* * Fast Context Switch Extension. This doesn't exist at all in v8. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960713; cv=none; d=zohomail.com; s=zohoarc; b=AeLonbtnTuzSF6lBpkNyEDJPCpgLKQkINQ4sUC1+5hyWiM5+G9aI0vzJJb+ojtjn2xNqu5IS3em6yYK9DznfW8rDHJgvY7GHA4tsW1g87ZqlHgFWpMxK9dIhe+nYAuTLnG6QnxkIhHPxjggwQHqUJnmec1dTlxVOeJEnzZEl9eU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960713; 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=ufbIAsiBDfbdyvsFouOClRyF47XEv9v24R99qbCOlJw=; b=FhKfvF3Yq6Fp1t/UApEA3L5MduUj60u7zYpRd1j2eUgsdKg0qwHnvOnvpYxsXBzVwU1xffiuSZvhYeKiqsD/OffA/RFISY7FoNRCPIdxoog9hIkx7ez6gYTssFG1te5/YQfT0Iiy6Qwh26xv+ABHbNcxChf0H0bJtZza0BLk3gA= 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 1759960713473607.1819953433477; Wed, 8 Oct 2025 14:58:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAI-0004GN-Dj; Wed, 08 Oct 2025 17:57:45 -0400 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 1v6c9y-0004EC-Oj for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:22 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9A-0006hs-Qo for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:22 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-330631e534eso436635a91.0 for ; Wed, 08 Oct 2025 14:56:31 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960590; x=1760565390; 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=ufbIAsiBDfbdyvsFouOClRyF47XEv9v24R99qbCOlJw=; b=Gg9DuAMMhvjP0gHEO9PiqqsMXTXlbh7qq0iKepi8Z+KFzZoppvvFgMvBS93SW0rpU0 pZAloLEA1IAh4I0tCEMRl0vo7jD4jfNYb0xeOtlZ/DrMksk8NI3WUS54nvJJhWy5sB7+ 6wgNZKBTOA00nyKEpXbKTpdLDILDsY9lFDxG0ZD4/vwPP5/+igyVADU3/8DwFSTSm2RD f1fNo+lFl4vUequwb/RCXrR4kmVRGBo6NRlVTtNFVSyKc2T5yZTSbC6e1UyhJKv8U5P8 8ukYOIFu9Ogqk4L4Vs0TAfEHzFE3sXAWKPfqOtlF1ExL0EUdsJnonSLLjAFtoKaSPyrH 0++g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960590; x=1760565390; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ufbIAsiBDfbdyvsFouOClRyF47XEv9v24R99qbCOlJw=; b=bgvdKCh53S8iMKEyLlKuI6wUeC9DLu86v6cppAAZqlmh+w48EbsPKiPUuUhghPtXeu Bx18lLPDGAmxs5LAQTqNXi8HwUYsG5pLmij8dP7n0Zpjb7bTgHcFOGjlLJbhGmXmP0Ma lAdwU+49DyExahoewgBFRirC18Zs4Iynu2YjR7Mi02ipvUg5fVqI1urxtvdc1WSvo53C RkLAx04IaCerIaWCRNjMWeOkpKBs4F5gX6TtNPiqcjw79CQ3NKriWlgTavJiYghwfshN LElQsd6kWh200EVM2SH1DfLTRr/9b04sl3zpuAbYFOEWxHgVrksUNdQdaIMEI3DYuPrV YPKg== X-Gm-Message-State: AOJu0Yyxgne3e+lw+M7P+jfIDcjRhRPmdPWHslH/1FC++5L0aClCu0DS cd7WAs5jsofrUkZdm0EpsgHW7oNAT3LJ1Dl97yNONNQtzNiu3WIg24f7pU+qiQaSI4oyLGuoeSu RmU9xCTY= X-Gm-Gg: ASbGncvsJeVoLwHMlU7efiSzuyzEzX5iEoxIkPyR1OYjAbNzEpVLD5XVA/41g3mCSb8 B/S7HUp/YRqn4AeEtkhPzFuwNTimtceguRwPMkInq64mjEDx18NWuJWZhaqe7V084RCMwTixgfF b4Z6OAIBqvgWmgr7ciV56gNM2+dfejAmXhMVP2WFmX3bUHz+Yk188ykJKNF403GvAGXakvtijTH CMBwkboBW4sNIEI5T0u1hjJ+3oXzsptG00ysIULhV+jeUZhS7J8Kl4q21lBQOilp8ApfCQspPCg 2gJ2VhUAfJQ45T8oluJ7iC3taAOQf+YhpAua7hYkr3dGeuGaiRVwrfnLa+HOlXYcMWYJvgmtISL AmZkbuTPmJbP1DsMzxIM1Lr3yIf5bCZpKg9xgz13Qb3cylO3WBIrzfbcg X-Google-Smtp-Source: AGHT+IGvP1goTOTfBy8gabTXv88eAl2t67KKNYtu0TZTvBYwL2CLNi1dfGzU4AOsUcC3sBdBRGLDFA== X-Received: by 2002:a17:902:fc4c:b0:273:ab5f:a507 with SMTP id d9443c01a7336-290273799aemr70991105ad.21.1759960590321; Wed, 08 Oct 2025 14:56:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 24/73] target/arm: Convert regime_is_user from switch to table Date: Wed, 8 Oct 2025 14:55:24 -0700 Message-ID: <20251008215613.300150-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.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: 1759960714490154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 17 ----------------- target/arm/mmuidx-internal.h | 12 ++++++++++++ target/arm/mmuidx.c | 6 ++++-- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index d0d976cbb0..c4aef8b50e 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1032,23 +1032,6 @@ static inline bool regime_is_stage2(ARMMMUIdx mmu_id= x) return mmu_idx =3D=3D ARMMMUIdx_Stage2 || mmu_idx =3D=3D ARMMMUIdx_Sta= ge2_S; } =20 -static inline bool regime_is_user(ARMMMUIdx mmu_idx) -{ - switch (mmu_idx) { - case ARMMMUIdx_E10_0: - case ARMMMUIdx_E20_0: - case ARMMMUIdx_E30_0: - case ARMMMUIdx_Stage1_E0: - case ARMMMUIdx_MUser: - case ARMMMUIdx_MSUser: - case ARMMMUIdx_MUserNegPri: - case ARMMMUIdx_MSUserNegPri: - return true; - default: - return false; - } -} - /* Return the SCTLR value which controls this address translation regime */ static inline uint64_t regime_sctlr(CPUARMState *env, ARMMMUIdx mmu_idx) { diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 41baf1a003..3e51c0f579 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -17,6 +17,7 @@ FIELD(MMUIDXINFO, REL, 3, 2) FIELD(MMUIDXINFO, RELVALID, 5, 1) FIELD(MMUIDXINFO, 2RANGES, 6, 1) FIELD(MMUIDXINFO, PAN, 7, 1) +FIELD(MMUIDXINFO, USER, 8, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -64,4 +65,15 @@ static inline bool regime_is_pan(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, PAN); } =20 +/* + * Return true if the exception level associated with this mmu index is 0. + * Differs from arm_mmu_idx_to_el(idx) =3D=3D 0 in that this allows queryi= ng + * Stage1 and Stage2 mmu indexes. + */ +static inline bool regime_is_user(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, USER); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 98db02b8e5..1c1e062bfe 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -7,10 +7,12 @@ #include "mmuidx-internal.h" =20 =20 -#define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK) +#define EL(X) ((X << R_MMUIDXINFO_EL_SHIFT) | R_MMUIDXINFO_ELVALID_MASK |= \ + ((X =3D=3D 0) << R_MMUIDXINFO_USER_SHIFT)) #define REL(X) ((X << R_MMUIDXINFO_REL_SHIFT) | R_MMUIDXINFO_RELVALID_MASK) #define R2 R_MMUIDXINFO_2RANGES_MASK #define PAN R_MMUIDXINFO_PAN_MASK +#define USER R_MMUIDXINFO_USER_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* @@ -33,7 +35,7 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_Stage2_S] =3D REL(2), [ARMMMUIdx_Stage2] =3D REL(2), =20 - [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2, + [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | USER, [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2, [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | PAN, =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961171; cv=none; d=zohomail.com; s=zohoarc; b=kZMxL7DkIOvft1NJJq1zj2qMuP5SC5R2qzYFpZWZAk2oHVP6UmTBCQpB9xWd9BR34g53hLzJ/RyqZ8XTo2CSlcDPYI+XnXVb1QUpWksuu+O6OHJ1HJOJCfPS/VLlJoqUrIceHOiIWMIGrS9ifkrROVZ9vQI996hvzFTRbynkRsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961171; 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=0p1hanRYc7NHYEvNwoMomn9iSUP620JiV2mzUBtwmTE=; b=J2LoajANA1feyfsnmJmx8MWhmJsJ9HmZy/r5SZLawhNJZ3I8DBSjdj0Pgp26BhWk+Ywx2u+cKjTV0NfxwixdIYW15OX0tXmubFS55+7xob1dkHESwMw53dUJqXIKQwBPaCb4QLKXL6DSncVRW0Dem4kwBLfSYzB8LNHl/501FMA= 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 1759961171066764.6603968712997; Wed, 8 Oct 2025 15:06:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBF-00051X-BO; Wed, 08 Oct 2025 17:58:41 -0400 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 1v6cAJ-0004Nm-Tk for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:46 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9D-0006iA-1m for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:38 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2698d47e776so2192655ad.1 for ; Wed, 08 Oct 2025 14:56:32 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960591; x=1760565391; 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=0p1hanRYc7NHYEvNwoMomn9iSUP620JiV2mzUBtwmTE=; b=IlBygRYMSzb03axvVSukFYu40XqLsp7/0d2zLePxRmPkVQHV0YQ13vx1QATOM/QnDK 4f88c2bydr/OIyoMqvqCBnfZxLDHK8FdEeZdvPyKvJX3/MDovcv8ohSRNh8pjahhKXDH iEaI6cD+epJGWvdt2/J5KGm8biPbSF+FZqq703AtsAwAmCQ21+rn2vM00IS1aplBhEmb yMUzbvsaFHAgwhiySF4Gv5u85kc5uwj3W1GPhkW6NRXvrPsjEylA0PjpDDVsp/G5CzUP 3+gQbQrdXO3WqgvM//TI10MKXQIyfyp5+Z9YZcpnaCueDHvG1z/hJu6Iyi2WGOstgdVv 9zhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960591; x=1760565391; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0p1hanRYc7NHYEvNwoMomn9iSUP620JiV2mzUBtwmTE=; b=uUPIsahJ2j6QoNb2+3jRi2p0vOl6Q9dqEWaxaNE6zfYSThVfjRpLD1ONQYP52mdUIP cQFxlZNdQAHqRJdDyAs7lHMbyy6n6xFKu7sC2FDdRXgjxlxF5Ld+XzpJO3ok9FbQA9lg ZXJ5SL9RfigIbwpo+6PG5Izd6pnrscAAuJuFrIWtnZ6wZUwcGgHd4NcpDArJIlccEVVU yLgqyyjwRYfUqm3dvxtHNBCKpgI0DwT97o1ecHY04AZx1UJ7QdVva3s7hUprX9YDmHsz hheZhxv5AfoKgITs+1CxiR9j8CnVTncvtQcFGqwlDyvsfWDcwEooPUUODo/Npg2itYX1 S99Q== X-Gm-Message-State: AOJu0YxgBu74TKvg1LvXY/SrhwQiDXjl1e4FWUb2cXfTddjJO2D94yA7 1w+f9TFszANd6ojdL2PFcZ9tw81BbxMhaKIV1b58uJ92a8u10zEHiVrmOcayMK0+V1Ljp1zg9Xi y7U1g0Io= X-Gm-Gg: ASbGncvDslc/NsADF2fD51U/sW+GDcJgP4ZTT9N6Jv+loagTL0Qy3cIQ/cA/sv0ZLgs AO6iUmlImovr0BPI60Z+Mts32zOZV71ibtDxAnEC0JcOEGqKCIdRL4FEhpNB5fRIH21g1VoxpcF tbSINNHuyaRUfwsiwxoUrqkwEKSVNKhsoD/D1yKA+dEt26nkfw5YFnsKEIqZKw/vO9Z8WjEYiaa yLrE6gtii/yhs/ulDDTSlvpvW432s237gDnjkQlSLPuXszQrP0nNXkoWTol1nIkmKnbYQsAOOT2 PrSLTStcR00NVf47qlE0CFImREdv8D8xiyJlfBydNHZCwNtpLMEYCRkG1fy2Wr65laUMDxs7cSH Q/HpBy1BrmEGK8jfAqBOtMMo7Cl3ubptjN22ap+/SErYfPrH0TyK6i8PU X-Google-Smtp-Source: AGHT+IFdgi3ixpkizOpFkWQ+9yDJStVBoCH4MhRsh/sHS4Gab3vehLQ10fsGcWMeKuHRb2olFh/iDg== X-Received: by 2002:a17:903:1107:b0:275:f932:8636 with SMTP id d9443c01a7336-29027344a2amr72268775ad.38.1759960590960; Wed, 08 Oct 2025 14:56:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 25/73] target/arm: Convert arm_mmu_idx_is_stage1_of_2 from switch to table Date: Wed, 8 Oct 2025 14:55:25 -0700 Message-ID: <20251008215613.300150-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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, T_SPF_TEMPERROR=0.01 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: 1759961174365116600 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 19 ------------------- target/arm/mmuidx-internal.h | 8 ++++++++ target/arm/mmuidx.c | 7 ++++--- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index c4aef8b50e..92883b6c0e 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1285,25 +1285,6 @@ ARMMMUIdx stage_1_mmu_idx(ARMMMUIdx mmu_idx); ARMMMUIdx arm_stage1_mmu_idx(CPUARMState *env); #endif =20 -/** - * arm_mmu_idx_is_stage1_of_2: - * @mmu_idx: The ARMMMUIdx to test - * - * Return true if @mmu_idx is a NOTLB mmu_idx that is the - * first stage of a two stage regime. - */ -static inline bool arm_mmu_idx_is_stage1_of_2(ARMMMUIdx mmu_idx) -{ - switch (mmu_idx) { - case ARMMMUIdx_Stage1_E0: - case ARMMMUIdx_Stage1_E1: - case ARMMMUIdx_Stage1_E1_PAN: - return true; - default: - return false; - } -} - static inline uint32_t aarch32_cpsr_valid_mask(uint64_t features, const ARMISARegisters *id) { diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 3e51c0f579..55fba4aae2 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -18,6 +18,7 @@ FIELD(MMUIDXINFO, RELVALID, 5, 1) FIELD(MMUIDXINFO, 2RANGES, 6, 1) FIELD(MMUIDXINFO, PAN, 7, 1) FIELD(MMUIDXINFO, USER, 8, 1) +FIELD(MMUIDXINFO, STAGE1, 9, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -76,4 +77,11 @@ static inline bool regime_is_user(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, USER); } =20 +/* Return true if this mmu index is stage 1 of a 2-stage translation. */ +static inline bool arm_mmu_idx_is_stage1_of_2(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, STAGE1); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 1c1e062bfe..c5b43a5932 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -13,6 +13,7 @@ #define R2 R_MMUIDXINFO_2RANGES_MASK #define PAN R_MMUIDXINFO_PAN_MASK #define USER R_MMUIDXINFO_USER_MASK +#define S1 R_MMUIDXINFO_STAGE1_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* @@ -35,9 +36,9 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_Stage2_S] =3D REL(2), [ARMMMUIdx_Stage2] =3D REL(2), =20 - [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | USER, - [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2, - [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | PAN, + [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | S1 | USER, + [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2 | S1, + [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | S1 | PAN, =20 /* * M-profile. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960768; cv=none; d=zohomail.com; s=zohoarc; b=S8YR5q77gsn+28EGKe4c/DKA9oifz0w2x3nZPaWpTLK3FKkqq4Cb8fNZ+PPqN/7JnHoUTc3iOWjidw9QvSQeUlh4gWwu5tcphOeKxazuVW8lQEAByqvM7xbznr1s5qkSOPwEG/nTsrqPXC+SY0I8nDPuWn3WDCBxxd4x+1kcsYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960768; 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=NKF95GX8K6UQPc+7dLjJ/vwGmksDSxb1988rF41Urv8=; b=Ns7UwcMUCuhYN6XfDvR9/RttbVvukbApNgPqs/LBUHK6sEp4R0ekRWTF804yH85ajDvx7iaRoklF+/yZlnPEhRKkph5DSSrZlyHIOLguU8y+5xQDT6+3ODt1idZpcYFeFL3s44TqpfVdp3GIPNdkWcSCVPKKjpcQjb/lptJDar8= 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 175996076854679.3933026847152; Wed, 8 Oct 2025 14:59:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAv-0004pr-Eo; Wed, 08 Oct 2025 17:58:22 -0400 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 1v6cAI-0004Nh-PV for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9D-0006iF-Px for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:35 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-782e93932ffso269510b3a.3 for ; Wed, 08 Oct 2025 14:56:34 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960591; x=1760565391; 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=NKF95GX8K6UQPc+7dLjJ/vwGmksDSxb1988rF41Urv8=; b=tolqMSiLqv6vLWknTsOVzO9d492riIqCBSsLln8nfTTd6VAE5Q64ziGVANVgnngeph IhgL1L0nmUOj93p1PDO3GHJGpFCilbroA0fYs56CpZX6W12VTw4cnmcfhUHoCJ/10I6x OOfUfJ9p1jT/sQ7pdPzpK5cXC/zyBbgYxRrxZPcly8inGpkSc/+xop7247C9brh3SjYh 4xzmguTy87vI0rJFibTgUtP9RgZX/wobg7uDcXUBamI59zEdLEx8m4lpMniqCBCDDk8S 325J45gxs+wgUyB6pf3JWghTsSeZDrP9cUXIcDMdil7KtY2ZiC7VZgqX6yYtHjamZ1t0 MecQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960591; x=1760565391; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NKF95GX8K6UQPc+7dLjJ/vwGmksDSxb1988rF41Urv8=; b=WMkllNOfQJ3WLk7qmEZXaLTVlZQ+Fw2v6mRR9QfHwhiS7cKS/GaYAN6mP8k4r6paE7 jOg6mMMDZx0/wK61UJx/Hxx9y5vmrRvjkptmO+VWFB3KvzDHXn4ZIPkB8/Xzi84W6XQW ieZz7LxRJvy/f83hf3qcQCH+yHveya1qrTp2slnXxhf96nfqxRD68tdYAx2QgHOtNaYC ILCJuV50XK+5MEmBq/fb4WrCpPZrR5BmysmncNRC/PfmoRpNEN2HdLXTvYQiLaEC3NgT 1wRwgdEBXSIM+kWWTwPaLvxnCyKykcnthQD9IkNRgTnDOlMxoCLPzC+l9oCbPMUfdWHQ F7KA== X-Gm-Message-State: AOJu0Yzg7YwZOLyH7xJtpfWcqBRFSbDC15JAQ2b0JVh+xSkRW8TBZbD+ 48Fq+oOxw2LRS9SG6AQQolY4IMqY9vHSrZtt9wspnSO3jhn8pB4VlTwp+Zz4Ok/R2oXuDmpQikd N7BQh0/Q= X-Gm-Gg: ASbGncvYteBt/RAYsQDbDH8kY6qoxBjmeWo1a6HOE4n8142yuMWrRvRUd+IS/ZPfcmf 7JYAVyGbwvciqCbPxEfgVJlt/7uzRb3ml3WmnyRxLsn2uca0ZNyFft00LScMHPqNaGo2KsV/CFJ y15mRDP+YI9Nq5fHzdFDrZwRHnY3SqTGVGw5JaMpq1QgaexeoH4vQAFAbncUbZH8vLi8Kdk+1Ev kaTX508h0XwJd95SUxB4lozxlGWWZ2UV5qnId4l0GCovGc0RlZQ8QYXyRDq65pyr9nv+H5Av9d+ HxkD7OpuF7UuYR8HKTrf7aysLlFU/OBeK0bdq+5N3nBjgzTXD8bR7bTrLY1SxZBXsESMWfiWVm1 ayoSYM1RCuM9AqICygvJLb4Czbqj+K9dELFVfpQeu+Rc8Dn5VHwJFQ73C X-Google-Smtp-Source: AGHT+IF4fAyhjfc92SbDAqQE8B2sCI0bKKDuBmxUt9o1gRNvjc1rDBwTNz82G91PNQHMc8OKjJRQMg== X-Received: by 2002:a17:903:2d0:b0:25e:78db:4a0d with SMTP id d9443c01a7336-290273eddd5mr63870355ad.36.1759960591563; Wed, 08 Oct 2025 14:56:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v7 26/73] target/arm: Convert regime_is_stage2 to table Date: Wed, 8 Oct 2025 14:55:26 -0700 Message-ID: <20251008215613.300150-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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: 1759960769087154100 This wasn't using a switch, but two comparisons. Convert it to arm_mmuidx_table for consistency. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/internals.h | 5 ----- target/arm/mmuidx-internal.h | 8 ++++++++ target/arm/mmuidx.c | 5 +++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 92883b6c0e..591b509e68 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1027,11 +1027,6 @@ static inline void arm_call_el_change_hook(ARMCPU *c= pu) } } =20 -static inline bool regime_is_stage2(ARMMMUIdx mmu_idx) -{ - return mmu_idx =3D=3D ARMMMUIdx_Stage2 || mmu_idx =3D=3D ARMMMUIdx_Sta= ge2_S; -} - /* Return the SCTLR value which controls this address translation regime */ static inline uint64_t regime_sctlr(CPUARMState *env, ARMMMUIdx mmu_idx) { diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 55fba4aae2..1d948aa6f4 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -19,6 +19,7 @@ FIELD(MMUIDXINFO, 2RANGES, 6, 1) FIELD(MMUIDXINFO, PAN, 7, 1) FIELD(MMUIDXINFO, USER, 8, 1) FIELD(MMUIDXINFO, STAGE1, 9, 1) +FIELD(MMUIDXINFO, STAGE2, 10, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -84,4 +85,11 @@ static inline bool arm_mmu_idx_is_stage1_of_2(ARMMMUIdx = idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, STAGE1); } =20 +/* Return true if this mmu index is stage 2 of a 2-stage translation. */ +static inline bool regime_is_stage2(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, STAGE2); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index c5b43a5932..61a682e655 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -14,6 +14,7 @@ #define PAN R_MMUIDXINFO_PAN_MASK #define USER R_MMUIDXINFO_USER_MASK #define S1 R_MMUIDXINFO_STAGE1_MASK +#define S2 R_MMUIDXINFO_STAGE2_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* @@ -33,8 +34,8 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_E30_0] =3D EL(0) | REL(3), [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3) | PAN, =20 - [ARMMMUIdx_Stage2_S] =3D REL(2), - [ARMMMUIdx_Stage2] =3D REL(2), + [ARMMMUIdx_Stage2_S] =3D REL(2) | S2, + [ARMMMUIdx_Stage2] =3D REL(2) | S2, =20 [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | S1 | USER, [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2 | S1, --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961064; cv=none; d=zohomail.com; s=zohoarc; b=J8xyRfqbjmLb76UtmBHeWKbXMv8TdXvX5jubX4qJ/19FWZAaLicDrQVUbVAnsdkz2hz9Q+I1eTTJI4ZJZkbqyZK6dlPBlHIu3GNr70PR0ReFbaQxRZ08d9uxy7Quj8RBQFxixk4lmU4IrCPg22G58Ae4RFQIvwQiiVmQaeUixWE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961064; h=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=ov3BeijxWQjsP0TkJlKwkPsFlukXVk3u5jMcRmgEx0E=; b=hKGfX9f0bYpuZhNvGc5WflWiuP2c2q1kqRq5DB2AE7bVf2J5PIYclmCi51yoSoe4zap8H185mZUzqH7GLEDNp1gRzF18bSXJ7ftu89Kmbs5uTwmpATty5QCLhaKUdkT0r8dI8iR4WzoIStlTg/Q7t4ayxGZ0uRNmACmgtkMOXuE= 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 1759961064196423.79604305598366; Wed, 8 Oct 2025 15:04:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAp-0004fF-5n; Wed, 08 Oct 2025 17:58:15 -0400 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 1v6cA2-0004G4-Km for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:26 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9D-0006ia-6G for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:26 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-b554bb615dcso164320a12.1 for ; Wed, 08 Oct 2025 14:56:34 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960592; x=1760565392; 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=ov3BeijxWQjsP0TkJlKwkPsFlukXVk3u5jMcRmgEx0E=; b=rahkE5SNB1GOBcKd1xUcfm4W12/V5Tujd3WJcV0qDM5tFyjDhIuktXtknhyRHywqAf o3oEAOE7C3SWC89m1R+aQw0q/u0kgAxqDPoTEfVipL56NdvhwZEtobVGQbluaf6gzbND ae91oss7HAXs1Wf0ChR2z7LgCPsk+8xCfeBKI2+JRLEQNQAtI5v5kAjE7czUrs+or5rJ Xddlpe8leVxymg/n8iyboT7AdxDxsziVfelnTEjjr6PHr+LmauyC6Fiy36qiaaYZbKy+ x9yX5o3fn4z5Xg60mFUZM7lF0w5LY9Llt37ID9sIeISxQA7pZAxi1N99xM1V7UCcPqEG Zw8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960592; x=1760565392; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ov3BeijxWQjsP0TkJlKwkPsFlukXVk3u5jMcRmgEx0E=; b=PFYqTjFD53kgled0UTDeYsx4GHk0F04DDfMz3R/ikFRwXK7FDh0oubHK5qYGxzbM+1 6VgPy6j5HMQYvCdjecJAak2116XF7d+OPlyCBk7RLkEs0uGvdy1G3GCzGQXOlohYGDNp 5wffk1KjL9rBgiZx+swwbGPZMLB6TUv9IWgO2DE4icfyhZlBXP/5kv1a5n04xbHqW5Fg vjTggFm3+HyF4IWG0OrY6+rd1+UJXiyJUOtcuOAUWLGq38pd5/yJ/AODHPNAXwY8k7L7 9MDfV8eCaGJvp3bioySGmUxgyjBYmrphqmkR84TBJwEIOLJezCZ3DOoEDjceyw9ZXgWH QRhQ== X-Gm-Message-State: AOJu0YwdyhsRbPuHb4GdJIAwbpKMtuwcfbigGmlRRz5bCG8F+oWarak1 VkMjGHDLPG15wv2leI7fx8fn7UhNiyfK4LLfy3WARSVyJej3LGH61z4ysUc3pEERMdin6OiD6TR iVeWQWCw= X-Gm-Gg: ASbGnctV8MPWE/qBZQaJ/abG8PfLlTGmzy/haWDa+ItRF/z++VptAwD8Dc0L/2U5A8s ZzlGPG888uclv3CueWHqnlAdxhnyC4caWB+fmrksf445W61qJ5r8hB9KfPRu5+qDdP49tLe9OPd GCSTdlkibv50Vpc0GPCmlGPvqBZMjCwx2Tr7yaxQQYKUexnjPyuosQkAnGFJdsD/MPkwm5TlVGi QWAif6j7cWLWwzrwBLOpKWH3rWMg9fbsKP+z2dxgfwGbtHoyiUUM2FrjvPyOi9ju0atV2YZdJMq 7yCadlM0l0R8cVsIpvMCBksYfmDz3L/LWPvAoA3xhteYGs3BhhEccnEt11gRLlXz4mneVzehEDS mhnW+vWLaDWe6wn0XC4pLsO3fOSlTgpy2Rp86wKJjSliGGsswK+2OfIpH X-Google-Smtp-Source: AGHT+IEyIXWopUTDw+d4vdQ+uQ9pUCXvsj+okzmJaycqYva126AbYsvYYSfoR/qMesWk7y00h67NLg== X-Received: by 2002:a17:902:e945:b0:269:8f2d:5221 with SMTP id d9443c01a7336-29027290222mr56927915ad.9.1759960592206; Wed, 08 Oct 2025 14:56:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 27/73] target/arm: Introduce mmu indexes for GCS Date: Wed, 8 Oct 2025 14:55:27 -0700 Message-ID: <20251008215613.300150-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1759961069721116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/hw/core/cpu.h | 5 ++- target/arm/mmuidx-internal.h | 8 ++++ target/arm/mmuidx.h | 71 ++++++++++++++++++++++++------------ target/arm/helper.c | 15 ++++++-- target/arm/mmuidx.c | 9 +++++ target/arm/ptw.c | 20 ++++++++++ target/arm/tcg/tlb-insns.c | 47 ++++++++++++++++-------- 7 files changed, 132 insertions(+), 43 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 60d3f01900..bef702799a 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -198,9 +198,10 @@ struct CPUClass { }; =20 /* - * Fix the number of mmu modes to 16. + * Fix the number of mmu modes across all targets. + * Current maximum is target/arm/. */ -#define NB_MMU_MODES 16 +#define NB_MMU_MODES 22 typedef uint32_t MMUIdxMap; =20 /* Use a fully associative victim tlb of 8 entries. */ diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 1d948aa6f4..f494ec348d 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -20,6 +20,7 @@ FIELD(MMUIDXINFO, PAN, 7, 1) FIELD(MMUIDXINFO, USER, 8, 1) FIELD(MMUIDXINFO, STAGE1, 9, 1) FIELD(MMUIDXINFO, STAGE2, 10, 1) +FIELD(MMUIDXINFO, GCS, 11, 1) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -92,4 +93,11 @@ static inline bool regime_is_stage2(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, STAGE2); } =20 +/* Return true if this mmu index implies AccessType_GCS. */ +static inline bool regime_is_gcs(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, GCS); +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.h b/target/arm/mmuidx.h index 5b9b4bc84f..8d8d27337e 100644 --- a/target/arm/mmuidx.h +++ b/target/arm/mmuidx.h @@ -58,24 +58,31 @@ * already heavyweight. * 8. we cannot fold together Stage 2 Secure and Stage 2 NonSecure, * because both are in use simultaneously for Secure EL2. + * 9. we need separate indexes for handling AccessType_GCS. * * This gives us the following list of cases: * * EL0 EL1&0 stage 1+2 (aka NS PL0 PL1&0 stage 1+2) + * EL0 EL1&0 stage 1+2 +GCS * EL1 EL1&0 stage 1+2 (aka NS PL1 PL1&0 stage 1+2) * EL1 EL1&0 stage 1+2 +PAN (aka NS PL1 P1&0 stage 1+2 +PAN) + * EL1 EL1&0 stage 1+2 +GCS * EL0 EL2&0 + * EL0 EL2&0 +GCS * EL2 EL2&0 * EL2 EL2&0 +PAN + * EL2 EL2&0 +GCS * EL2 (aka NS PL2) + * EL2 +GCS * EL3 (aka AArch32 S PL1 PL1&0) + * EL3 +GCS * AArch32 S PL0 PL1&0 (we call this EL30_0) * AArch32 S PL1 PL1&0 +PAN (we call this EL30_3_PAN) * Stage2 Secure * Stage2 NonSecure * plus one TLB per Physical address space: S, NS, Realm, Root * - * for a total of 16 different mmu_idx. + * for a total of 22 different mmu_idx. * * R profile CPUs have an MPU, but can use the same set of MMU indexes * as A profile. They only need to distinguish EL0 and EL1 (and @@ -114,9 +121,9 @@ * For M profile we arrange them to have a bit for priv, a bit for negpri * and a bit for secure. */ -#define ARM_MMU_IDX_A 0x10 /* A profile */ -#define ARM_MMU_IDX_NOTLB 0x20 /* does not have a TLB */ -#define ARM_MMU_IDX_M 0x40 /* M profile */ +#define ARM_MMU_IDX_A 0x20 /* A profile */ +#define ARM_MMU_IDX_NOTLB 0x40 /* does not have a TLB */ +#define ARM_MMU_IDX_M 0x80 /* M profile */ =20 /* Meanings of the bits for M profile mmu idx values */ #define ARM_MMU_IDX_M_PRIV 0x1 @@ -125,22 +132,32 @@ =20 #define ARM_MMU_IDX_TYPE_MASK \ (ARM_MMU_IDX_A | ARM_MMU_IDX_M | ARM_MMU_IDX_NOTLB) -#define ARM_MMU_IDX_COREIDX_MASK 0xf +#define ARM_MMU_IDX_COREIDX_MASK 0x1f =20 typedef enum ARMMMUIdx { /* * A-profile. */ - ARMMMUIdx_E10_0 =3D 0 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_0 =3D 1 | ARM_MMU_IDX_A, - ARMMMUIdx_E10_1 =3D 2 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_2 =3D 3 | ARM_MMU_IDX_A, - ARMMMUIdx_E10_1_PAN =3D 4 | ARM_MMU_IDX_A, - ARMMMUIdx_E20_2_PAN =3D 5 | ARM_MMU_IDX_A, - ARMMMUIdx_E2 =3D 6 | ARM_MMU_IDX_A, - ARMMMUIdx_E3 =3D 7 | ARM_MMU_IDX_A, - ARMMMUIdx_E30_0 =3D 8 | ARM_MMU_IDX_A, - ARMMMUIdx_E30_3_PAN =3D 9 | ARM_MMU_IDX_A, + + ARMMMUIdx_E10_0 =3D 0 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_0_GCS =3D 1 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_1 =3D 2 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_1_PAN =3D 3 | ARM_MMU_IDX_A, + ARMMMUIdx_E10_1_GCS =3D 4 | ARM_MMU_IDX_A, + + ARMMMUIdx_E20_0 =3D 5 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_0_GCS =3D 6 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_2 =3D 7 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_2_PAN =3D 8 | ARM_MMU_IDX_A, + ARMMMUIdx_E20_2_GCS =3D 9 | ARM_MMU_IDX_A, + + ARMMMUIdx_E2 =3D 10 | ARM_MMU_IDX_A, + ARMMMUIdx_E2_GCS =3D 11 | ARM_MMU_IDX_A, + + ARMMMUIdx_E3 =3D 12 | ARM_MMU_IDX_A, + ARMMMUIdx_E3_GCS =3D 13 | ARM_MMU_IDX_A, + ARMMMUIdx_E30_0 =3D 14 | ARM_MMU_IDX_A, + ARMMMUIdx_E30_3_PAN =3D 15 | ARM_MMU_IDX_A, =20 /* * Used for second stage of an S12 page table walk, or for descriptor @@ -148,14 +165,14 @@ typedef enum ARMMMUIdx { * are in use simultaneously for SecureEL2: the security state for * the S2 ptw is selected by the NS bit from the S1 ptw. */ - ARMMMUIdx_Stage2_S =3D 10 | ARM_MMU_IDX_A, - ARMMMUIdx_Stage2 =3D 11 | ARM_MMU_IDX_A, + ARMMMUIdx_Stage2_S =3D 16 | ARM_MMU_IDX_A, + ARMMMUIdx_Stage2 =3D 17 | ARM_MMU_IDX_A, =20 /* TLBs with 1-1 mapping to the physical address spaces. */ - ARMMMUIdx_Phys_S =3D 12 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_NS =3D 13 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_Root =3D 14 | ARM_MMU_IDX_A, - ARMMMUIdx_Phys_Realm =3D 15 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_S =3D 18 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_NS =3D 19 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_Root =3D 20 | ARM_MMU_IDX_A, + ARMMMUIdx_Phys_Realm =3D 21 | ARM_MMU_IDX_A, =20 /* * These are not allocated TLBs and are used only for AT system @@ -164,6 +181,8 @@ typedef enum ARMMMUIdx { ARMMMUIdx_Stage1_E0 =3D 0 | ARM_MMU_IDX_NOTLB, ARMMMUIdx_Stage1_E1 =3D 1 | ARM_MMU_IDX_NOTLB, ARMMMUIdx_Stage1_E1_PAN =3D 2 | ARM_MMU_IDX_NOTLB, + ARMMMUIdx_Stage1_E0_GCS =3D 3 | ARM_MMU_IDX_NOTLB, + ARMMMUIdx_Stage1_E1_GCS =3D 4 | ARM_MMU_IDX_NOTLB, =20 /* * M-profile. @@ -187,13 +206,19 @@ typedef enum ARMMMUIdx { =20 typedef enum ARMMMUIdxBit { TO_CORE_BIT(E10_0), - TO_CORE_BIT(E20_0), + TO_CORE_BIT(E10_0_GCS), TO_CORE_BIT(E10_1), TO_CORE_BIT(E10_1_PAN), - TO_CORE_BIT(E2), + TO_CORE_BIT(E10_1_GCS), + TO_CORE_BIT(E20_0), + TO_CORE_BIT(E20_0_GCS), TO_CORE_BIT(E20_2), TO_CORE_BIT(E20_2_PAN), + TO_CORE_BIT(E20_2_GCS), + TO_CORE_BIT(E2), + TO_CORE_BIT(E2_GCS), TO_CORE_BIT(E3), + TO_CORE_BIT(E3_GCS), TO_CORE_BIT(E30_0), TO_CORE_BIT(E30_3_PAN), TO_CORE_BIT(Stage2), diff --git a/target/arm/helper.c b/target/arm/helper.c index aed245fd86..6642cae0cc 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -420,7 +420,9 @@ int alle1_tlbmask(CPUARMState *env) */ return (ARMMMUIdxBit_E10_1 | ARMMMUIdxBit_E10_1_PAN | + ARMMMUIdxBit_E10_1_GCS | ARMMMUIdxBit_E10_0 | + ARMMMUIdxBit_E10_0_GCS | ARMMMUIdxBit_Stage2 | ARMMMUIdxBit_Stage2_S); } @@ -808,12 +810,17 @@ static void scr_write(CPUARMState *env, const ARMCPRe= gInfo *ri, uint64_t value) */ if (changed & (SCR_NS | SCR_NSE)) { tlb_flush_by_mmuidx(env_cpu(env), (ARMMMUIdxBit_E10_0 | + ARMMMUIdxBit_E10_0_GCS | ARMMMUIdxBit_E20_0 | + ARMMMUIdxBit_E20_0_GCS | ARMMMUIdxBit_E10_1 | - ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E10_1_PAN | + ARMMMUIdxBit_E10_1_GCS | + ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E2)); + ARMMMUIdxBit_E20_2_GCS | + ARMMMUIdxBit_E2 | + ARMMMUIdxBit_E2_GCS)); } } =20 @@ -2787,7 +2794,9 @@ static void vmsa_tcr_ttbr_el2_write(CPUARMState *env,= const ARMCPRegInfo *ri, (arm_hcr_el2_eff(env) & HCR_E2H)) { uint16_t mask =3D ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E20_0; + ARMMMUIdxBit_E20_2_GCS | + ARMMMUIdxBit_E20_0 | + ARMMMUIdxBit_E20_0_GCS; tlb_flush_by_mmuidx(env_cpu(env), mask); } raw_write(env, ri, value); diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 61a682e655..42b003db9c 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -15,22 +15,29 @@ #define USER R_MMUIDXINFO_USER_MASK #define S1 R_MMUIDXINFO_STAGE1_MASK #define S2 R_MMUIDXINFO_STAGE2_MASK +#define GCS R_MMUIDXINFO_GCS_MASK =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* * A-profile. */ [ARMMMUIdx_E10_0] =3D EL(0) | REL(1) | R2, + [ARMMMUIdx_E10_0_GCS] =3D EL(0) | REL(1) | R2 | GCS, [ARMMMUIdx_E10_1] =3D EL(1) | REL(1) | R2, [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2 | PAN, + [ARMMMUIdx_E10_1_GCS] =3D EL(1) | REL(1) | R2 | GCS, =20 [ARMMMUIdx_E20_0] =3D EL(0) | REL(2) | R2, + [ARMMMUIdx_E20_0_GCS] =3D EL(0) | REL(2) | R2 | GCS, [ARMMMUIdx_E20_2] =3D EL(2) | REL(2) | R2, [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2 | PAN, + [ARMMMUIdx_E20_2_GCS] =3D EL(2) | REL(2) | R2 | GCS, =20 [ARMMMUIdx_E2] =3D EL(2) | REL(2), + [ARMMMUIdx_E2_GCS] =3D EL(2) | REL(2) | GCS, =20 [ARMMMUIdx_E3] =3D EL(3) | REL(3), + [ARMMMUIdx_E3_GCS] =3D EL(3) | REL(3) | GCS, [ARMMMUIdx_E30_0] =3D EL(0) | REL(3), [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3) | PAN, =20 @@ -38,8 +45,10 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_Stage2] =3D REL(2) | S2, =20 [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | S1 | USER, + [ARMMMUIdx_Stage1_E0_GCS] =3D REL(1) | R2 | S1 | USER | GCS, [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2 | S1, [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | S1 | PAN, + [ARMMMUIdx_Stage1_E1_GCS] =3D REL(1) | R2 | S1 | GCS, =20 /* * M-profile. diff --git a/target/arm/ptw.c b/target/arm/ptw.c index d6d4bf3b23..6c52ed1ad0 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -169,6 +169,10 @@ ARMMMUIdx stage_1_mmu_idx(ARMMMUIdx mmu_idx) return ARMMMUIdx_Stage1_E1; case ARMMMUIdx_E10_1_PAN: return ARMMMUIdx_Stage1_E1_PAN; + case ARMMMUIdx_E10_0_GCS: + return ARMMMUIdx_Stage1_E0_GCS; + case ARMMMUIdx_E10_1_GCS: + return ARMMMUIdx_Stage1_E1_GCS; default: return mmu_idx; } @@ -276,8 +280,10 @@ static bool regime_translation_disabled(CPUARMState *e= nv, ARMMMUIdx mmu_idx, return (hcr_el2 & (HCR_DC | HCR_VM)) =3D=3D 0; =20 case ARMMMUIdx_E10_0: + case ARMMMUIdx_E10_0_GCS: case ARMMMUIdx_E10_1: case ARMMMUIdx_E10_1_PAN: + case ARMMMUIdx_E10_1_GCS: /* TGE means that EL0/1 act as if SCTLR_EL1.M is zero */ hcr_el2 =3D arm_hcr_el2_eff_secstate(env, space); if (hcr_el2 & HCR_TGE) { @@ -286,8 +292,10 @@ static bool regime_translation_disabled(CPUARMState *e= nv, ARMMMUIdx mmu_idx, break; =20 case ARMMMUIdx_Stage1_E0: + case ARMMMUIdx_Stage1_E0_GCS: case ARMMMUIdx_Stage1_E1: case ARMMMUIdx_Stage1_E1_PAN: + case ARMMMUIdx_Stage1_E1_GCS: /* HCR.DC means SCTLR_EL1.M behaves as 0 */ hcr_el2 =3D arm_hcr_el2_eff_secstate(env, space); if (hcr_el2 & HCR_DC) { @@ -296,10 +304,14 @@ static bool regime_translation_disabled(CPUARMState *= env, ARMMMUIdx mmu_idx, break; =20 case ARMMMUIdx_E20_0: + case ARMMMUIdx_E20_0_GCS: case ARMMMUIdx_E20_2: case ARMMMUIdx_E20_2_PAN: + case ARMMMUIdx_E20_2_GCS: case ARMMMUIdx_E2: + case ARMMMUIdx_E2_GCS: case ARMMMUIdx_E3: + case ARMMMUIdx_E3_GCS: case ARMMMUIdx_E30_0: case ARMMMUIdx_E30_3_PAN: break; @@ -3799,15 +3811,22 @@ arm_mmu_idx_to_security_space(CPUARMState *env, ARM= MMUIdx mmu_idx) =20 switch (mmu_idx) { case ARMMMUIdx_E10_0: + case ARMMMUIdx_E10_0_GCS: case ARMMMUIdx_E10_1: case ARMMMUIdx_E10_1_PAN: + case ARMMMUIdx_E10_1_GCS: case ARMMMUIdx_E20_0: + case ARMMMUIdx_E20_0_GCS: case ARMMMUIdx_E20_2: case ARMMMUIdx_E20_2_PAN: + case ARMMMUIdx_E20_2_GCS: case ARMMMUIdx_Stage1_E0: + case ARMMMUIdx_Stage1_E0_GCS: case ARMMMUIdx_Stage1_E1: case ARMMMUIdx_Stage1_E1_PAN: + case ARMMMUIdx_Stage1_E1_GCS: case ARMMMUIdx_E2: + case ARMMMUIdx_E2_GCS: ss =3D arm_security_space_below_el3(env); break; case ARMMMUIdx_Stage2: @@ -3836,6 +3855,7 @@ arm_mmu_idx_to_security_space(CPUARMState *env, ARMMM= UIdx mmu_idx) ss =3D ARMSS_Secure; break; case ARMMMUIdx_E3: + case ARMMMUIdx_E3_GCS: case ARMMMUIdx_E30_0: case ARMMMUIdx_E30_3_PAN: if (arm_feature(env, ARM_FEATURE_AARCH64) && diff --git a/target/arm/tcg/tlb-insns.c b/target/arm/tcg/tlb-insns.c index 95c26c6d46..1a0a332583 100644 --- a/target/arm/tcg/tlb-insns.c +++ b/target/arm/tcg/tlb-insns.c @@ -149,7 +149,8 @@ static void tlbimva_hyp_write(CPUARMState *env, const A= RMCPRegInfo *ri, CPUState *cs =3D env_cpu(env); uint64_t pageaddr =3D value & ~MAKE_64BIT_MASK(0, 12); =20 - tlb_flush_page_by_mmuidx(cs, pageaddr, ARMMMUIdxBit_E2); + tlb_flush_page_by_mmuidx(cs, pageaddr, + ARMMMUIdxBit_E2 | ARMMMUIdxBit_E2_GCS); } =20 static void tlbimva_hyp_is_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -159,7 +160,8 @@ static void tlbimva_hyp_is_write(CPUARMState *env, cons= t ARMCPRegInfo *ri, uint64_t pageaddr =3D value & ~MAKE_64BIT_MASK(0, 12); =20 tlb_flush_page_by_mmuidx_all_cpus_synced(cs, pageaddr, - ARMMMUIdxBit_E2); + ARMMMUIdxBit_E2 | + ARMMMUIdxBit_E2_GCS); } =20 static void tlbiipas2_hyp_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -202,7 +204,7 @@ static void tlbiall_hyp_write(CPUARMState *env, const A= RMCPRegInfo *ri, { CPUState *cs =3D env_cpu(env); =20 - tlb_flush_by_mmuidx(cs, ARMMMUIdxBit_E2); + tlb_flush_by_mmuidx(cs, ARMMMUIdxBit_E2 | ARMMMUIdxBit_E2_GCS); } =20 static void tlbiall_hyp_is_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -210,7 +212,8 @@ static void tlbiall_hyp_is_write(CPUARMState *env, cons= t ARMCPRegInfo *ri, { CPUState *cs =3D env_cpu(env); =20 - tlb_flush_by_mmuidx_all_cpus_synced(cs, ARMMMUIdxBit_E2); + tlb_flush_by_mmuidx_all_cpus_synced(cs, ARMMMUIdxBit_E2 | + ARMMMUIdxBit_E2_GCS); } =20 /* @@ -228,12 +231,16 @@ static int vae1_tlbmask(CPUARMState *env) if ((hcr & (HCR_E2H | HCR_TGE)) =3D=3D (HCR_E2H | HCR_TGE)) { mask =3D ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E20_0; + ARMMMUIdxBit_E20_2_GCS | + ARMMMUIdxBit_E20_0 | + ARMMMUIdxBit_E20_0_GCS; } else { /* This is AArch64 only, so we don't need to touch the EL30_x TLBs= */ mask =3D ARMMMUIdxBit_E10_1 | ARMMMUIdxBit_E10_1_PAN | - ARMMMUIdxBit_E10_0; + ARMMMUIdxBit_E10_1_GCS | + ARMMMUIdxBit_E10_0 | + ARMMMUIdxBit_E10_0_GCS; } return mask; } @@ -246,13 +253,20 @@ static int vae2_tlbmask(CPUARMState *env) if (hcr & HCR_E2H) { mask =3D ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E20_0; + ARMMMUIdxBit_E20_2_GCS | + ARMMMUIdxBit_E20_0 | + ARMMMUIdxBit_E20_0_GCS; } else { - mask =3D ARMMMUIdxBit_E2; + mask =3D ARMMMUIdxBit_E2 | ARMMMUIdxBit_E2_GCS; } return mask; } =20 +static int vae3_tlbmask(void) +{ + return ARMMMUIdxBit_E3 | ARMMMUIdxBit_E3_GCS; +} + /* Return 56 if TBI is enabled, 64 otherwise. */ static int tlbbits_for_regime(CPUARMState *env, ARMMMUIdx mmu_idx, uint64_t addr) @@ -325,9 +339,12 @@ static void tlbi_aa64_vmalle1_write(CPUARMState *env, = const ARMCPRegInfo *ri, static int e2_tlbmask(CPUARMState *env) { return (ARMMMUIdxBit_E20_0 | + ARMMMUIdxBit_E20_0_GCS | ARMMMUIdxBit_E20_2 | ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E2); + ARMMMUIdxBit_E20_2_GCS | + ARMMMUIdxBit_E2 | + ARMMMUIdxBit_E2_GCS); } =20 static void tlbi_aa64_alle1_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -354,7 +371,7 @@ static void tlbi_aa64_alle3_write(CPUARMState *env, con= st ARMCPRegInfo *ri, ARMCPU *cpu =3D env_archcpu(env); CPUState *cs =3D CPU(cpu); =20 - tlb_flush_by_mmuidx(cs, ARMMMUIdxBit_E3); + tlb_flush_by_mmuidx(cs, vae3_tlbmask()); } =20 static void tlbi_aa64_alle1is_write(CPUARMState *env, const ARMCPRegInfo *= ri, @@ -380,7 +397,7 @@ static void tlbi_aa64_alle3is_write(CPUARMState *env, c= onst ARMCPRegInfo *ri, { CPUState *cs =3D env_cpu(env); =20 - tlb_flush_by_mmuidx_all_cpus_synced(cs, ARMMMUIdxBit_E3); + tlb_flush_by_mmuidx_all_cpus_synced(cs, vae3_tlbmask()); } =20 static void tlbi_aa64_vae2_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -411,7 +428,7 @@ static void tlbi_aa64_vae3_write(CPUARMState *env, cons= t ARMCPRegInfo *ri, CPUState *cs =3D CPU(cpu); uint64_t pageaddr =3D sextract64(value << 12, 0, 56); =20 - tlb_flush_page_by_mmuidx(cs, pageaddr, ARMMMUIdxBit_E3); + tlb_flush_page_by_mmuidx(cs, pageaddr, vae3_tlbmask()); } =20 static void tlbi_aa64_vae1is_write(CPUARMState *env, const ARMCPRegInfo *r= i, @@ -465,7 +482,7 @@ static void tlbi_aa64_vae3is_write(CPUARMState *env, co= nst ARMCPRegInfo *ri, int bits =3D tlbbits_for_regime(env, ARMMMUIdx_E3, pageaddr); =20 tlb_flush_page_bits_by_mmuidx_all_cpus_synced(cs, pageaddr, - ARMMMUIdxBit_E3, bits); + vae3_tlbmask(), bits); } =20 static int ipas2e1_tlbmask(CPUARMState *env, int64_t value) @@ -963,7 +980,7 @@ static void tlbi_aa64_rvae3_write(CPUARMState *env, * flush-last-level-only. */ =20 - do_rvae_write(env, value, ARMMMUIdxBit_E3, tlb_force_broadcast(env)); + do_rvae_write(env, value, vae3_tlbmask(), tlb_force_broadcast(env)); } =20 static void tlbi_aa64_rvae3is_write(CPUARMState *env, @@ -977,7 +994,7 @@ static void tlbi_aa64_rvae3is_write(CPUARMState *env, * flush-last-level-only or inner/outer specific flushes. */ =20 - do_rvae_write(env, value, ARMMMUIdxBit_E3, true); + do_rvae_write(env, value, vae3_tlbmask(), true); } =20 static void tlbi_aa64_ripas2e1_write(CPUARMState *env, const ARMCPRegInfo = *ri, --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961090; cv=none; d=zohomail.com; s=zohoarc; b=hj22JGsiYjs2ZdhMJw8iIs2PLrbl8OgKF6sGd3kxq19ypf/s/rBFNOaWgK4Jn2PJmXuJlfUajTHZ0QO84zI6PFCRrehoAxh6wqXGnLaXxCAXPesA0Midvn27u5eyxYOKKRURBOc9UNb4pWzI48RGi4V2lRAThd3xV7qbl4iXJKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961090; h=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=cr6Y93u/SVkcU+goxAfQSNSlnm3F8dUSxwzHBpcNsX8=; b=j+jg6nCnENx2V1Bn12xCstXmvNCCzvZxwbEqCJvqHWe74i+N0ZkQepPrEC5dgXgyp5t+2UOxH2YBfdJXe43gBzI9cxieHph8n/ndpFI2INOxUbajfdeL/2Aat4gi+J6w7qiKInBKu0xvc3MAdpqNGuZH8Fv+nqpyMB+CuU6Ugo4= 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 1759961090792444.8470167490109; Wed, 8 Oct 2025 15:04:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCK-0007lz-60; Wed, 08 Oct 2025 17:59:48 -0400 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 1v6cAZ-0004Te-OT for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:58:00 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9K-0006ij-Hi for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:56 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-b4ee87cc81eso222899a12.1 for ; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960593; x=1760565393; 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=cr6Y93u/SVkcU+goxAfQSNSlnm3F8dUSxwzHBpcNsX8=; b=JIkSKf/K5RHRxpnRHKBtGNkhwTeifWVUH21Ay6JdHkxQ2LgAddHvmviU96ffWd33qR ahqZaUT11/Fv24hLcU84MpPo3Hn2Vxa9FFtcLRdMJbobswRR9yMkzOtIJmItSzEFyGLt V7UodFj3Fa0wBYpZGByrff+QKJIG6I8XDTAuMlIQw1o2ZbTCRzB/6fr2e77p4OW8UJMG a1N/5GVr7xAyoWTS+bNPeCUHqR9ThKl2WJsocgUgQ8ntGK5+0AmbywLiTua3XY2EB5wC th73WDym+NFnPD7PVVTihQnmrFC/Vycay2+XIuHYIf/dc0S6DEk4qF2WORFditUlixyy 2yQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960593; x=1760565393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cr6Y93u/SVkcU+goxAfQSNSlnm3F8dUSxwzHBpcNsX8=; b=H+6VSa+4CRKWrJaiBYuAOxORncmOUtniYsSyMbmTLg3+FOr+lSBP+Kum5LAEMfKILV 0/EEroR3m0gNLrnbOlx7A3gKS7tz/uP0kKE2xjBFRT+TaYqfk5iO/1Jz01f1KPNOWe4x sJDQ9Q0MLpEsNktBuPjqUtf/D7J7G5gET3cv/KPM7PEmSETWOKPLY2wVL7ldBbW42Dd9 l1RXzG+da0W/wpt8+XrHUES1I4vNzZSIHJB1KeVYwkpHafdj09ix0Bm+/RtlMBgLwv+0 VFIV9HDF8HzQKqRgtTMCmHc4zy4TgpKB2KAUbfuRkSZSuk1z667hmE/iFA3+hi+V+BUF Uqkg== X-Gm-Message-State: AOJu0Yw2K35hiwgPRVlutpCewgyOX6ECxxA6CTdJ22XLn1z33oQ2RxOX Ak9hXWqB2w916KSt3hYtG9VF5DeDQEQ9gLd3/DlByghHxM55wV8q0omEzGDN0mpEw5i+L7NU08m zMaFtouE= X-Gm-Gg: ASbGncuruw0NyR36azGnvKtJnqJBTl8UdxCzTWWSxqShOdXN68INtCe9OQFbUgkVnMa voNZjPaOiTCUfMW/BN6BqlEfkGCEzzdRoLtwXDAYQhauPI9SLeDtCPx+/2Q7Sq7Dj/C28BJTj4T 8MamhoTcJNmmF79IMKugcjbfSFhqo1Gz1uLmlnDfpz9xUS58ngy3r1oxeIQHA9mgkr+popOmd1V P7MkSD+vSZ3N8gUdsz6os6LSaGQlWf3Fdgf5sPvbm0w/6XxrxXqS8cjNmUpyuIhQK8VgPxfRIaD wi0pHRD3Ipj1Z1jO1GN1kbY5uxoY1Tj4vFIgCCuZ2OURzog7CE49BjHdc2ng9Xett2yKD/xmdaY +efhQJTFLYBozLHnR/+Wlb9i3yCJz08cn4UIdC2V4sMNc9nKOI4FHXIKV X-Google-Smtp-Source: AGHT+IGh6mV/rWB2nVYuRnidhRmmUEyrQ4I3tBgAwPuqffTOS8NDLEJ9J5e2JnoX7IEfU9JGlfrnJA== X-Received: by 2002:a17:903:2405:b0:267:8049:7c7f with SMTP id d9443c01a7336-29027356377mr71668715ad.7.1759960592781; Wed, 08 Oct 2025 14:56:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 28/73] target/arm: Introduce regime_to_gcs Date: Wed, 8 Oct 2025 14:55:28 -0700 Message-ID: <20251008215613.300150-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.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: 1759961093226154100 Content-Type: text/plain; charset="utf-8" Add a lookup from any a64 mmu index to the gcs mmu index within the same translation regime. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/mmuidx-internal.h | 10 ++++++++++ target/arm/mmuidx.c | 24 +++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index f494ec348d..962b053852 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -21,6 +21,7 @@ FIELD(MMUIDXINFO, USER, 8, 1) FIELD(MMUIDXINFO, STAGE1, 9, 1) FIELD(MMUIDXINFO, STAGE2, 10, 1) FIELD(MMUIDXINFO, GCS, 11, 1) +FIELD(MMUIDXINFO, TG, 12, 5) =20 extern const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8]; =20 @@ -100,4 +101,13 @@ static inline bool regime_is_gcs(ARMMMUIdx idx) return FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, GCS); } =20 +/* Return the GCS MMUIdx for a given regime. */ +static inline ARMMMUIdx regime_to_gcs(ARMMMUIdx idx) +{ + tcg_debug_assert(arm_mmuidx_is_valid(idx)); + uint32_t core =3D FIELD_EX32(arm_mmuidx_table[idx], MMUIDXINFO, TG); + tcg_debug_assert(core !=3D 0); /* core 0 is E10_0, not a GCS index */ + return core | ARM_MMU_IDX_A; +} + #endif /* TARGET_ARM_MMUIDX_INTERNAL_H */ diff --git a/target/arm/mmuidx.c b/target/arm/mmuidx.c index 42b003db9c..a4663c8d87 100644 --- a/target/arm/mmuidx.c +++ b/target/arm/mmuidx.c @@ -16,27 +16,29 @@ #define S1 R_MMUIDXINFO_STAGE1_MASK #define S2 R_MMUIDXINFO_STAGE2_MASK #define GCS R_MMUIDXINFO_GCS_MASK +#define TG(X) \ + ((ARMMMUIdx_##X##_GCS & ARM_MMU_IDX_COREIDX_MASK) << R_MMUIDXINFO_TG_S= HIFT) =20 const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { /* * A-profile. */ - [ARMMMUIdx_E10_0] =3D EL(0) | REL(1) | R2, + [ARMMMUIdx_E10_0] =3D EL(0) | REL(1) | R2 | TG(E10_0), [ARMMMUIdx_E10_0_GCS] =3D EL(0) | REL(1) | R2 | GCS, - [ARMMMUIdx_E10_1] =3D EL(1) | REL(1) | R2, - [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2 | PAN, + [ARMMMUIdx_E10_1] =3D EL(1) | REL(1) | R2 | TG(E10_1), + [ARMMMUIdx_E10_1_PAN] =3D EL(1) | REL(1) | R2 | TG(E10_1) | PAN, [ARMMMUIdx_E10_1_GCS] =3D EL(1) | REL(1) | R2 | GCS, =20 - [ARMMMUIdx_E20_0] =3D EL(0) | REL(2) | R2, + [ARMMMUIdx_E20_0] =3D EL(0) | REL(2) | R2 | TG(E20_0), [ARMMMUIdx_E20_0_GCS] =3D EL(0) | REL(2) | R2 | GCS, - [ARMMMUIdx_E20_2] =3D EL(2) | REL(2) | R2, - [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2 | PAN, + [ARMMMUIdx_E20_2] =3D EL(2) | REL(2) | R2 | TG(E20_2), + [ARMMMUIdx_E20_2_PAN] =3D EL(2) | REL(2) | R2 | TG(E20_2) | PAN, [ARMMMUIdx_E20_2_GCS] =3D EL(2) | REL(2) | R2 | GCS, =20 - [ARMMMUIdx_E2] =3D EL(2) | REL(2), + [ARMMMUIdx_E2] =3D EL(2) | REL(2) | TG(E2), [ARMMMUIdx_E2_GCS] =3D EL(2) | REL(2) | GCS, =20 - [ARMMMUIdx_E3] =3D EL(3) | REL(3), + [ARMMMUIdx_E3] =3D EL(3) | REL(3) | TG(E3), [ARMMMUIdx_E3_GCS] =3D EL(3) | REL(3) | GCS, [ARMMMUIdx_E30_0] =3D EL(0) | REL(3), [ARMMMUIdx_E30_3_PAN] =3D EL(3) | REL(3) | PAN, @@ -44,10 +46,10 @@ const uint32_t arm_mmuidx_table[ARM_MMU_IDX_M + 8] =3D { [ARMMMUIdx_Stage2_S] =3D REL(2) | S2, [ARMMMUIdx_Stage2] =3D REL(2) | S2, =20 - [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | S1 | USER, + [ARMMMUIdx_Stage1_E0] =3D REL(1) | R2 | S1 | USER | TG(Stage1_E0= ), [ARMMMUIdx_Stage1_E0_GCS] =3D REL(1) | R2 | S1 | USER | GCS, - [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2 | S1, - [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | S1 | PAN, + [ARMMMUIdx_Stage1_E1] =3D REL(1) | R2 | S1 | TG(Stage1_E1), + [ARMMMUIdx_Stage1_E1_PAN] =3D REL(1) | R2 | S1 | TG(Stage1_E1) | PAN, [ARMMMUIdx_Stage1_E1_GCS] =3D REL(1) | R2 | S1 | GCS, =20 /* --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961172; cv=none; d=zohomail.com; s=zohoarc; b=arPKqD1fudPojl+wTjiKjwEGrfiuFh3YWaKIdxNk5kWTIkdaOQdHmQRnob9eA6nuv06wCDgVf7xuJlQR00DCL4sprD6fwVRchHYLJWPg6pwq7cKcDNcZAyENR8eSK+jEgzellywjMuW1UxCNGjzPganK/PIqu1A6b7iwps8WkiU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961172; h=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=cpkzy3bVx6ucXbODXlPEH+NEBtm/T2sk9FDoLQjAyaU=; b=HEheEjCRtQ3q0V3bpN6/N2NyVA/fjaWUUMHLXu4P+/Wb8Gxa4LEd2tJXq4R/fmp8fFPQDaMkJDDeP2FSNu10+RrkaHC3GHOe4LndRwFN1fB9m9F9sVgiJe2L3mvNMz1cvyhC8lUYLhE0k2HeksQpTeeLrua2PzzTjCCLNSdHfHo= 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 175996117230271.70245034354548; Wed, 8 Oct 2025 15:06:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBF-00055z-Dl; Wed, 08 Oct 2025 17:58:41 -0400 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 1v6cAI-0004Nl-T2 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9G-0006jJ-LM for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:41 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-26e68904f0eso3118735ad.0 for ; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960593; x=1760565393; 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=cpkzy3bVx6ucXbODXlPEH+NEBtm/T2sk9FDoLQjAyaU=; b=x4oEekLcjqYYsh0BACDvS08ldio7YNif7Ecm6Ydmvg2tuI6GUcMlLxpq/ygNAmRjbv FuKauLmzugGUPrkR1plIvCb1qWIgyo2lwJE5N0niwz12ZSqX8kFU4wOFDxfkC8udQ20t 3aQZCOz7kx+bGorXCOh7qlMyiia8UMAaxP1L3Fc6nBhHJBf9DDVimE1yR2IzG/GfBkgI 4s8tKQgVCwlngXyq7/pzA+pbTr/3/9hnrwIk5E+tskrpU+CDhofnGxOgWe5VEoqoO8qy RQyNWQfI/tRlebD2S2BEuNFFDS6QkA5Gwe3p+i8AkAXkLoP7V+FhXnePFja7HT7WYMy0 LViw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960593; x=1760565393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cpkzy3bVx6ucXbODXlPEH+NEBtm/T2sk9FDoLQjAyaU=; b=tAO936IUL0DZu1XwG6GXMYQIZ+imjiDr98HlyRgWD0WTZmuWDpXDW3hItgVVjm7Y96 Mm7Rr9Qyf0f8+MtRoaz3lj6DFA3W5jjt+vMQsAUIYlTHa1KHGUNaIOVMEzdS7wjlCh7p Wm+kniZIzDR2fFR/KPIP/f4AQBD6zJd2a0JBhuXx1YW/ItcaPxHTlCacaUwtFJ/13gq6 Utb757g0GkEZEzOkNwgiQnN1SyYOSK8t1SrFSu7ZT6Bz6lvn4nwQYSuHveV8uGtLmrLy M1FZrnVcFqcNBn1iBxG1PVZbZLZPvaA1J4o9h3T8JSvaPWePMj/FMMpiz2vOrIa1t1kl VL1w== X-Gm-Message-State: AOJu0Yz0rXMni9vferBP7EkutMQjG4enRBE8ExmnsH5YmW2Nsm1qcnmX WDZr55+8XBmXjtfgpTVd75JyOYBe8D/Z9/ACiaBOBv4wTDyRyMCIsHR/moKDHi4fMwLz/4IiZys M0VahV2g= X-Gm-Gg: ASbGncvQ4RNg61yd0YYHe5r4beOoRkPjv+o2SkM4nEZBbr0ROAZWnEsKtR95Qk4v22a 45xnGJLEzMogBf9qmq5AZ9gMR4EDg26N8OtxnHJzebPtpN5KKfgXZ5M7lReEOD2tnn2rSgb9/Mo 2RhO+N0nPLXvrQTg539Kxkxe7xCH7vVIrCH4DWec3nkdx7+Tht6vUKkP+Ftrn0xpJ06F3oUf7qX F7cXNV+O1MNaSC/aNG2U58sElrqHeO0yHI7nZXuz7eEdTM+c+mC6F47ouuBGl1tip0kN/Huh9uJ Xc++dWAAMFSfdpFPHjWL783qANRWDald8vyRAGiBd7duCpfDS65xtfJarkbtEY85Q2ljI9dLMMF GzVbSakQE+TVccnl19M0FNtPtjovVLldM795QdTrmnbtCdH5yGeV/JOChcNrpFyQg+0o= X-Google-Smtp-Source: AGHT+IHy6fHPrlzldAiRH9eQVfcpNc5mA87s1dYlKjVLIUiTHoqBkp9wMW7l/sd7b7Vm0dB2/ERSuQ== X-Received: by 2002:a17:902:ebc5:b0:26e:e6ab:66fe with SMTP id d9443c01a7336-2902720f560mr64279895ad.5.1759960593373; Wed, 08 Oct 2025 14:56:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 29/73] target/arm: Support page protections for GCS mmu indexes Date: Wed, 8 Oct 2025 14:55:29 -0700 Message-ID: <20251008215613.300150-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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: 1759961174105154100 Content-Type: text/plain; charset="utf-8" Take read and write from the s1perms.gcs bit computed by the Arm pseudocode. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/ptw.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 6c52ed1ad0..d4386ede73 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1619,12 +1619,16 @@ static int get_S1prot_indirect(CPUARMState *env, S1= Translate *ptw, } } =20 - if (perm & PAGE_WXN) { + if (regime_is_gcs(mmu_idx)) { + /* + * Note that the one s1perms.gcs bit controls both read and write + * access via AccessType_GCS. See AArch64.S1CheckPermissions. + */ + perm =3D (perm & PAGE_GCS ? PAGE_READ | PAGE_WRITE : 0); + } else if (perm & PAGE_WXN) { perm &=3D ~PAGE_EXEC; } =20 - /* TODO: FEAT_GCS */ - return perm & PAGE_RWX; } =20 @@ -2277,6 +2281,13 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, */ prot =3D get_S1prot_indirect(env, ptw, mmu_idx, pi, po, result->f.attrs.space, out_space); + } else if (regime_is_gcs(mmu_idx)) { + /* + * While one must use indirect permissions to successfully + * use GCS instructions, AArch64.S1DirectBasePermissions + * faithfully supplies s1perms.gcs =3D 0, Just In Case. + */ + prot =3D 0; } else { int xn =3D extract64(attrs, 54, 1); int pxn =3D extract64(attrs, 53, 1); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960761; cv=none; d=zohomail.com; s=zohoarc; b=XXKOhxFwPXYKpGv7eFPLnQUtIN2CfChLbAVd7iLDnksSGKpeDtTvFBL/+l4FgNMopx6SaXN5pwMefPUh46uCMD+BHWbCg2ZEQES3Z55pNCAVaWzyEBF7CdwaRFqU7ceNIxG3FOyAc10hz7J175E7NQZQ067FNo7Zgjb/Vz8XjZU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960761; h=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=ZnGv3gaWQ9shrmt0WGxn8YCEO4EdUIFI2jl/MhJPR7Y=; b=S0iObFoBCh5xfoDJ33/ed2QFd4s2M3XTNm6aUck1C7HajZycUFTGQ2zwKLbHpYKo43zzEl7qc+6MsjfPDvShbT5W0RjAn5pjk1Vk3b7Z/jCD4hzhrteox2apY2n/YOqVCckv9kfjsC+Ig/3u5mgAqmmKMeQGzpUlYYXYEIgod/E= 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 1759960761829339.4214662242597; Wed, 8 Oct 2025 14:59:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBN-0005PK-SV; Wed, 08 Oct 2025 17:58:49 -0400 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 1v6cAK-0004Ny-7T for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9F-0006jA-Mx for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:43 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-267facf9b58so1971695ad.2 for ; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960594; x=1760565394; 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=ZnGv3gaWQ9shrmt0WGxn8YCEO4EdUIFI2jl/MhJPR7Y=; b=o/CmAFUN8MeGqx0O8dMCpGZaZuIcjQxXnm98JvbqhYwtRZqHPZVrdi6bvhDv3TDNgY vc+3vUfiAghT2eBKr5tkZGAo+y+Y4+SD5SjwpbLBaYWv3e5qQ20WHKzsjH0AmXf/8DkN tTSjjTq5zkW5eRYJeotptRFkL19ddDNRAJeXE/xyMJPs9CBTLYCTHKAmyA6knx3NTjrr REFEaiuxKE4bjlQ1GqRlnwGEDnKiy+msNRN32WDNM9iON43WZOFp9J6K2DYpPYjuNstD QfDSOceyMZsHeS5uJXRllkLe4+DZplMhjJtv77VnM0eM4YIhDldHBDy9A9BCHkfcI6kb IzrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960594; x=1760565394; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZnGv3gaWQ9shrmt0WGxn8YCEO4EdUIFI2jl/MhJPR7Y=; b=c3uHglNS76W3xXqD3u+qEPPfh5R6s+0UEMPm80CWbInGp60rrudHOw3GPq3QNEV6wg +kAMPqlUwTAXbZWcABt9R3tyyZuDqBbXMH1xRRz33cIG7vbSPyKtLeX0usxZk9GYcYgw KtpNfGlZziCDnYWEFkgFYNXhVIa5rznSsv7WSv0GSHBBAnikL8ZUHiK8QZXY8FVMgf8q RpgenoNaKJhOvzGDne+9+VD3TCt7UXKYoHKKl1R0rDMChIguQzo6R4F2VwJ7wj21ehPY gwLij6qnCLi0BsOJ5d+FCkb96FxmhNh6dMVHHhyXIx84f7M0yCxxRRTcwpp+tb7nRi12 6u8w== X-Gm-Message-State: AOJu0YyKB4n/2I4ObXnqnLNejZTznWmDg9++blh7uAamoxis1g3BbBxp adch+PylAg1JDSacTkAObJazqYiihX6G1pricaOMdeQ3q+sac2f5NVWS0UR5riqrv7OGR5LMAVu s6zQnHTI= X-Gm-Gg: ASbGncv6+XM1qLUmk72lfUT+A+G0EAuZ46cr6q7vjv+8k1cDKisow/f2RlnGRy2fIDO dfpr89wNTHYWkZntxvbELo3yBhiXJqcFdORiKI/UqnNi/gezHvB1lmtrFahe4oPKeAlqONcF+7L pD7E6TK2yiR9yH+6Dg5Up6bviglesgTwP4KuSqyZh657IJZuuOtZ05NoDisccU8+fHqMym7Qq+H +bTVRUFhVyD3Xz9wmxaXjjhcGvocVXbuQaKVEN7c7iWuVRRBezDVGsn1gJdvS3fgmROKaM1X/s9 4lGeYyr2SKIJXCdDS/PzA2D4GCoqr4M/0Kd1lRmGuCrtnc7ANMfwIPJtJzsux8dLzpJQDZdf/mY jfBZRRCWz34056E/TXzzdy74C648BinWtkHls7lmnG/OTwqkiXGwfu4EQ X-Google-Smtp-Source: AGHT+IHP3Ive7fT9YEbBxf245MDA3oCmfLvTSRKp2QFEH9kf6EjvBjp1nRmjIJIVppAmjKKi2auDnQ== X-Received: by 2002:a17:903:2f10:b0:275:27ab:f6c8 with SMTP id d9443c01a7336-29027379486mr63974845ad.20.1759960594011; Wed, 08 Oct 2025 14:56:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 30/73] target/arm: Implement gcs bit for data abort Date: Wed, 8 Oct 2025 14:55:30 -0700 Message-ID: <20251008215613.300150-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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: 1759960766581116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/tlb_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/tlb_helper.c b/target/arm/tcg/tlb_helper.c index ae2acd6727..f1983a5732 100644 --- a/target/arm/tcg/tlb_helper.c +++ b/target/arm/tcg/tlb_helper.c @@ -28,7 +28,7 @@ static inline uint64_t merge_syn_data_abort(uint32_t temp= late_syn, ARMMMUFaultInfo *fi, unsigned int target_el, bool same_el, bool is_write, - int fsc) + int fsc, bool gcs) { uint64_t syn; =20 @@ -78,6 +78,7 @@ static inline uint64_t merge_syn_data_abort(uint32_t temp= late_syn, =20 /* Form ISS2 at the top of the syndrome. */ syn |=3D (uint64_t)fi->dirtybit << 37; + syn |=3D (uint64_t)gcs << 40; =20 return syn; } @@ -252,9 +253,10 @@ void arm_deliver_fault(ARMCPU *cpu, vaddr addr, syn =3D syn_insn_abort(same_el, fi->ea, fi->s1ptw, fsc); exc =3D EXCP_PREFETCH_ABORT; } else { + bool gcs =3D regime_is_gcs(core_to_arm_mmu_idx(env, mmu_idx)); syn =3D merge_syn_data_abort(env->exception.syndrome, fi, target_e= l, same_el, access_type =3D=3D MMU_DATA_ST= ORE, - fsc); + fsc, gcs); if (access_type =3D=3D MMU_DATA_STORE && arm_feature(env, ARM_FEATURE_V6)) { fsr |=3D (1 << 11); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961503; cv=none; d=zohomail.com; s=zohoarc; b=hUFn47df2KX9jzXwzGrjNN2oLsPWCbsN92MFY/URSV28OtLqQzdOujSrqdepj3KSHQ0BUR6Jxq0RcvEr3BFpE8R2cbxAduVsHfXu3IS5gI5we9Ud+H7Gf1FFAvPVcSIowPDH4NM0RQWjvQu5SLl5I5XmFotACP/8qs/0yNACP0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961503; h=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=SFbNyG4YfCBdo56bpCMCa6afE/l+HQuO8gQVSOvXGws=; b=UvxoeslPH7WTTnQzziYiVy9IE6ANuLHXBSG6O2RcQLlWhBWPjKZ5trCX7TQS6fXssjSHbbrsBDY28d8ozrMvhNI4ag6X9ZSJYWCIfD+j8SKXaEwY+1tnIg5XJULpiqwVrW+Qq3M6Y2sE8cykEkCWhhuYcPxPb/9IELURMpQ/X8Q= 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 17599615032001012.2779273141042; Wed, 8 Oct 2025 15:11:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cAt-0004jc-7v; Wed, 08 Oct 2025 17:58:19 -0400 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 1v6cAI-0004Nk-TG for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9E-0006jl-UK for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:38 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-b555ab7fabaso237200a12.0 for ; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960595; x=1760565395; 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=SFbNyG4YfCBdo56bpCMCa6afE/l+HQuO8gQVSOvXGws=; b=NE+qtevp07BUnoQ/IP8u/EG1yevtg9fy3ybCICQlw3yVwCqOqzAnFxe/BmSkKY450y kQC4t1nAiBLLc3qdFzyAZFB8Lx0O/tJGWcug27S8YOvhNb50f9GiFJ9PB/2fHM0T28I7 retKZIozhq9wod4EELKz1vxKqcKGYGBxKquSFAnZEeyn0SLKm9QFr6z17Tt/1+cDOVSU 7OG59BZkr+lHTXvCV53O+WBrcdHwbaczx0euB9uLZXCI+ksEgfRe/POpO1rrrKxt2foe iNpLdVMuALXXHWQ1U7ytDAj7ta3qm164TBFEOydvMV0VUKKiR3/IAaEtO7VM1+0g+v/P Tlgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960595; x=1760565395; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SFbNyG4YfCBdo56bpCMCa6afE/l+HQuO8gQVSOvXGws=; b=dfjfIgS3Y00hPKDJfylTzhOP2tV0QoL0DZlXlG6/l4QbTnaaYrJeBpT8gZU0Fd8ey/ bHOS9FrZSebL2+dF91stbx5BkAFlz++RP/qGBGM7lD1qjbSTY6HbMuXo6ZuaJVLHHhvk ThrEt7/w8r+AbD/5FA+b6crjqbowbDNU6ezkhBfbC8+2pStcTKja0L3u8TNEeA01sNxM nPlZY6/yKIfDW5lH4k/jOZ6ey5UxcOrSdUOerHdiBCrA7KugFTCDp1VUwEp1vJRkz4O4 l0NW/svaoPvRtTWjFAi7pmj2V/lDZFe5TIMFZvFuWIUG9+7n3/FRx2O4mUNNhXEq71OB lcQg== X-Gm-Message-State: AOJu0YyzOyq3vq0cRBtf8HdhZj8nQZ7FnQYsaopi0WGb6e4hN+R8yZoZ y/EEuRYqD38zZ3YguIaraF4yJ9maV/KM449haySjGDL8DSzeVYvgUVrNPdQe435kPExPTnXQi4x 9+xH9ZCU= X-Gm-Gg: ASbGncsXTd6P8kuefvQeEj0S9MYkqJUmwAqZ7QSjYHwZTpE0PjM79e0FqLDa5NCc5wO h2MH3BTyT52dl0SvkBfaOSFaIaDr63X73bnAuD5T5jUBcKuxvFHDLvT8q/Jz+TckijHGhgMrRBC ShP1O9vN3QmBLcgfDRFXKyFmbojEP2KEQQl3vRonRVypUrMwnVIQoz2XfDpUips2vg6u8JvPG/P aLbT2/1a92ldWsZciHQUZ9dJv9wxAHd6aK0lbioyn+s5DZKaTYF4VqodPkQW1Cyo1zEw1MX4+o1 D6/Qd54JnM3e7W5wxSQmvMuYNNzv5ESQu9fA36QX470DMctssPOk6Raiuq9KdLSItoAENrkqKfV 5/hNm3TeeFNyDds47DOx57IDduEQluVww74oYvDWViX3zgVhRlK2T7NVD X-Google-Smtp-Source: AGHT+IEVFXkc6uJwr2CVWiwXgnfe5GWiTo0AfYSKkthsPtkpWe5LUNDK2vNY4oB8/dwjerPBi1R/yQ== X-Received: by 2002:a17:902:e78f:b0:24b:182b:7144 with SMTP id d9443c01a7336-290273565bdmr64092385ad.7.1759960594652; Wed, 08 Oct 2025 14:56:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 31/73] target/arm: Add GCS cpregs Date: Wed, 8 Oct 2025 14:55:31 -0700 Message-ID: <20251008215613.300150-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.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: 1759961504083154100 Content-Type: text/plain; charset="utf-8" Add isar_feature_aa64_gcs. Enable SCR_GCSEN in scr_write. Enable HCRX_GCSEN in hcrx_write. Default HCRX_GCSEN on if EL2 disabled. Add the GCSCR* and GCSPR* registers. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 2 + target/arm/cpu-features.h | 5 +++ target/arm/cpu.h | 12 +++++ target/arm/internals.h | 3 ++ target/arm/cpregs-gcs.c | 95 +++++++++++++++++++++++++++++++++++++++ target/arm/cpu.c | 3 ++ target/arm/helper.c | 10 +++++ target/arm/meson.build | 2 + 8 files changed, 132 insertions(+) create mode 100644 target/arm/cpregs-gcs.c diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index f48c4df30f..bd2121a336 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -779,6 +779,8 @@ typedef enum FGTBit { DO_BIT(HFGRTR, VBAR_EL1), DO_BIT(HFGRTR, ICC_IGRPENN_EL1), DO_BIT(HFGRTR, ERRIDR_EL1), + DO_REV_BIT(HFGRTR, NGCS_EL0), + DO_REV_BIT(HFGRTR, NGCS_EL1), DO_REV_BIT(HFGRTR, NSMPRI_EL1), DO_REV_BIT(HFGRTR, NTPIDR2_EL0), DO_REV_BIT(HFGRTR, NPIRE0_EL1), diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f3e90408f7..0f0a112c21 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1149,6 +1149,11 @@ static inline bool isar_feature_aa64_nmi(const ARMIS= ARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR1, NMI) !=3D 0; } =20 +static inline bool isar_feature_aa64_gcs(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR1, GCS) !=3D 0; +} + static inline bool isar_feature_aa64_tgran4_lpa2(const ARMISARegisters *id) { return FIELD_SEX64_IDREG(id, ID_AA64MMFR0, TGRAN4) >=3D 1; diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 6773676973..e55524ae10 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -580,6 +580,9 @@ typedef struct CPUArchState { =20 /* NV2 register */ uint64_t vncr_el2; + + uint64_t gcscr_el[4]; /* GCSCRE0_EL1, GCSCR_EL[123] */ + uint64_t gcspr_el[4]; /* GCSPR_EL[0123] */ } cp15; =20 struct { @@ -1717,6 +1720,7 @@ static inline void xpsr_write(CPUARMState *env, uint3= 2_t val, uint32_t mask) #define SCR_ENAS0 (1ULL << 36) #define SCR_ADEN (1ULL << 37) #define SCR_HXEN (1ULL << 38) +#define SCR_GCSEN (1ULL << 39) #define SCR_TRNDR (1ULL << 40) #define SCR_ENTP2 (1ULL << 41) #define SCR_TCR2EN (1ULL << 43) @@ -1725,6 +1729,14 @@ static inline void xpsr_write(CPUARMState *env, uint= 32_t val, uint32_t mask) #define SCR_GPF (1ULL << 48) #define SCR_NSE (1ULL << 62) =20 +/* GCSCR_ELx fields */ +#define GCSCR_PCRSEL (1ULL << 0) +#define GCSCR_RVCHKEN (1ULL << 5) +#define GCSCR_EXLOCKEN (1ULL << 6) +#define GCSCR_PUSHMEN (1ULL << 8) +#define GCSCR_STREN (1ULL << 9) +#define GCSCRE0_NTR (1ULL << 10) + /* Return the current FPSCR value. */ uint32_t vfp_get_fpscr(CPUARMState *env); void vfp_set_fpscr(CPUARMState *env, uint32_t val); diff --git a/target/arm/internals.h b/target/arm/internals.h index 591b509e68..109aa104bf 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -251,6 +251,7 @@ FIELD(VSTCR, SA, 30, 1) #define HCRX_MSCEN (1ULL << 11) #define HCRX_TCR2EN (1ULL << 14) #define HCRX_SCTLR2EN (1ULL << 15) +#define HCRX_GCSEN (1ULL << 22) =20 #define HPFAR_NS (1ULL << 63) =20 @@ -1783,6 +1784,8 @@ void define_tlb_insn_regs(ARMCPU *cpu); void define_at_insn_regs(ARMCPU *cpu); /* Add the cpreg definitions for PM cpregs */ void define_pm_cpregs(ARMCPU *cpu); +/* Add the cpreg definitions for GCS cpregs */ +void define_gcs_cpregs(ARMCPU *cpu); =20 /* Effective value of MDCR_EL2 */ static inline uint64_t arm_mdcr_el2_eff(CPUARMState *env) diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c new file mode 100644 index 0000000000..1ff041811d --- /dev/null +++ b/target/arm/cpregs-gcs.c @@ -0,0 +1,95 @@ +/* + * QEMU ARM CP Register GCS regiters and instructions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/timer.h" +#include "exec/icount.h" +#include "hw/irq.h" +#include "cpu.h" +#include "cpu-features.h" +#include "cpregs.h" +#include "internals.h" + + +static CPAccessResult access_gcs(CPUARMState *env, const ARMCPRegInfo *ri, + bool isread) +{ + if (arm_current_el(env) < 3 + && arm_feature(env, ARM_FEATURE_EL3) + && !(env->cp15.scr_el3 & SCR_GCSEN)) { + return CP_ACCESS_TRAP_EL3; + } + return CP_ACCESS_OK; +} + +static CPAccessResult access_gcs_el0(CPUARMState *env, const ARMCPRegInfo = *ri, + bool isread) +{ + if (arm_current_el(env) =3D=3D 0 && !(env->cp15.gcscr_el[0] & GCSCRE0_= NTR)) { + return CP_ACCESS_TRAP_EL1; + } + return access_gcs(env, ri, isread); +} + +static void gcspr_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + /* + * Bits [2:0] are RES0, so we might as well clear them now, + * rather than upon each usage a-la GetCurrentGCSPointer. + */ + raw_write(env, ri, value & ~7); +} + +static const ARMCPRegInfo gcs_reginfo[] =3D { + { .name =3D "GCSCRE0_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 2, + .access =3D PL1_RW, .accessfn =3D access_gcs, .fgt =3D FGT_NGCS_EL0, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcscr_el[0]) }, + { .name =3D "GCSCR_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 0, + .access =3D PL1_RW, .accessfn =3D access_gcs, .fgt =3D FGT_NGCS_EL1, + .nv2_redirect_offset =3D 0x8d0 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 5, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 5, 0), + .fieldoffset =3D offsetof(CPUARMState, cp15.gcscr_el[1]) }, + { .name =3D "GCSCR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 5, .opc2 =3D 0, + .access =3D PL2_RW, .accessfn =3D access_gcs, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcscr_el[2]) }, + { .name =3D "GCSCR_EL3", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 5, .opc2 =3D 0, + .access =3D PL3_RW, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcscr_el[3]) }, + + { .name =3D "GCSPR_EL0", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 2, .crm =3D 5, .opc2 =3D 1, + .access =3D PL0_R | PL1_W, .accessfn =3D access_gcs_el0, + .fgt =3D FGT_NGCS_EL0, .writefn =3D gcspr_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcspr_el[0]) }, + { .name =3D "GCSPR_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 1, + .access =3D PL1_RW, .accessfn =3D access_gcs, + .fgt =3D FGT_NGCS_EL1, .writefn =3D gcspr_write, + .nv2_redirect_offset =3D 0x8c0 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 5, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 5, 1), + .fieldoffset =3D offsetof(CPUARMState, cp15.gcspr_el[1]) }, + { .name =3D "GCSPR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 5, .opc2 =3D 1, + .access =3D PL2_RW, .accessfn =3D access_gcs, .writefn =3D gcspr_wri= te, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcspr_el[2]) }, + { .name =3D "GCSPR_EL3", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 5, .opc2 =3D 1, + .access =3D PL3_RW, .writefn =3D gcspr_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.gcspr_el[2]) }, +}; + +void define_gcs_cpregs(ARMCPU *cpu) +{ + if (cpu_isar_feature(aa64_gcs, cpu)) { + define_arm_cp_regs(cpu, gcs_reginfo); + } +} diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 9bca1b8eae..4d649bb69c 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -635,6 +635,9 @@ void arm_emulate_firmware_reset(CPUState *cpustate, int= target_el) if (cpu_isar_feature(aa64_fgt, cpu)) { env->cp15.scr_el3 |=3D SCR_FGTEN; } + if (cpu_isar_feature(aa64_gcs, cpu)) { + env->cp15.scr_el3 |=3D SCR_GCSEN; + } if (cpu_isar_feature(aa64_tcr2, cpu)) { env->cp15.scr_el3 |=3D SCR_TCR2EN; } diff --git a/target/arm/helper.c b/target/arm/helper.c index 6642cae0cc..64b6c21aef 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -766,6 +766,9 @@ static void scr_write(CPUARMState *env, const ARMCPRegI= nfo *ri, uint64_t value) if (cpu_isar_feature(aa64_ecv, cpu)) { valid_mask |=3D SCR_ECVEN; } + if (cpu_isar_feature(aa64_gcs, cpu)) { + valid_mask |=3D SCR_GCSEN; + } if (cpu_isar_feature(aa64_tcr2, cpu)) { valid_mask |=3D SCR_TCR2EN; } @@ -3953,6 +3956,9 @@ static void hcrx_write(CPUARMState *env, const ARMCPR= egInfo *ri, if (cpu_isar_feature(aa64_sctlr2, cpu)) { valid_mask |=3D HCRX_SCTLR2EN; } + if (cpu_isar_feature(aa64_gcs, cpu)) { + valid_mask |=3D HCRX_GCSEN; + } =20 /* Clear RES0 bits. */ env->cp15.hcrx_el2 =3D value & valid_mask; @@ -4023,6 +4029,9 @@ uint64_t arm_hcrx_el2_eff(CPUARMState *env) if (cpu_isar_feature(aa64_sctlr2, cpu)) { hcrx |=3D HCRX_SCTLR2EN; } + if (cpu_isar_feature(aa64_gcs, cpu)) { + hcrx |=3D HCRX_GCSEN; + } return hcrx; } if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_HXE= N)) { @@ -7260,6 +7269,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) } =20 define_pm_cpregs(cpu); + define_gcs_cpregs(cpu); } =20 /* diff --git a/target/arm/meson.build b/target/arm/meson.build index f9f0beef05..3df7e03654 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -27,6 +27,7 @@ arm_user_ss.add(when: 'TARGET_AARCH64', if_false: files( 'cpu32-stubs.c', )) arm_user_ss.add(files( + 'cpregs-gcs.c', 'cpregs-pmu.c', 'debug_helper.c', 'helper.c', @@ -47,6 +48,7 @@ arm_common_system_ss.add(files( 'arch_dump.c', 'arm-powerctl.c', 'cortex-regs.c', + 'cpregs-gcs.c', 'cpregs-pmu.c', 'cpu-irq.c', 'debug_helper.c', --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961709; cv=none; d=zohomail.com; s=zohoarc; b=G5z/BrXhap8kunN3t1DEX8GjA2Zz6NxAbd3zd4I+wsXW/HKiLBs5xD/6tYrAKkXYJCecmM9xeFTVOgxItP3I/DxDT73s3MpO9MQpS0gEcERM3ZHfuRIo2J3pLFPllzcww0nfM4gcDeFO64gz6VRJwzAzzSCTWAyL6HDuD1r8GWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961709; h=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=xMk8zdLebXgz2q5eQ22qMhBeUAIlZk56wd1eur3ogN0=; b=G1vNpEx+iYeknIYkArQ9/WeHNGTCG0/sZFcZtcTaZssIw4+gXrZyYfKzPHx3tjTGbJ3X2wE100zdf4sh6J5wvvxOQtN7huHWHgu0yaZTIXElwThV9TZLtMdWcaDErZK8L6kNV+bhee+DzJTxH0yke6wGPWhUXNBfCuvz4VpkE9U= 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 17599617095451021.8502146176736; Wed, 8 Oct 2025 15:15:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBM-0005Q9-RQ; Wed, 08 Oct 2025 17:58:48 -0400 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 1v6cAK-0004Nz-C1 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9H-0006jw-E6 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:44 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-b608df6d2a0so194544a12.1 for ; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960595; x=1760565395; 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=xMk8zdLebXgz2q5eQ22qMhBeUAIlZk56wd1eur3ogN0=; b=b3SV6KkZoAwH+TOpzrs8GnaUyxDFuqqkQrhmXYGnFGOXFiezYdQ7EGQEOuKeyytigh bsXi6SQAXvQSYGkTjhi4tKJcxKyBN174qrVH/UKHttjeuvKE02Vdw8qd59LDZhNlNStK mCyjRbYEthFD+66Gjjd4Lz7er4kNpliqGuiU0UJJEh5S3wsbM1475qGsSY8FleO4odmW xGj7kB9xjsL3OWsDvFSIJ4puvg1Dlr3NZ9vEzNS9E7q5yrlzFp211qjqSGS2yPDK8yGF WHLgUYKnjArZN+shtBYm55VBWsjenXL0JyqfTddl2aN69LkCYjpkWMcS7sdh6vUGOf/P QC6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960595; x=1760565395; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xMk8zdLebXgz2q5eQ22qMhBeUAIlZk56wd1eur3ogN0=; b=eUPRqd/jDfPrf2jDqy61VlN0bRtztNefiZTAeZL2qEDA7AIthe4JulX5vRx1fqgj/q rIuJFFX8p/VJQsaJDeY2FnNwhOnHxHfNzCNr4k/7BFXjnIeB+XSfVqcfwObHPjw3H1X3 QEPmyUcwsl6+EulD/cKGOJeUsWjyjqii2Of9WL6/c6ht7j1lruYzbSIQZzPL1Pc0tApz 4G2JQV7aHs0+h1TFg5yvFNoG4y4pKw8sNsdgrfDjrPHzq7rquVXWQgzhQrU5BYDQL5Qv jxtOzWFbC7AJSv1Y1ReVIuc1b8J2/R/8W9d/FxYO7hNB+/yqEZJmM80Av16aDmH9yMN6 xhew== X-Gm-Message-State: AOJu0YwYxfVgfN/Cc+4yiUq3d3z4AFfR++08JDytVfa8NpuZKZzhd5gk x5e7R8RxcjzCGII7hT5hEqrIZy06wknSJw4esKeK09GSaJkbvvh8YhQpzNCIbxwxpSef/g7nb0M VLTOoxWo= X-Gm-Gg: ASbGncumE8JHVkwTlje2rTxIIJphkOlxDV3Iw5v8eSBZYupb3DB08ySeZ4nI73MSXOx 8/W2Ho62ehy6hS/gpDAFlamRbgEzP4PEpgHUdWDAm55f8w5umwCYb9MLpgMoCsylrzA0myoPTjO BeIRxBPjg7C+KyQIkTwRnw3qb4e9qDu55czu7M/oXVQtyg84cD6EeYBs0CULKoQ2pQYYizJgDi/ 3jTo4jMVltf2O5CXFc2O4e+vZbp/7LtJ51edAbgcolAJLAFRBpE1rvXxUSw0MT1owqtTaTmK1L0 eMnJomr5ygKSrOJAeB1eEqJU4NmX3RFKej9VjsQ43mUMYwu2Fw7Q7dgakb4TTqr1FETnJPaIF1w iNShJpJSEy18WizJWqIBUBO0FCO0Ty0/1vYIsM8s4zauCUkyrgt8wING7SW7Lf/RV2JM= X-Google-Smtp-Source: AGHT+IGgjBhu6r/Szg6nQjSyhxxrjs3NIwH/Ipuztt2HqwoEs6qY46r4FIg/VrWqWYMNIiqzfSdaRw== X-Received: by 2002:a17:903:298c:b0:265:982a:d450 with SMTP id d9443c01a7336-290273ffbf1mr65301245ad.40.1759960595234; Wed, 08 Oct 2025 14:56:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 32/73] target/arm: Add GCS enable and trap levels to DisasContext Date: Wed, 8 Oct 2025 14:55:32 -0700 Message-ID: <20251008215613.300150-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1759961714220116600 Content-Type: text/plain; charset="utf-8" Pipe GCSEnabled, GCSReturnValueCheckEnabled, and CheckGCSSTREnabled through hflags to the translator. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu.h | 3 +++ target/arm/tcg/translate.h | 6 ++++++ target/arm/tcg/hflags.c | 38 ++++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 +++ 4 files changed, 50 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index e55524ae10..775219364f 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2475,6 +2475,9 @@ FIELD(TBFLAG_A64, NV2_MEM_BE, 36, 1) FIELD(TBFLAG_A64, AH, 37, 1) /* FPCR.AH */ FIELD(TBFLAG_A64, NEP, 38, 1) /* FPCR.NEP */ FIELD(TBFLAG_A64, ZT0EXC_EL, 39, 2) +FIELD(TBFLAG_A64, GCS_EN, 41, 1) +FIELD(TBFLAG_A64, GCS_RVCEN, 42, 1) +FIELD(TBFLAG_A64, GCSSTR_EL, 43, 2) =20 /* * Helpers for using the above. Note that only the A64 accessors use diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index f1a6e5e2b6..761edded52 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -166,6 +166,12 @@ typedef struct DisasContext { bool fpcr_ah; /* True if FPCR.NEP is 1 (FEAT_AFP scalar upper-element result handlin= g) */ bool fpcr_nep; + /* True if GCSEnabled. */ + bool gcs_en; + /* True if GCSReturnValueCheckEnabled. */ + bool gcs_rvcen; + /* GCSSTR exception EL or 0 if enabled */ + uint8_t gcsstr_el; /* * >=3D 0, a copy of PSTATE.BTYPE, which will be 0 without v8.5-BTI. * < 0, set by the current instruction. diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index 17f83f13a4..5c9b9bec3b 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -451,6 +451,44 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *e= nv, int el, int fp_el, DP_TBFLAG_A64(flags, TCMA, aa64_va_parameter_tcma(tcr, mmu_idx)); } =20 + if (cpu_isar_feature(aa64_gcs, env_archcpu(env))) { + /* C.f. GCSEnabled */ + if (env->cp15.gcscr_el[el] & GCSCR_PCRSEL) { + switch (el) { + default: + if (!el_is_in_host(env, el) + && !(arm_hcrx_el2_eff(env) & HCRX_GCSEN)) { + break; + } + /* fall through */ + case 2: + if (arm_feature(env, ARM_FEATURE_EL3) + && !(env->cp15.scr_el3 & SCR_GCSEN)) { + break; + } + /* fall through */ + case 3: + DP_TBFLAG_A64(flags, GCS_EN, 1); + break; + } + } + + /* C.f. GCSReturnValueCheckEnabled */ + if (env->cp15.gcscr_el[el] & GCSCR_RVCHKEN) { + DP_TBFLAG_A64(flags, GCS_RVCEN, 1); + } + + /* C.f. CheckGCSSTREnabled */ + if (!(env->cp15.gcscr_el[el] & GCSCR_STREN)) { + DP_TBFLAG_A64(flags, GCSSTR_EL, el ? el : 1); + } else if (el =3D=3D 1 + && EX_TBFLAG_ANY(flags, FGT_ACTIVE) + && !FIELD_EX64(env->cp15.fgt_exec[FGTREG_HFGITR], + HFGITR_EL2, NGCSSTR_EL1)) { + DP_TBFLAG_A64(flags, GCSSTR_EL, 2); + } + } + if (env->vfp.fpcr & FPCR_AH) { DP_TBFLAG_A64(flags, AH, 1); } diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index a0e3300231..693eab1c01 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10344,6 +10344,9 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->nv2_mem_be =3D EX_TBFLAG_A64(tb_flags, NV2_MEM_BE); dc->fpcr_ah =3D EX_TBFLAG_A64(tb_flags, AH); dc->fpcr_nep =3D EX_TBFLAG_A64(tb_flags, NEP); + dc->gcs_en =3D EX_TBFLAG_A64(tb_flags, GCS_EN); + dc->gcs_rvcen =3D EX_TBFLAG_A64(tb_flags, GCS_RVCEN); + dc->gcsstr_el =3D EX_TBFLAG_A64(tb_flags, GCSSTR_EL); dc->vec_len =3D 0; dc->vec_stride =3D 0; dc->cp_regs =3D arm_cpu->cp_regs; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961151; cv=none; d=zohomail.com; s=zohoarc; b=mNvCxUwrNUFY/qqvH2naMbNH0gmoHgdYXeyI1nYFfaFlZUemAoxicRsK8WSKBUe3Vu9AowbE0e0QIKXHFMRAasWw5qUxZNEYhqLO9fKLQSI4GhNO3zSq5v5i8TUWCs70ar7SVXWgBPKNRQDlR3EDqxcH0LEpGbaVSgLfxeUUFTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961151; h=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=pbP0PhacBN6OOtL0crNE7p92W9z6GBnRnTHJYePdcJk=; b=VKY6kINKGVsejq5XTGvqcSVj4zlyUJo8G01gK3BwFrGP/E7pHsq/7nCHp4brX2KWKYByAOQL5EID37YCi54GAIaJ6EiF+jqX90j9abDmC2sdlmRZKIWYPY1QZIWh3kZoifBWR02DU2l0nmC6mb898+evAz/g0gIifKX6Oj8QoFQ= 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 1759961151561835.0599629510322; Wed, 8 Oct 2025 15:05:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCG-0007PY-8K; Wed, 08 Oct 2025 17:59:45 -0400 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 1v6cAW-0004TH-Fc for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:58 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9L-0006kE-30 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:56 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-b57d93ae3b0so165726a12.1 for ; Wed, 08 Oct 2025 14:56:38 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960596; x=1760565396; 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=pbP0PhacBN6OOtL0crNE7p92W9z6GBnRnTHJYePdcJk=; b=AYmAyn1KTWLLBD67Ug//GiyMbYSa6Z6BMNbDxmOhWbF+KgVu9v0iMUlrBbqA8v1rGd cbt6pzI8p4QTvkVnlbOB5vo1kUyKHXjCGKQf/urSq0sV3t4qcjsC/wHRDdkWJif2ifpU UAf+uUMaeSuztcaTdbwnRC+oFnY1hSTlSt2X6fhORaxLeMRKIkFWDdwy0kVZNgqL9Kvb i0Q8/eq1Atx582e8mJcBbnIBukSWbdDIjyMbD+N921Tk/VhxQxlfA+w/VblTOQIMA4LO pL9tG4lzVouu3evi/ikvZMDTjlRMCHhzxJqz5ZPhI8D3d8bYRe7Pu7UMGj/0YzNwgmW3 mbHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960596; x=1760565396; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pbP0PhacBN6OOtL0crNE7p92W9z6GBnRnTHJYePdcJk=; b=GTCKUNLk9L6aZrr6ypquKBR3Lt2lZDw2PKxr3T7PGbbBSRCTmqAecH259SpwUt/47n W7LDTJ+2dpTCCmHlUsLGjOUVmI7jDuRlpXnkY+wmVfNPW16xE0tf8C+1YaJrpRePOPLr 0bAx/B1jErDkTUu8uhKkFHajFb+Bw1D1aZb8JBMkz98zJooaV+IQywDEpqoaR3gLc9Fg 6x8wub6//zknBQ8D/uUBaibPGxVo+lukTK8dKLAbK3qs0E4U5iZvwZUAX8Hv2v1FszuF m+3ZXVPVKtktLF1tgNPS2eFkWPMN/TWWldI22H8vrxjZa/8aIqYuJ90PtAGqNpXh0vrb YerA== X-Gm-Message-State: AOJu0YxwASySe7hIkTaHZo+siw9zOw0hIZPt001aqRLma2/W55voucox o6VWeZPFnwOHeh0GIX87TP7JZLNHGWt+ngxxsxVPQIbTr0oPwyLRRPlVOU/cfNpOoUdfZpQUrY8 VPFBz2o4= X-Gm-Gg: ASbGncs5E0gsoW9/ShW2lweKbyL9h7E68mULLEiDdVoY54TuRsRKFkBr4MRA3mK6OfX ZxJK9KOLOZOA0o/aCO8bdgp0MF0897iaHVSjMETpSOCshdMWP4hD7tRZV6x9ZnPpXJZ/dgis1PF Ms8VZId0Lxo+LZott0g1xofXGZ345fY39z7liQ+HaZsCCzpUJpIIIaj2Et1O0tclH4c0BlBmkVI uLDSjvI1WmpdyqG4CrqTkhLXo0ROmh3OZLgMEhmLgirROpUlQOocuoc/FG+npX5CsuoIkR6KVI3 e156Rf3NJ8RMERMEBgx+VtxiIqzdtmLGc6TMiH6iKaxrFB3LUFSvSQ3HN5z11qcB4gooHdAf/wH 5onoX1YXe2T8q+D7KsoZTcrXSIgJh9mXWKepZhN3wXeKTcTAzLbnQmv1M X-Google-Smtp-Source: AGHT+IEwSFGYKhI8k1o3/DKsm6yR54T04FqKgfCf0ZH43eTwtIpuxmPFY3WBV9oNcwUbrgi1WkGgqg== X-Received: by 2002:a17:903:37c7:b0:269:8edf:67f8 with SMTP id d9443c01a7336-290272ff5b0mr65857895ad.52.1759960595839; Wed, 08 Oct 2025 14:56:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Gustavo Romero , Pierrick Bouvier Subject: [PATCH v7 33/73] target/arm: Implement FEAT_CHK Date: Wed, 8 Oct 2025 14:55:33 -0700 Message-ID: <20251008215613.300150-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.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: 1759961157158116600 Content-Type: text/plain; charset="utf-8" This feature contains only the CHKFEAT instruction. It has no ID enable, being back-allocated into the hint nop space. Reviewed-by: Gustavo Romero Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 14 ++++++++++++++ docs/system/arm/emulation.rst | 1 + target/arm/tcg/a64.decode | 1 + 3 files changed, 16 insertions(+) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 693eab1c01..78b2881a15 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2124,6 +2124,20 @@ static bool trans_AUTIBSP(DisasContext *s, arg_AUTIB= SP *a) return true; } =20 +static bool trans_CHKFEAT(DisasContext *s, arg_CHKFEAT *a) +{ + uint64_t feat_en =3D 0; + + if (s->gcs_en) { + feat_en |=3D 1 << 0; + } + if (feat_en) { + TCGv_i64 x16 =3D cpu_reg(s, 16); + tcg_gen_andi_i64(x16, x16, ~feat_en); + } + return true; +} + static bool trans_CLREX(DisasContext *s, arg_CLREX *a) { tcg_gen_movi_i64(cpu_exclusive_addr, -1); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index c779a50570..68d9a4e734 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -28,6 +28,7 @@ the following architecture extensions: - FEAT_BF16 (AArch64 BFloat16 instructions) - FEAT_BTI (Branch Target Identification) - FEAT_CCIDX (Extended cache index) +- FEAT_CHK (Check Feature Status) - FEAT_CMOW (Control for cache maintenance permission) - FEAT_CRC32 (CRC32 instructions) - FEAT_Crypto (Cryptographic Extension) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 55ff6c504f..8283a9c83d 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -256,6 +256,7 @@ ERETA 1101011 0100 11111 00001 m:1 11111 1111= 1 &reta # ERETAA, ERETAB AUTIASP 1101 0101 0000 0011 0010 0011 101 11111 AUTIBZ 1101 0101 0000 0011 0010 0011 110 11111 AUTIBSP 1101 0101 0000 0011 0010 0011 111 11111 + CHKFEAT 1101 0101 0000 0011 0010 0101 000 11111 ] # The canonical NOP has CRm =3D=3D op2 =3D=3D 0, but all of the space # that isn't specifically allocated to an instruction must NOP --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961661; cv=none; d=zohomail.com; s=zohoarc; b=l3W4U4aVeMW51x5AlvwHF2pdazlI7kR/Sf+z2dEgQktijYhls+6J1GXl6+SPrsuLamlzFxyWi0bYMdnuIhgBBi4U05fls7TLzKfKb9gCr2QCszh3yAWaWW44ZF+bo0+g+ab+e6hamD7KwRzsxZvKDBxq2wp0M8Uk2aSXXfXTTjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961661; h=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=9TlVHZpayQS/myvCVeAjxeyWQxv6D3ZZ+dMoMBNlFQc=; b=aqMBMcwz8pgTDRDaalafGMEoKJjW8BlLXMJuPuCEXT3GwE+T5KWNwO9FjrzxbI5CSQc1U4bx4QK8UdqxNJ0wqyb1iQps2GrdzNYblxLg7eUdI+O/44J7wRIJQSExL5F2wYrjPmuBbtCD9QAfo80N/fCLA6OlpJ6nKCr46LC5f5I= 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 1759961661614308.5718380099062; Wed, 8 Oct 2025 15:14:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBi-000605-J6; Wed, 08 Oct 2025 17:59:15 -0400 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 1v6cAO-0004Pl-EI for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:50 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9H-0006kS-89 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:48 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-781ea2cee3fso306466b3a.0 for ; Wed, 08 Oct 2025 14:56:37 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960596; x=1760565396; 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=9TlVHZpayQS/myvCVeAjxeyWQxv6D3ZZ+dMoMBNlFQc=; b=B0TtU5gZXVA4ReBA/hrI7UWMLvNkqAHHXIlgLk+ugEXTw0BrRlON7u4HM9zTzFklXi YaxOjE6hG7OaAGsvwjBUxP5Wajk8tZK/GgC7NIS1jvOHH3bSACY0F6U5J5mVImKmFqbP 8bn5vQlfvWNGlqu/HKMD3ZNtG9ccyRzqMUZSUk3+z6xE30bZqLmQ59gCJwGN2icoGCcM 2tczL5Nu0MHO0qtjNMiZD/PS1d37GNYYvGDZ6D8xOWRNLVVWK6VChOTxsY+0rSC9bZRm n7QW0ZdEo3Mm/IFKcib6s6FPGRix2CsYRbKGFG1sXPJ1XwwN5vNQZXUDEvz7VAbOUooW lL6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960596; x=1760565396; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9TlVHZpayQS/myvCVeAjxeyWQxv6D3ZZ+dMoMBNlFQc=; b=S3CmQYYIMgGnWv4QHfJfVYtuUaN5uFRxh4oQvteuj1PXZJDAp8kdb6mCL4nh/bmDih 3ZOnuEJD2ZiXYspgFvE463hOv1xqiyDJBNoU5JTB1oSIEV9k8oz7ebTEgf6UnXQW3MuJ 0xfUkdbsLnDk2c9XshDJG+DmVLzYuolIc4m5DFzXzgaNFoTw3r33bqc9RJG/b00xtnaz kljnT7vCQnMqHztH94dBkOP78fEBgAHul+5EZXBWKAdeb/IkwEwRirUxqEv/c4KRSwok RTwrvMesyQgfB5vBNGcNuHeA1+FVRvSHmQa4xu4W8nc5D5C6cNTf2b5ta3Y/9psrrPjz sVaA== X-Gm-Message-State: AOJu0YzM9a6KO/X88SkpvO+C3Wvj+K/7rgc7I/oVHrPDJiZTUuuUY+bh e4G7QJP5j5cWon+f9jmue3tksUeN+0zuRrCFs4rt8Ul5EnOXjqs1S5WdeeOduTpKDiiIEByUw4t jBilMDmE= X-Gm-Gg: ASbGncu18vP7366NHNJ4A+ci+L7gbQ7ZQX5HMrx3UrMLfEihF5N7uCvCpCua+Bj1FSl Eqo2Tn/z3Yq+EoJPrrTylHokCOcYtSXQLsSF+qYmwnpUOE4J7Hz+A5M+r0yCDmbEbx/v/X5PQe6 SdNKHQZmS0I2u4hwfNhMxjlP2+5xmAJkzryHoQsbl0a5PWhdBEQc3T+9xklMm4XYyZjCMiHNxOI 8OhcucLVrKICccR95ngrxz1DHElhVPeTMhSjbdeCXmu3j4sVTTV8RHDIMR0SDvm0UsW2tDOhJeU fIgpJe56vJSTmuULlL7J8b9b58oWYqT4IZthipZU+lfi1Hbk/q0eaz6otTCvryP3DBHUgU1ssxE dYFcOFm8U6ii7DrqJ5J/WzuKpYhK5vYLAUbwA/PUOcW7fC3ezpbRQGe/X X-Google-Smtp-Source: AGHT+IE0p8RUt69UVrY3m+ydEzkfC65aZWzrgJQ6t+dvNsP8c96qXcbMKX7L8EG9pyyaowt36WsPmA== X-Received: by 2002:a17:902:8a89:b0:27e:ec72:f67 with SMTP id d9443c01a7336-29027356abdmr47862115ad.6.1759960596465; Wed, 08 Oct 2025 14:56:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 34/73] target/arm: Make helper_exception_return system-only Date: Wed, 8 Oct 2025 14:55:34 -0700 Message-ID: <20251008215613.300150-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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: 1759961663831154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/tcg/helper-a64.h | 5 ++++- target/arm/tcg/helper-a64.c | 2 ++ target/arm/tcg/translate-a64.c | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/helper-a64.h b/target/arm/tcg/helper-a64.h index 85023465b7..b6008b5a3a 100644 --- a/target/arm/tcg/helper-a64.h +++ b/target/arm/tcg/helper-a64.h @@ -80,7 +80,6 @@ DEF_HELPER_3(vfp_ah_maxh, f16, f16, f16, fpst) DEF_HELPER_3(vfp_ah_maxs, f32, f32, f32, fpst) DEF_HELPER_3(vfp_ah_maxd, f64, f64, f64, fpst) =20 -DEF_HELPER_2(exception_return, void, env, i64) DEF_HELPER_FLAGS_2(dc_zva, TCG_CALL_NO_WG, void, env, i64) =20 DEF_HELPER_FLAGS_3(pacia, TCG_CALL_NO_WG, i64, env, i64, i64) @@ -145,3 +144,7 @@ DEF_HELPER_FLAGS_5(gvec_fmulx_d, TCG_CALL_NO_RWG, void,= ptr, ptr, ptr, fpst, i32 DEF_HELPER_FLAGS_5(gvec_fmulx_idx_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) DEF_HELPER_FLAGS_5(gvec_fmulx_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) DEF_HELPER_FLAGS_5(gvec_fmulx_idx_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + +#ifndef CONFIG_USER_ONLY +DEF_HELPER_2(exception_return, void, env, i64) +#endif diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index 71c6c44ee8..6d77fd0113 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -576,6 +576,7 @@ uint32_t HELPER(advsimd_rinth)(uint32_t x, float_status= *fp_status) return ret; } =20 +#ifndef CONFIG_USER_ONLY static int el_from_spsr(uint32_t spsr) { /* Return the exception level that this SPSR is requesting a return to, @@ -787,6 +788,7 @@ illegal_return: qemu_log_mask(LOG_GUEST_ERROR, "Illegal exception return at EL%d: " "resuming execution at 0x%" PRIx64 "\n", cur_el, env->pc= ); } +#endif /* !CONFIG_USER_ONLY */ =20 void HELPER(dc_zva)(CPUARMState *env, uint64_t vaddr_in) { diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 78b2881a15..43c9bfef93 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1870,6 +1870,9 @@ static bool trans_BLRA(DisasContext *s, arg_bra *a) =20 static bool trans_ERET(DisasContext *s, arg_ERET *a) { +#ifdef CONFIG_USER_ONLY + return false; +#else TCGv_i64 dst; =20 if (s->current_el =3D=3D 0) { @@ -1889,10 +1892,14 @@ static bool trans_ERET(DisasContext *s, arg_ERET *a) /* Must exit loop to check un-masked IRQs */ s->base.is_jmp =3D DISAS_EXIT; return true; +#endif } =20 static bool trans_ERETA(DisasContext *s, arg_reta *a) { +#ifdef CONFIG_USER_ONLY + return false; +#else TCGv_i64 dst; =20 if (!dc_isar_feature(aa64_pauth, s)) { @@ -1918,6 +1925,7 @@ static bool trans_ERETA(DisasContext *s, arg_reta *a) /* Must exit loop to check un-masked IRQs */ s->base.is_jmp =3D DISAS_EXIT; return true; +#endif } =20 static bool trans_NOP(DisasContext *s, arg_NOP *a) --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175996099291313.767360443376901; Wed, 8 Oct 2025 15:03:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBT-0005kM-D9; Wed, 08 Oct 2025 17:58:56 -0400 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 1v6cAY-0004Tf-Rx for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:59 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9K-0006kh-CI for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:56 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2897522a1dfso3039475ad.1 for ; Wed, 08 Oct 2025 14:56:40 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960597; x=1760565397; 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=bp0yhTPHMN/nvPJ//sZfWUdhLP1BkYQ3HbuDh6ZDRyE=; b=P7YRzzW6fcSIWs8GJPbT+CdUSdbWgRlz8KNxUoBsUGQiQnSZgKbIBauFuJOP2sxN/o 4FC6Fmmzx7NpSE5x81x9WWXSZnUAA6H+Oc0eeTohQfn0KMEquGYeNHOhiJEJg8iShCYP 4FQM7HAxrrKb44K8HyYpSCUanU1fwAdIjGh6xehAuDaYX4Dr9fDVBus95hPSJlYqGPty CmWiav9Y0sq9Cmm5zUmp7qPeMajKOunSwe/bvKss5GUvhDw2u9txcvWFZisEU2C0x+/R 6cVi351sKOWKq4Foyksa0Ah03XNlGMKFBZe8cHEBEr8Sqb+JLLcfTMhlNCnmZAx66fp6 ImiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960597; x=1760565397; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bp0yhTPHMN/nvPJ//sZfWUdhLP1BkYQ3HbuDh6ZDRyE=; b=GKh+A8utrzM6ACiQ+akiM/azxh7Dux3ycaVN59ZedyK3ZWlOhqc+Blq64ngHKqaEC9 NDMKj/KnOOcQuKMtY4MeIxofrscBqEfLLZFVGInLkDTZRud6/0GOWjFzsXL2I1KpqSXX jPR25zZz3CqosskTEFG3cpyxooAj+0V6acIEtszYNsGKT/cotojwpGLVGgHOrrm3iCJW DypJX1bccb3S7a/08vXdPKGowEhINzQDfW9EwroReGDFhJciAsTv3Y1YtYlEWnYKewmi dzeQSyRynsNkVcGL0juPmnmwQD4PZoBD6Wl+MjnwRaxaThzIji04kfKRPaCr40EkLNp6 EkPw== X-Gm-Message-State: AOJu0Yw7z1yKQWg8g+Q/LmwdzeoFGzcFWfPpKw0Gwa1m4fpcS/E7PzhM c8eBFPGJ8Tm/Ph4CTA9wJO+dMGuvbGFZPQvGacyo2ui07UhihS03u0fNaaJT5SxvMGFc0bG3avt pnqmJlL4= X-Gm-Gg: ASbGncv+bghjrTrIxLwmr5PeQl1o8EDKfOpITPfwMSNvxMYOlE8vD+9gV83ig7iQ3fS vbqFEAV9l0QpATJh/MG3rXvoay61Z+GT86Ff4L8383kSNqnHA1KPOLB1bHCyLPFo/DLBfQSPI8x BWsB8wxKLTINZKO4L7V9IR2ScFnRimx5V61GHaWdQqKUjTy7N38pJdB4PNcajEnQtY9u/rA7Alb 2K56cbTLAltZiXyKMj25EiM7su1+2cG4wIfJEXOWDtdcM2oogEo/QDfLcvGr0AW4NAhVd03TFDL xvSBQvgTt/GmemKsbu//biVE4s36JAl3PGEVIKToRQC9n8mZXxJ5oQIdUnwtH9f+7m+SFKgwayb 9KRMpAPoTfOUm4H9uQ9l1887EUAFsiS09rR5qWe7TasEonoPSVEIp4+Of X-Google-Smtp-Source: AGHT+IE4QKW7MbO77KJ56cf6yQDVAV0EIsHKOZ3PKTApQMupj3yiOspMxd9q4dwNf0HlhYGsC7JS5Q== X-Received: by 2002:a17:902:ce81:b0:288:ea7a:56b5 with SMTP id d9443c01a7336-2902723b882mr67882945ad.15.1759960597087; Wed, 08 Oct 2025 14:56:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 35/73] target/arm: Export cpsr_{read_for, write_from}_spsr_elx Date: Wed, 8 Oct 2025 14:55:35 -0700 Message-ID: <20251008215613.300150-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759960994011154100 Content-Type: text/plain; charset="utf-8" Move cpsr_write_from_spsr_elx from tcg/helper-a64.c to helper.c, so that it's present with --disable-tcg. Declare both in internals.h. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/internals.h | 2 ++ target/arm/helper.c | 20 +++++++++++++++++++- target/arm/tcg/helper-a64.c | 20 -------------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 109aa104bf..2a85ab762d 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1897,6 +1897,8 @@ void vfp_clear_float_status_exc_flags(CPUARMState *en= v); */ void vfp_set_fpcr_to_host(CPUARMState *env, uint32_t val, uint32_t mask); bool arm_pan_enabled(CPUARMState *env); +uint32_t cpsr_read_for_spsr_elx(CPUARMState *env); +void cpsr_write_from_spsr_elx(CPUARMState *env, uint32_t val); =20 /* Compare uint64_t for qsort and bsearch. */ int compare_u64(const void *a, const void *b); diff --git a/target/arm/helper.c b/target/arm/helper.c index 64b6c21aef..def4edf808 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -8896,7 +8896,7 @@ static int aarch64_regnum(CPUARMState *env, int aarch= 32_reg) } } =20 -static uint32_t cpsr_read_for_spsr_elx(CPUARMState *env) +uint32_t cpsr_read_for_spsr_elx(CPUARMState *env) { uint32_t ret =3D cpsr_read(env); =20 @@ -8911,6 +8911,24 @@ static uint32_t cpsr_read_for_spsr_elx(CPUARMState *= env) return ret; } =20 +void cpsr_write_from_spsr_elx(CPUARMState *env, uint32_t val) +{ + uint32_t mask; + + /* Save SPSR_ELx.SS into PSTATE. */ + env->pstate =3D (env->pstate & ~PSTATE_SS) | (val & PSTATE_SS); + val &=3D ~PSTATE_SS; + + /* Move DIT to the correct location for CPSR */ + if (val & PSTATE_DIT) { + val &=3D ~PSTATE_DIT; + val |=3D CPSR_DIT; + } + + mask =3D aarch32_cpsr_valid_mask(env->features, &env_archcpu(env)->isa= r); + cpsr_write(env, val, mask, CPSRWriteRaw); +} + static bool syndrome_is_sync_extabt(uint32_t syndrome) { /* Return true if this syndrome value is a synchronous external abort = */ diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index 6d77fd0113..eaea7859d3 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -615,26 +615,6 @@ static int el_from_spsr(uint32_t spsr) } } =20 -static void cpsr_write_from_spsr_elx(CPUARMState *env, - uint32_t val) -{ - uint32_t mask; - - /* Save SPSR_ELx.SS into PSTATE. */ - env->pstate =3D (env->pstate & ~PSTATE_SS) | (val & PSTATE_SS); - val &=3D ~PSTATE_SS; - - /* Move DIT to the correct location for CPSR */ - if (val & PSTATE_DIT) { - val &=3D ~PSTATE_DIT; - val |=3D CPSR_DIT; - } - - mask =3D aarch32_cpsr_valid_mask(env->features, \ - &env_archcpu(env)->isar); - cpsr_write(env, val, mask, CPSRWriteRaw); -} - void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc) { ARMCPU *cpu =3D env_archcpu(env); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961038; cv=none; d=zohomail.com; s=zohoarc; b=cC/ftZYv96UqRUv8V34eZoYO8QMfzvIzIjNwKahiN1ef1DHa8RXenxkAGQA0AAaXv7l8MC7oCW9YKGSdjPyznD6SfWo7L18mIHCxqNVq+c3tgmCBcr+d6+6WRXIXFtNb66YO6kDKBBkgbJGKUy4ALNuJmCpT30wtnpWnLLfMkek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961038; h=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=cYWtsb6ryiBmMgvab27wd20IWsIO9v5cPfg1KPGN4gQ=; b=lZdIIAmqhkve2/Mxzb1iILT5Krgv+/N0HvvB5QAxLadHzFLpmg5cYYUEiPp/vUc/HZxCVO3TcgIcCN83CopKKAa7qzOmQMrnh3yw18tUOKqadrhym/mDRflLXR/fhiC3MPr7hBr4YjGS4VNic/bS1R3ZMu/tKrV5cg+2bzQTExU= 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 175996103890912.549568023480333; Wed, 8 Oct 2025 15:03:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBT-0005hQ-39; Wed, 08 Oct 2025 17:58:55 -0400 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 1v6cAN-0004Pe-Vc for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:50 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9H-0006kt-JL for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:47 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-27edcbcd158so3393765ad.3 for ; Wed, 08 Oct 2025 14:56:39 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960598; x=1760565398; 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=cYWtsb6ryiBmMgvab27wd20IWsIO9v5cPfg1KPGN4gQ=; b=kD72ypfiY/yncKZBktKpOdrspDSHWmYNUlOcCnbTmbwOoHLOcW/iCI3uTzi5Hlw9B6 uOZaV7ZvAK7b3gQav4lMW8dT0kTki6qx6lM8sgNIleYjy0IRjyfZ5pO9bCT1cvPZFvtb TTzKF0QnHnqP8Mixsmpmx7VR2rZEluBIehA87kcBREFJUbBU855vYaIr2sT3hrmq/JqN MuRmnKM1Q/DYR4lxSKc32HereuePAn8eoxvRrSD/fmPoolklWqT/Voow6gfuGGep1VZY w2q0uOQdB78KGtyCvdVvjWRxx9Zh5fhVgFVLHQcerQIdg3LIxceF2qJ9hbpjk/iBROuX 5pHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960598; x=1760565398; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cYWtsb6ryiBmMgvab27wd20IWsIO9v5cPfg1KPGN4gQ=; b=Ss6+rpVHm+E3repx5uiB0Ewpzi/XpDhZNBji7dPDya/iZz1Z1pEVREZk3vfMk9k1rC CKqAXLOPOiOtyDZROrOepSoU0QnlvBDgrMtKV8QnKkUZ651AnWpEFOfKpDihfSig+9k+ Op26rxEB/GW1iI1ePVh4zEfOL/z2NHiNvFnPRNAgVfr+MZ31aGItj1+zLs87p6J/lV/7 fKO08NTnnftdFEi8n++Ts6/LnsMoXCfQatFJ/8En0j2nCzNG7g5oOKCGgX2HbtZHNa/z bH5Uj9ZgnNN7Eh89Y7XXqkV/csPOlI6aPF33l7rHFUgZEKkzFkJgWLP30ffZ2l/ghowM ihAQ== X-Gm-Message-State: AOJu0YwDzyZQxqx/rB/grJ7qybYJ/pbVukqotnByjyO8D756Te0WeU8g 7C+Qm04x18QPX/bUNzZxC9a0p/LbC26MO5La8OG/GJzsmg/DrQ3FJKAtmV59yw6tMm4W7Eggy+z zGXyXx3o= X-Gm-Gg: ASbGncsLquGNEP38QLSNzM3jteek5elIUWZ+rTOyo6bMD3qEziOPd+v6y33SUU0V2g1 FdRMQVQ3+OOCSxQjuJ00qtRqqvyayk2diquneNy5nP8VPd/JpcXTjZyMgy781Q3lsjHWM2DPgMO wzlBO9Oip8NLgu8g2+BQzxxQc9eXgEAHljdSk/MAx7hTpk2os1gWl2rS2j3IN73PU5OuCwJ110k 8nJRgYFq+/+LUYv8QSjhhZ1T0vVvxQGiXgirLcF0WrCC0zJwZwRWTwiXHx45yt6MPXPFJlwCMTY oo3OwmmKjlbSrKNDZqymTevtEmHm1O2JU9l1F7TTXwGx+qRm1foX5gCyg5qmw7K1F6stMO2qQFB MGq1iugrnOSZB5VSNxIGP9ZTAj1Zz8X5qOeRvhKEQlAtL8ugr3VrT0FLJoXcyDtv/r7E= X-Google-Smtp-Source: AGHT+IGvBwGiolk2CMGjXDUOtifWHfWVi9ewwMddgz/39r9L3AOS7NkKY8VWb/kh0qsoKsSCPnX5VA== X-Received: by 2002:a17:903:910:b0:28e:a70f:e879 with SMTP id d9443c01a7336-29027213361mr58094165ad.1.1759960597717; Wed, 08 Oct 2025 14:56:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell , Pierrick Bouvier Subject: [PATCH v7 36/73] target/arm: Expand pstate to 64 bits Date: Wed, 8 Oct 2025 14:55:36 -0700 Message-ID: <20251008215613.300150-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.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: 1759961040651154100 Content-Type: text/plain; charset="utf-8" The ARM now defines 36 bits in SPSR_ELx in aarch64 mode, so it's time to bite the bullet and extend PSTATE to match. Most changes are straightforward, adjusting printf formats, changing local variable types. More complex is migration, where to maintain backward compatibility a new pstate64 record is introduced, and only when one of the extensions that sets bits 32-35 are active. The fate of gdbstub is left undecided for the moment. Reviewed-by: Peter Maydell Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu.h | 8 ++-- target/arm/tcg/translate.h | 20 ++++----- target/arm/cpu.c | 6 +-- target/arm/gdbstub64.c | 2 + target/arm/helper.c | 11 ++--- target/arm/machine.c | 81 +++++++++++++++++++++++++++++++++++++ target/arm/tcg/helper-a64.c | 2 +- 7 files changed, 107 insertions(+), 23 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 775219364f..b8abfd8276 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -268,7 +268,7 @@ typedef struct CPUArchState { uint64_t xregs[32]; uint64_t pc; /* PSTATE isn't an architectural register for ARMv8. However, it is - * convenient for us to assemble the underlying state into a 32 bit fo= rmat + * convenient for us to assemble the underlying state into a 64 bit fo= rmat * identical to the architectural format used for the SPSR. (This is a= lso * what the Linux kernel's 'pstate' field in signal handlers and KVM's * 'pstate' register are.) Of the PSTATE bits: @@ -280,7 +280,7 @@ typedef struct CPUArchState { * SM and ZA are kept in env->svcr * all other bits are stored in their correct places in env->pstate */ - uint32_t pstate; + uint64_t pstate; bool aarch64; /* True if CPU is in aarch64 state; inverse of PSTATE.nR= W */ bool thumb; /* True if CPU is in thumb mode; cpsr[5] */ =20 @@ -1538,7 +1538,7 @@ static inline unsigned int aarch64_pstate_mode(unsign= ed int el, bool handler) * interprocessing, so we don't attempt to sync with the cpsr state used by * the 32 bit decoder. */ -static inline uint32_t pstate_read(CPUARMState *env) +static inline uint64_t pstate_read(CPUARMState *env) { int ZF; =20 @@ -1548,7 +1548,7 @@ static inline uint32_t pstate_read(CPUARMState *env) | env->pstate | env->daif | (env->btype << 10); } =20 -static inline void pstate_write(CPUARMState *env, uint32_t val) +static inline void pstate_write(CPUARMState *env, uint64_t val) { env->ZF =3D (~val) & PSTATE_Z; env->NF =3D val; diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 761edded52..943dfd45fe 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -378,27 +378,27 @@ static inline TCGv_i32 get_ahp_flag(void) } =20 /* Set bits within PSTATE. */ -static inline void set_pstate_bits(uint32_t bits) +static inline void set_pstate_bits(uint64_t bits) { - TCGv_i32 p =3D tcg_temp_new_i32(); + TCGv_i64 p =3D tcg_temp_new_i64(); =20 tcg_debug_assert(!(bits & CACHED_PSTATE_BITS)); =20 - tcg_gen_ld_i32(p, tcg_env, offsetof(CPUARMState, pstate)); - tcg_gen_ori_i32(p, p, bits); - tcg_gen_st_i32(p, tcg_env, offsetof(CPUARMState, pstate)); + tcg_gen_ld_i64(p, tcg_env, offsetof(CPUARMState, pstate)); + tcg_gen_ori_i64(p, p, bits); + tcg_gen_st_i64(p, tcg_env, offsetof(CPUARMState, pstate)); } =20 /* Clear bits within PSTATE. */ -static inline void clear_pstate_bits(uint32_t bits) +static inline void clear_pstate_bits(uint64_t bits) { - TCGv_i32 p =3D tcg_temp_new_i32(); + TCGv_i64 p =3D tcg_temp_new_i64(); =20 tcg_debug_assert(!(bits & CACHED_PSTATE_BITS)); =20 - tcg_gen_ld_i32(p, tcg_env, offsetof(CPUARMState, pstate)); - tcg_gen_andi_i32(p, p, ~bits); - tcg_gen_st_i32(p, tcg_env, offsetof(CPUARMState, pstate)); + tcg_gen_ld_i64(p, tcg_env, offsetof(CPUARMState, pstate)); + tcg_gen_andi_i64(p, p, ~bits); + tcg_gen_st_i64(p, tcg_env, offsetof(CPUARMState, pstate)); } =20 /* If the singlestep state is Active-not-pending, advance to Active-pendin= g. */ diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 4d649bb69c..8ecf8a5e4d 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -826,7 +826,7 @@ static void aarch64_cpu_dump_state(CPUState *cs, FILE *= f, int flags) { ARMCPU *cpu =3D ARM_CPU(cs); CPUARMState *env =3D &cpu->env; - uint32_t psr =3D pstate_read(env); + uint64_t psr =3D pstate_read(env); int i, j; int el =3D arm_current_el(env); uint64_t hcr =3D arm_hcr_el2_eff(env); @@ -848,7 +848,7 @@ static void aarch64_cpu_dump_state(CPUState *cs, FILE *= f, int flags) } else { ns_status =3D ""; } - qemu_fprintf(f, "PSTATE=3D%08x %c%c%c%c %sEL%d%c", + qemu_fprintf(f, "PSTATE=3D%016" PRIx64 " %c%c%c%c %sEL%d%c", psr, psr & PSTATE_N ? 'N' : '-', psr & PSTATE_Z ? 'Z' : '-', @@ -865,7 +865,7 @@ static void aarch64_cpu_dump_state(CPUState *cs, FILE *= f, int flags) (FIELD_EX64(env->svcr, SVCR, SM) ? 'S' : '-')); } if (cpu_isar_feature(aa64_bti, cpu)) { - qemu_fprintf(f, " BTYPE=3D%d", (psr & PSTATE_BTYPE) >> 10); + qemu_fprintf(f, " BTYPE=3D%d", (int)(psr & PSTATE_BTYPE) >> 10); } qemu_fprintf(f, "%s%s%s", (hcr & HCR_NV) ? " NV" : "", diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c index 3bccde2bf2..65d6bbe65f 100644 --- a/target/arm/gdbstub64.c +++ b/target/arm/gdbstub64.c @@ -47,6 +47,7 @@ int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArra= y *mem_buf, int n) case 32: return gdb_get_reg64(mem_buf, env->pc); case 33: + /* pstate is now a 64-bit value; can we simply adjust the xml? */ return gdb_get_reg32(mem_buf, pstate_read(env)); } /* Unknown register. */ @@ -75,6 +76,7 @@ int aarch64_cpu_gdb_write_register(CPUState *cs, uint8_t = *mem_buf, int n) return 8; case 33: /* CPSR */ + /* pstate is now a 64-bit value; can we simply adjust the xml? */ pstate_write(env, tmp); return 4; } diff --git a/target/arm/helper.c b/target/arm/helper.c index def4edf808..8e342b0811 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -8961,8 +8961,8 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) CPUARMState *env =3D &cpu->env; unsigned int new_el =3D env->exception.target_el; vaddr addr =3D env->cp15.vbar_el[new_el]; - unsigned int new_mode =3D aarch64_pstate_mode(new_el, true); - unsigned int old_mode; + uint64_t new_mode =3D aarch64_pstate_mode(new_el, true); + uint64_t old_mode; unsigned int cur_el =3D arm_current_el(env); int rt; =20 @@ -9110,7 +9110,7 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) * If NV2 is disabled, change SPSR when NV,NV1 =3D=3D 1,0 = (I_ZJRNN) * If NV2 is enabled, change SPSR when NV is 1 (I_DBTLM) */ - old_mode =3D deposit32(old_mode, 2, 2, 2); + old_mode =3D deposit64(old_mode, 2, 2, 2); } } } else { @@ -9123,7 +9123,7 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) } env->banked_spsr[aarch64_banked_spsr_index(new_el)] =3D old_mode; =20 - qemu_log_mask(CPU_LOG_INT, "...with SPSR 0x%x\n", old_mode); + qemu_log_mask(CPU_LOG_INT, "...with SPSR 0x%" PRIx64 "\n", old_mode); qemu_log_mask(CPU_LOG_INT, "...with ELR 0x%" PRIx64 "\n", env->elr_el[new_el]); =20 @@ -9177,7 +9177,8 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) =20 env->pc =3D addr; =20 - qemu_log_mask(CPU_LOG_INT, "...to EL%d PC 0x%" PRIx64 " PSTATE 0x%x\n", + qemu_log_mask(CPU_LOG_INT, "...to EL%d PC 0x%" PRIx64 + " PSTATE 0x%" PRIx64 "\n", new_el, env->pc, pstate_read(env)); } =20 diff --git a/target/arm/machine.c b/target/arm/machine.c index ce20b46f50..44a0cf844b 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -816,6 +816,80 @@ static const VMStateInfo vmstate_cpsr =3D { .put =3D put_cpsr, }; =20 +static int get_pstate64(QEMUFile *f, void *opaque, size_t size, + const VMStateField *field) +{ + ARMCPU *cpu =3D opaque; + CPUARMState *env =3D &cpu->env; + uint64_t val =3D qemu_get_be64(f); + + env->aarch64 =3D ((val & PSTATE_nRW) =3D=3D 0); + if (is_a64(env)) { + pstate_write(env, val); + } else { + cpsr_write_from_spsr_elx(env, val); + } + return 0; +} + +static int put_pstate64(QEMUFile *f, void *opaque, size_t size, + const VMStateField *field, JSONWriter *vmdesc) +{ + ARMCPU *cpu =3D opaque; + CPUARMState *env =3D &cpu->env; + uint64_t val; + + if (is_a64(env)) { + val =3D pstate_read(env); + } else { + val =3D cpsr_read_for_spsr_elx(env); + } + qemu_put_be64(f, val); + return 0; +} + +static bool pstate64_needed(void *opaque) +{ + ARMCPU *cpu =3D opaque; + CPUARMState *env =3D &cpu->env; + uint64_t val; + + if (arm_feature(env, ARM_FEATURE_M)) { + return false; + } + if (is_a64(env)) { + val =3D pstate_read(env); + } else { + val =3D cpsr_read_for_spsr_elx(env); + if (val & PSTATE_SS) { + return true; + } + } + return val > UINT32_MAX; +} + +static const VMStateDescription vmstate_pstate64 =3D { + .name =3D "cpu/pstate64", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D pstate64_needed, + .fields =3D (const VMStateField[]) { + { + .name =3D "pstate64", + .version_id =3D 0, + .size =3D sizeof(uint64_t), + .info =3D &(const VMStateInfo) { + .name =3D "pstate64", + .get =3D get_pstate64, + .put =3D put_pstate64, + }, + .flags =3D VMS_SINGLE, + .offset =3D 0, + }, + VMSTATE_END_OF_LIST() + }, +}; + static int get_power(QEMUFile *f, void *opaque, size_t size, const VMStateField *field) { @@ -1052,6 +1126,12 @@ const VMStateDescription vmstate_arm_cpu =3D { VMSTATE_UINT32_ARRAY(env.regs, ARMCPU, 16), VMSTATE_UINT64_ARRAY(env.xregs, ARMCPU, 32), VMSTATE_UINT64(env.pc, ARMCPU), + /* + * If any bits are set in the upper 32 bits of cpsr/pstate, + * or if the cpu is in aa32 mode and PSTATE.SS is set, then + * the cpu/pstate64 subsection will override this with the + * full 64 bit state. + */ { .name =3D "cpsr", .version_id =3D 0, @@ -1128,6 +1208,7 @@ const VMStateDescription vmstate_arm_cpu =3D { &vmstate_irq_line_state, &vmstate_wfxt_timer, &vmstate_syndrome64, + &vmstate_pstate64, NULL } }; diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index eaea7859d3..08b7db7c46 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -620,7 +620,7 @@ void HELPER(exception_return)(CPUARMState *env, uint64_= t new_pc) ARMCPU *cpu =3D env_archcpu(env); int cur_el =3D arm_current_el(env); unsigned int spsr_idx =3D aarch64_banked_spsr_index(cur_el); - uint32_t spsr =3D env->banked_spsr[spsr_idx]; + uint64_t spsr =3D env->banked_spsr[spsr_idx]; int new_el; bool return_to_aa64 =3D (spsr & PSTATE_nRW) =3D=3D 0; =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961286; cv=none; d=zohomail.com; s=zohoarc; b=AZ1aRNgV4Qqy+nUnnT2l2+UYSMSGgdGTRHqiBJWwl5MRIG/AOXABLN2PlTxQRB8COxBEYsWMFHM0kPStOSPIxOIZwXBl5ci7l1KW0Rs1lyp3y0N1P/kAUE6ubTpQvTktRrio+PY5orylsc40owBWVCnyun0gmYSTDm+Z9241GI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961286; h=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=QDW+HxP2J6pK8IxGshUeq+u65rBy5XdnKzmGA8gxmkE=; b=OAIxpUHu7i7bpeXndnGVtyaSFP5Fcnj2a+OQ1m/0HBZXMXaXV4+2hUe9/6Xrd9IMrR9BlqrPWm1v4u5ec6bziCGvqZv+Vw5+9vIhnthRpiBvVLtyDckgUVH3CU1BQl5NppOdXDqU5DKD/vgl0N5luXitW7kiPHGm8dajy/O+Rcs= 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 1759961286567570.6038429652853; Wed, 8 Oct 2025 15:08:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBN-0005Qi-0g; Wed, 08 Oct 2025 17:58:49 -0400 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 1v6cAW-0004TC-4W for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:58 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9J-0006l9-Ci for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:54 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-28a5b8b12a1so2983625ad.0 for ; Wed, 08 Oct 2025 14:56:39 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960598; x=1760565398; 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=QDW+HxP2J6pK8IxGshUeq+u65rBy5XdnKzmGA8gxmkE=; b=zYcVMHKO0nr/jQUN2AsIL5FNrgGEl9kv1q2hSGB/H88WIQaia/V0GLeYeOvIR3GcOT GbiS0tQWydWcJtacKyKDkjKDXMFfN7QBiblIeN0WZqu8bpzeCPQSW0bhp3qxe5mx8LB3 JGDb6new5kGcaDMnKAstH2B76INcPF32c6zYZWw77sdore/h6fmqqLinuwRv3pXmGLT4 mvYvWsC9iPoEyYg2oR3vLDMSRJG3g8r2dlD77hDhFyu/fwyurZNkHfOUJJMfDF20hkPF vdmaKGInWN2dUA1v/rLLeGQ2ALHiB65bEQNssZPfmtn4PRbsgXNQlZGJvemCSLOyr4QC 67HQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960598; x=1760565398; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QDW+HxP2J6pK8IxGshUeq+u65rBy5XdnKzmGA8gxmkE=; b=WXTb5qSDmb5CSJrSo2pVV9zePstxFaHf3vcWIgz4ajMfXVQtU6QsE/dcI6KszHB7+u 5EbdeK7VY8VxtRw6i6nMXUPVNXQoeH4C2sfvDevJOpErFjfpg5zOhif9IFrO++J+phPF V3f2blyBWzDOwFsRxwTOwYNFIH3i3Bqc+Pz7uNJ2Qj/08L4FxpfnlcPQbRyLyMd6hamv 5+lBElsZSwRNmsiNKgnQlVlVmPJKtPeD3Iigae7W18uK4siaFcL2yj5FO+5CjucyA4m/ +iQQJvimQhYoWHX9OQNHOX1r0rP2PeYx1gfa+ABOS+51JeZqlO2MDD+9RGaRrzXVojbE ISfw== X-Gm-Message-State: AOJu0YxAfoMuga/wbNCjC4hfidTURGaRhgCm0ceDvicsRRftxTsupsdT 0bEVGCZz2tqauNsB0EdwKuCYkAdZXHQQVtyCkH7EWjNJECXAB9Vii29y0aCwp1iu/NDVxswuNPy BByobd0k= X-Gm-Gg: ASbGncvL/SczT8AtzsK07lFR/4MTFxL4tWyT1n2CKwAZI7Sytcj/BKCr9k0SykM66yM 02yA0Xu3lskQqmCOPaowc6qnU1daa9T9k2yDaNttMKqxKp/wFdTCpAOufW7OfElb0B/wT5K6cgW dE4xsZie+XbuPjq1gs6uoEUFKLupj5MBk5xF3vOq2+iX+WzvdB/nN+kQ4doGHEltUg5rr+sM6AB 9WLp1UtytdS5Ch28REZZLApGLPctu1fgQGJ4mTgDsyAtkLzgCM9f3WqGWghjftLEwziLsR/1d8d R96LoXg7vgZqNn3Yy8/ydSe1FSgtwdv8suaQZReiyz0nH4hOsPYOio++JHkiOsjCLV9qeKso+WL D0GF5zGbWkiJSqZPTGbzPDThXEoNUGO+bJkIyk2PD23bRncTm7IW5SkMh X-Google-Smtp-Source: AGHT+IFNp323MT21XO0IoyeqNVm26rrx90X52pzFvdz0IPr/3c7M3vfwrS8lLHhR7bXD/fAwmBafyA== X-Received: by 2002:a17:902:e785:b0:267:d2a9:eabb with SMTP id d9443c01a7336-2902739ad39mr62768875ad.25.1759960598326; Wed, 08 Oct 2025 14:56:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 37/73] target/arm: Add syndrome data for EC_GCS Date: Wed, 8 Oct 2025 14:55:37 -0700 Message-ID: <20251008215613.300150-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1759961290146116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/syndrome.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index c48d3b8587..bff61f052c 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -63,6 +63,7 @@ enum arm_exception_class { EC_MOP =3D 0x27, EC_AA32_FPTRAP =3D 0x28, EC_AA64_FPTRAP =3D 0x2c, + EC_GCS =3D 0x2d, EC_SERROR =3D 0x2f, EC_BREAKPOINT =3D 0x30, EC_BREAKPOINT_SAME_EL =3D 0x31, @@ -83,6 +84,23 @@ typedef enum { SME_ET_InaccessibleZT0, } SMEExceptionType; =20 +typedef enum { + GCS_ET_DataCheck, + GCS_ET_EXLOCK, + GCS_ET_GCSSTR_GCSSTTR, +} GCSExceptionType; + +typedef enum { + GCS_IT_RET_nPauth =3D 0, + GCS_IT_GCSPOPM =3D 1, + GCS_IT_RET_PauthA =3D 2, + GCS_IT_RET_PauthB =3D 3, + GCS_IT_GCSSS1 =3D 4, + GCS_IT_GCSSS2 =3D 5, + GCS_IT_GCSPOPCX =3D 8, + GCS_IT_GCSPOPX =3D 9, +} GCSInstructionType; + #define ARM_EL_EC_LENGTH 6 #define ARM_EL_EC_SHIFT 26 #define ARM_EL_IL_SHIFT 25 @@ -351,6 +369,23 @@ static inline uint32_t syn_pcalignment(void) return (EC_PCALIGNMENT << ARM_EL_EC_SHIFT) | ARM_EL_IL; } =20 +static inline uint32_t syn_gcs_data_check(GCSInstructionType it, int rn) +{ + return ((EC_GCS << ARM_EL_EC_SHIFT) | ARM_EL_IL | + (GCS_ET_DataCheck << 20) | (rn << 5) | it); +} + +static inline uint32_t syn_gcs_exlock(void) +{ + return (EC_GCS << ARM_EL_EC_SHIFT) | ARM_EL_IL | (GCS_ET_EXLOCK << 20); +} + +static inline uint32_t syn_gcs_gcsstr(int ra, int rn) +{ + return ((EC_GCS << ARM_EL_EC_SHIFT) | ARM_EL_IL | + (GCS_ET_GCSSTR_GCSSTTR << 20) | (ra << 10) | (rn << 5)); +} + static inline uint32_t syn_serror(uint32_t extra) { return (EC_SERROR << ARM_EL_EC_SHIFT) | ARM_EL_IL | extra; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961782; cv=none; d=zohomail.com; s=zohoarc; b=O8Fp1AIuT5O98zVrLyL2ZGcSu6E4xYfuRTuXVI76+vTCFCcg5Xf5HX0AXj/47qju/vmNgFxOJJAHFhvfJ6aKoqgsmyL0kDWeIRtg6klKaeqDRMLXSTigXdxoKmBgytKaNWSWneTMXk8uXvW4o4bIOk4pURMjmSL28b6f/uQzwV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961782; h=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=nTaRNAIlXRr2HluCRjHCnfauBYxq1TF1ZqwOTN4Ef3Q=; b=He03PpUIDSnp6yOKQaWbr50Gsp7KUV+aipnwtTyx5fpJVp8fDtniK3W/B0MtPwkRxr2kF/e65Fhohpms40d8AOrmxBriKd87ZJtXlVXMFyLBNYeE57rPlA7GzQLrr0TZYbhhDnTkXJWu1U3yYOpDpKcOhNP9tDNtSBwKZNzX78o= 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 17599617829331007.6367263589673; Wed, 8 Oct 2025 15:16:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBs-0006VD-2e; Wed, 08 Oct 2025 17:59:21 -0400 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 1v6cAU-0004Ss-Ak for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:57 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9J-0006lL-St for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:53 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-32eb45ab7a0so414589a91.0 for ; Wed, 08 Oct 2025 14:56:40 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960599; x=1760565399; 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=nTaRNAIlXRr2HluCRjHCnfauBYxq1TF1ZqwOTN4Ef3Q=; b=LAMmgUUOF3wBrdogFHqJIiDQ6ocAO/tR6ro9hZ74Clq1CtVgiVmagq9xz860HLlHn+ YPcmWTtZfdfk6mpuEYIlG6MwCuEMMmJq9V1/EzjWvH1i1jRtq9ba2Z7kEMnCVtzSRhZc wR7gBvRyXQUXUne54AUmJD048/fND5u+5YCYUg65QHYluNDfhwFyoo2MbD/aFawqiFpm 53+ouV9UgHJHe1hrJPIXQlOA++glgkNpgVvnPkxL1rvEZ6TXC4YYYOv0MeqMlmcnGcj3 3WClaIMxXKkEaRgdYLN/RYVwNvh6ydyToEsCVjmKeA/dDiHfogcWKn7t09vQLNWa+why iKmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960599; x=1760565399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nTaRNAIlXRr2HluCRjHCnfauBYxq1TF1ZqwOTN4Ef3Q=; b=Xy+S+/u8h2lQM1HVK2+77CiYcKhTF3JKvSS6uGpf6sSB6fErpCUDTu65XkFMMHlsmS anawMMrIFoiawTi1oFcZr9wPvaDuWytUJ5jbZb+GRVLZ56pn3fQZbrd2pk5hDiRt3YUO VT9WzgSbvLMD8tUV0QpGKMj0oKtdTdly+qeg77bkJ/Dk5LGWJHVwfWs/ixR7AmXMHBl/ tTpr/Q7neXy3id+DzJa+BtRGHDilS7Q5o3b83fTFEwhkTe0MUcTROL8O+8goWtpU2Veg yaJdOwn0FFxnZdhSVJLT7IaPGnQQd3W1gf2BeWBPPvo+TL+j+DvclutNwowB2VLxTya6 qZGw== X-Gm-Message-State: AOJu0YynBCMUC1C/U4vKDPVkNu2fxHRkcj2RtWXl1rwEzuOBEGHB1A3B oyOY/mTjm2yXpAyaUBbHebulv5BjkxC3sENI5pfswvZ6/PV0rJZUJ4D1hSan/0/gvNfgLp6sfdE H1jhTp9k= X-Gm-Gg: ASbGncszFd1zrzyspSBIgYAnyKO/7SI1eshudFK83tlJy9MToKMJBWFcIqM0VNToRUC AEuTtjRk2yEdTbGILi77MN/CTNFPbQdwhEFJuLfN/fmRSiC/R58nDxgCcakKxr6Zs+KglhXPo/i 51+pUUboA6zHJfMVRh6LcS1+tFMIaaNwpNCzWTFdtyAFQH0GyDNINNQcAA4vlK6vCR7rPVAEuSb Pc+td3SClSWXOkyTXDKeKL+lCjSRAX607K2fwnYV/eqdnIEmviiS/NQ2c8i/EQ64sLxWpethBLw jjbD2oiVnH+84pJBlBpZ9vftsG2CS8h4nixbwK2vq7S9PwGzdgN6AX5N+h7H8Rhb1qJhhJUBQ4k cmKPu3fMrRWb8lfTmwnptR+6Yi6f49nP6v7YkVVYG0N1C2hV6EkOwgX8i X-Google-Smtp-Source: AGHT+IHD30H7NAd4Iavvdc6fAU+cbyY3BfUsDvN0RrCXC+qFGoVu2Cmvk2m8e+OpaIJWw2nf6s+tJw== X-Received: by 2002:a17:902:e54a:b0:269:8f0c:4d86 with SMTP id d9443c01a7336-2902741e857mr62959885ad.53.1759960598924; Wed, 08 Oct 2025 14:56:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 38/73] target/arm: Add arm_hcr_el2_nvx_eff Date: Wed, 8 Oct 2025 14:55:38 -0700 Message-ID: <20251008215613.300150-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.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: 1759961788207116600 Content-Type: text/plain; charset="utf-8" Implement the pseudocode function EffectiveHCR_EL2_NVx. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/cpu.h | 1 + target/arm/helper.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index b8abfd8276..54f3d7b1cc 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2235,6 +2235,7 @@ static inline bool arm_is_el2_enabled(CPUARMState *en= v) */ uint64_t arm_hcr_el2_eff_secstate(CPUARMState *env, ARMSecuritySpace space= ); uint64_t arm_hcr_el2_eff(CPUARMState *env); +uint64_t arm_hcr_el2_nvx_eff(CPUARMState *env); uint64_t arm_hcrx_el2_eff(CPUARMState *env); =20 /* diff --git a/target/arm/helper.c b/target/arm/helper.c index 8e342b0811..e397fe75bd 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3904,6 +3904,16 @@ uint64_t arm_hcr_el2_eff(CPUARMState *env) return arm_hcr_el2_eff_secstate(env, arm_security_space_below_el3(env)= ); } =20 +uint64_t arm_hcr_el2_nvx_eff(CPUARMState *env) +{ + uint64_t hcr =3D arm_hcr_el2_eff(env); + + if (!(hcr & HCR_NV)) { + return 0; /* CONSTRAINED UNPREDICTABLE wrt NV1 */ + } + return hcr & (HCR_NV2 | HCR_NV1 | HCR_NV); +} + /* * Corresponds to ARM pseudocode function ELIsInHost(). */ --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961634; cv=none; d=zohomail.com; s=zohoarc; b=QxTojJjxeAFNMkKHYRE8w96A+kyica0Sdao6VUwEjZxzBrei7UBDkDutQuPuzipj/TT2p73CE5rfHAdNRqFRfv5X1V7Gu2ymMzm0XrwEBK8BRBmlVLTcgtsEinv5fmq8izeHGLK56oGp1d12CU0Svj4ldkLU6/Oc7WRR8PS/nz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961634; h=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=UNuznnmkN3H1quNH9oJ4a6PHA3WC0k/28XoZZg/pXoI=; b=SYiz0+ooSF5wmBR4pULAjjFqdZpBNXjJFolWcfpHmHd9stC1uQzcb9eX0Re5S8OC18BVu2VOAgvzYwj5XRJeVZREx+FMBuV3wEjWcmfu1wYReoW3LElQsI1ZrN5Yt9U32SQs926G+M4YXQBAPwo9t308zQkT0MCfJdGrxTIpwG0= 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 1759961634177752.5752987202541; Wed, 8 Oct 2025 15:13:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cBL-0005LS-U0; Wed, 08 Oct 2025 17:58:48 -0400 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 1v6cAT-0004SF-5M for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:54 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6c9K-0006lk-Cp for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:57:52 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-b57d93ae3b0so165761a12.1 for ; Wed, 08 Oct 2025 14:56:40 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29034e44ef9sm7354285ad.52.2025.10.08.14.56.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960599; x=1760565399; 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=UNuznnmkN3H1quNH9oJ4a6PHA3WC0k/28XoZZg/pXoI=; b=IOnfDRzYh2z80Vr1BYR+Qc0bC3vw8FXxRJ4+9uYUEBSuLsEj0x0p1Lx9Jh4o8tAzN/ /FRHfMY02U6tSxXBKNG5sXBykVR4bhSfK1h6ffcWceJ/DI4rll8q8yih2tqCKSOuf7T+ 69ubx2Nm14xVdH3nsEErsBFWx5GtT4VZTlAqvrATKbAgHQoZzbvODXJotXctOrxznJVt jFZX0aNrCuqhCJlGvR6G0muFH9fSvp/rO3wqrMotKDvFGEliwnmptSOX0b6dtDPhKH3C yhz3pMQRYvApvy4O25RvZKlqwNJwo2/m3kWE47jBHO3kJI+/PCc3fBg3do8Mbip8gzNc BvvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960599; x=1760565399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UNuznnmkN3H1quNH9oJ4a6PHA3WC0k/28XoZZg/pXoI=; b=Fv5eSTYng9SA1Wsg1VcSDYsYt0PVg3825hSUq7afQxbN3YJ8UIyLXH/VTfHs3oMkmM a4TuiVJD+Q1BJMeg9j0sTcj+fNl+D3cQ9Fm2mbYMxXNbooa4a/9wkq6TT6PraJIvXRI3 o61H68bCX9rjKwp/I3OnbB5PmufSAM3Htmiw4/TUCiPemsO3tOoJK2cjJyHmsXnFHobQ snEECvAjXgygZohW3VQnTJjwu1oHFQN4mRYytfudfyA5btoZeqSqe4lB6mTSf+tsZjc0 RGVF3mpwoDihbmHr0q8p4RYY4/z/w2eZJo+CVEXnHmIJEZgrFj74cXDl2R86jECBCQ4x eeCQ== X-Gm-Message-State: AOJu0YyGaU8Ig3zoERAawAsBwwwYcG6jmdga+c+nWS4yFh+/smIX5xqx OMO72S3MkyTiXaUl3p6RzFV7XrXqSJl9YBRZPO49U1HOd09aNzjklG/q+EkQ09/MDJPmUs6dVRn ZF0aZCwo= X-Gm-Gg: ASbGncs7vM2lKw26sr3F7VbGDnwE+P/SPeUgavU2TrN4hWWBML/gL+pOrfRI0dcSfKZ zF27E8MGogCVN8icfykeJZm4JpoinxVp5sDDJdX/1JKsNtMymypOZcUXJVy0DEEZ0bCAd+97peJ 43Dz3f2VN6KrFw6xw/6thNxb8i1kNJY2qA94smo8zStRtsv6NvQNiEFsgShbaPz3bTXHxB8NmaO DHEfsa4eDbBi7B4tBuP6S9/lCy1bFp7o8hlK8sN1wMDmi55LwK3ijwn19lZSRm3N7sZZerbkwKu Y+HQf1eN75dBPnMjp9xn/ZN1NE7SgEJDVzB8uKmNeqF/TYEouJkVlckESetoSOYrRI1h3AEmG8T bE9kceh7aYWfE2Ji1Z5N6/UHH5L+ExXRGJ0OciDgjml215Vrb86qqWjaL X-Google-Smtp-Source: AGHT+IFJ/6zj1gjDDb35OMpGSt/QXuMnAGm+dF7sXf1v7IOfu1/maGzvIYJyiuZhr2X+MONM6kowCQ== X-Received: by 2002:a17:902:f607:b0:27e:f018:d2f9 with SMTP id d9443c01a7336-290272c07eemr71415205ad.34.1759960599554; Wed, 08 Oct 2025 14:56:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 39/73] target/arm: Use arm_hcr_el2_nvx_eff in access_nv1 Date: Wed, 8 Oct 2025 14:55:39 -0700 Message-ID: <20251008215613.300150-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1759961641055116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index e397fe75bd..2875f0ddd2 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3427,7 +3427,7 @@ static CPAccessResult access_nv1(CPUARMState *env, co= nst ARMCPRegInfo *ri, bool isread) { if (arm_current_el(env) =3D=3D 1) { - uint64_t hcr_nv =3D arm_hcr_el2_eff(env) & (HCR_NV | HCR_NV1 | HCR= _NV2); + uint64_t hcr_nv =3D arm_hcr_el2_nvx_eff(env); =20 if (hcr_nv =3D=3D (HCR_NV | HCR_NV1)) { return CP_ACCESS_TRAP_EL2; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961409; cv=none; d=zohomail.com; s=zohoarc; b=cdNC1Y9JfgVaJyWoiacQL4cvKyXg59q6ryIaIWWCSVcMG9dvejzm9bWr0N1ExLiOMcp+qQkZ26Ots+l1pflniRF7Nlim0zJMHd8UA2ly6xgjhkTX1/Vaot3U+8zcOP6dRi2nn6WZ1JUu4vMoJXOWZeaabXfkuBGe6gSdnVJidNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961409; h=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=KHfSbeTr/rimygDbgj468oY36/UwK7Kx+0f3UZZDZlw=; b=hoUeHB1e9p6yCQI7TsHUVWqb5qxIZzgJw5C6/AA3be6XDsik3GP11JD2YtI4/w+BvEkjSRfAcg+J3Nm8XzR3+podO7pL/KyR2siSbVgQb29tpnEN0awD1Sa3SNSUyPyoo6bO//WoX8s/0NSgRd+5L0nEfwo80xdYYHn0m82r/wg= 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 1759961409468771.894495579041; Wed, 8 Oct 2025 15:10:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCp-0000WA-1N; Wed, 08 Oct 2025 18:00:19 -0400 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 1v6cCU-0008VX-RX for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:59 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0: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 1v6cCI-0007Lh-Et for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:58 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-791c287c10dso285120b3a.1 for ; Wed, 08 Oct 2025 14:59:43 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960781; x=1760565581; 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=KHfSbeTr/rimygDbgj468oY36/UwK7Kx+0f3UZZDZlw=; b=qEar9feaUtHqQ7lDlq3ImdZa3Rz7AAC7MvR4KBbDg/Fovh2pgRB8qgkiKdtkXarTKd 0ai1QJwIDpTl1/eymimE4I8Q9a7LILkuA7ZQPCWoj47vHYzfkge2SJax4+NJyv8pW0EN ZYIM5QfFMnNJ3kJCaHdFEl7GtxRpUwyktEp7aGduVQG0VikXJOWOE8fyvYl+XzHT/NGS Fy6ZYgweZ2IDFc1pGA/rQqVRv2ysagpPoHygTSj3qeLi3k1ArQfczheGvv/6GkP8Kzgx ItkdW/fY/ajbBIDLFtqfV0vi6FpmmpxQM9jHlQ2lGB2WCdzQZlGYY14mB9wEhOEnVVw6 JIVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960781; x=1760565581; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KHfSbeTr/rimygDbgj468oY36/UwK7Kx+0f3UZZDZlw=; b=qgGXy6eXdptfJOMKXuxYPKQkoIrTDXl1+bD4zp/jlPmNjEzdYlTdxVNrRceVwK1swR 3tsrvSCJg3fqwV4n6d0UskO2G5fqyJXZh/OpmCFripfKVKbCvnln/nu6Sia3LY8CEoF+ yS7NRkAG5fWb35wsvYjcaCTJlWmsN/InbOy1rbznHQ55PvBFqtEvXAPa+2LO19MyHsQe 8RCifav+LGsd/Hlzhe8fx2dB70rDX1madWEwRa11Nl/T566PIhl1/p6rE1na753QtqHD 5DwX761v6OuLFNEGGb274OMd5cUYPP5QAujZ5qt7lz+nD805DBjIQfO/ZameUiRhaHif YcSQ== X-Gm-Message-State: AOJu0YxFCfhwEZ4Cy6OgDaHWr3W/+P5hjWRd9B1YKC7pbwLVXCGjBP4B +94yXqIF1N/UUDp/gXazY78ReseMYU2UzXGeo+768bvcNtCbUYzhNjKO5Iztp5ZF8KczeexROXB j6nwcvFs= X-Gm-Gg: ASbGncs/dpxKS9vipijVmZPv8yJ0t6VbjZZDn4wqAFblP2gmxkTiZ0pGe6ya1plOpKF JHsfimPg+84gAwGxFXvEK8AGqmRNyozy/Wqr1HR3VPTSeORmJInbSnzn0bbbbXUqFKiOjalafZV SV3o182KUjUjp3fw6jO+q1tSOU0HPWE1o2rY5lobGyOXMnRzE0A2Txj6F539TwXuKrTKIeaOXPV //Qgmhfw3745Q7xkMO5e56YAgoFlIBzeiJwYpwB9ucFtbFn074UPgZZFo2VMT7hAgnio+zPU2qP iHz3xPJyk9qXg/UccWlsHJZpkVhwfOW6PbX6xoqsnWdKr5SiVh7sh9qOQldx4X52te/+PN+lYvX +eTQxiSuttqNxSfboKLmB7dPooVY1lHVRSPcopZSMofgWeaOytZGL/4hC2fTdNxn3fxE= X-Google-Smtp-Source: AGHT+IGSCRQQ1aeUuqLhFhLxpRLOVVi5tN2qUi1qLPb16P0o92XklZ3YEr/nK/h8v3Pja7Oy3d6bYA== X-Received: by 2002:a05:6a00:2302:b0:77b:943e:7615 with SMTP id d2e1a72fcca58-793878294a4mr5911866b3a.16.1759960780676; Wed, 08 Oct 2025 14:59:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 40/73] target/arm: Split out access_nv1_with_nvx Date: Wed, 8 Oct 2025 14:55:40 -0700 Message-ID: <20251008215613.300150-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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: 1759961418814116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/helper.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 2875f0ddd2..5d40266d96 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3423,15 +3423,16 @@ static void mdcr_el2_write(CPUARMState *env, const = ARMCPRegInfo *ri, } } =20 +static CPAccessResult access_nv1_with_nvx(uint64_t hcr_nv) +{ + return hcr_nv =3D=3D (HCR_NV | HCR_NV1) ? CP_ACCESS_TRAP_EL2 : CP_ACCE= SS_OK; +} + static CPAccessResult access_nv1(CPUARMState *env, const ARMCPRegInfo *ri, bool isread) { if (arm_current_el(env) =3D=3D 1) { - uint64_t hcr_nv =3D arm_hcr_el2_nvx_eff(env); - - if (hcr_nv =3D=3D (HCR_NV | HCR_NV1)) { - return CP_ACCESS_TRAP_EL2; - } + return access_nv1_with_nvx(arm_hcr_el2_nvx_eff(env)); } return CP_ACCESS_OK; } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960967; cv=none; d=zohomail.com; s=zohoarc; b=Ch7klRW5ZbTUNuHrW1Qgemah3A61ymo4qb/k8Ikcdy/L1ltMpwsr1jHqFXER59cEoO38EUKAtm1R2Gu5BetP0+vOWPkt+YMMUpkdxe3ZT5QaIi2CAc/zhkZVE5K5GehphyiE9j4U1MPDK0Q9236Oat8lbmG/rjEX9r5uMSE19L8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960967; h=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=xRTFIGyvj7pYjT9HAUC3PYKg6JlBZDF5K/FSQ5MWHsY=; b=I12bu/Q28zjrLDGZf0jaPBHTuTf5KBX/h7t05XVtm3mLRVP1v5LeOK4ECDz3jx8HRSwDOk7z9aqKwry/GEXxGQExl7BoLKgBf/kKrU1W+RRhTmzyk9H43TLfgXiMmSWOuEmeep5F74UOnDSLpjvnB8bHfHDWaTnspHiUc24nfX4= 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 1759960967207543.0220792727698; Wed, 8 Oct 2025 15:02:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCe-0000Ac-On; Wed, 08 Oct 2025 18:00:10 -0400 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 1v6cCU-0008VY-Rt for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:58 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0: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 1v6cCH-0007Lx-Te for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:57 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7810289cd4bso283446b3a.2 for ; Wed, 08 Oct 2025 14:59:43 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960782; x=1760565582; 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=xRTFIGyvj7pYjT9HAUC3PYKg6JlBZDF5K/FSQ5MWHsY=; b=pRkGyRQjd5GwM6pFIA3knNaJ56kEGsQ0bsdAhrmYtlSXE7bp7BBbBPcunPWzIFp8ZS 9Puzkh40TlvMR2cxOwrFLzX/rpyfF6pjVRseGNMZDOhgubmmcI/S/bVtZT/tovhFmZTT QCIFgxFukF0n8/UvE737JH/ASQw0C4XoCHbk+i+2tSCCQHG1I5J9OvOecVAWtq+0oYIK TYzuAh+QgH1Oh3VZyGkMMWI7BnagdX3IY71IadrktkJGf72W870obIeKIbwgUTNBY7yZ bpiPliExkEA7uMPtXUKMq8wjPe67VtNavy0N66fQfh7q1mpI/ntayCds067JVX69pSmO TZHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960782; x=1760565582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xRTFIGyvj7pYjT9HAUC3PYKg6JlBZDF5K/FSQ5MWHsY=; b=YqCJJzKBUjfbb6Z5Hr1FH+966UISDAojlFgvIGlL1DduXzgFjcsvQX8Z+ey6N35TvS BBrFOQz2O5zVx9is9U5dcJwTF/JdICiyrodNHEafeu8N7dvdwTJFSerAY4F2OXWVXCc4 iXKT8v1OOMWlhzvh5JpFzbJyNdou2J6ocYEnzUFMCSXT3Ja83qjK9wCu80EqLuj3Rc7a mCqo5i17xiqhGbMHiGpo73AmINMkKoPPpAHaecsGhepyqyPBFhxz97ks72etNDfNzdLT jm5ir60HjizF0Ks/jVv0kJ14w7fXrdX0KBbPkY+LMzLaNh3PPzXz4Af/wsdrRNwAnoPg FWXA== X-Gm-Message-State: AOJu0YwfUrGykemwhqWIVV59tSrxoCKDNdm9H4FOWLEDldwTyYlGsu/P eiHmTDAkodNuqfQMqum3k628AIkEVpOOhL1D/AwOjW9bywI6vh6yf0tQe77MSRUBJPf+QKNuA4D OUtFaBYY= X-Gm-Gg: ASbGncs50KGHlTZSaY9IExog2mGNn5FqLwj8P/XLOKS/Yys1wFMpx31KWyFFffKkfy7 5144fnSIJfF9n0+UDK7Jga9yPINnBt7zaa0h6MjpjV0Qu2J56H1pMAoDDmEb50H9N495BS7u02L NJp6m6wnfNGpG0XBUsWpux4mYnO2GvXKIbGCG3hm5xVy0oF/sJr7BSq0R/xTO4XxZ5fBUgX+ld/ FoH/XNnWS8I4G42tKnHej/fOIp6VJtST6tBpJimoZYXHDKmvR0HfqH03OdRdu3CbBN+OEPwKLTP qfxvWv+cCcvyHtGQeWRYjoKnZ3woxHYmqUaNS4NZhT3Yr0Tm/KV0C/Mr2TDfm3QnA4tpeOPGHYx 0RMVIF6JfUmZKxEi66RnEQGS9CuhcLJtFmlzQ7v0L70UR61cbsy4911hx X-Google-Smtp-Source: AGHT+IFYb6lf3wIJMWM+MzipxcaSKR0s0GktjmtmmkhbHZJbjX7T2ukMzv0FhgD2DRI86068ShISKQ== X-Received: by 2002:a05:6a00:3c87:b0:792:574d:b13 with SMTP id d2e1a72fcca58-793858fb720mr6269545b3a.13.1759960781461; Wed, 08 Oct 2025 14:59:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 41/73] target/arm: Implement EXLOCKException for ELR_ELx and SPSR_ELx Date: Wed, 8 Oct 2025 14:55:41 -0700 Message-ID: <20251008215613.300150-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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, T_SPF_TEMPERROR=0.01 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: 1759960970530116600 Content-Type: text/plain; charset="utf-8" If PSTATE.EXLOCK is set, and the GCS EXLOCK enable bit is set, and nested virt is in the appropriate state, then we need to raise an EXLOCK exception. Since PSTATE.EXLOCK cannot be set without GCS being present and enabled, no explicit check for GCS is required. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 8 +++++ target/arm/cpu.h | 1 + target/arm/helper.c | 67 ++++++++++++++++++++++++++++++++++---- target/arm/tcg/op_helper.c | 7 ++++ 4 files changed, 77 insertions(+), 6 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index bd2121a336..a79f00351c 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -351,6 +351,14 @@ typedef enum CPAccessResult { * specified target EL. */ CP_ACCESS_UNDEFINED =3D (2 << 2), + + /* + * Access fails with EXLOCK, a GCS exception syndrome. + * These traps are always to the current execution EL, + * which is the same as the usual target EL because + * they cannot occur from EL0. + */ + CP_ACCESS_EXLOCK =3D (3 << 2), } CPAccessResult; =20 /* Indexes into fgt_read[] */ diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 54f3d7b1cc..91a851dac1 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1502,6 +1502,7 @@ void pmu_init(ARMCPU *cpu); #define PSTATE_C (1U << 29) #define PSTATE_Z (1U << 30) #define PSTATE_N (1U << 31) +#define PSTATE_EXLOCK (1ULL << 34) #define PSTATE_NZCV (PSTATE_N | PSTATE_Z | PSTATE_C | PSTATE_V) #define PSTATE_DAIF (PSTATE_D | PSTATE_A | PSTATE_I | PSTATE_F) #define CACHED_PSTATE_BITS (PSTATE_NZCV | PSTATE_DAIF | PSTATE_BTYPE) diff --git a/target/arm/helper.c b/target/arm/helper.c index 5d40266d96..1aa0a157b7 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3437,6 +3437,61 @@ static CPAccessResult access_nv1(CPUARMState *env, c= onst ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult access_nv1_or_exlock_el1(CPUARMState *env, + const ARMCPRegInfo *ri, + bool isread) +{ + if (arm_current_el(env) =3D=3D 1) { + uint64_t nvx =3D arm_hcr_el2_nvx_eff(env); + + if (!isread && + (env->pstate & PSTATE_EXLOCK) && + (env->cp15.gcscr_el[1] & GCSCR_EXLOCKEN) && + !(nvx & HCR_NV1)) { + return CP_ACCESS_EXLOCK; + } + return access_nv1_with_nvx(nvx); + } + + /* + * At EL2, since VHE redirection is done at translation time, + * el_is_in_host is always false here, so EXLOCK does not apply. + */ + return CP_ACCESS_OK; +} + +static CPAccessResult access_exlock_el2(CPUARMState *env, + const ARMCPRegInfo *ri, bool isrea= d) +{ + int el =3D arm_current_el(env); + + if (el =3D=3D 3) { + return CP_ACCESS_OK; + } + + /* + * Access to the EL2 register from EL1 means NV is set, and + * EXLOCK has priority over an NV1 trap to EL2. + */ + if (!isread && + (env->pstate & PSTATE_EXLOCK) && + (env->cp15.gcscr_el[el] & GCSCR_EXLOCKEN)) { + return CP_ACCESS_EXLOCK; + } + return CP_ACCESS_OK; +} + +static CPAccessResult access_exlock_el3(CPUARMState *env, + const ARMCPRegInfo *ri, bool isrea= d) +{ + if (!isread && + (env->pstate & PSTATE_EXLOCK) && + (env->cp15.gcscr_el[3] & GCSCR_EXLOCKEN)) { + return CP_ACCESS_EXLOCK; + } + return CP_ACCESS_OK; +} + #ifdef CONFIG_USER_ONLY /* * `IC IVAU` is handled to improve compatibility with JITs that dual-map t= heir @@ -3608,7 +3663,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { { .name =3D "ELR_EL1", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 0, .opc2 =3D 1, - .access =3D PL1_RW, .accessfn =3D access_nv1, + .access =3D PL1_RW, .accessfn =3D access_nv1_or_exlock_el1, .nv2_redirect_offset =3D 0x230 | NV2_REDIR_NV1, .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 4, 0, 1), .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 4, 0, 1), @@ -3616,7 +3671,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { { .name =3D "SPSR_EL1", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 0, .opc2 =3D 0, - .access =3D PL1_RW, .accessfn =3D access_nv1, + .access =3D PL1_RW, .accessfn =3D access_nv1_or_exlock_el1, .nv2_redirect_offset =3D 0x160 | NV2_REDIR_NV1, .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 4, 0, 0), .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 4, 0, 0), @@ -4100,7 +4155,7 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { { .name =3D "ELR_EL2", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS | ARM_CP_NV2_REDIRECT, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 4, .crm =3D 0, .opc2 =3D 1, - .access =3D PL2_RW, + .access =3D PL2_RW, .accessfn =3D access_exlock_el2, .fieldoffset =3D offsetof(CPUARMState, elr_el[2]) }, { .name =3D "ESR_EL2", .state =3D ARM_CP_STATE_BOTH, .type =3D ARM_CP_NV2_REDIRECT, @@ -4118,7 +4173,7 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { { .name =3D "SPSR_EL2", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS | ARM_CP_NV2_REDIRECT, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 4, .crm =3D 0, .opc2 =3D 0, - .access =3D PL2_RW, + .access =3D PL2_RW, .accessfn =3D access_exlock_el2, .fieldoffset =3D offsetof(CPUARMState, banked_spsr[BANK_HYP]) }, { .name =3D "VBAR_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 12, .crm =3D 0, .opc2 =3D 0, @@ -4400,7 +4455,7 @@ static const ARMCPRegInfo el3_cp_reginfo[] =3D { { .name =3D "ELR_EL3", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 4, .crm =3D 0, .opc2 =3D 1, - .access =3D PL3_RW, + .access =3D PL3_RW, .accessfn =3D access_exlock_el3, .fieldoffset =3D offsetof(CPUARMState, elr_el[3]) }, { .name =3D "ESR_EL3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 5, .crm =3D 2, .opc2 =3D 0, @@ -4411,7 +4466,7 @@ static const ARMCPRegInfo el3_cp_reginfo[] =3D { { .name =3D "SPSR_EL3", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 4, .crm =3D 0, .opc2 =3D 0, - .access =3D PL3_RW, + .access =3D PL3_RW, .accessfn =3D access_exlock_el3, .fieldoffset =3D offsetof(CPUARMState, banked_spsr[BANK_MON]) }, { .name =3D "VBAR_EL3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 12, .crm =3D 0, .opc2 =3D 0, diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index dd3700dc6f..4fbd219555 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -881,6 +881,13 @@ const void *HELPER(access_check_cp_reg)(CPUARMState *e= nv, uint32_t key, } syndrome =3D syn_uncategorized(); break; + case CP_ACCESS_EXLOCK: + /* + * CP_ACCESS_EXLOCK is always directed to the current EL, + * which is going to be the same as the usual target EL. + */ + syndrome =3D syn_gcs_exlock(); + break; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961398; cv=none; d=zohomail.com; s=zohoarc; b=oJ3M03FaYkf52ZGLUnDWNIoHHgZEOXNzI7qvfqHRjP183JtP4P3Lo7KDT93mOsn2GBYsHSx8DU/ldL+EMX0Y8cP7E2/7SBlQe36n+h0exGn134G/SJGZ2ABg315O+pv8nI18Hh9Bspyz8rri2JEcb44O/UGkd9i02YvgdyXI28A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961398; h=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=ZunbW8zrXRCzDcEAaVX1Pev0CRMsCYpGOAhWGA2DZnI=; b=ftqvJIJX9xNlPz6UFQxbJoq0tY4XY4qRLzJs2ZTrmTnc7tpHhbalZLpWpnXCfpi2ZB5YerAtZjvJZyiskC+Wz6/SC1R4UW+Ew23LE0a+/BmzyNA1RJWhXUPmxuSr7mZvZ7Ka5Q+7KQl4rf5W8JNb/kRHykobV3KEq6GXjdvIZCI= 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 1759961398449201.068498049023; Wed, 8 Oct 2025 15:09:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCN-0008FH-RP; Wed, 08 Oct 2025 17:59:51 -0400 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 1v6cCL-0007uL-1S for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:49 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCH-0007M4-BQ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:48 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-76e2ea933b7so333331b3a.1 for ; Wed, 08 Oct 2025 14:59:43 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960782; x=1760565582; 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=ZunbW8zrXRCzDcEAaVX1Pev0CRMsCYpGOAhWGA2DZnI=; b=hrdA4pGpnKyHtliXzmrigJ9et6oxQwvFXKX0NnmKcaniUFb5IgQiZG6rhl/ddhqyNj SU9pRd6NQ1PTxhJmmr5fLVaA1yb5nSVL4Rm8NBa5xOKb3jshUeKCxncw2nf+e7OCa5BQ QqxHqYFKxgzNM3vghu0Wz62Vvq0/wY3WTPIIbSuG6Na3csMlLszBeDICTMymZJE76s28 F6+H1Qw7aTGuz9IOVYSWwbl0+8v5+segE2YeMIZgREz5up8ym1vTX31ourqB/UD9I7GW 5plbOpD+mp9GGSnIfOj/AbuhzxEz6U/DORXVls5LDuqGFdZuHOlAkVy49J+zvHFtPLMC kVzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960782; x=1760565582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZunbW8zrXRCzDcEAaVX1Pev0CRMsCYpGOAhWGA2DZnI=; b=WgONK2mfMEl7ytHhqSfnewgfu0F92aYqvkvtRcRJXQCjrZ1tyHvCCiKEvzo3JReSrF mDIcWQbUUUMFQw0quBffaV2FEC8HOSG81s6Jgl+bwhCRxqd8dRMxE+3jABNaiDme/0vO sNVqUbnU5SzHY0wwozuU7CbnVqOGOUAUscHgLB32mM1gB+Va7wryX6Ti/vgNrAuDHyRR QPDPdTg9d+lIv5uwmO4XIoH4vY6rjw+Xg+CQpE/LAMEEx+zHBcXCz3KZoNPtEatbk2iu odITRN+z0jDGQ0blSKmYmP3LenKTuGjGDZpLVEnu6E+8fuomTT6W4QCCuLgnf0S7EvKv NZkg== X-Gm-Message-State: AOJu0YwTzrASk2xUfkZt/M1XwsHX1bNB9/Kgfz5P+DW+XySCChV0yx2C +ENhwgiZQvJlGgFBaFXUpVsLeU2aYE7PVaq3wg5wXNLaeLRh4td6wwdLhLfrUafR20N758LXhgU q8wZXrz8= X-Gm-Gg: ASbGncusimMy46zCziRHGfeDJhTRLHaIf0JeqyO1uYjs8wKsnZS0XMnKvyGJ9XaCUgb 8OY9PaHgxfYWY5DBtJMCRZuCReGd0QcdZqcuJq6KB7v3TKcQVUZJQyWGI3gGaceTdAE41MO2SDs 6gqwd6htF4894nGQqSwZQe9KRi1vpVrTwy2ypjSrcsAXj3R5sJOcPE8SdbuCogkgCPwuTz3Nro0 MI+CAMR61jbrAUBvUYZ5uYaBEsTVKtKrx11yYM07KpuTofbOdl5BTIHjJ2rQBLOPXazS9JSJVrM ZXKGi124jnj3FmX5ZPnxNPcMPr4/WS2E+L/6VHin+pfeH+/IRexDkatPYtwj84ZPGklt9sPHsXi FilBWWpJKUEv7jm1lkQ8Wee4+cCuVIDZEd4ifyUangmwd06FlsyGbwAn7yTazEffKa9A= X-Google-Smtp-Source: AGHT+IFN59dQieInBzNalgtp2BYJ/+3z7Tkgl3+fgj+Fd52eB3IuE9CFRdxhorA2sjvD9d2Rew3pjQ== X-Received: by 2002:a05:6a00:a15:b0:76b:ecf2:7ece with SMTP id d2e1a72fcca58-79231df6680mr9457172b3a.12.1759960782075; Wed, 08 Oct 2025 14:59:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 42/73] target/arm: Split {full,core}_a64_user_mem_index Date: Wed, 8 Oct 2025 14:55:42 -0700 Message-ID: <20251008215613.300150-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: 1759961403753116600 Content-Type: text/plain; charset="utf-8" Separate get_a64_user_mem_index into two separate functions, one which returns the full ARMMMUIdx and one which returns the core mmu_idx. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/tcg/translate-a64.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 43c9bfef93..1337e16a96 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -93,7 +93,7 @@ void a64_translate_init(void) } =20 /* - * Return the core mmu_idx to use for A64 load/store insns which + * Return the full arm mmu_idx to use for A64 load/store insns which * have a "unprivileged load/store" variant. Those insns access * EL0 if executed from an EL which has control over EL0 (usually * EL1) but behave like normal loads and stores if executed from @@ -103,7 +103,7 @@ void a64_translate_init(void) * normal encoding (in which case we will return the same * thing as get_mem_index(). */ -static int get_a64_user_mem_index(DisasContext *s, bool unpriv) +static ARMMMUIdx full_a64_user_mem_index(DisasContext *s, bool unpriv) { /* * If AccType_UNPRIV is not used, the insn uses AccType_NORMAL, @@ -130,7 +130,13 @@ static int get_a64_user_mem_index(DisasContext *s, boo= l unpriv) g_assert_not_reached(); } } - return arm_to_core_mmu_idx(useridx); + return useridx; +} + +/* Return the core mmu_idx per above. */ +static int core_a64_user_mem_index(DisasContext *s, bool unpriv) +{ + return arm_to_core_mmu_idx(full_a64_user_mem_index(s, unpriv)); } =20 static void set_btype_raw(int val) @@ -3577,7 +3583,7 @@ static void op_addr_ldst_imm_pre(DisasContext *s, arg= _ldst_imm *a, if (!a->p) { tcg_gen_addi_i64(*dirty_addr, *dirty_addr, offset); } - memidx =3D get_a64_user_mem_index(s, a->unpriv); + memidx =3D core_a64_user_mem_index(s, a->unpriv); *clean_addr =3D gen_mte_check1_mmuidx(s, *dirty_addr, is_store, a->w || a->rn !=3D 31, mop, a->unpriv, memidx); @@ -3598,7 +3604,7 @@ static bool trans_STR_i(DisasContext *s, arg_ldst_imm= *a) { bool iss_sf, iss_valid =3D !a->w; TCGv_i64 clean_addr, dirty_addr, tcg_rt; - int memidx =3D get_a64_user_mem_index(s, a->unpriv); + int memidx =3D core_a64_user_mem_index(s, a->unpriv); MemOp mop =3D finalize_memop(s, a->sz + a->sign * MO_SIGN); =20 op_addr_ldst_imm_pre(s, a, &clean_addr, &dirty_addr, a->imm, true, mop= ); @@ -3616,7 +3622,7 @@ static bool trans_LDR_i(DisasContext *s, arg_ldst_imm= *a) { bool iss_sf, iss_valid =3D !a->w; TCGv_i64 clean_addr, dirty_addr, tcg_rt; - int memidx =3D get_a64_user_mem_index(s, a->unpriv); + int memidx =3D core_a64_user_mem_index(s, a->unpriv); MemOp mop =3D finalize_memop(s, a->sz + a->sign * MO_SIGN); =20 op_addr_ldst_imm_pre(s, a, &clean_addr, &dirty_addr, a->imm, false, mo= p); @@ -4514,7 +4520,7 @@ static bool do_SET(DisasContext *s, arg_set *a, bool = is_epilogue, return false; } =20 - memidx =3D get_a64_user_mem_index(s, a->unpriv); + memidx =3D core_a64_user_mem_index(s, a->unpriv); =20 /* * We pass option_a =3D=3D true, matching our implementation; @@ -4568,8 +4574,8 @@ static bool do_CPY(DisasContext *s, arg_cpy *a, bool = is_epilogue, CpyFn fn) return false; } =20 - rmemidx =3D get_a64_user_mem_index(s, runpriv); - wmemidx =3D get_a64_user_mem_index(s, wunpriv); + rmemidx =3D core_a64_user_mem_index(s, runpriv); + wmemidx =3D core_a64_user_mem_index(s, wunpriv); =20 /* * We pass option_a =3D=3D true, matching our implementation; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759960960; cv=none; d=zohomail.com; s=zohoarc; b=SlYPMPeFtaX94xhVUTtD4Bvu6nYCq1GM3XqSPZjZPdW5OHFEYnFnwMMgLZS0U/URLeh09TecxAW/zZJcq1NR+sNzqNwpmSDlBYVwa3XR1PUl5M9zgD3S7UCYey8yVG6DAy7Ln2GPCt4gctoO8jFF00oxEryY4wcF7mJjI+koeRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759960960; h=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=9NNf1WmXSTI58NaZyRuQIPA+gxIE0nBNVq/aWBPGCWw=; b=N8bz6eO6Ba24R0UbSGYMMHrBU8DhfF3XU9wo0fTos5iF/ve7qWcC1xBKnBKipBDZ/777lTfikAJ8hOwCxJGugF1JCJuP+oagVbARFRqGopJDERRBsXFqLBbOryAXt8uVvkewWts08E/bQWj7exEMangovQl+Na+2+tjKv6wU3Wo= 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 1759960959989161.95634826631647; Wed, 8 Oct 2025 15:02:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCT-0008Pr-HV; Wed, 08 Oct 2025 17:59:57 -0400 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 1v6cCN-0008HA-V3 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:52 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCH-0007M9-3z for qemu-devel@nongnu.org; Wed, 08 Oct 2025 17:59:51 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-77f68fae1a8so383808b3a.1 for ; Wed, 08 Oct 2025 14:59:44 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960783; x=1760565583; 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=9NNf1WmXSTI58NaZyRuQIPA+gxIE0nBNVq/aWBPGCWw=; b=fGmImTrHFR56+GkO8GF5KJzUD+8mNNKYiHtaAbNm3E1hNP+QSUt3/3s3Cc8rJikYlk sYUJ+YK2Y6te8a4yE1bs1XjztOudg09uuYzTVh5fpEa9vO56tAfy1CkHaZbO38aHnf2S auzES4JPQf+Scmr3b5M7w8OqHeEMYfdV3K6hwjFpJqJuCxRGnHLFxmy1UG1CwcVQBr5Q Qo9EBxmaJKxok2jXJQ999vzDkQ82/nt3/GjZIEi0Uj2w/dNwdU8h8k/CbCaJCFrx06Oy YqELFvtu4C40DzsvyZTTeEEn+HIfDke2dyN/TUrEkDGbXy5oRTGrVUxz2PNErGNFmXif h6DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960783; x=1760565583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9NNf1WmXSTI58NaZyRuQIPA+gxIE0nBNVq/aWBPGCWw=; b=uxY6w7lVymFkhoa3ZhpHn3cxwwD/MhYY+/eILLNVqKarmFWUcWf2ekmF7usXI/82QW hk8kDUqNrCWTK2CnTJaD2ZyvUWJA4QID7ja2z2a6bwqqGpTlOwkmkOkclAu1zkQyynTe vJVxLchxvhGR9lhDzsgN419eSh5C0YxlKCee/t+dFW3hhwdMiKBOE9CXIRrGxYYxlpqZ nqipEBOgr6ikvsfEiXUx3c4hZiFdP+tkb9ezXdNHtiFEDAe2jZeKIcMLutM4naaJCHfw U8D9wMHbd7FEAcWnbO1GrDr7QQ0o42+mtmyxCaw0aZtwHbFGVUdM4OIwMK2pyw1V1VQ2 WQZQ== X-Gm-Message-State: AOJu0YyLLhhIpM/NEp3HZLxLdUA/CYck+OSG1k60SVY8xINYKcawnIbv ceA/PY4M+vyuwuF2iMDXDQtc1W/gEFYhwRfr+5ycBGpbwidPtPKNy8ucu+vf+A2pyboEx/8WA+W XxmsIwss= X-Gm-Gg: ASbGnctwf3YnEs4cHrczR2aFfZI6JSSQyUtXvARhqQep/imLQRex92j3zCprvZbJB9s Uz4/VhKASZc7ryyUObk3UU2NswAkvJHJ2Fm4bfKodT776cVGBQMu1foRHMEUo8JrCpKs6rHq8Ih UHWfIJRcFD8wWkKJCTcI3p88KassWHY+zmcsXN/3MuSchYhObo5RMYlfjAjXobRmgc/jPrV+F5A NKz7l092G4uGBkmha2h7KbzR4gXX5MFk9pAoTOLSgO58e7iQ1NH9Mwcbm5Bz8lfj3BatoZ7ils/ IpiAM6X/jLE0HHRNfURxwpLpPmRcqm5eIuv/ul2WZamVbIE1QPwWvWSOTMu6p/9jFsXn1QilcKZ bvGg76texmAjvtasMaxMU1a39d35Pc/RUagarsdYX+MH1w70gR0bNdbAbtj9d9NB6svE= X-Google-Smtp-Source: AGHT+IEKraxerr7KDK+J1VWrt0poQ3RDi3rU4y3+Qr918KUA/Rks82Tgq3N3PJjmHnQt92ZDletBZw== X-Received: by 2002:a05:6a00:92a2:b0:781:16de:cc14 with SMTP id d2e1a72fcca58-79387a23b05mr7098570b3a.32.1759960782683; Wed, 08 Oct 2025 14:59:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 43/73] target/arm: Introduce delay_exception{_el} Date: Wed, 8 Oct 2025 14:55:43 -0700 Message-ID: <20251008215613.300150-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, T_SPF_TEMPERROR=0.01 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: 1759960964200116600 Content-Type: text/plain; charset="utf-8" Add infrastructure to raise an exception out of line. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate.h | 20 +++++++++++++ target/arm/tcg/translate-a64.c | 2 ++ target/arm/tcg/translate.c | 53 ++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 943dfd45fe..9a85ea74db 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -21,9 +21,25 @@ typedef struct DisasLabel { target_ulong pc_save; } DisasLabel; =20 +/* + * Emit an exception call out of line. + */ +typedef struct DisasDelayException { + struct DisasDelayException *next; + TCGLabel *lab; + target_long pc_curr; + target_long pc_save; + int condexec_mask; + int condexec_cond; + uint32_t excp; + uint32_t syn; + uint32_t target_el; +} DisasDelayException; + typedef struct DisasContext { DisasContextBase base; const ARMISARegisters *isar; + DisasDelayException *delay_excp_list; =20 /* The address of the current instruction being translated. */ target_ulong pc_curr; @@ -365,6 +381,10 @@ void gen_exception_insn_el(DisasContext *s, target_lon= g pc_diff, int excp, uint32_t syn, uint32_t target_el); void gen_exception_insn(DisasContext *s, target_long pc_diff, int excp, uint32_t syn); +TCGLabel *delay_exception_el(DisasContext *s, int excp, + uint32_t syn, uint32_t target_el); +TCGLabel *delay_exception(DisasContext *s, int excp, uint32_t syn); +void emit_delayed_exceptions(DisasContext *s); =20 /* Return state of Alternate Half-precision flag, caller frees result */ static inline TCGv_i32 get_ahp_flag(void) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 1337e16a96..c037119cdf 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10601,6 +10601,8 @@ static void aarch64_tr_tb_stop(DisasContextBase *dc= base, CPUState *cpu) break; } } + + emit_delayed_exceptions(dc); } =20 const TranslatorOps aarch64_translator_ops =3D { diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index e62dcc5d85..78d26aac04 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -1088,6 +1088,57 @@ void gen_exception_insn(DisasContext *s, target_long= pc_diff, s->base.is_jmp =3D DISAS_NORETURN; } =20 +TCGLabel *delay_exception_el(DisasContext *s, int excp, + uint32_t syn, uint32_t target_el) +{ + /* Use tcg_malloc for automatic release on longjmp out of translation.= */ + DisasDelayException *e =3D tcg_malloc(sizeof(DisasDelayException)); + + memset(e, 0, sizeof(*e)); + + /* Save enough of the current state to satisfy gen_exception_insn. */ + e->pc_curr =3D s->pc_curr; + e->pc_save =3D s->pc_save; + if (!s->aarch64) { + e->condexec_cond =3D s->condexec_cond; + e->condexec_mask =3D s->condexec_mask; + } + + e->excp =3D excp; + e->syn =3D syn; + e->target_el =3D target_el; + + e->next =3D s->delay_excp_list; + s->delay_excp_list =3D e; + + e->lab =3D gen_new_label(); + return e->lab; +} + +TCGLabel *delay_exception(DisasContext *s, int excp, uint32_t syn) +{ + return delay_exception_el(s, excp, syn, 0); +} + +void emit_delayed_exceptions(DisasContext *s) +{ + for (DisasDelayException *e =3D s->delay_excp_list; e ; e =3D e->next)= { + gen_set_label(e->lab); + + /* Restore the insn state to satisfy gen_exception_insn. */ + s->pc_curr =3D e->pc_curr; + s->pc_save =3D e->pc_save; + s->condexec_cond =3D e->condexec_cond; + s->condexec_mask =3D e->condexec_mask; + + if (e->target_el) { + gen_exception_insn_el(s, 0, e->excp, e->syn, e->target_el); + } else { + gen_exception_insn(s, 0, e->excp, e->syn); + } + } +} + static void gen_exception_bkpt_insn(DisasContext *s, uint32_t syn) { gen_set_condexec(s); @@ -6791,6 +6842,8 @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, = CPUState *cpu) gen_goto_tb(dc, 1, curr_insn_len(dc)); } } + + emit_delayed_exceptions(dc); } =20 static const TranslatorOps arm_translator_ops =3D { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961400; cv=none; d=zohomail.com; s=zohoarc; b=m1hoUl9+OxvAQKWILctY4xupvwfPruH08ska+dUJD+VlCHmpLDYliG/jzd07O8DO9skSYdnz4Ab+sJl0RZ/md3g1Xo0yldz6rr5xxyjp7KbKAYHot8WYoizFj7QkytV9YLvgXGph46LWIIcnkOHQ6pptIaUNjU8jC61s2nGjZ9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961400; h=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=TRMGkSahDRDIyhY1Pf+KcfrLPaCj+CJxCc4+NBDjs/c=; b=aU9GX0fe4pPVJgrRAycSqDySqLVGm5ICjJkiNYIMWBOTLieO+NdFeX0l9l0aiooCswtm6gegHoLiUwKfr8QHu7nnI2K7GJ3wn+GVVXf6o7qXCNxmv62ahy8Xso4ue0iaxnGk5g+vMw9Zbw6QpJwYHyrcgcteQSd22ug9pDY8sUw= 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 1759961400549328.3550729116731; Wed, 8 Oct 2025 15:10:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCl-0000Pf-2T; Wed, 08 Oct 2025 18:00:15 -0400 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 1v6cCZ-00008Q-PB for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:05 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCK-0007MH-3C for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:03 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-77f67ba775aso409294b3a.3 for ; Wed, 08 Oct 2025 14:59:46 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960783; x=1760565583; 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=TRMGkSahDRDIyhY1Pf+KcfrLPaCj+CJxCc4+NBDjs/c=; b=j5lBAWN7GC+HFcNI2x90h4rDUtLs6G09/KgLUPpkRpdHPhNbb5oG1f3QA9WY/qnM1x F5EmBEuxDf6sukMB8Tdn98Jx+DT9VagNSkLcVa3iTjcc3Gk8lItsYfa0Uu2CgHN2S8ky pXWd/WZXGZvgQzqrP6n8RrhJUM9a1QdxHJutAavp964RoBBSoGDW7qIM44wledohkw+C dE9RhksodOhPlHi9W+WYXnxjdVH4v7Vp5rM9DPFnsaKzjANjlAy2L5eUbYRNkPmPDvHv N9PLt0UHbOXk7zZYU3e1g/9CCubKDDHPqvtRSfnaGcawX20A/CPk0VYdoCWSaPzMEs9b KxwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960783; x=1760565583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TRMGkSahDRDIyhY1Pf+KcfrLPaCj+CJxCc4+NBDjs/c=; b=MxMRd+DgCIOYS7DWkaNhwKVN+bSE9kQYHV0xlDDxoCJREUTMoX3DXC1oGqgXD3242C sP3nffkVXAAemLFx+7MmGRZAKhegGdeSYOh7DnMqgGsSWGXaLlTzGK7GaZio27moFGJU +wbx6/30R4FnS3Wosd5gJ2Uz6hIy0WdDJFWuje0+V+GVS2Pladb7eSMHKy/1vERYofrm Mx6GEYM99MN7aGXUBd51Cw9Xq5e1UKTlPEOCa2sr+8RGjjZjepGyse88dZ0cPe/eQdIs 46WnElFZ720u6ZNVpzmOaDU9zlFntSobpnlhbV6BeKOSsUDltXKlaGQrxBhLdAbfQe+z ia0w== X-Gm-Message-State: AOJu0Yz2abPE/ikuOPZW4FUTdnJFdDEvqt+RgdFjk0PMl5x2QyD+qUCM HIIN+HG99sNK+b5Fj2X6vBXtsfG3ZwY4zPNN8DnWY0lUTdkez9oV7NEckTlPLnwsSgpz4GtL76p yJtpV4Q4= X-Gm-Gg: ASbGncszs3ERpguML5o29y/lbAtxTHLOWoqE0+QFj9BPAgE3YChB+cQhoPjXZJcouFe s2ud5JTnJ24ep8p6jj5bznq/cmP1AMjsU5R8LLmSf6jcck8hqQ4UD+lfqW9BYCs5PJgSh1bvc+S 3HvkhV11RdQ6nNFNJhmLe182aiRwzLTJgAKwhIbBxLTxpPo9NEpPCpgti93ohdYA/mj9VKOHz0r c+TBahoTgOdPlK3pe3msDEeXUpAW3+yoj0p5onugRfECcWK9OaUpyikG/sNk4L4kemgYWEjG8bx EM2RoVMRgXpj8LkkdV85zwh8GomdQ7xiiHJPo+mmtQIyaBoaOR3bJco2dLS1lyJTVZZCEhYM6NQ SjR+xu8WPmE9T5A/Pdyb8bVDY0vpCvbMtQtM7Pd8++OT97BqO+5IPFyCu X-Google-Smtp-Source: AGHT+IHW/SwPEbLKhMILzadeCRHrcFvtoUFhuYMlcp4OACdN4ujarSVbpcjsMmn23pPjKBm9Hzpn4w== X-Received: by 2002:a05:6a20:3ca8:b0:2fa:26fb:4a7b with SMTP id adf61e73a8af0-32da84ed64emr6062110637.57.1759960783370; Wed, 08 Oct 2025 14:59:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 44/73] target/arm: Emit HSTR trap exception out of line Date: Wed, 8 Oct 2025 14:55:44 -0700 Message-ID: <20251008215613.300150-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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: 1759961408816116600 Content-Type: text/plain; charset="utf-8" Use delay_exception_el to move the exception out of line. Use TCG_COND_TSTNE instead of separate AND+NE. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 78d26aac04..57bc8ea4c5 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -1774,21 +1774,11 @@ static void do_coproc_insn(DisasContext *s, int cpn= um, int is64, =20 if (maskbit !=3D 4 && maskbit !=3D 14) { /* T4 and T14 are RES0 so never cause traps */ - TCGv_i32 t; - DisasLabel over =3D gen_disas_label(s); + TCGLabel *fail =3D delay_exception_el(s, EXCP_UDEF, syndrome, = 2); + TCGv_i32 t =3D + load_cpu_offset(offsetoflow32(CPUARMState, cp15.hstr_el2)); =20 - t =3D load_cpu_offset(offsetoflow32(CPUARMState, cp15.hstr_el2= )); - tcg_gen_andi_i32(t, t, 1u << maskbit); - tcg_gen_brcondi_i32(TCG_COND_EQ, t, 0, over.label); - - gen_exception_insn_el(s, 0, EXCP_UDEF, syndrome, 2); - /* - * gen_exception_insn() will set is_jmp to DISAS_NORETURN, - * but since we're conditionally branching over it, we want - * to assume continue-to-next-instruction. - */ - s->base.is_jmp =3D DISAS_NEXT; - set_disas_label(s, over); + tcg_gen_brcondi_i32(TCG_COND_TSTNE, t, 1u << maskbit, fail); } } =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961133; cv=none; d=zohomail.com; s=zohoarc; b=d/q60kZMDUU0QjKtPvfQValHs6ZKSYhbyGLkZA6POg+lo2BIe/ipYIxKt3SzarQnefDSx/P67C093IbJ+pNd6O6wSZZbUhjv60/OaE2RCJNt/3DxzDnE3mqpJk8XNQYds/LlSKdUayM1CEkOSVXnPqKtkXoFSeQ6wkNCnmW8Kqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961133; h=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=UArNSBfDRY0R4yQf7I4KwaZGkKosB9HEkNsmXAhE3vY=; b=YvLnG/mcfekwxdDgtcZGfNQwhZoIIJZ76w3aqJv4+LTQRfXUysIxE2yre80pygDlU31kn7kio34Wfg7zgZeAL/Do2k9+JbZP07yR4ppb2DaNRX1RKwBGqBUOg+nG49Vezfu9prpdiXIuXe01XDEGaTlbTjpfjsCK0OW/ggJ537c= 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 1759961133055932.1732791883212; Wed, 8 Oct 2025 15:05:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCz-0000uG-LA; Wed, 08 Oct 2025 18:00:29 -0400 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 1v6cCc-00009g-4q for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:07 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCL-0007MU-9d for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:04 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-76e4fc419a9so316191b3a.0 for ; Wed, 08 Oct 2025 14:59:46 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960784; x=1760565584; 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=UArNSBfDRY0R4yQf7I4KwaZGkKosB9HEkNsmXAhE3vY=; b=P3Kp6OXPU2vSiN6VOwSrYakw0f73OGUmVaj4Yaw9sODUKnkCokURmVE5/jXi21nIUA 5AD02o4DYzxKYKiDqEn/NTu1X5LTmMRk8DCY49fuwSXtYgGbaQugmBMghxy1LIf1XfXB MI9R+/uyBGCOBX7DHGRKDX3364mSArydcbzOrR6Rg8xtvT+tKiE9xwsIRqBOy38cyqWd HkSL+QrzbhY1HCto6Nrx3cTQ46FrM/7ygI27phWesyeTgZVe/GM5InJEKhqe0PjXMS7L TDnWlxSjXioS1c2CR9VUVo+28JfRmEK9jMdMZcH89WiwbXFvurGeHzOlrnUR+txos+Ba BQ+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960784; x=1760565584; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UArNSBfDRY0R4yQf7I4KwaZGkKosB9HEkNsmXAhE3vY=; b=bYQfO2edfDwKsb0las4lEig+siS0xB6MVsEX6k0cPZpGF4QMR+5ylImj6XW+xS021s j7aSIcx2mF0C4KDTDRM65JF2XXI7k0JVmYozNWkgRs+HDowuKggW6RYKhHsfBAGKJy8x IlJJlYH+j+1T5uNGp0fOG7e7KGAKzElpXHhVwLzI+AwqWQST8dyEM5F2KVummSq/Q/HS AD9h34tdkAiD/gangpTJh1y9wnOIwmsTySs3BwVD25AGJpjMMjSedVUqd7sUEdio0Kuj 4b2fTMCyJqHgSjZYz9tlupoKKYXGbsQGd7py27MVfC1isuUh2FhVYyyIkgi2rV7JCEHe H3+g== X-Gm-Message-State: AOJu0YzjCctwwPGLnaEajr8zKB3yQnpygG9nB2HNfqYwoMw93OODh1Ak +IbuCuRKe7CD9iP46TwLx0lYOVLaa7LrTch75T/5kTJsHe/1uzx6W/ahpK82uOcyq8AM4S1Pn8Y 7cro9X70= X-Gm-Gg: ASbGncvvaaPrLFan7DxyA+Yrg+7O9rGVVxESd7pSskqKguWFEqBDZVGDgVxHMTJyJuV GSfH/EhnpujJg4WOBW4FTLM548iz6dbDvg/KQkxyyeiypCBMOVlilgCQBPpFMponS93ap4IZtmT Did+k39dC5P0SlbNw9Z9cDNb84Hxp8SkAbtKE2Mm5pkzQb/KZ0iL11Dk7QDr8zNmHvhX1qnDOJz o5V/WJfVEj7930pt8KGdo1TJ8Ci3noUVRYZS8eXbvTTTEw/92l7EdxwNXTxOQluLCD8hNIqiVzT d1jWeKvcSwuCpcCBqJcJnb+3LB2XbAqqFi9atdDLVEzGCARvhEs+22Ljtz2KQD+1f4fm/i/sRiG rOjIQJ84EbAV7ukXfsJ3tTthtunphhVnvXeuDs+CSLzmqOF3yOI1EbH3y X-Google-Smtp-Source: AGHT+IHDYSXBY2nqTbZ/E6lxh07CwYunJc73WC45dNj3FIN75MB8pniTkwtM3ZQdNHQVkyfrTnZOhg== X-Received: by 2002:a05:6a00:189a:b0:77f:2dc4:4c16 with SMTP id d2e1a72fcca58-79387440592mr5825893b3a.21.1759960784071; Wed, 08 Oct 2025 14:59:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 45/73] target/arm: Emit v7m LTPSIZE exception out of line Date: Wed, 8 Oct 2025 14:55:45 -0700 Message-ID: <20251008215613.300150-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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: 1759961135028116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 57bc8ea4c5..3df0bbcb7f 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -5598,11 +5598,10 @@ static bool trans_LE(DisasContext *s, arg_LE *a) =20 if (!a->tp && dc_isar_feature(aa32_mve, s) && fpu_active) { /* Need to do a runtime check for LTPSIZE !=3D 4 */ - DisasLabel skipexc =3D gen_disas_label(s); + TCGLabel *fail =3D delay_exception(s, EXCP_INVSTATE, syn_uncategor= ized()); + tmp =3D load_cpu_field(v7m.ltpsize); - tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 4, skipexc.label); - gen_exception_insn(s, 0, EXCP_INVSTATE, syn_uncategorized()); - set_disas_label(s, skipexc); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 4, fail); } =20 if (a->f) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961502; cv=none; d=zohomail.com; s=zohoarc; b=iPVOr9n4GpkvyEd/Dk8Eb5+1ffZOW+xklV/udTkkKTCscFFAv70rTJvl4ic6j2Hf9QdRplrB/KM/tle5t5R5I5eEhtdIjMTaRXT9MCMAK3t+jFbef61qgAKj3hEvcqYx4faFgicV/8hm/dHI9g9HjGpW8kVslKtZ8f/Ha2UmJPI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961502; h=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=2fNvE/0VLywPk9VR9GyOGl84ab7Le9+vvxZH9uub5Ig=; b=D4mNybLq4wKpuW//5KPiQJ1ERscadxWFmtNKYEf1OodqCcDxmnIuTmIa7HO5ekEPuC1Vbg8U+P9m0z2IqS6iP7tu9W99iPY6RW7jSPC9KARsl5QtnGW24ZdtpuLxqsP3KuMnrEY5DgwqJi6Cxqpvvng9hYSkmYQMr3yU2vILTeI= 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 1759961502659634.6396377434028; Wed, 8 Oct 2025 15:11:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCt-0000eA-Kt; Wed, 08 Oct 2025 18:00:24 -0400 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 1v6cCd-0000As-9P for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:08 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCL-0007Mj-3j for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:06 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-7841da939deso283486b3a.2 for ; Wed, 08 Oct 2025 14:59:47 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960785; x=1760565585; 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=2fNvE/0VLywPk9VR9GyOGl84ab7Le9+vvxZH9uub5Ig=; b=hb/6UFz2jw2ikyXm/FJvWFED2a0lIy2yfOonidJSorJbc94tkP0kZpE4a1ETVvJWKu NjcaShQwAak4Ye0yPO1W0Rk8Flc13ohkr/Rq3r8D+gJSU1R5TKoIV6oBMTRqv3FjZxsn 1Qa8XyH484GqxdFZR4CLPrfU7B8QzUSTGo/X11X0PXROnkuekXs+k7BNsNLfUFoQ4rzc l16jy6X+t+CAzyf7+UcjBHJQayueY5NnEwgfxY1MEXx4NvMZ+8IfQ/B8Vj5nRr7/IrRp pZsNYDldXPb32IP0JvmwMNjNIOUhajmC67ILzUSSXTsJZi64qqzTYU1MrALI63paPmJI kPhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960785; x=1760565585; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2fNvE/0VLywPk9VR9GyOGl84ab7Le9+vvxZH9uub5Ig=; b=mJN8ixM3bUY0cg4O1ntrbnrk+zBnolj5B1MsqOmzECb2Qi3FvA0THQ+iDVFpsqxqyC WldjZm3jQhCmazBTrKttNmF1eIp/lTmT2se3V5aMQLQFBs07ya2tW50qSoRKtLM5eCcD HLOGRmFTLYEA7tXMSQFho2BA7rrXwTEj4dLbYwQqCvGR1T6hPGINdXye5fUf48IennAM vzXCHsVnY81ysQ6MKmyAvrjqrnovRzxqV0avK1wDJdsbydUyO4+IrqhE0S4p5umIqLJL iV2SrStIdyoAn9CXH+pUdRPwjWT7511uxyMm6z5DihrtRyNKQDZkHPLVG3c5+5rx5WGM Gg3g== X-Gm-Message-State: AOJu0YwcZkI3kl+sM7yEsuSsLX0xmVcN/2ZHTcdNnraZPrZDDi071QoN OLU56IJdvcMrc/7AEEz7sdPWJAqN+YNkeqN7StZzIqDR00sWRaPhX9RqyOuUGI07OkCxlZDWaQb ojUN9E1k= X-Gm-Gg: ASbGncvreHmN42GbL+eFZDpIaoyInDjgVEzsXftoYT95bbmu9L3jXQwru+ah6//C9pp N19HCxbTKqWhoy3ExDH/bg1DKhM/gpMTWsxXGvOLuUJo8EuPSyvQwaJm+9/6nFZk7c9S6RoAJrq 6RsAee8z5QWeiG10sJYcvOqo4xP+YCwm2PJI8cjaqQZBVyPm7GcRen+igiGh7FFndCBVa4Enl4v kFgj42tf3hWVf+f2QuvJ4HJCrp1Iu/OcymZFsNv40u4DEs9LRyKnS3PvKt37oRw8H3JKphpKqck lf8j740zKdZKeaTmM4Cj3yOXy+se/xxKs6dfIxJBxDHfa+frZ1niILQNDWf96ASL0iNBrYIWgJk iQabhrQ0zJ7u/RQVItx9cFbaxIE7EywuHND3OfWjYSEtgqiq9aDARpiYJ X-Google-Smtp-Source: AGHT+IF+v0fIFZHoT01sMNEq9j/CbwJRarmWIuO4Qtl6eAEqFjURgigeWA/7PrZR7dyVVCbi2InbjA== X-Received: by 2002:a05:6a00:1706:b0:77f:50df:df31 with SMTP id d2e1a72fcca58-793870523b6mr4711671b3a.20.1759960784761; Wed, 08 Oct 2025 14:59:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 46/73] target/arm: Implement GCSSTR, GCSSTTR Date: Wed, 8 Oct 2025 14:55:46 -0700 Message-ID: <20251008215613.300150-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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: 1759961507305116600 Content-Type: text/plain; charset="utf-8" Note that CreateAccDescGCS() does not enable tagchecked, and Data Aborts from GCS instructions do not set iss.isv. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 42 ++++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 3 +++ 2 files changed, 45 insertions(+) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index c037119cdf..b72aa968cd 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -139,6 +139,12 @@ static int core_a64_user_mem_index(DisasContext *s, bo= ol unpriv) return arm_to_core_mmu_idx(full_a64_user_mem_index(s, unpriv)); } =20 +/* For a given translation regime, return the core mmu_idx for gcs access.= */ +static int core_gcs_mem_index(ARMMMUIdx armidx) +{ + return arm_to_core_mmu_idx(regime_to_gcs(armidx)); +} + static void set_btype_raw(int val) { tcg_gen_st_i32(tcg_constant_i32(val), tcg_env, @@ -3989,6 +3995,42 @@ static bool trans_STLR_i(DisasContext *s, arg_ldapr_= stlr_i *a) return true; } =20 +static bool trans_GCSSTR(DisasContext *s, arg_GCSSTR *a) +{ + ARMMMUIdx armidx; + + if (!dc_isar_feature(aa64_gcs, s)) { + return false; + } + + /* + * The pseudocode for GCSSTTR is + * + * effective_el =3D AArch64.IsUnprivAccessPriv() ? PSTATE.EL : EL0; + * if (effective_el =3D=3D PSTATE.EL) CheckGCSSTREnabled(); + * + * We have cached the result of IsUnprivAccessPriv in DisasContext, + * but since we need the result of full_a64_user_mem_index anyway, + * use the mmu_idx test as a proxy for the effective_el test. + */ + armidx =3D full_a64_user_mem_index(s, a->unpriv); + if (armidx =3D=3D s->mmu_idx && s->gcsstr_el !=3D 0) { + gen_exception_insn_el(s, 0, EXCP_UDEF, + syn_gcs_gcsstr(a->rn, a->rt), + s->gcsstr_el); + return true; + } + + if (a->rn =3D=3D 31) { + gen_check_sp_alignment(s); + } + tcg_gen_qemu_st_i64(cpu_reg(s, a->rt), + clean_data_tbi(s, cpu_reg_sp(s, a->rn)), + core_gcs_mem_index(armidx), + finalize_memop(s, MO_64 | MO_ALIGN)); + return true; +} + static bool trans_LD_mult(DisasContext *s, arg_ldst_mult *a) { TCGv_i64 clean_addr, tcg_rn, tcg_ebytes; diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 8283a9c83d..2ae73f443a 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -571,6 +571,9 @@ LDAPR_i 10 011001 10 0 ......... 00 ..... .....= @ldapr_stlr_i sign=3D1 ext LDAPR_i 00 011001 11 0 ......... 00 ..... ..... @ldapr_stlr_i sign= =3D1 ext=3D1 sz=3D0 LDAPR_i 01 011001 11 0 ......... 00 ..... ..... @ldapr_stlr_i sign= =3D1 ext=3D1 sz=3D1 =20 +# GCSSTR, GCSSTTR +GCSSTR 11011001 000 11111 000 unpriv:1 11 rn:5 rt:5 + # Load/store multiple structures # The 4-bit opcode in [15:12] encodes repeat count and structure elements &ldst_mult rm rn rt sz q p rpt selem --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961241; cv=none; d=zohomail.com; s=zohoarc; b=FJVrRGrMAHbcDp40eog7HhHDET1rMxXip0pOGRSO5yk7GktQH8GFXBFs23s8zqTAj4cpEzZU6eOHdOpfTFl0aWpDY9FavgDXz/kXIDI8sZWzzLuEeTEw54Q+6msHMzhv2+h+KAHmQe2Dmi94EHFzCU3tj3plboc8YAdVQdIAGeM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961241; h=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=RgapaYKJCYI8THelUZOsiqX66vR02pQghFFIRA5mWDg=; b=lYb1L7qlZirewuKGryAOGvTCJdIt1+f/r2fdES/OppjowPAfsYTVBZ6gE/mA3Xzj5ewFl4W/6SgvjxpUbU4B0hsGT+KY6k93ICISS3CBxIAk1UcIuv24lKrYBXq+rrgk3eoJzimxpU7n6kXl7fk7gKFI5ku5LMTF157eISc4AKg= 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 1759961241449176.53609031022745; Wed, 8 Oct 2025 15:07:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCq-0000Xx-5N; Wed, 08 Oct 2025 18:00:20 -0400 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 1v6cCe-0000Ar-8D for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:09 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCL-0007Mu-3i for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:06 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-781ea2cee3fso308685b3a.0 for ; Wed, 08 Oct 2025 14:59:47 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960786; x=1760565586; 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=RgapaYKJCYI8THelUZOsiqX66vR02pQghFFIRA5mWDg=; b=GW0X7MZW1oi+o1DiiGVx9EN+RJj8sIw1nMijPOO+d6eCQkk091d9zr54Tveo0aHsMs WIYx6Kdx88LrEVEv++izOvW0yznzYpjyvDXR6se2I91P91bCqSN4a6hxkT9lBSkDELyb ZybmfxevZH3CkJq0TMQmaK5w636o4RB/ZU9p+hBEQHW2cjMFov9MhhLe7yRKYrUGQpf6 SFzJUyxiqjRTC4NjgLmzfEJtqXi5MRX4qm5pxBJIclMsqQvwxY6qtPiX26Q/EfqyeNlQ EdNOcJD8jqAtOs9aGWYJxwCFuck/MKQmjmggqMOtsF9qO1JMf5rf6Sco44oJ6zaOFGbv YUuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960786; x=1760565586; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RgapaYKJCYI8THelUZOsiqX66vR02pQghFFIRA5mWDg=; b=a+2Hshw8PYk7lyAvxoccKPomTjYxi7Qym6QiMp/lgocdc7EVTwiJbU8b8W2qbLGwbU JnUS2NwD0A1tnX1Re79kcnpd1P5NQIVuk9Pw7YVbGuPDbD0spEsuYRDkDREENNTNU+PT eSKuARaPHf9JtlYFbQMMJsZqX6MsRPGR5O3nlq9po8YytRmbd15pzatIsFMljo8GuaIV 4z2f0Zkfwk6J92NLfEXKVi20jf01iV9NACt6oafECW8/5LrRtyEj3q26QUFOr2Ry85An ILmJZYhaTHJRNWn4EXQ+vqr869I3z0iXWY85FZcmg3RTAxFqnv9yvWDEPFqCFGbdY3ND Vwrg== X-Gm-Message-State: AOJu0YzCMciGtmeTThBwqkTuCS+vzS3fQV2DUNJrjknswyZMXsnkRVQt L4SRujuBcogRN0EgXGF5oOIPOmoS6f7e0yc4gMIKPYhOwPKoPhDLX3BGBziiWpo/91DuB4QTuve hYqiKAK4= X-Gm-Gg: ASbGncv2oHxUMgfBNo+85LKNgn05C6KF5ZqeBuwuZGlf4FOjJJ9Q4qOrbiDKic+UVP0 HsaoJk2i+nUFjzVjBy91NVNpvhF1WceP8OMx8H39Ayx8f6eWVRKCp/LlXGljY0ER9ZoZeUEjeil hEC4MPWFL2ucoLuwULJgjczo2+v/4FFbOabU1+5dl7Dlsmaf0tXDxHqQXZTcb3Meyr+fmpruq2W 6javTfVYV68T9DJDFKwaBG5RNYjWBNlaSUnSu3zN+0nqE4/ep4Jn9+44jjGNQ/bOAaWgpHp+6Q2 CRAFgkfPjs+cqIUXqJszMzAeO0hWvB4CGMjvSmkaRh28yjbHKawXtcWruIw5b2aa+JIwQwcOzqX ZarTuTN+gZs2IXjPPqN4fq8PQ3bty7np1UDhB1wriVEIBrQmS9etrWVKa X-Google-Smtp-Source: AGHT+IGr9pJXJ7DRFUgrvSMpKbB+wHWn78PCwactkuSkOYrFWKhIt5CMqYw/s3bDk4N99nY/9WPs4Q== X-Received: by 2002:a05:6a00:3926:b0:781:1e08:4459 with SMTP id d2e1a72fcca58-7938714695bmr7429591b3a.18.1759960785422; Wed, 08 Oct 2025 14:59:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 47/73] target/arm: Implement GCSB Date: Wed, 8 Oct 2025 14:55:47 -0700 Message-ID: <20251008215613.300150-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: 1759961243044154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 8 ++++++++ target/arm/tcg/a64.decode | 1 + 2 files changed, 9 insertions(+) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b72aa968cd..38a1f51ed5 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2080,6 +2080,14 @@ static bool trans_ESB(DisasContext *s, arg_ESB *a) return true; } =20 +static bool trans_GCSB(DisasContext *s, arg_GCSB *a) +{ + if (dc_isar_feature(aa64_gcs, s)) { + tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL); + } + return true; +} + static bool trans_PACIAZ(DisasContext *s, arg_PACIAZ *a) { if (s->pauth_active) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 2ae73f443a..01b1b3e38b 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -248,6 +248,7 @@ ERETA 1101011 0100 11111 00001 m:1 11111 1111= 1 &reta # ERETAA, ERETAB AUTIA1716 1101 0101 0000 0011 0010 0001 100 11111 AUTIB1716 1101 0101 0000 0011 0010 0001 110 11111 ESB 1101 0101 0000 0011 0010 0010 000 11111 + GCSB 1101 0101 0000 0011 0010 0010 011 11111 PACIAZ 1101 0101 0000 0011 0010 0011 000 11111 PACIASP 1101 0101 0000 0011 0010 0011 001 11111 PACIBZ 1101 0101 0000 0011 0010 0011 010 11111 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961371; cv=none; d=zohomail.com; s=zohoarc; b=LmF22J6HYSHDX8raz4bvxlU7tGqKNh8i3C5D5X6moNwCmC9oXPjDhO3QZdN0QxHP3rH7F2wI9r/TzRmjOEmdO7pGwdTmr1OWvD4rX9LKeO75K0FP3002W/AMvDPYi/gJfqCA71/6vaATAeRnKGsmTPe5Lf+zKgFRRl+hqqZkm/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961371; h=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=oY5b7YnlUaayPZ3GFzUnZ3Dj3BjqHV9oZEHTEIpzUQs=; b=mkS5ekpSPFwAI8zkk1PipjaB7Zy5TL9udD7vVl7zlR48tw1SMwl6WpJODcttRZ8be3Ll4u94o6eXp9KWze/1LQAvFpens767CVHKUsoQW8RyMgSjlJHHql0ZvuqdN7N61vBBCFEEimKZV3VSzSUuQXweLvQtgy45ty6LWUgly4k= 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 1759961371302496.7817417396926; Wed, 8 Oct 2025 15:09:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCi-0000FL-10; Wed, 08 Oct 2025 18:00:12 -0400 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 1v6cCY-00008L-Ab for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:04 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCK-0007N5-Ig for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:01 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-78af9ebe337so230328b3a.1 for ; Wed, 08 Oct 2025 14:59:47 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960786; x=1760565586; 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=oY5b7YnlUaayPZ3GFzUnZ3Dj3BjqHV9oZEHTEIpzUQs=; b=S/G5n9pH22uhje8vpopYKO+rMgXa1clbFDMkcP+Ixwx0QwYN3Ho/k2hkQYh7zaFK05 BoI0kqq4x4rAAmUOLEWD7r9pbDnaG87m/0uEzBPgaAK1M+KCE/p5Uk50es9OTT4vb5g+ SZ4Ei1LXqrr3RXW/vMecW6R3W11yYZ+1pOV8ltIa+nH9xGmrx2ShGeoNos/LPdjbVQPO RtrXZ48KF9E47DEPHDqwYCcYv4q+mKSN3JEzK4CwF4hk3qUh3EgdybQrpUHAOkfrthdc MTgC3qINSW8vs+hJbP0OhX2n1DSuvs1OlZ0+6ROrWPdJRx4KMjFKK/onA3vCUJU9IwCv 7TBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960786; x=1760565586; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oY5b7YnlUaayPZ3GFzUnZ3Dj3BjqHV9oZEHTEIpzUQs=; b=gfSWi8xTX3QI6RtrhhkD8Mc9xtgToKv6O9u75DHzHlYMulNA8UARXoxnG0tpW6oLV4 5qUcLie8phlciSTRkGa72ZaPzrMVNipekrEnEQnWKC7fGNN9RtcFYA2+QL3RArTECmEV NQ7GsG2v0YrTB3p1heUu9xK11JfYZ0Y9aBunet0pkO7NjhXdE5innO73LV9vmMMFH7KW rDixrpAi1aUwfhv5ONY6Zz379MkVbzpkIqZnKMkGIIWoHo0Hxu6v9Shj3pARprtvFIsj 7rdTT6pi2gat6hqv/nbcpcq9D0bZ16lbR0VabI9ZG80+SO1l7PgT3nTGiphM5MunpcHM rVew== X-Gm-Message-State: AOJu0YziQ1kFHKbj6HWFEttTwvDP39ljctxWj+gCIGSyPiMrxJX0jzh8 JIY6qV08irQsr71GEIJAEzvPQB4wEk37XZinyUhu9ZK9Bt+hCO2dXkVAFqoTN6jiK0QDCgeClDg 6R8YulSE= X-Gm-Gg: ASbGncvWpXmZKFk/jaqV2+7W4osmfeJ9TDknODvjSxk2KvoDWOe+0/4UVHkvkh4Zxu1 4G7E3hBOsDt8xtuVnIxksY1aee9NCaDQmkF+R8rQ+igKi3HHqb6x+rAzZUq6w3RU9ZWqzANq+I3 X5R7nHGcBdhucOW+m9cToRcHi3QX1EZ1JCOtk5U8DWuJAU5hCLqWv9u5Lq8Ofgtr1EZh3/lZwOU qfQ61xBtwXYoILkLhuZdSttfognBtyBHamDdHS4IsDfCzP1r3/FpRreAJv0c9/MiAMb9lTdkY9c N4VAH+4rEcXJTXcLi0XqDbm3aO+NHOMXe8QY7PRBv/61fXPyNiKJYD9EPBEM2tJtvOqELDslwal NDsWNTfqXF0b2qz2Q8n05Wr/ZV7KactJ+5crKRguXg4d/BRoDbCEfoWzvhaahOj6Un0U= X-Google-Smtp-Source: AGHT+IFSKz8DclnBsdm+1DhgQZCSRLFBad4XxRnwUSy3MV9WdM7hA9NeqCLVh59TiTUISWg8ija1HA== X-Received: by 2002:a05:6a00:2e98:b0:780:f6db:b1af with SMTP id d2e1a72fcca58-79387440b0fmr6043120b3a.16.1759960786054; Wed, 08 Oct 2025 14:59:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v7 48/73] target/arm: Implement GCSPUSHM Date: Wed, 8 Oct 2025 14:55:48 -0700 Message-ID: <20251008215613.300150-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: 1759961372561154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 3 +++ target/arm/cpregs-gcs.c | 15 +++++++++++++++ target/arm/tcg/translate-a64.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index a79f00351c..d22ae383cd 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -47,6 +47,8 @@ enum { ARM_CP_DC_ZVA =3D 0x0005, ARM_CP_DC_GVA =3D 0x0006, ARM_CP_DC_GZVA =3D 0x0007, + /* Special: gcs instructions */ + ARM_CP_GCSPUSHM =3D 0x0008, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, @@ -871,6 +873,7 @@ typedef enum FGTBit { DO_BIT(HFGITR, DVPRCTX), DO_BIT(HFGITR, CPPRCTX), DO_BIT(HFGITR, DCCVAC), + DO_REV_BIT(HFGITR, NGCSPUSHM_EL1), DO_BIT(HFGITR, ATS1E1A), } FGTBit; =20 diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index 1ff041811d..cc5a0b86e4 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -43,6 +43,16 @@ static void gcspr_write(CPUARMState *env, const ARMCPReg= Info *ri, raw_write(env, ri, value & ~7); } =20 +static CPAccessResult access_gcspushm(CPUARMState *env, const ARMCPRegInfo= *ri, + bool isread) +{ + int el =3D arm_current_el(env); + if (!(env->cp15.gcscr_el[el] & GCSCR_PUSHMEN)) { + return CP_ACCESS_TRAP_BIT | (el ? el : 1); + } + return CP_ACCESS_OK; +} + static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSCRE0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 2, @@ -85,6 +95,11 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 5, .opc2 =3D 1, .access =3D PL3_RW, .writefn =3D gcspr_write, .fieldoffset =3D offsetof(CPUARMState, cp15.gcspr_el[2]) }, + + { .name =3D "GCSPUSHM", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 0, + .access =3D PL0_W, .accessfn =3D access_gcspushm, + .fgt =3D FGT_NGCSPUSHM_EL1, .type =3D ARM_CP_GCSPUSHM }, }; =20 void define_gcs_cpregs(ARMCPU *cpu) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 38a1f51ed5..625563d95b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -26,6 +26,7 @@ #include "cpregs.h" =20 static TCGv_i64 cpu_X[32]; +static TCGv_i64 cpu_gcspr[4]; static TCGv_i64 cpu_pc; =20 /* Load/store exclusive handling */ @@ -77,6 +78,10 @@ static int scale_by_log2_tag_granule(DisasContext *s, in= t x) /* initialize TCG globals. */ void a64_translate_init(void) { + static const char gcspr_names[4][12] =3D { + "gcspr_el0", "gcspr_el1", "gcspr_el2", "gcspr_el3" + }; + int i; =20 cpu_pc =3D tcg_global_mem_new_i64(tcg_env, @@ -90,6 +95,13 @@ void a64_translate_init(void) =20 cpu_exclusive_high =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUARMState, exclusive_high), "exclusive_high"); + + for (i =3D 0; i < 4; i++) { + cpu_gcspr[i] =3D + tcg_global_mem_new_i64(tcg_env, + offsetof(CPUARMState, cp15.gcspr_el[i]), + gcspr_names[i]); + } } =20 /* @@ -420,6 +432,18 @@ static MemOp check_ordered_align(DisasContext *s, int = rn, int imm, return finalize_memop(s, mop); } =20 +static void gen_add_gcs_record(DisasContext *s, TCGv_i64 value) +{ + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + + tcg_gen_addi_i64(addr, gcspr, -8); + tcg_gen_qemu_st_i64(value, clean_data_tbi(s, addr), mmuidx, mop); + tcg_gen_mov_i64(gcspr, addr); +} + typedef struct DisasCompare64 { TCGCond cond; TCGv_i64 value; @@ -2803,6 +2827,11 @@ static void handle_sys(DisasContext *s, bool isread, } } return; + case ARM_CP_GCSPUSHM: + if (s->gcs_en) { + gen_add_gcs_record(s, cpu_reg(s, rt)); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961424; cv=none; d=zohomail.com; s=zohoarc; b=HtXaZpYOVe7kTybtdvVn89/we12UOksjoBNR3a3pkneUzDhOYsodhyqm2F9p2UOe6MyDh3MIRHusoVxT5ce3eCSMmJQNh1onuZ/7TKLkVy+32C+OSYr6lNgRzy2NKiojz7LiqNIPE4G998EB6RroH1BBrJHiJllcmii8ALhDvc0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961424; h=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=/sp+p9+6kla5uie9MLF/yMa42L1f1nYNPqV9lKH1gMo=; b=BXfkW/oxFg7PMYkSQiwiU72Y3tQh2fDkEA9Ag4l40ViMVDMedfXVPzbnvKrZAVI9Rv6zK4wVv3KdyXaoU/+1o/qSM4DaZm/0JVlkwYVZfcvqAAoHsgNH7UoxEERu/O0t9BmaCjMUyoeaa4XbOclbN4157HF6hsYVVQxr7ny6J6Q= 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 1759961424418160.23587434179217; Wed, 8 Oct 2025 15:10:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCt-0000e9-G9; Wed, 08 Oct 2025 18:00:23 -0400 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 1v6cCh-0000Ek-RC for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:11 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0: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 1v6cCM-0007NC-30 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:08 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7835321bc98so324715b3a.2 for ; Wed, 08 Oct 2025 14:59:48 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960787; x=1760565587; 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=/sp+p9+6kla5uie9MLF/yMa42L1f1nYNPqV9lKH1gMo=; b=KQxOt357q9hfYlMAPjtTPneHJiTr0U0xMCJXaufs8F8NVy6qU851YGa/9BDKvBk41A o9vG8tP3mcS352SmeqqzugV1wn94r0Q3IkUWNyX11akzG+zJb4PASAo/r/uxEsWs8dKF 3+MRxRarGNNGQVjXuVkKs92yW4ovXR/U9DBzhbIK1/0Oft2qJ9DzQK/eKG5hJM0U+xzH 77fROee0CRIOI+fNtZK/0j8DR2THZFOxsepoIHPOKBkszyEU7ZvcwyvOA1kxmXPiFVx8 a5Eqp1nM29v9opeT21+h9bEx1cLUePwMOkCwXbsah14SacvBQuKE9jE8YGxhfNZU9mbd IJrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960787; x=1760565587; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/sp+p9+6kla5uie9MLF/yMa42L1f1nYNPqV9lKH1gMo=; b=aDKQyusiCa0O6nKDsr4TOEJDHOpzdmZdSgpVH2/+74vKR6TUJYBpGD9md41nbmc0VI ay5EUB5mc5YEKbfdLRwsGLpvBuWRkssLUn7ndJTWLLg/tgpvevGGbK8HiW3FSDEA8EZl gIIJa0yaonu9jMG0Frwhm6FgvnN20ipjGAgB64RZNfp3XFtCPK2UkjQhQu39vR5e3VWl nI7L10V0RMm5A3MzulEjvvdxywBDR1c10SfH1vtouTpem+m7Wb4dhJZbkwKGqUyH7883 nyzkWi0faJje++1QEgyBpXM0pLplySDYPlI/9nOByMCTEW2KuZXa13pBpVfykDpbuUt/ 7tzg== X-Gm-Message-State: AOJu0YzPq8ecP2CeiaKJqDJ9bln6KvnQVeZk42PvIAZJFJiR6AL1yZPW vvf1JmztuEEuXEe8/lYy4+asOQIj2re5pZmtextBYHZxphzyP4w7HMtgJuNbR2eoa9r92CxhS7C yz5d0kCo= X-Gm-Gg: ASbGncuLmwTuBh0hw/Q37Ew8Qa707zOg+88PxF92L15XqHg743jF/db6UDiiUsVYAVK S8FaUM+HLJfNmb0eSPJaiGQQ4IuKXWhRs2/mYo+quWW7XgxjnDEyAZmiSUu5aZ21sLzvHJqGmCO nybCMHTu8PPX03tOCxru7OUqstmNhS3ynjyxVGPOY06HRxWx0rTHEYNOjQvFCw8U9xJMInduuBz hDQ1YlzUCChnNnwhrc1+r+PmnbPHiCttZsOCfgsly7gDPQIwnFdvTD3HdUINNhHDJNeVjnWzAlI /CyJlhX3g+SU/iDLb7L57KNr7Ol4D9lxi+atvDMaRXUzFJ7jc5oRh8pRdRxUnI/ec/8K2Ykak7Q 3BcA2Saas97ds9HwttKvw8ExL0S9gdnQdCwQTJUHGTMtzhYz7bQ8TJEOx X-Google-Smtp-Source: AGHT+IEbCKvEP5QYdzBpJlGsnk6cSig0au1/J50EOJ96qkCFQCjDQESG602ZyCcn7sbmhh4Y4vZKLA== X-Received: by 2002:a05:6a20:3d93:b0:2f6:ec69:d448 with SMTP id adf61e73a8af0-32da83e389bmr6762886637.31.1759960786760; Wed, 08 Oct 2025 14:59:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 49/73] target/arm: Implement GCSPOPM Date: Wed, 8 Oct 2025 14:55:49 -0700 Message-ID: <20251008215613.300150-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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=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: 1759961427171154101 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 1 + target/arm/cpregs-gcs.c | 3 +++ target/arm/tcg/translate-a64.c | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index d22ae383cd..81d8f0e32b 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -49,6 +49,7 @@ enum { ARM_CP_DC_GZVA =3D 0x0007, /* Special: gcs instructions */ ARM_CP_GCSPUSHM =3D 0x0008, + ARM_CP_GCSPOPM =3D 0x0009, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index cc5a0b86e4..15d383b2a4 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -100,6 +100,9 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 0, .access =3D PL0_W, .accessfn =3D access_gcspushm, .fgt =3D FGT_NGCSPUSHM_EL1, .type =3D ARM_CP_GCSPUSHM }, + { .name =3D "GCSPOPM", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 1, + .access =3D PL0_R, .type =3D ARM_CP_GCSPOPM }, }; =20 void define_gcs_cpregs(ARMCPU *cpu) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 625563d95b..7783273cc1 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2521,6 +2521,24 @@ static void gen_sysreg_undef(DisasContext *s, bool i= sread, gen_exception_insn(s, 0, EXCP_UDEF, syndrome); } =20 +static void gen_gcspopm(DisasContext *s, int rt) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 value =3D tcg_temp_new_i64(); + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(GCS_IT_GCSPOPM, r= t)); + + /* The value at top-of-stack must have low 2 bits clear. */ + tcg_gen_qemu_ld_i64(value, clean_data_tbi(s, gcspr), mmuidx, mop); + tcg_gen_brcondi_i64(TCG_COND_TSTNE, value, 3, fail_label); + + /* Complete the pop and return the value. */ + tcg_gen_addi_i64(gcspr, gcspr, 8); + tcg_gen_mov_i64(cpu_reg(s, rt), value); +} + /* * Look up @key, returning the cpreg, which must exist. * Additionally, the new cpreg must also be accessible. @@ -2832,6 +2850,12 @@ static void handle_sys(DisasContext *s, bool isread, gen_add_gcs_record(s, cpu_reg(s, rt)); } return; + case ARM_CP_GCSPOPM: + /* Note that X[rt] is unchanged if !GCSEnabled. */ + if (s->gcs_en) { + gen_gcspopm(s, rt); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961467; cv=none; d=zohomail.com; s=zohoarc; b=nLZ1SzoV9VHZwjQif5m1z1DK9cQUTQ/TKj94FiBjP2FzFgR2Wm8nb0wy1G5IJpkAC0W1rm/MraUb6seZoVaR2brLmu0BOyj2jEwai8Sf2id+GNsCv+um57I/4hzA2W++TmWewv5Uu+3/qxs40UsWGAsH4OrWZkCgmSYOmXWIxOs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961467; h=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=auRhuZBR4mYBcBfeKBalVDKijSH+/N0/0EXrRkaOPlI=; b=Nh2ga1TJJTszn/vMhBYyfRgcDRxcOeQPu25rFOJWeciwqv96K2SDXxW/tS0mNPxN7M4rv5T2zntvxXGOwiewgbNF8p+x9j8uwHz8Jgkq8cuAYAo5GW8kYvL/rdsoqjA321lx9YWGWwkHLTrVZ3eqZePa+2aPMpo9MifVYDt21g4= 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 1759961467723554.9121437315873; Wed, 8 Oct 2025 15:11:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cD2-00011p-Ce; Wed, 08 Oct 2025 18:00:32 -0400 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 1v6cCk-0000TL-RE for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:15 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCM-0007NX-MU for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:14 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-78af3fe5b17so224888b3a.2 for ; Wed, 08 Oct 2025 14:59:50 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960788; x=1760565588; 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=auRhuZBR4mYBcBfeKBalVDKijSH+/N0/0EXrRkaOPlI=; b=gPcB9Kqh9KcF33rmgdYNZdGF3MtcIT4PmhH4HHeUeBeBnHaTb8tUHTDpUlIxP+u5VG iDAfb4QSSQsjUEIyGv7a9i+0UDIh3z/BvTQkV8CsCKaMsdeHUi/U5u6ii0w3NTS3KGuz 0zo5Le9Slzs1HzjqK8PjSyMo60uu2vuRrchXlj/TiotV6WXxrxu/rLvl9v47b130HFe3 Vgvpsj618lYzoFi3XBsnJjfl2dDktjBr2cjuwhpWpztHY486w+QvZSi+Wr2kdOxGyQiy MXPz0wZkKgQEj/ifZQ7RvfzUh33rTQAkFAoqC4cAFOQAg5SGyOwmmv2fwQ7EMjclRGse pSqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960788; x=1760565588; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=auRhuZBR4mYBcBfeKBalVDKijSH+/N0/0EXrRkaOPlI=; b=Vd3SymwDHOBZ9PTqkxgbBYiyNmRR2T4CUF6uDkY0zJoY1xyneNP7Fswyr1MoH0YJez IyWSlzmjhCNfCAmzKW0RJv2Tum7ed57wMZm9ODZ6G1Mm/8ep8sx6gnayJ75SmtP/PscK G10FDgisBWNgz4cp0Q/Rv5IVQiUt0ckCOpJ8zne5a7Gd0G7jCDr1JhWp7pyJi7OR41ZI 6ThtJoXyImztF/+5WcppboZLAAeTImCkpexGmkEB+bkbqwlTOQm5iwaYHekQCV3a+UjF oYmS/eOh3/6Mdqk2NNuqki/dLN0Ov812symXiCP3DzZq4aP2q6l2iy6OK0HP3Cz3Y+KO y/IQ== X-Gm-Message-State: AOJu0YxGeQUU33Dv589k1uGb9M5SBh9yQ4zW5Q4pW0TZcuvvAubcOdT/ mav5j8GT70g4lZr9rf7K2T2C3ldVYrUniASTQQ4zzrWRxbHho2YpdLbvh3oNPc0xGHZIupuV4ig IV9d4G6w= X-Gm-Gg: ASbGncsb8dOjaL+2wrD4fyqdtc7yMS4bSHxMsFt0QDNm6x3lkgRsy5WOH3PrFErciTD fURUISg3wU/nUYg2iJuyd6PwoJF+1KJvIiIE2eUJ+rXwiicH8EWx6eIJ/FVqAeEvZslt+TBcCZ1 4Cl/aStkG3Lka6Fr/Y1cP3RBdm4GYaF/mB5hHnK8Ew/cDsgk/HUPLLiC8nFdhhzGWfi+CDOxCbQ aZ3QX4jZZduc5b0rJYO6CJBYdh89vpLw/VzVSXzTl5iJUWIgTvtTUgfRSWm5TwkSAOLrZC53Ziw AB+IfP9xq/2saBNYm0DcWg41mEH6eFd4A6xa+YSgUmpEUZh3XxUDfPBYzUyuryX2RVXPZ5vqHIh ZPFrIN/mdR/oNdYV426WRB+3flRGaMzJJCfS+I2F2KRu8msYK+JDBqg9g X-Google-Smtp-Source: AGHT+IGjD8I/W+xWuykNE+5vpilwrC2C8TEzckPp1Rqhv/+eIIfBUnK6m+160iWWSQmE+c8/utQkyg== X-Received: by 2002:a05:6a00:886:b0:77f:449f:66b0 with SMTP id d2e1a72fcca58-793883dad54mr6441319b3a.32.1759960787373; Wed, 08 Oct 2025 14:59:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 50/73] target/arm: Implement GCSPUSHX Date: Wed, 8 Oct 2025 14:55:50 -0700 Message-ID: <20251008215613.300150-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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: 1759961477047116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 2 ++ target/arm/cpregs-gcs.c | 17 ++++++++++++++++ target/arm/tcg/translate-a64.c | 37 ++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 81d8f0e32b..909916b7fd 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -50,6 +50,7 @@ enum { /* Special: gcs instructions */ ARM_CP_GCSPUSHM =3D 0x0008, ARM_CP_GCSPOPM =3D 0x0009, + ARM_CP_GCSPUSHX =3D 0x000a, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, @@ -875,6 +876,7 @@ typedef enum FGTBit { DO_BIT(HFGITR, CPPRCTX), DO_BIT(HFGITR, DCCVAC), DO_REV_BIT(HFGITR, NGCSPUSHM_EL1), + DO_REV_BIT(HFGITR, NGCSEPP), DO_BIT(HFGITR, ATS1E1A), } FGTBit; =20 diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index 15d383b2a4..e6c7025d02 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -53,6 +53,19 @@ static CPAccessResult access_gcspushm(CPUARMState *env, = const ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult access_gcspushx(CPUARMState *env, const ARMCPRegInfo= *ri, + bool isread) +{ + /* Trap if lock taken, and enabled. */ + if (!(env->pstate & PSTATE_EXLOCK)) { + int el =3D arm_current_el(env); + if (env->cp15.gcscr_el[el] & GCSCR_EXLOCKEN) { + return CP_ACCESS_EXLOCK; + } + } + return CP_ACCESS_OK; +} + static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSCRE0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 2, @@ -103,6 +116,10 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSPOPM", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 1, .access =3D PL0_R, .type =3D ARM_CP_GCSPOPM }, + { .name =3D "GCSPUSHX", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 4, + .access =3D PL1_W, .accessfn =3D access_gcspushx, .fgt =3D FGT_NGCSE= PP, + .type =3D ARM_CP_GCSPUSHX }, }; =20 void define_gcs_cpregs(ARMCPU *cpu) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 7783273cc1..0df1916d28 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2539,6 +2539,35 @@ static void gen_gcspopm(DisasContext *s, int rt) tcg_gen_mov_i64(cpu_reg(s, rt), value); } =20 +static void gen_gcspushx(DisasContext *s) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int spsr_idx =3D aarch64_banked_spsr_index(s->current_el); + int spsr_off =3D offsetof(CPUARMState, banked_spsr[spsr_idx]); + int elr_off =3D offsetof(CPUARMState, elr_el[s->current_el]); + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 tmp =3D tcg_temp_new_i64(); + + tcg_gen_addi_i64(addr, gcspr, -8); + tcg_gen_qemu_st_i64(cpu_reg(s, 30), addr, mmuidx, mop); + + tcg_gen_ld_i64(tmp, tcg_env, spsr_off); + tcg_gen_addi_i64(addr, addr, -8); + tcg_gen_qemu_st_i64(tmp, addr, mmuidx, mop); + + tcg_gen_ld_i64(tmp, tcg_env, elr_off); + tcg_gen_addi_i64(addr, addr, -8); + tcg_gen_qemu_st_i64(tmp, addr, mmuidx, mop); + + tcg_gen_addi_i64(addr, addr, -8); + tcg_gen_qemu_st_i64(tcg_constant_i64(0b1001), addr, mmuidx, mop); + + tcg_gen_mov_i64(gcspr, addr); + clear_pstate_bits(PSTATE_EXLOCK); +} + /* * Look up @key, returning the cpreg, which must exist. * Additionally, the new cpreg must also be accessible. @@ -2856,6 +2885,14 @@ static void handle_sys(DisasContext *s, bool isread, gen_gcspopm(s, rt); } return; + case ARM_CP_GCSPUSHX: + /* Choose the CONSTRAINED UNPREDICTABLE for UNDEF. */ + if (rt !=3D 31) { + unallocated_encoding(s); + } else if (s->gcs_en) { + gen_gcspushx(s); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961204; cv=none; d=zohomail.com; s=zohoarc; b=ekjmFF6Hyl9tRsRFgqwQQ59PZ0bue2kLOtQr1EGvft9CJz0btPqpabI1GqduV7C7qUfZGIg/GhKUfC5uHolWbQj3BGzSO4TiO2BgoSeMdVofpho93cmOauGUqiIfmEzGDw5BW6YfVk3uOPLDmFdDQqVr9xMq53FoVhW9ZhyRZoQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961204; h=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=haWkr5zcG8B/3n1QyPkLOF9ZaZicyh1Td0H0H9j7CZE=; b=GBDo912EKLXj+fMHKyV1po+dC91rVo9rZP4/PXW/obQvtnm//fpGg3ZbnFHXtkEI10g2E69blK9JELDNFsgFYRGg8ADr69btVomQfM4bssf8iLpNcu+U2GQcNatYQEMhb/sFRrG79jQ2F8PVUlRjQACk77LsAJWJSeKYeCxTSL0= 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 1759961204380609.4997132587907; Wed, 8 Oct 2025 15:06:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCz-0000vD-RN; Wed, 08 Oct 2025 18:00:30 -0400 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 1v6cCq-0000Yr-1G for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:20 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCQ-0007Nk-0b for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:19 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-794f11334adso271829b3a.3 for ; Wed, 08 Oct 2025 14:59:52 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960788; x=1760565588; 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=haWkr5zcG8B/3n1QyPkLOF9ZaZicyh1Td0H0H9j7CZE=; b=F/zNpplECFb7kGgL6YA62FwgS5VxlrwMR/OgJpXlkdN7tnQ1XSrtI2x2PQ5+ME3pel Oluv5+AKlp80xu/XiQ8V6bhsIPlY+K4L3tcH6sRO85Cca1nzhm8T8AGEouMY6TQKLkrX vmNGXYxxMSy5nYx+XpiwSKKERWspZH/P9rkHXbCKxaC7iC7q92cFEW0AGyacrQJ8LRax 2WfCSwWDZUiO7iZOcPAoZJsbQ41vgR7SCYvk8fzTrOc7NxLcEw/DREvdJujVk99FdcEL AneqcRlxWCvoKoJp2SJd08lsRy1wti+xCogEEo0qumfFJJtOt+ZbC1B84FTjDDkcdJ/G u1FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960788; x=1760565588; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=haWkr5zcG8B/3n1QyPkLOF9ZaZicyh1Td0H0H9j7CZE=; b=oOswBEsCcMrWh3QLaWNmNnhsxgIHvmv7AyEnBGycbpyF4K9Ic64qARSsEesYnFBLTw H/GBaLmS9gUiR0rfQUG0tnX4FxnKNipLP/9WdTrvyvRqQmM3ZdyhhU8StWY2LNhXVXvd 2ldQzA1QEgDiSGJJAEWL2lnEFC5qId/VnffRKf3VXQNvBMV0zpQ3gEo7KmD+EbDmUmAv ovnC7Wp/mXEEpJhQce45yuwCw0NJ3/TQR8Yk7uV/GeW92D2idOxK+GZmpm9jpmFmT1eM vmFlpRH2SLSQAQaAByTE816MY4OWdZpJ040JAGzrs3poRHmXbJjBfLnFgQcQCcIK24Hk 86eg== X-Gm-Message-State: AOJu0YyFR+foWPY58AKsLbgrKzLVddWMPIkcid0qgHHoHD1Zi3EMXkuh hjDPmO6Gx068hiyZV2SSx1z0af43MQ0R/fpqe9IoV1MoX/IKMrPzESzmIuHVQHc964NZ759osNN 2/0fi/0M= X-Gm-Gg: ASbGncscKlT8IxF2NKIYBDnCWiHmbhcVjusuQsWgDgVUYj0o8vsPM6oI8p82F5LJRqb X7ofK5mFOgmH5kAbPXbxE4LoTdq4iLSUcJ5ky24Dv2/VD2KXZn8CTaYsAVnWdjNsKobJfT5nUfi eLmKvEc4OKOIPLUjX6HLTXtD26G06r9Kx/njBM7YjlSDyQwTtB+7EKuXaPV1t3zXnCZb/H0PsOr TgAxb4wJaKZ/yJvS+iXTckf0pjKclcAJD7IRsisXlDEFYMyUdqZ4mtdAQA6lYzJVUu7U2vtIbiU xQtLuVbGfQBfbWPKUkEq3DSYMasVyNHSiWu+k4ABA5gUi+lfVqoz3ORzRT3fCALDcS+BFemKrTR ciVt3w3xszV/rnvIRoCshXYcygrr9klzcg9jNM4nV1b1KtRPztl7jf46P5J99XC5vSZM= X-Google-Smtp-Source: AGHT+IFUoG8nmSQ8vrvXqn3p1yUZVrRADG7UJeQceFZJhuigs3UZPjE3PKPrYVufJ08qdyYpoZCcOw== X-Received: by 2002:a05:6a00:23d4:b0:77f:3ceb:92bb with SMTP id d2e1a72fcca58-793858fb3b6mr6000776b3a.8.1759960788189; Wed, 08 Oct 2025 14:59:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 51/73] target/arm: Implement GCSPOPX Date: Wed, 8 Oct 2025 14:55:51 -0700 Message-ID: <20251008215613.300150-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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, T_SPF_TEMPERROR=0.01 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: 1759961212065116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 1 + target/arm/cpregs-gcs.c | 3 +++ target/arm/tcg/translate-a64.c | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 909916b7fd..ccf45fd136 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -51,6 +51,7 @@ enum { ARM_CP_GCSPUSHM =3D 0x0008, ARM_CP_GCSPOPM =3D 0x0009, ARM_CP_GCSPUSHX =3D 0x000a, + ARM_CP_GCSPOPX =3D 0x000b, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index e6c7025d02..5b5b895a09 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -120,6 +120,9 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 4, .access =3D PL1_W, .accessfn =3D access_gcspushx, .fgt =3D FGT_NGCSE= PP, .type =3D ARM_CP_GCSPUSHX }, + { .name =3D "GCSPOPX", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 6, + .access =3D PL1_W, .type =3D ARM_CP_GCSPOPX }, }; =20 void define_gcs_cpregs(ARMCPU *cpu) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 0df1916d28..72b912a605 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2568,6 +2568,33 @@ static void gen_gcspushx(DisasContext *s) clear_pstate_bits(PSTATE_EXLOCK); } =20 +static void gen_gcspopx(DisasContext *s) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 tmp =3D tcg_temp_new_i64(); + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(GCS_IT_GCSPOPX, 3= 1)); + + /* The value at top-of-stack must be an exception token. */ + tcg_gen_qemu_ld_i64(tmp, gcspr, mmuidx, mop); + tcg_gen_brcondi_i64(TCG_COND_NE, tmp, 0b1001, fail_label); + + /* + * The other three values in the exception return record + * are ignored, but are loaded anyway to raise faults. + */ + tcg_gen_addi_i64(addr, gcspr, 8); + tcg_gen_qemu_ld_i64(tmp, addr, mmuidx, mop); + tcg_gen_addi_i64(addr, addr, 8); + tcg_gen_qemu_ld_i64(tmp, addr, mmuidx, mop); + tcg_gen_addi_i64(addr, addr, 8); + tcg_gen_qemu_ld_i64(tmp, addr, mmuidx, mop); + tcg_gen_addi_i64(gcspr, addr, 8); +} + /* * Look up @key, returning the cpreg, which must exist. * Additionally, the new cpreg must also be accessible. @@ -2893,6 +2920,14 @@ static void handle_sys(DisasContext *s, bool isread, gen_gcspushx(s); } return; + case ARM_CP_GCSPOPX: + /* Choose the CONSTRAINED UNPREDICTABLE for UNDEF. */ + if (rt !=3D 31) { + unallocated_encoding(s); + } else if (s->gcs_en) { + gen_gcspopx(s); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961332; cv=none; d=zohomail.com; s=zohoarc; b=KPEMS8HWcoKzYE7ijsNVW96LfT9gAbAAif3hu36egXsHmFGm5vKFx8FmLXU1PJ5JwprF90U1x52CXKIOEdLlIEtJtTcL6vcXlTnjuH9csh6ATQdHh9jOyq2KDcQAFJkiKzo7PzOPBPvP0ToqUTS8nr/BeaL7QdrL+NN/Fb6JUx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961332; h=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=l99ksAJYf1hlHp85ERW0bOXWhCZwYtVl85Rk+LJ4JGI=; b=QCIEsu/3qgCoAVz1yE5okpOK3dTT/2SXAn9+ltt9vzoSt9W7Z/EEAO/+Ipkm8v/4nnbLMaTsIOsYM/Pv88JC1NWW4+0sHxhgV/3E3IJxWJdyzs89hBWPLzofwLWznS6OAH6v7yLBjz6YlwnOhuUB83mP1+gl9O6CDWTkRuRycV0= 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 1759961332039794.3980154971683; Wed, 8 Oct 2025 15:08:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cD3-00013c-5H; Wed, 08 Oct 2025 18:00:33 -0400 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 1v6cCy-0000p6-3z for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:28 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCR-0007O0-72 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:26 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-78125ed4052so366897b3a.0 for ; Wed, 08 Oct 2025 14:59:52 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960789; x=1760565589; 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=l99ksAJYf1hlHp85ERW0bOXWhCZwYtVl85Rk+LJ4JGI=; b=D0xM0v7Md7lnmmlhZzcfMxIPMxtdjla4lj2Dpd5yx8Cxk9UQwlPnJWMYwoKq87klNy /u4LpLQrDZDBWMrLsIJ+HW1o4qN8/0YdodV6XnSnyk4Gr8lkEb28Ndf8xMNz6xzHQanZ Q1elaTtXBU6GUbEomveryiwozfm6b6kDNP4oZtv49tuYgik1MxKK2V+PkmviAFj6ntWE 0MgyIdQ5uw7r4iE0eWoUzBBH5JD2hbTmQHrxBxWhQzjcsRkJA2j9FMiULED5QW8SQSvJ R61e50PqB3Z3RRzdUuKRdjaSRrZAkR4ZwaTvR6Y0RPlWTQyZ0NxKGuCCQ6PyKwpq/sQN 0Rcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960789; x=1760565589; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l99ksAJYf1hlHp85ERW0bOXWhCZwYtVl85Rk+LJ4JGI=; b=ez1py05DhkiRNF6JKP0k8xh5KVZl2PCiRfmOucT9yMsu6mJ1thu6sYQjHJtcm2hdUo IPj8daKjuuChHmdA3t/52sJbR8TXjpd0QZuFOYM3y8qm6A00m3F8lVb/xKgrtQy+OoZy xcXb3K859ljrNcsV0kPKoEjCE/Y4FE6Ec3mea43SIWFZh0lFMgggqZ61n8dbmibEw1ow 3+oLAyuMtPT1sSPl/8y60O77h3zsNLZbIlUHD7tMSlnwYM31Hf+t09a4roHRpVS5EQd0 weqfeRnzbDbXOf0PAv3ML8BlNId+uwPMLxYe+UzdkN9kwz/dNR8T5eVw8fMMDjsgDh24 Ccow== X-Gm-Message-State: AOJu0YzFNP4LtpNB9JJ7mw2+o4ztCkDutjPZaN6bQug9I+KGmhhXO4v/ sYyBDH7muZsZIiHtxQo8bewgiEuXg4m26TUtI6nU5YVUv9YnQPwbDJqPw9nw5RtOgyAESsOHfWA 1QzvJifM= X-Gm-Gg: ASbGncuaX/K+Cc/UgjYJ/QN1QVK8w66fz2SFlz5XnKq9/hMMLV8Izt2hUiiFBK74kN4 NUfQDnJU6EnLbYLT6ymR969zMYJXKxfU4vDue2cZj3arbxYdL4PCsgn2DDCWCeMFeTmzjU8qhMO 16TUb36Bl8yx+XcGoDBlFbeMD0CsesEfU1392pnDxQmmaAtvrZFg/HVcUbgfY8LaFxTAcosBZOf 9LfF74U2VhpaizkmyT7S/OKxWlCPt3OIS4X35XO+CtamuUJ+UxBCQjHrYSoii9s8GooXlBM+XDq mmzjBHFlq+ICA+c0jsXvvpBFwcD5BR642qyalOD2XXhMH0XffckBcPZijaW5qFt5ER6NwMiJYnH PIdjHakl0gbhoxygFAofX5fCwR4CjO7vXRkI2BjO/Mu2rjaN2I12jjp/r X-Google-Smtp-Source: AGHT+IGA0HT3MranXs6/jCBxlwh+eTQlHnZT9ZtK6YRWP0ULYUS22tAJOkDuyPNASmQ4jSBucOjxzQ== X-Received: by 2002:a05:6a20:6a1d:b0:2ff:1132:8c39 with SMTP id adf61e73a8af0-32da80da6c9mr6219022637.4.1759960788793; Wed, 08 Oct 2025 14:59:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 52/73] target/arm: Implement GCSPOPCX Date: Wed, 8 Oct 2025 14:55:52 -0700 Message-ID: <20251008215613.300150-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, T_SPF_HELO_TEMPERROR=0.01, T_SPF_TEMPERROR=0.01 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: 1759961339907116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 1 + target/arm/cpregs-gcs.c | 17 +++++++++++ target/arm/tcg/translate-a64.c | 56 ++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index ccf45fd136..6d9145109f 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -52,6 +52,7 @@ enum { ARM_CP_GCSPOPM =3D 0x0009, ARM_CP_GCSPUSHX =3D 0x000a, ARM_CP_GCSPOPX =3D 0x000b, + ARM_CP_GCSPOPCX =3D 0x000c, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index 5b5b895a09..3795bf7f36 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -66,6 +66,19 @@ static CPAccessResult access_gcspushx(CPUARMState *env, = const ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult access_gcspopcx(CPUARMState *env, const ARMCPRegInfo= *ri, + bool isread) +{ + /* Trap if lock not taken, and enabled. */ + if (env->pstate & PSTATE_EXLOCK) { + int el =3D arm_current_el(env); + if (env->cp15.gcscr_el[el] & GCSCR_EXLOCKEN) { + return CP_ACCESS_EXLOCK; + } + } + return CP_ACCESS_OK; +} + static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSCRE0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 5, .opc2 =3D 2, @@ -120,6 +133,10 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 4, .access =3D PL1_W, .accessfn =3D access_gcspushx, .fgt =3D FGT_NGCSE= PP, .type =3D ARM_CP_GCSPUSHX }, + { .name =3D "GCSPOPCX", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 5, + .access =3D PL1_W, .accessfn =3D access_gcspopcx, .fgt =3D FGT_NGCSE= PP, + .type =3D ARM_CP_GCSPOPCX }, { .name =3D "GCSPOPX", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 6, .access =3D PL1_W, .type =3D ARM_CP_GCSPOPX }, diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 72b912a605..bb8ffba586 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2568,6 +2568,54 @@ static void gen_gcspushx(DisasContext *s) clear_pstate_bits(PSTATE_EXLOCK); } =20 +static void gen_gcspopcx(DisasContext *s) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int spsr_idx =3D aarch64_banked_spsr_index(s->current_el); + int spsr_off =3D offsetof(CPUARMState, banked_spsr[spsr_idx]); + int elr_off =3D offsetof(CPUARMState, elr_el[s->current_el]); + int gcscr_off =3D offsetof(CPUARMState, cp15.gcscr_el[s->current_el]); + int pstate_off =3D offsetof(CPUARMState, pstate); + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 tmp1 =3D tcg_temp_new_i64(); + TCGv_i64 tmp2 =3D tcg_temp_new_i64(); + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(GCS_IT_GCSPOPCX, = 31)); + + /* The value at top-of-stack must be an exception token. */ + tcg_gen_qemu_ld_i64(tmp1, gcspr, mmuidx, mop); + tcg_gen_brcondi_i64(TCG_COND_NE, tmp1, 0b1001, fail_label); + + /* Validate in turn, ELR ... */ + tcg_gen_addi_i64(addr, gcspr, 8); + tcg_gen_qemu_ld_i64(tmp1, addr, mmuidx, mop); + tcg_gen_ld_i64(tmp2, tcg_env, elr_off); + tcg_gen_brcond_i64(TCG_COND_NE, tmp1, tmp2, fail_label); + + /* ... SPSR ... */ + tcg_gen_addi_i64(addr, addr, 8); + tcg_gen_qemu_ld_i64(tmp1, addr, mmuidx, mop); + tcg_gen_ld_i64(tmp2, tcg_env, spsr_off); + tcg_gen_brcond_i64(TCG_COND_NE, tmp1, tmp2, fail_label); + + /* ... and LR. */ + tcg_gen_addi_i64(addr, addr, 8); + tcg_gen_qemu_ld_i64(tmp1, addr, mmuidx, mop); + tcg_gen_brcond_i64(TCG_COND_NE, tmp1, cpu_reg(s, 30), fail_label); + + /* Writeback stack pointer after pop. */ + tcg_gen_addi_i64(gcspr, addr, 8); + + /* PSTATE.EXLOCK =3D GetCurrentEXLOCKEN(). */ + tcg_gen_ld_i64(tmp1, tcg_env, gcscr_off); + tcg_gen_ld_i64(tmp2, tcg_env, pstate_off); + tcg_gen_shri_i64(tmp1, tmp1, ctz64(GCSCR_EXLOCKEN)); + tcg_gen_deposit_i64(tmp2, tmp2, tmp1, ctz64(PSTATE_EXLOCK), 1); + tcg_gen_st_i64(tmp2, tcg_env, pstate_off); +} + static void gen_gcspopx(DisasContext *s) { TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; @@ -2920,6 +2968,14 @@ static void handle_sys(DisasContext *s, bool isread, gen_gcspushx(s); } return; + case ARM_CP_GCSPOPCX: + /* Choose the CONSTRAINED UNPREDICTABLE for UNDEF. */ + if (rt !=3D 31) { + unallocated_encoding(s); + } else if (s->gcs_en) { + gen_gcspopcx(s); + } + return; case ARM_CP_GCSPOPX: /* Choose the CONSTRAINED UNPREDICTABLE for UNDEF. */ if (rt !=3D 31) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961289; cv=none; d=zohomail.com; s=zohoarc; b=MxTAUTrAF3I6/Lmztrk0E8ypKOhepvVz27KkpuGej2LtVXHNMXwGGACf8CupyhALchikSiUuivSyhUMbYgF3aJQmlIrGHbVyr9c88/AxovZx2RqoApBCWgP1mR31w7rMSzp8sUkmd/2wyC24uqZ+j5iSdhtQUV85HjkOua/I/zg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961289; h=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=NDFNMEH1J1ZxzHPI3obv5zb1hQFKVpn2hQk3PxQwc3A=; b=gX/IuwUBo2owTs5dlAcgDeWB6tR7zYBf4mLopMlYuboLdZGQfBx4hrM8njiw1unezrMwiDrUvJBqPjCVayubiHWaCm5IJz8i0/FTJpr1ZXTqQHpiMuftVUNdGj+bmnKU04tdhLo3zgbGVWOC9AZ1/z7/xPL8585ZBrwgBAEALFY= 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 1759961289483769.8732209523439; Wed, 8 Oct 2025 15:08:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cDz-0001lx-RL; Wed, 08 Oct 2025 18:01:35 -0400 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 1v6cD7-0001AD-5X for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:38 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCT-0007OB-4x for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:36 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-781ea2cee3fso308737b3a.0 for ; Wed, 08 Oct 2025 14:59:54 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960789; x=1760565589; 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=NDFNMEH1J1ZxzHPI3obv5zb1hQFKVpn2hQk3PxQwc3A=; b=yCo7zLccpUJ9u+ZUFM/1Am7K+IJM5qn+5dDlEi29hXzPo8Rukgl98swtVvIktfUeFM U5vQIdGpIFocTRUeXGuI2qklW49CWOoVbTjj4zDqaaU1r0dkYF4KM9Tx7oRogFBMTBtg JmnjRaLkHx28nfIytZZreQkNbfRRm5Jgk6P0G6529cM5OPwJlj+Ly5Egs7RbBMv5ECa+ ZY03R50Ce+4pTMgpZ8zP2mCVAXB1E6ZeDi0LUktgxfKpPu2CZ6ab93/sB9EJCc87a0wv zK0A5v7WK6uyHVC6XsBATpkdJ9rDxTTEUB3LvdJDRTZbEL51SsnX5faC8lKvZp9aA3IE Bw4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960789; x=1760565589; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NDFNMEH1J1ZxzHPI3obv5zb1hQFKVpn2hQk3PxQwc3A=; b=v4VYQgCibokm7FbB9BQ+cdtD7iu5oCc7qzSH3QuYs0BoLJhqgGvqGObb9ggjE4+Njy n6pbFjhhErRDNa6gotxpLOhWkv/2s+oOz2TeX5QrD4cEZ+Hh7vtSr17N5H7Id7nPs9Jp I7akanJG7Wb5kwhK24JJvXHfniptLKGzFGHai/u98Oqqd37VGKJ3r7AiN0UcPFeignGL jENIR+PwQw7f3OyoNb5hbXCMBXrBLNDDE0DY8DBwLs+NGktCM1rDhQOG/QpsSp7IgxOh zbbUYyhGWV4HlS89GAZctFtDE7JbA3V0QMJtmHXXXV6MWfIAKo0M6VEHAKbJ8x6+zUnH Eh7Q== X-Gm-Message-State: AOJu0Ywe5yt+iMTX7F41LA946s49twIxQgSP8D9SrMzyczo+oEg+z1Qr os1AbbUVZg37NttjUZkL145A20SF+lwAYFVs9UKXsZtH4vp51oChWg4ez5uei9ijYF480nwiKoz SYpuz/B8= X-Gm-Gg: ASbGnctycscFbuZ52Ux/9kpEEcsWf5BqtLRd7zQTEDKicvmgwkMBoV/XTsxjOQnd1wU hS0zapR24FHG1ScW47gDZ22gJ27lIPMjRuBxodzyYdKpwgKjb6WfN08zwkdJlUoPlXVRNAeX/Fo EsAk3Km2+K64iQBWBc9Ue1rS/oDoxPsevuo1/U91NqOPMDsVg5nxjdieZzPK4uH6T2ZQZeKpRt0 gbmStSonkw93331g1iMQqCJK1t0uPKWN4Qw7b/PJBcAXEjltoaWTWcvRWl7Upn2obTJtxDGmm2c evZ470a7oXj5NcqhdWd448iq7dMrDsYWPC9aywUqXqAZdGXKXuxO1qYllUHEM8y3u8MfVu6sokW /sfYnCHXcZDLRNHZhMvxqlblZSOYDrLT13bJaabCEGPtqmtxutTAKEahhuiYroSDeYmk= X-Google-Smtp-Source: AGHT+IHz7GuhxZTwbKprMWmdPJXpgA+F+YT6qRwPuPsQWgtfVuM3qPxLMXg+qvVL5nYqB7MdU9rtZA== X-Received: by 2002:a05:6a00:6518:b0:784:5d3a:5f63 with SMTP id d2e1a72fcca58-79385327962mr4822220b3a.2.1759960789353; Wed, 08 Oct 2025 14:59:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 53/73] target/arm: Implement GCSSS1 Date: Wed, 8 Oct 2025 14:55:53 -0700 Message-ID: <20251008215613.300150-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=no 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: 1759961294196116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 1 + target/arm/cpregs-gcs.c | 3 +++ target/arm/tcg/translate-a64.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 6d9145109f..e7e7050880 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -53,6 +53,7 @@ enum { ARM_CP_GCSPUSHX =3D 0x000a, ARM_CP_GCSPOPX =3D 0x000b, ARM_CP_GCSPOPCX =3D 0x000c, + ARM_CP_GCSSS1 =3D 0x000d, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index 3795bf7f36..eda5c498d7 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -129,6 +129,9 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSPOPM", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 1, .access =3D PL0_R, .type =3D ARM_CP_GCSPOPM }, + { .name =3D "GCSSS1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 2, + .access =3D PL0_W, .type =3D ARM_CP_GCSSS1 }, { .name =3D "GCSPUSHX", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 4, .access =3D PL1_W, .accessfn =3D access_gcspushx, .fgt =3D FGT_NGCSE= PP, diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index bb8ffba586..82ddf4e1dc 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2643,6 +2643,31 @@ static void gen_gcspopx(DisasContext *s) tcg_gen_addi_i64(gcspr, addr, 8); } =20 +static void gen_gcsss1(DisasContext *s, int rt) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 inptr =3D cpu_reg(s, rt); + TCGv_i64 cmp =3D tcg_temp_new_i64(); + TCGv_i64 new =3D tcg_temp_new_i64(); + TCGv_i64 old =3D tcg_temp_new_i64(); + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(GCS_IT_GCSSS1, rt= )); + + /* Compute the valid cap entry that the new stack must have. */ + tcg_gen_deposit_i64(cmp, inptr, tcg_constant_i64(1), 0, 12); + /* Compute the in-progress cap entry for the old stack. */ + tcg_gen_deposit_i64(new, gcspr, tcg_constant_i64(5), 0, 3); + + /* Swap the valid cap the with the in-progress cap. */ + tcg_gen_atomic_cmpxchg_i64(old, inptr, cmp, new, mmuidx, mop); + tcg_gen_brcond_i64(TCG_COND_NE, old, cmp, fail_label); + + /* The new stack had a valid cap: change gcspr. */ + tcg_gen_andi_i64(gcspr, inptr, ~7); +} + /* * Look up @key, returning the cpreg, which must exist. * Additionally, the new cpreg must also be accessible. @@ -2984,6 +3009,11 @@ static void handle_sys(DisasContext *s, bool isread, gen_gcspopx(s); } return; + case ARM_CP_GCSSS1: + if (s->gcs_en) { + gen_gcsss1(s, rt); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961683; cv=none; d=zohomail.com; s=zohoarc; b=ABMnbcVjvHJYoNaBeVfYqVXX7BsFQcecQbo0Ec04U7mrE3Of4fQUTEfoSTdNbZ+QLj3YO/bQrUjaT+bI96YHi8IxQ2R4kqBrz08gqDIQeDieSXtbuZ464a5ZJUm5a9fOQ+OUyYNxOMjhy8KosPRIUyeTCw0vOMCyvjjX3MUtqo0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961683; h=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=drSty9Fd0kDDShwUBu49hZpX2v+dbl9T54JaBEZWELs=; b=Er9ZjsKNa3c6tYbBCEomJLmFC5kPHRUTbeGDV4G7m6qKSV2Te9GgUPClVyeSPYxHEkJDzJ0WHwLLQLv3PfX0ueZM/rdps0VIOgqtlq2oBwn3iyMyrC+JzOOnLex7Sqeaii1JTcdOMgSUNLhDWFBd2dekT9vsok3dpN9fmc+CEKA= 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 1759961683632997.6024655686068; Wed, 8 Oct 2025 15:14:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cCy-0000lP-I5; Wed, 08 Oct 2025 18:00:28 -0400 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 1v6cCq-0000Z3-C4 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:20 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCQ-0007O4-5t for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:20 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-791c287c10dso285238b3a.1 for ; Wed, 08 Oct 2025 14:59:53 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960790; x=1760565590; 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=drSty9Fd0kDDShwUBu49hZpX2v+dbl9T54JaBEZWELs=; b=N3gH4dP4EADrETg9FOmNa2l6B5ako75mK6zgGu1xmTJN4IboJTlwtXJvcaZWfPXD+G ZRjVRwlHWupDGPNhtXvEqXd4CklLeMHv3/BCITJjqAvC5amAlp827Fif4cM0/1SQ/km5 ITDuimjZS41yQswAnhvlOREc1NHdoDKwvc6eazhmTJ4+G2/brlZZ9khAhZR/wDWoZch5 Fj1qvksd/dtK16FRQDxMBK9T3jPCCXpgb9JO1GFutvDeILjUkUYrVlK8J9tyqnvOU3xz KNmrvgM1Z/x4+QCUSvf4SI1Sepzpt4r6cUxbcIjW7GR47/T4RCrW3/93XiJlECp2Dxbu l3UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960790; x=1760565590; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=drSty9Fd0kDDShwUBu49hZpX2v+dbl9T54JaBEZWELs=; b=oQCRSxXINH0bj8qEZ6Sgn1tq5OIGNxw0Ar4GpZgtDXsCHaDEePPp4/tipk9gnN8Lds l/8W3Zz1K79GSyWClHxCjV5KmvbKAAXx8iMptlCiCctLgEWlZALbuMe8lR+RoTtWlgtJ AxM16XLzqCUq95Mmt578TG4FzkE2p6Do5elWEMqTa4k//rLgRSclPDcqSMByngdkyBc4 Y2UYxcDRVmrseiLR4Gs4PAOl/r8Gf7iCariDQOF3JUWcpx4QMzH5GTiyLxMnOuT12ySQ XThcsLjfCkBdCI/GoBe6iLPpfes489wUNdqMRVyjPyUYj90wiI6VHHxQ0K6cWT3K9kC5 7Bpw== X-Gm-Message-State: AOJu0YydgthK+KQt8luA/mQuuscSJ5BtgHRjIURTy9dCl4QVFMNmeBZs 890OqFVHaEg9p0w7LCPB6U3UO5jCQYI8sxm6GolUm5YPeqKrmBCWO1xFtN/JUpxW8DIjBnu8R5t feA1b/NE= X-Gm-Gg: ASbGnct44GqvAC7gyZWY5p0iE8HouZm3lyGHglHu0iYcsNVzOvYVMzMpwqv56kFwxFU aooybizt9wdK/rwaywHU8+dFzBA+NX/5DxAif5YfqPwaS5yMJbQJ6wpAJ4zKpmBBMwd4G7shjgH 0SyvBvUCbtRhqHUobT+WIo0z8f4upSRiae0L+Ic1GNr75n5SI4Xb/RR0tW7con6+lSx+cgIR/ML xvoQOTiBbr9PBTRFJWdkauJf+OFle1P1oxw21foVYgd4fGshzJJEO+VnLEkvE8zcPbQiFqQWHln /z3k2LkgqJcCCE1mRb0EOUtqow/BFIrg7FSEHpkWIGA7FKzh8p2IQP0hroad1vbEUVzDcuB67Nx +hG2a2QNJ8c2GkNvO+PSNFPLjzFieaE8gErrDy66fyMEDULLWyzFA+fjP X-Google-Smtp-Source: AGHT+IGAzCHjg1+/AMMxaRVEqx+e4PH270vFaxdjSh3A+c4tEv7/U3lB4gaI0BTbMuIDVApWw0pXCQ== X-Received: by 2002:a05:6a00:886:b0:77f:449f:66b0 with SMTP id d2e1a72fcca58-793883dad54mr6441453b3a.32.1759960789970; Wed, 08 Oct 2025 14:59:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 54/73] target/arm: Implement GCSSS2 Date: Wed, 8 Oct 2025 14:55:54 -0700 Message-ID: <20251008215613.300150-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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, T_SPF_TEMPERROR=0.01 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: 1759961687766116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 1 + target/arm/cpregs-gcs.c | 3 +++ target/arm/tcg/translate-a64.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index e7e7050880..732c07506d 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -54,6 +54,7 @@ enum { ARM_CP_GCSPOPX =3D 0x000b, ARM_CP_GCSPOPCX =3D 0x000c, ARM_CP_GCSSS1 =3D 0x000d, + ARM_CP_GCSSS2 =3D 0x000e, =20 /* Flag: reads produce resetvalue; writes ignored. */ ARM_CP_CONST =3D 1 << 4, diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index eda5c498d7..1ed52a211a 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -132,6 +132,9 @@ static const ARMCPRegInfo gcs_reginfo[] =3D { { .name =3D "GCSSS1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 2, .access =3D PL0_W, .type =3D ARM_CP_GCSSS1 }, + { .name =3D "GCSSS2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 3, .crn =3D 7, .crm =3D 7, .opc2 =3D 3, + .access =3D PL0_R, .type =3D ARM_CP_GCSSS2 }, { .name =3D "GCSPUSHX", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 7, .opc2 =3D 4, .access =3D PL1_W, .accessfn =3D access_gcspushx, .fgt =3D FGT_NGCSE= PP, diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 82ddf4e1dc..d58257be40 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2668,6 +2668,35 @@ static void gen_gcsss1(DisasContext *s, int rt) tcg_gen_andi_i64(gcspr, inptr, ~7); } =20 +static void gen_gcsss2(DisasContext *s, int rt) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 outptr =3D tcg_temp_new_i64(); + TCGv_i64 tmp =3D tcg_temp_new_i64(); + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(GCS_IT_GCSSS2, rt= )); + + /* Validate that the new stack has an in-progress cap. */ + tcg_gen_qemu_ld_i64(outptr, gcspr, mmuidx, mop); + tcg_gen_andi_i64(tmp, outptr, 7); + tcg_gen_brcondi_i64(TCG_COND_NE, tmp, 5, fail_label); + + /* Push a valid cap to the old stack. */ + tcg_gen_andi_i64(outptr, outptr, ~7); + tcg_gen_addi_i64(outptr, outptr, -8); + tcg_gen_deposit_i64(tmp, outptr, tcg_constant_i64(1), 0, 12); + tcg_gen_qemu_st_i64(tmp, outptr, mmuidx, mop); + tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL); + + /* Pop the in-progress cap from the new stack. */ + tcg_gen_addi_i64(gcspr, gcspr, 8); + + /* Return a pointer to the old stack cap. */ + tcg_gen_mov_i64(cpu_reg(s, rt), outptr); +} + /* * Look up @key, returning the cpreg, which must exist. * Additionally, the new cpreg must also be accessible. @@ -3014,6 +3043,11 @@ static void handle_sys(DisasContext *s, bool isread, gen_gcsss1(s, rt); } return; + case ARM_CP_GCSSS2: + if (s->gcs_en) { + gen_gcsss2(s, rt); + } + return; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961591; cv=none; d=zohomail.com; s=zohoarc; b=HwLaThtddcXH0KOSEC1lNBA5SGpnt/yhYrYmvCdMH/A52puOtdkXeGq3qKTT3RTbbtxnx/GEpvgjLvafUCXZNuqTCS1tul+e+QA9E/Y17Sg/BnT/orgy/Ulktgd/AKZlLPq11r98nsjp9CPK+YFzg4Ci3+bPqvT7sS4rcGLWJqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961591; h=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=gtTcosX1PI6oFmrETJfm7j20wRw4ZF0RoKREZSs+mx8=; b=DjVQ+eE9ycl2bSlW54cgB2NTa3N4AjVmxMXxFYVM8mcbvHCPDWviahi0vIxvb84nbQki0k/OuAR3zqpL38/fppq1py0fOKJ2BF8MOepqQ46X3qRZNSOG00R2J61aII8e+AKYC6SitB2WlUmqdKo4br8TcnYChkQHA1JI8R69D8o= 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 1759961591954253.67075212461793; Wed, 8 Oct 2025 15:13:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cE5-0001pE-6K; Wed, 08 Oct 2025 18:01:41 -0400 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 1v6cCy-0000p7-F2 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:28 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCQ-0007OI-84 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:28 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-781010ff051so223728b3a.0 for ; Wed, 08 Oct 2025 14:59:53 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960791; x=1760565591; 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=gtTcosX1PI6oFmrETJfm7j20wRw4ZF0RoKREZSs+mx8=; b=tFpazfECAC3WZwU/kkGyFlPTqEVh0kBhmWbhcTuKHNq9enavoTiHXsEA6MN5OddoFJ gSm+JgOC1UVVLLfJKUv38PJhwo2UaOZ0JUz0jWyBcWc0CeGr1MvnsrD1/EgX1w6dlcI+ yFnvOZDGLXVW4m81lDiQtj2/y9UbtbXFaaM7sFYGcuHzHL0zUlcteJysWn6qRcsc0EUB W29lmR1G5rqtXHgOqmgATREg2N3dftXVnTF++IMn7DqqakqyEvOQ7lvojo6aOXnGKmNI 6DiJquYPHG2BmXOakv2avgfZYOPRtfKTJwiLdbk9NJpNCWgLcFnNXt6EDjJ/0PQJlNQt jl6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960791; x=1760565591; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gtTcosX1PI6oFmrETJfm7j20wRw4ZF0RoKREZSs+mx8=; b=hJP3FwJe3hmpBYoNIirB4HnXxs2bNOYy9yWerfziR1aPkyGzNb0sh1D1XVkwv/6iuA hfH+2sSIOF4DbJ4gvgW6BcrmjCPkLtY/MVwORMD7UqHzfJrDAnvE/68pQwgz2hsDvhG7 XUAX7GaehyhN/5C3FDAmroI7QNuv2rGPWZFHPXsE7i3qPeS7LWvyT9teH6PFkzSB36WU l51bz3SoE4tRK1p/WHL2PoMfwQG/O61vgll0Nk4oiZwOjFzepcwTwJNSAlkw/KlUDuP+ iyingUI1q7RR3V81ukVlSiXvLbxrytqnRhvi8Qz0KUzna9IsWypVD232vlcg+sK2OUzv IK3Q== X-Gm-Message-State: AOJu0Yyj/qd9i5u6id85ZmDNJfYh+4A5Ioxl8/J/oafrsi3aVBKAUpHG Mjd+d9MHbzuasNWipXnJf9Fhvp4PLUY0bBopE6Va6HqMM7f0mbo0vvKteBb2D9cTdHv+8k06jkB Sy3VH3ZM= X-Gm-Gg: ASbGnctIBF/DbmJE4zJWsOFcYZUWhB//gQxBI6rXv+AVV4VNCI4W7li1vmVEVYhEScb NRj69JVubElOz4fYY68FtPIQTEMXr1fRsQttMvOLHaIwM8V3Tqiq5jk47vPaH8TvPg0SitbzLE5 nbnhx3vrXFg2FaaQphKcKgOBcrBzrXGtzh2iXVyYWE9A1fj6m3GNKvP0IDdTXr4+sJSdIquy6Gu 99m01tPHKTrCtzaL6GkvITw8n/lVzDtOnSSsmLPdMvxqNx72BmaQZXz8LNT4Z7mT5M2nyKHgAfF ilVS2PiB4qQdo43/npc39BsaWjrmOnq8y0mPH+XS+sU+sL549R47RzQx+Q/82ORnr6zuICAR1Gv /lbNKzQyiy51Fzs+STnEuucb2jdlbW2Fm5LemN7eEoLENCyDbYXXbPxIf X-Google-Smtp-Source: AGHT+IEI4zw2x5A3P/GyHqWIBLtD6hN8Kl0LWetIEPTE0Yk9AndjnbS+VKUqsZvXaRGr7MLdpdIQ5g== X-Received: by 2002:a05:6a00:9a4:b0:77f:efd:829b with SMTP id d2e1a72fcca58-7938783414emr5393857b3a.22.1759960790627; Wed, 08 Oct 2025 14:59:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 55/73] target/arm: Add gcs record for BL Date: Wed, 8 Oct 2025 14:55:55 -0700 Message-ID: <20251008215613.300150-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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: 1759961593025154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index d58257be40..9a564339fa 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1678,7 +1678,14 @@ static bool trans_B(DisasContext *s, arg_i *a) =20 static bool trans_BL(DisasContext *s, arg_i *a) { - gen_pc_plus_diff(s, cpu_reg(s, 30), curr_insn_len(s)); + TCGv_i64 link =3D tcg_temp_new_i64(); + + gen_pc_plus_diff(s, link, 4); + if (s->gcs_en) { + gen_add_gcs_record(s, link); + } + tcg_gen_mov_i64(cpu_reg(s, 30), link); + reset_btype(s); gen_goto_tb(s, 0, a->imm); return true; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961636; cv=none; d=zohomail.com; s=zohoarc; b=MniUQB2A151JRSl8kr+qgK3ATSMF/ozo17TffgREVxu86Az9VPPjJf+f+f9vK7SrnhKkC7XSfY4UDvuRck8Ice5OVNUy0Dmi3Zqivz8HAfolI+ylF10beCQA0rhOoGXN52rh15XPmAETuynCFlweqZqjSJ1gfYu5MdimvfvWCk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961636; h=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=G43r76XjcTrZ8ZUDbYbNqED2qlMoNKLkIEDOEdGlVs0=; b=MrT/fY5ast5LOTLuLbSXwPK3REKaPujNpcJe40QfWfr1J7WSWg3QVpY6h/RU6O8fr41+g1QH0U3tturxrEnTt9Y5aX17DIOSCsinGpnzFWe7QfvOJeQj2a8q5ZEQHjCWWHjf8amE7BQqE6hXJ2UFbCH4OCr2/cBSA0aBUKrkqv8= 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 1759961636345258.05927656585595; Wed, 8 Oct 2025 15:13:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cDo-0001SD-Cn; Wed, 08 Oct 2025 18:01:26 -0400 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 1v6cD7-0001Bn-RZ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:38 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0: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 1v6cCV-0007Oh-JL for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:37 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-78115430134so215778b3a.1 for ; Wed, 08 Oct 2025 14:59:57 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960791; x=1760565591; 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=G43r76XjcTrZ8ZUDbYbNqED2qlMoNKLkIEDOEdGlVs0=; b=mAXFkfEoelfwuQbHhz21pvarjvvYD9GUHDCoKrCy0WdwFSp1A97Yt8at8Lm0LU7DnP W1lGGDcWqWTuc9MOdsGxBGFgMGDLgXre+tAvSuZAck4LqnJgTlII+70tPFFikqzp1T7m tObg/sUo7iRNofIIW8sg11nW/iCrS6SVYXVcBMhAa+Jpa3UoY48OMFi+UBSeeYoRELMm ht2I37NIElcesV6iN7WIsH88vzflCJA2x2JG9MEbPVjoX4jEzdzugIxv+BEm7drW5rga /n1GIPnhLCgLiHd+jWcJ8t6Q8ZTPk7D0fDLqqbrcs621icHfDdwAm74mzSCzp5+5hU1r aprQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960791; x=1760565591; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G43r76XjcTrZ8ZUDbYbNqED2qlMoNKLkIEDOEdGlVs0=; b=BdPzK4CASqE1lEP+rXyk5nHuJjxTk3/mLiI8HkedXkdj0L4N2I4zDCZu+LjoZVyWIL SMQz3hM+EVJKREiUwqscmZt8QdLh70CSa4ju5woBly4GuqYqWJvoVZ/E5nimhDvGeLwK vytluP1ac3gMFUZOvecDusqJBTDav89hFmhJqQ580XqvWl6DxA9ddOsRtyHxMoGlMyu9 yJNlGM1qKBMScXxWwSwC8r13ovYnFWcg4hihh0c51e070GT0Pmbt1zvrQENUtShRlT6d CT/T0XNFFmP3y+3tZ30pHcYWYPWQ9JB5K2eAI/JgZXQxwj7qxNkirdUk2BK/weM2qIRQ 0wCw== X-Gm-Message-State: AOJu0YzRANtS41eywQzrzxBsIpcsObg2zkKXm/EAfcDSwgv7apCZV2GA c38GQd9rBU2YtnWC4fa7r8r558KhzL22RqL6OYjrC5rFuvnQYHojW6G83kOnsrohOqzEd43ScrE eObDzHwI= X-Gm-Gg: ASbGncsN+RYK+bK+XXFfGDOLYpsYzbkVfHwHWVIm9JKcXf6fH5oxDYzM64pd8EMe/Nb 7NUubK6ui+0YVZUxgR51TTXLKTeX4qWBty2kfxefRDarF3HAHopQ4aId8GV0cdxaQapMHd2SLpB QgcWNSSiZJGS2CLrZwd7V9TxLGo9/PIy7p2bIkFtNSeiEBLRacQVNi0XE82MJvRAAV8xTv9IccU 5Bvw2QmDcRJA2zEEhV0SdEebzhkBHTcL24B29EZ4hFWzeGB8GnqA0MfdP/8+Q6UrfzSI+3XARon aPBOJ8Wv4mNpC5AQMLWs0elLNyYdiL5KAy/5W50bHLDKM6IbU1eba6ULDjU46haeBFytMsw25IX N0JC5LP1sJFkBXJpxjG1GKYvk3JvBxI3Xk6mVrh6bVeQAMQt8v3Jpnzuo X-Google-Smtp-Source: AGHT+IGRK5MWEBopV4BLlRi159BedB0VPExsDn7kscupooFImhcLuocF67oYIfq2FeMr16DwMb/j8w== X-Received: by 2002:a05:6a20:72a2:b0:32b:6e33:7cf8 with SMTP id adf61e73a8af0-32da83e0614mr6924503637.42.1759960791256; Wed, 08 Oct 2025 14:59:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 56/73] target/arm: Add gcs record for BLR Date: Wed, 8 Oct 2025 14:55:56 -0700 Message-ID: <20251008215613.300150-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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, T_SPF_TEMPERROR=0.01 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: 1759961641088116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 9a564339fa..fcfa4223f5 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1782,15 +1782,15 @@ static bool trans_BR(DisasContext *s, arg_r *a) =20 static bool trans_BLR(DisasContext *s, arg_r *a) { - TCGv_i64 dst =3D cpu_reg(s, a->rn); - TCGv_i64 lr =3D cpu_reg(s, 30); - if (dst =3D=3D lr) { - TCGv_i64 tmp =3D tcg_temp_new_i64(); - tcg_gen_mov_i64(tmp, dst); - dst =3D tmp; + TCGv_i64 link =3D tcg_temp_new_i64(); + + gen_pc_plus_diff(s, link, 4); + if (s->gcs_en) { + gen_add_gcs_record(s, link); } - gen_pc_plus_diff(s, lr, curr_insn_len(s)); - gen_a64_set_pc(s, dst); + gen_a64_set_pc(s, cpu_reg(s, a->rn)); + tcg_gen_mov_i64(cpu_reg(s, 30), link); + set_btype_for_blr(s); s->base.is_jmp =3D DISAS_JUMP; return true; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961627; cv=none; d=zohomail.com; s=zohoarc; b=J18RPS+QgstjAOKhGQ/6V6Fjd4zzDsicZgQTeRQY3u5f3nJUQqd8zsEQ9D/+lw+e09J7v61ndstpdxEFpwv2vzmnuQZ9+vHiLM2Y1IV8upJVC49vp/7Rt1e19XwV9mTID8Qoqwdky5iy3jhNdhrCuQMR7qs07lkmcrVpe19LZCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961627; h=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=n7Mihnevvi2zwV4aea8YsxDOm/2e8epQtaNRT/1I7W8=; b=NPRSbjdmQpVtwhm/oNcdjpcEXNp/opn4/kJznLhNLo5MQl3PyV5YvfNcrWTgtQCkktgMCUEeTwZ1mMiBRv8ZTzJNOzBdKsBnp6if5uKjF+RoBELs67VXIzKyy4DqHj1LAO2el8l0RsCZV5yOLvINbOk4WvBTFGFhzPl10Bah6FU= 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 17599616271931002.7364001129133; Wed, 8 Oct 2025 15:13:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEq-0002PK-Vy; Wed, 08 Oct 2025 18:02:25 -0400 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 1v6cDH-0001Ks-54 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:55 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCW-0007Oe-Vm for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:46 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-78f3bfe3f69so271550b3a.2 for ; Wed, 08 Oct 2025 14:59:58 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960792; x=1760565592; 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=n7Mihnevvi2zwV4aea8YsxDOm/2e8epQtaNRT/1I7W8=; b=fqxbih3WKEFmlEU7oXLFS1LB0hI+7LPDEzroTQRemzBRcP+3vOgB/+M1grVtM9sX9k XtIAPcgrcjTDY/OKvfbc1KFpJqiYwjKO1laeYMWU/uiO8sVUP+/SI41FFQAOZzo2E3C3 o/QqKgVjT1+Zrf0rZDALGFffh3GJbl1hpkzQTFNm9GNzMAfHIdu1r//RUbj2Q7RgONLd cONaiN+zqrGNRnut5wXBb2e/ZX47ogDSlVx9sUnBIWQfcFbVQJVDcUBZhrre/VqK13XN KyHL6dUcjmMNc/7PJShScSatrkMOVVdsnTsfhfVaRD0La9cNoNQjKT/tvI/FhPd1/q+m MPZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960792; x=1760565592; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n7Mihnevvi2zwV4aea8YsxDOm/2e8epQtaNRT/1I7W8=; b=gB9nSx9oeONgZG+6lPFc7Xe3L+Q2evnXxtfFvC58R9nOEWvfKEjsbK+YpERm39fbw4 wxpSoZ0zeJLZrMZnTRoyiIX7YQDuvHVdixy/T0cjxFIoVJxKdXFGjRskTHi7h5ihZw5x 7zaNwzPNLsLI+sYvr4z3nKNpvc9VqS9UAIt60qZEI9lhFoHnt9UUhXi53EqhDeXwNoQ9 4dAuA3oNPIWdUX5jA4q4qY/T/kQSFWvtBY/tLCop0K0uZ8hmBYMfs1penPP6Oj1Cdytr Rf+tNIgLo3RsQwfsVgmqEDsrvFKPZX2belsHjPttYVG534ohG2ZO3sjuGH1xt8yXtmWD VBqQ== X-Gm-Message-State: AOJu0YzEb4bauWDNYKOvOKGGf7xR/Wz8N6n3DTRayn+tB1ishryxW20Z RRjqRJ/963HH1vqUEC4hTe0irLqkNp5/9wKl7dpl5+vwFi50i38hxVZrI7sxfESY3QRzSW6NoyR CfcIXfgU= X-Gm-Gg: ASbGncsM5hXyDZx2hbFZ6DZFHAYy0Mciz1qVS6vgiO22Br1WvXpliiJuOB4gLqDSjU6 dZvxoIIrG0WWXbTl2O9okxtkFxe3eFb+WOfM72zOBfgRvsLDCgW6YW3SaZfFJzzIaTO3jgyDX7h Mkj1GF1l2xL1iHaBXOK7UB1deLBXBjRX4CN5C3HqMCIC176zkELam6bmHrfkGA0+C0k8znZ/kI1 uLdu0rPZnS2valsxyD+TrmcCc5B9+2rYlcKg36v9gh/u03pLA8XXIx3x2zAFZ3eyXblZ0Qv9E41 hbEl/aw7ZfUNyTdyLVTiZAdJkaacJJq/s5Ky+Z43VQQIqRai659Nq+BDzdOaz81PoqAuop1ujmO vmlq6bwzpFLYhzJfAzocQjkaI6XwrJHbsd7FfSFqOIUfSqSIo+X90BTzE X-Google-Smtp-Source: AGHT+IERGU4TKTt/9qkmaCpyW8+IubaqX/vkWFUmaTk6yHXMmkRYkjFsLQwBiz4ccUD1/KoJW9KEiw== X-Received: by 2002:a05:6a00:3e08:b0:781:1f28:eadd with SMTP id d2e1a72fcca58-7938763716amr4832906b3a.20.1759960791851; Wed, 08 Oct 2025 14:59:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 57/73] target/arm: Add gcs record for BLR with PAuth Date: Wed, 8 Oct 2025 14:55:57 -0700 Message-ID: <20251008215613.300150-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, T_SPF_TEMPERROR=0.01 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: 1759961630971116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index fcfa4223f5..9c3de0cf71 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1842,21 +1842,21 @@ static bool trans_BRAZ(DisasContext *s, arg_braz *a) =20 static bool trans_BLRAZ(DisasContext *s, arg_braz *a) { - TCGv_i64 dst, lr; + TCGv_i64 dst, link; =20 if (!dc_isar_feature(aa64_pauth, s)) { return false; } - dst =3D auth_branch_target(s, cpu_reg(s, a->rn), tcg_constant_i64(0), = !a->m); - lr =3D cpu_reg(s, 30); - if (dst =3D=3D lr) { - TCGv_i64 tmp =3D tcg_temp_new_i64(); - tcg_gen_mov_i64(tmp, dst); - dst =3D tmp; + + link =3D tcg_temp_new_i64(); + gen_pc_plus_diff(s, link, 4); + if (s->gcs_en) { + gen_add_gcs_record(s, link); } - gen_pc_plus_diff(s, lr, curr_insn_len(s)); gen_a64_set_pc(s, dst); + tcg_gen_mov_i64(cpu_reg(s, 30), link); + set_btype_for_blr(s); s->base.is_jmp =3D DISAS_JUMP; return true; @@ -1892,20 +1892,21 @@ static bool trans_BRA(DisasContext *s, arg_bra *a) =20 static bool trans_BLRA(DisasContext *s, arg_bra *a) { - TCGv_i64 dst, lr; + TCGv_i64 dst, link; =20 if (!dc_isar_feature(aa64_pauth, s)) { return false; } dst =3D auth_branch_target(s, cpu_reg(s, a->rn), cpu_reg_sp(s, a->rm),= !a->m); - lr =3D cpu_reg(s, 30); - if (dst =3D=3D lr) { - TCGv_i64 tmp =3D tcg_temp_new_i64(); - tcg_gen_mov_i64(tmp, dst); - dst =3D tmp; + + link =3D tcg_temp_new_i64(); + gen_pc_plus_diff(s, link, 4); + if (s->gcs_en) { + gen_add_gcs_record(s, link); } - gen_pc_plus_diff(s, lr, curr_insn_len(s)); gen_a64_set_pc(s, dst); + tcg_gen_mov_i64(cpu_reg(s, 30), link); + set_btype_for_blr(s); s->base.is_jmp =3D DISAS_JUMP; return true; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961713; cv=none; d=zohomail.com; s=zohoarc; b=kdOrBw7qX6ba0hca8YWoEsEhE6Ea4PvGVWMOwNjeX3/pnSRiimigo5/I+EW3jnUy3znIUc0Ngi4LQEim+B04y0rDPi2KLLY6edB4WutC/ukVqTDWm7XP273l6PzSIkEJb+VwxaznOImNtitvnlTj10693IpME1PrOOHu4GizAx8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961713; h=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=Jt567D0J6a1P7ec8JzEIC8+N+AcWWszERl+qJiuYGNI=; b=aFjhQL6dfh8ViTSdmV6K09ilPy2ekBp73F/fpoYEiQnznq8A90exig03+KqoBvi/951ar7HY6WjW9uf30yN6aDbO0GL2v31O+6rXaQ94fi8ocKp2f6EHdQAZPhzmAh4lyYoFiYxXcZPfE3x2nsDc8/QnxGLT1y8cw/3HqrD682k= 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 1759961713645831.3366410866199; Wed, 8 Oct 2025 15:15:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEg-00025G-Ff; Wed, 08 Oct 2025 18:02:14 -0400 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 1v6cD1-0000tZ-BX for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:31 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCT-0007Oo-AG for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:29 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-76e2ea933b7so333411b3a.1 for ; Wed, 08 Oct 2025 14:59:56 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960793; x=1760565593; 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=Jt567D0J6a1P7ec8JzEIC8+N+AcWWszERl+qJiuYGNI=; b=o5oAd7Jx7qYm+xlu/bq3cz4hzWbDp00T65h3I/SxWe3fXa8p9Iu9VDp56Jn3VsYzqF ZtBJTHCZ8hbxa2kp3MTuacVGEA7d4bs+Wb5HcXF+TpRyuTS9IYEMXl49kjnDbrururBm 3i8YzRyunvNJ8Yw5VFWSn72jVNNWqyG62gs4o7FfWD2KsOJQMktHPJN1FJAHhtH/TDry 4oB1qbNVdel3D7/M26rM8KmcdEgxH3JbYnWee8eeB682addYM2wbvtOyLp8aghqMb0sZ qJjeclC/7nbO6CEo8mybKAA1beEPkNDQ9Z8SDVEhYuweNhASUYj3dGiSbubgVnzuz8eU KvIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960793; x=1760565593; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Jt567D0J6a1P7ec8JzEIC8+N+AcWWszERl+qJiuYGNI=; b=pjhRRq3HGp/kJUXBdPGeWHPYHnKfpeeiWsElqRnmefU/oJ4pWVlycHaHxT/YBByUPu vHWMZWssixoOAMn5vb2tNRxJxDMppG2OcKVFxYxHn9YLPYGDE0xNIvRb+OUabOuNZicO +q2neQBjqwC0w1PywHnNUpaXBOrk8pLEOTz3kBxnvKH12YIDotC0K5dUlfdsFsNGJw/D sKiKlfSI8PzwypNxJiyJ2Jgvyn1GU+q/jtIPLMqleMvsqSp/UhGdOwjX3fBipOBgxYVl 7B3YgoAl9kYzXXIizjzbGKc1Z5erCGG4lz0hHqXpuXUa487oVl0yTPegIJzO8V4t2X22 FmOQ== X-Gm-Message-State: AOJu0YyLrUunPp1ZfiX4l6M/KEqLhcugJ27+Zp+iPCHQSf9fISF7b/J6 pVDMf3U8ecqWP1Yhl17piNJpOxTBUqEuJA2eGaZr1QtJsNwSjfXKZ6XMJEOZTZTyo4QFzpj/+oe OXT5YDIU= X-Gm-Gg: ASbGncvxmn5eKLH2LSodehnEStE7vg2GdBApZG5TrYy7ifUZhuhYiy8mNyzML8K2UE/ aVJzXHRiZIfmw28N3PvekffAMh8Tc/XfZzc0/IH1w7ze7EnJmZ3hqhzHeV9srM3y6e9EHl/WRsH Awx9rYewQoE2ENQll1D2sInWueGEhQgYKmibI16y2qD/CAYQLYgyRL5FSe9QVu3xWGJVnWl5dtl lDzCwQOgn7ENZwII7Fy2U6UpL9ypbURs2ULDU355zYHqsZP+3izRNUZsgM+kqYlggDRFCtgmTsL uy2fjRKBKCdtQyob0IkT2L8vm/Rsve70w7ajlhVelxg5DHhtBmfQ5Gx7fStktPMKnrJKq0uag2e z3XcBcEZHpwm5l/tmJJdSLYQmvSKPoEZB7h9pzly2WUUVW8114JCKlBoy X-Google-Smtp-Source: AGHT+IESkJlkRiVtewu9TDkHa51POxdXEB3cTctGYjQLYPsLObzSYJ1bh0bwthtXchAhGlnR/j4dTA== X-Received: by 2002:a05:6a00:3998:b0:770:4753:b984 with SMTP id d2e1a72fcca58-793998483b7mr5809070b3a.16.1759960792467; Wed, 08 Oct 2025 14:59:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 58/73] target/arm: Load gcs record for RET Date: Wed, 8 Oct 2025 14:55:58 -0700 Message-ID: <20251008215613.300150-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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, T_SPF_TEMPERROR=0.01 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: 1759961714432154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 9c3de0cf71..dfd5b17831 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -444,6 +444,27 @@ static void gen_add_gcs_record(DisasContext *s, TCGv_i= 64 value) tcg_gen_mov_i64(gcspr, addr); } =20 +static void gen_load_check_gcs_record(DisasContext *s, TCGv_i64 target, + GCSInstructionType it, int rt) +{ + TCGv_i64 gcspr =3D cpu_gcspr[s->current_el]; + int mmuidx =3D core_gcs_mem_index(s->mmu_idx); + MemOp mop =3D finalize_memop(s, MO_64 | MO_ALIGN); + TCGv_i64 rec_va =3D tcg_temp_new_i64(); + + tcg_gen_qemu_ld_i64(rec_va, clean_data_tbi(s, gcspr), mmuidx, mop); + + if (s->gcs_rvcen) { + TCGLabel *fail_label =3D + delay_exception(s, EXCP_UDEF, syn_gcs_data_check(it, rt)); + + tcg_gen_brcond_i64(TCG_COND_NE, rec_va, target, fail_label); + } + + gen_a64_set_pc(s, rec_va); + tcg_gen_addi_i64(gcspr, gcspr, 8); +} + typedef struct DisasCompare64 { TCGCond cond; TCGv_i64 value; @@ -1798,7 +1819,13 @@ static bool trans_BLR(DisasContext *s, arg_r *a) =20 static bool trans_RET(DisasContext *s, arg_r *a) { - gen_a64_set_pc(s, cpu_reg(s, a->rn)); + TCGv_i64 target =3D cpu_reg(s, a->rn); + + if (s->gcs_en) { + gen_load_check_gcs_record(s, target, GCS_IT_RET_nPauth, a->rn); + } else { + gen_a64_set_pc(s, target); + } s->base.is_jmp =3D DISAS_JUMP; return true; } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961353; cv=none; d=zohomail.com; s=zohoarc; b=PDAnFRfwAgFzTSacVq3QB3n/PKhJRHQV83zomJ4TOsnRjB900PufBJLo6d0QeStWmY0l347+ERMLDDHhH8nRjpdlKsgRz9lDowLZ4CCB2fbzxRFw/U30aPmejrAZ9c2bAok1H1l1YrRskUGXNikIvrU2+NCBZrG91WujdpsLINU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961353; h=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=Bjs2KSAaFbdAG1b499mTeRXJBukAcX/iNNZB5CfLwbQ=; b=FEW7g5URWouV0zWA7pNNOP3NG1FBlTASwO/vXsO8MP0mCEC4tg7u0u+tQFwZRydCRrc1Ny9icyqBefN3Wfv2cKT8XKZw/C4bQpDNSQhTeuez9GNBefyGC6YYlY1vmfaS98d4g3JCsn4oqqQh27F0vz8MXaez7jB9znXcqpu8y7g= 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 1759961353299382.6047389359285; Wed, 8 Oct 2025 15:09:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cD7-00019T-Mk; Wed, 08 Oct 2025 18:00:38 -0400 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 1v6cCr-0000aP-1c for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:22 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCT-0007P0-5r for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:20 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-78f3bfe3f69so271560b3a.2 for ; Wed, 08 Oct 2025 14:59:54 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960793; x=1760565593; 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=Bjs2KSAaFbdAG1b499mTeRXJBukAcX/iNNZB5CfLwbQ=; b=eEOBtiihkPmma1eqLoJyn8m0MVL0ck+wCja8zrAovNBgh1CArO5oXPQ8jFaMkHYduN 9is67LWqvASkVYhXBJoPzuiglYTtrlZi1OLf3pDTlsBYI6LnxRyOwgxdHxjryQkLohgY 3riQQa52GN08sVu80DKoU3knI4fhN6ExVGCQnZd3SVuxz+yGPyLJcPfX7j8ZIoLHboUd kxXcZZu/XspHdXPOL4MpxrPsDPFLxfXkXZjGL5u2MLAseyLzUDIZwof/iuOkGR8bdkFT p4btRvaD93tC30nhswLczMr65oF0lAbTuIP7+4aWqdoc4HtrNjmXj5K4MpYxdxXVrLlo Q5AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960793; x=1760565593; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bjs2KSAaFbdAG1b499mTeRXJBukAcX/iNNZB5CfLwbQ=; b=chN5GKxe8uyqwi/Rple6SEOhqZX0zGiYppMDH+3Uf0eWWLP952NHWNEHcb/DzEVRUv owd4CasYOmYiFsAK6LgHHccfo3ZFmJARQ3O5m65JLODxCJMepk/KsOLpo9iO5tJKODMe Edg9VjEkkXanZkk+Q9R/diAFY1SEv7W5iqatuM8J4VIGqskjJf2VmJhdtMy+qlG/UiBT QywUi9KOOPb0gIagIMyTyeKW/Qw0aMxgj0fCZvjvMKIpW7AT3+kdxGwTsQOL8TvjG75S +jiLQZwSUCLIkWRcS2xTK37KSRJPvltskTbYbEFYiYVN+6DCF2ddVQDxO/lO5+r8HQY8 JCdg== X-Gm-Message-State: AOJu0YxgxXKEwbLdv5EfFP/8DUInyNCZ2Q9xFWYEbir+RuZOuFZ9Tnyl FuHri5Bfbgce+oBlXEWSqgp7jBrCDxARUA4/8axJ5sMq7Bi8GSQT1OkzlN8LJTGNZJD/JGuUIem Q0a2yXMs= X-Gm-Gg: ASbGnctzMOXwL5uVPTog4z9d6nXjw+VB3c1ks/FRePaV1w1VdHDZ5pqq1ub4GAlfoU7 ghbSEDM66l3HudYrPn9ExCYl6ed7Qigxe1U1dB8ToF3OJhUvCeJEfrW6uklZ71ZOU4keiOX/deA 3dv3WmXIDPZlZRgYGPDbWEvcBBCHJ0P8pmBi04enyiLMNXsUWL1SF5FCH4rXZ//hovJSx8U5jIi 7uZaIEt71SOAddVKf26UN7wNfQGvG14gB2NPxeg/G18Iqe/7kf8gs1xZl03gdZP4upYhGfFZlH+ R107t8nwF5xz7hyOCWndcfQmNph5r1fpqsZywNu0oUdPMwBqa33BGmYF39S5mW7pyuvm8aS+VFb VB49E1HxjVkOuRwaU58Iwm//tZvoJ07HCmYltsw+PvWy8vvteXZD9diZamtrpQjNugLw= X-Google-Smtp-Source: AGHT+IHr6eY8VcJfZSP7GMbeh30NI8HiHwq2mgJDGRdmmxb2FMRk9D6ccta2XDYvZuYUgCTbEBIuww== X-Received: by 2002:a05:6a00:194d:b0:781:7e1:a315 with SMTP id d2e1a72fcca58-79387c17862mr5482444b3a.22.1759960793105; Wed, 08 Oct 2025 14:59:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 59/73] target/arm: Load gcs record for RET with PAuth Date: Wed, 8 Oct 2025 14:55:59 -0700 Message-ID: <20251008215613.300150-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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: 1759961354288154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index dfd5b17831..918d5ed112 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -1898,7 +1898,12 @@ static bool trans_RETA(DisasContext *s, arg_reta *a) } =20 dst =3D auth_branch_target(s, cpu_reg(s, 30), cpu_X[31], !a->m); - gen_a64_set_pc(s, dst); + if (s->gcs_en) { + GCSInstructionType it =3D a->m ? GCS_IT_RET_PauthB : GCS_IT_RET_Pa= uthA; + gen_load_check_gcs_record(s, dst, it, 30); + } else { + gen_a64_set_pc(s, dst); + } s->base.is_jmp =3D DISAS_JUMP; return true; } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961512; cv=none; d=zohomail.com; s=zohoarc; b=L7KN7wzui/u/RsWPOHxfNtusArEOKwebuic9FOeTMNTnd7w5Zji4hfxdBHMS+GOlENpac3HLNWWsMF4Y7uSX+UT4895PiNP4Vl41wxpTDLsSwl7CE/d/XUIqLrOcPH96PiHRKXdNRhyavq/W1nTt/oduDgZMIvdC1IX3oZM7MIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961512; h=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=X9PGE542gvCPCZ3kL83WZF55iv8iEjMdwRFvuv/fA+g=; b=Y+YO6+zjAgO/C+ty0YOunJEbOy0TiCPaoaC50pmKyGo9e7w6+n4db2O8rzjlosb+W5rdu8NY+21MCE6S7RJWdQ/YYkij/9QDXkZKfr1z7rYOnQyDtnvvUOB7Kpvx7zSqz3OKhS0/902jOkbStRz0IhqOLUncS8qqtkVJhrgBAlk= 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 1759961512947558.0890654105607; Wed, 8 Oct 2025 15:11:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cDA-0001DJ-14; Wed, 08 Oct 2025 18:00:40 -0400 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 1v6cD6-0001A5-Qp for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:37 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCV-0007PD-ND for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:36 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-b5515eaefceso224270a12.2 for ; Wed, 08 Oct 2025 14:59:56 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960794; x=1760565594; 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=X9PGE542gvCPCZ3kL83WZF55iv8iEjMdwRFvuv/fA+g=; b=oyHH2DKeGUgNMM6FXjOnaaOW768rAVH099xn5yxGjthKb27jHEa387drGkFH+xrY/0 YCPOirYiYFr2QmnR9/fE1zMEzK2Kjocl9YdnnxuhieqcrvqQD/f0J68CET/5ZWY1WjF6 QOJAQEEmPHeHwnWaTRbpNgWqkl765KxlJPM9ZL+/zOfmD/X4c+j8g6QMKEIi3W21lYfF 1W0t5jZyLHtdnVzm7uu+eTm6IxlB+2QWnbXP9Ir74OMvJMlYOZYb3uhdllsrBiAGDcql TK7v+eMOs9LrIX54eqS5+87HQFnkzDCQv5/oEH+pbLb1E2RxoGqrUPotPlM3Q3DOsu0g nPcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960794; x=1760565594; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X9PGE542gvCPCZ3kL83WZF55iv8iEjMdwRFvuv/fA+g=; b=iewxhxJamD06uLr0AGxc5ZP8/N+mB5nNzTFAJ+kzMciAss7U8Sowga+Loep+zGwvmy u4lEgM4iRwe+uBoH6joK6Y8O8tA8ag99Zi5RnnjuoQ3lEjsQC7zQHQnlzLTOMV0Ha4TF 0BYNOc1WlW6sVbv4zwW5NeWhpGGlQLKOQCcwC9/1TmThvb8EIjjLnEnjtkS7SOhmDGH4 zKq9GA3GNUrr/1oUASgWHggg6CZm+OWsq1Pp0h3KA5Z7p35SlpwXuPInhyVGFwTgpRnb G0Jx2s5AwQE8hMAFkBOC47hEqU51d4Ki7oILoumu60DIvQEj+d9p3+8WP5SsGXftQXRN oaaQ== X-Gm-Message-State: AOJu0Yyx/aHZlyN/zzZoCTzilCdM9VxRMea4VKqGe0QRma28y/IQf2fi RsVD1ETICcbZHJsOfsoU7yw/ewfmuCggd5g+5XHrZN9qTe103u58u8QK1hty0r1zDiMWjbuzYBv w78k1XZE= X-Gm-Gg: ASbGnctUyicGXo0xQ2VenCWC/s8ATYdIaAFX5Q1MatbluYuO8o5nuG+SrVyKTqkbMf+ HqjCj/+J+wxMY1afePs6QKNxIg//Cg1djuhaN4DP3hh7zipeVpNpDYVuz1u8b9oGkJPbJshJWwr GUCyBx8oyoNCt8ebERR+NFJcpo2Z4baQnwh+kc2lS//s9vNaiK9uONDlcNG0xIW02D7srAcq1Da v4yNfg4wTPTVAq8R9F79tXZT2KBzd3YEECZNBcOT40aZXjufTi5rYoD4t/t97XwEXJJ5vH4adQG xT93titlUGe7zI7AJjsFtypyl8N0DMsjO70+D/oblUxE5UuTzHvHF8VzSPrvJPwgh284yxwzhgQ Rp5UHEjYNNNdj1JsEnVhc/1r/Fbjk4b40fx2nnmrPu30AoCnPH4xG7unT X-Google-Smtp-Source: AGHT+IGRx5c1p6BygS6+r6i6HroaURKDKfS6N3edlFmhnI2lYBvIcXCpnfhC73cS1beQ9LBI07Qk/g== X-Received: by 2002:a05:6a21:33a0:b0:24c:1f78:1803 with SMTP id adf61e73a8af0-32da83db8fcmr6924831637.38.1759960793709; Wed, 08 Oct 2025 14:59:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 60/73] target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL Date: Wed, 8 Oct 2025 14:56:00 -0700 Message-ID: <20251008215613.300150-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1759961516415116600 Content-Type: text/plain; charset="utf-8" Per R_WTXBY, PSTATE.EXLOCK is 0 on an exception to a higher EL, and copied from EXLOCKEn otherwise. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/helper.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 1aa0a157b7..0077788e1e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9071,8 +9071,13 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *c= s) } else { addr +=3D 0x600; } - } else if (pstate_read(env) & PSTATE_SP) { - addr +=3D 0x200; + } else { + if (pstate_read(env) & PSTATE_SP) { + addr +=3D 0x200; + } + if (is_a64(env) && (env->cp15.gcscr_el[new_el] & GCSCR_EXLOCKEN)) { + new_mode |=3D PSTATE_EXLOCK; + } } =20 switch (cs->exception_index) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961434; cv=none; d=zohomail.com; s=zohoarc; b=NRfu7x5cheF2Fed1Tgj9x2vJ1ZVJZKqmWxnWif5S+62LyMLUAfjPldPooei+vORduMaIStJri4OZsx7xe7syWPi4oaufIR7GIDMHzH7OCynU3pWVg1uiX1ZjR5wqveanbsD3EtzoartE1A2MZv25fUhlOHhEpbfmu+EkfgBQAz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961434; h=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=TIGC+NB44/a0H+dR2upS+UgyhxrsXnOzX4fio5wssx8=; b=J+ygWeZ/BkyxqXWyi0zwKMaMCLnmztolKbipLFA8GNxKLVBlXyDSUZVu1WwrzQS3xnHh+XA93J9p6Etr2sP8FLGpQwj/cUvirL0Tmnl3MmUBcdIDNu0ENjIC3UoebvLbiVqHJ7eotCALQPI92VkrWW9K7AufgXO7fSzLhUVEL+s= 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 1759961434086537.6500822579986; Wed, 8 Oct 2025 15:10:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEi-0002BM-Ls; Wed, 08 Oct 2025 18:02:18 -0400 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 1v6cDL-0001Ku-Ol for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:55 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCV-0007PP-Uu for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:49 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-781001e3846so286293b3a.2 for ; Wed, 08 Oct 2025 14:59:57 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960795; x=1760565595; 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=TIGC+NB44/a0H+dR2upS+UgyhxrsXnOzX4fio5wssx8=; b=YfNIqPRlSHEp61Z+AMEmIudgV46zG6PRtl1DC4rteT497ACnLH7Gz95vIzVeh3J9c0 KwobHRuRfbhRgKdhxOIGfZWAXbpn1xq+1SjajSiStH0tQ5W7obqlwH5Q+ELErIsPkPLq dATKPV2Ifzm1cUDgtadEosOsLINW8z82Mz++w6g9qO4TzE3sLUMzJN09ZnWumSN4IbPX 403OnfX9KC6G1LaqMBF8WDbUMIb/yrA7TQS3lCUECYUVzK/p8KxwhnQPKyPcXuVm+5qv gzksPA33bJkFX7WDZ975elnanCK1t/ST1G4IvPMAl+a1l582mzFq1O3JMpNanTIIC/GD sr8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960795; x=1760565595; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TIGC+NB44/a0H+dR2upS+UgyhxrsXnOzX4fio5wssx8=; b=cDR0PymANmkTrCoXf+B8sbIcFHB804D5+JSdRvCt0MhMTLruG5SAVj0TiKQ57evu2A y7JyV7NvhOj1vDaLWQdtQaiiYwGoCynxwsFgsevJH8wdYW56YLdSgrc4I4LhBKx5tpPW pZsiT0F8zO6h2raR0IgIAbKjyLRHWKQ/Wpy44vXk0nl94R3AqHfmPwMGu8RHgMRrPUPU MLJoAgD5dlTvbtQkC1qCowFTnbo42f+fvaS6TwkddPhE0oRzYGtA8WeW/kD9CXB3PU6q g87sUVQ8oZ43bWg2CWZd+DQOwC7XBV5UwrDEfdLtSPGcONRb/40K/BeRy+5tzfMcEYWG i2JA== X-Gm-Message-State: AOJu0YwGsE2MPbV8lZIU2VfhmJEorrTvpruOP+tEnXk0ov4YGUhYCVjB E0KF/IiFRoQVvPnxUyCeQnYsJI5JiG6Bcp2tJxENHbAKafSmzjADY4Nb544nAlEC9q3r4GMQTDy fxvpQjBo= X-Gm-Gg: ASbGncs56fD1SOjgmGesmNvHNXMg6NZZULKUmxOph2+PjHefdgTf2cSbn1yHOXpdgpn EblR7SF/cph5INzDjckTyY4aGlQzGJZi7/saqwhhAwq25W7BJgIDjF84rit0WA5YwsBn/+gbyLE fy2LBfIqmxcvY5Nr5cIYLBjdoybyWxlTW1dra5UPNCxWu2FArcIhp9yQsBE5gWaUgcpRER7OZFO Ul3yQg0L0NjpElQU/1NVoN1JE8wTKzQd9RABR2xZ8m5GznlVLP7DKBVEN6NKi/9KlLaFTly5Y2H WEM8oOM0Kr1UoVoIOLHDpf1RZOBEgVxii7s5Q0UIB8exG6wRJYFhcHka89ErA7zOTYLIgyM116a 8Ea6DG0A9v/L2iXwHpimuvyHwOoRhN+/PuVdP7QM1Xqx1Ae78SVJ0LJTd X-Google-Smtp-Source: AGHT+IHe7wnLO5tL0J9y3n18M3NhsgUh0CCuOalgyyaqyXn3RTbbmnRdJNPB258VXxC5Cv7qAdVsiA== X-Received: by 2002:a05:6a00:8d5:b0:793:1b79:ee61 with SMTP id d2e1a72fcca58-79387434292mr5599572b3a.22.1759960794532; Wed, 08 Oct 2025 14:59:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 61/73] target/arm: Implement EXLOCK check during exception return Date: Wed, 8 Oct 2025 14:56:01 -0700 Message-ID: <20251008215613.300150-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 1759961436076116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/helper-a64.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index 08b7db7c46..ba1d775d81 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -675,6 +675,17 @@ void HELPER(exception_return)(CPUARMState *env, uint64= _t new_pc) goto illegal_return; } =20 + /* + * If GetCurrentEXLOCKEN, the exception return path must use GCSPOPCX, + * which will set PSTATE.EXLOCK. We need not explicitly check FEAT_GC= S, + * because GCSCR_ELx cannot be set without it. + */ + if (new_el =3D=3D cur_el && + (env->cp15.gcscr_el[cur_el] & GCSCR_EXLOCKEN) && + !(env->pstate & PSTATE_EXLOCK)) { + goto illegal_return; + } + bql_lock(); arm_call_pre_el_change_hook(cpu); bql_unlock(); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961408; cv=none; d=zohomail.com; s=zohoarc; b=HMt3c4iHfoY3eKOJSq0nqoThEtW9Dk63H2/+PMi64lXSkueWKTlG/0cCV0xE8BDUyuILf6Cg5O+1TXeJbOujcBCrrlvIpxGBmYHENwXmUFjrXUrlouI1XUrHFF7A2ScxfA/I06LTAE1nj7WAJcw6gxdT4de4R/jxLSPE2kwauIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961408; h=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=TEx/hrefNIXj4jtd/TlO4/MQQCdcfyzeDKOCLqegICo=; b=iUEN8OsgEdnKpl7DWtvpYPBlcnyzpLpgbADyedzLmjrb/eMgxqDNFYoW/NoVngUbGtqeobG09JeE6T5M15T6YI6Lg9RnfrFlrcGe/wkctya4kQuoyebEU+jTNssfgU8VxpaKf/utD/81t2k9OgPhfhYoWPCGZsnSmNNRrXNNw7o= 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 1759961408756777.2461708928162; Wed, 8 Oct 2025 15:10:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEl-0002Gq-AE; Wed, 08 Oct 2025 18:02:19 -0400 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 1v6cDC-0001Kl-KV for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:55 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0: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 1v6cCW-0007Pb-Mh for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:42 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7811a02316bso198822b3a.3 for ; Wed, 08 Oct 2025 14:59:56 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960795; x=1760565595; 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=TEx/hrefNIXj4jtd/TlO4/MQQCdcfyzeDKOCLqegICo=; b=JTKwqwI5+W4eT6nHHfY+8Lyb9mv6+QydhnK+n1OKuFkGQFEvf9tFBUl1kkciMfFQ5k 3aKq4Qn3+/7AgDe3WpMF9rqveNNDBp1J9Vxt0/ZKG+ParYxG/KI8LZlW4548aCbkfxpG QgX2gIL4Gi9CQRHarPAEkSze3D/e/SgZnkc0UG/LUh3OqtFx9QFBNW3Ket3SYVteYI/M ZtPAwXQYrEzHaVEyZ7uN/++w5ZqBoaoE4exGqGyFvoHnWMgQ/xNprZODtVWifITonMk7 FgmKfnZ8KlIZ2FJjsMgDVatjn1/iEYSbKCvyCbHIiE6t5pu3cvuUG27G5UXNbeJjkHiZ qWpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960795; x=1760565595; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TEx/hrefNIXj4jtd/TlO4/MQQCdcfyzeDKOCLqegICo=; b=SyM2NYO9Kza7ffArBH3t/aXPz6py2pVNMK1JmAH2j8clTGodzO3v0itzIj/EaIcOzl hAvJjS0aBgXV5mSKoPzhlvPLbalAVU7fD5RTLJlgOU1b28wFr3VPSlEOqFs4YeZI2N46 OmujvMTTynTURu7bv/jIoq9rMY0e5UmLVbajf6j2cQ0SRYy4zfGSWv0obhZTWYvUuYnn QUI9gKKQaEzVToIbONfI5LlSEVK9VSam3t9t8xc9MYVmmNv6SJi7wqAdOsCtsQFHrMi+ dUH/LpWe1bmAshOS+LvSBsl/o+05ARaNlxmKMq/arw/i4T5kS3G2xMrATCU0EEiBHfBo jqdQ== X-Gm-Message-State: AOJu0YwYoe2DSMQxwlCyO+bxgzapzmfA85O4oisfGYLPV/tTDimyv3wk scX1xKDxjN5Y88f6NUnE1r/J518C+jyfPMKksctjlWXoVjIerxE2zZ68kzdujdfaC0EzgbtkBc/ NBq3rkGs= X-Gm-Gg: ASbGncvI1jQSvP1Xc/wRq+6bajdqOkmrUAKBUD9rvxr1s3B4IwpnMNwj/LvbtL1Ksqs Zb+EybCW/eZGcJ9AB9kyauf8/dECbvufbT1rYYwBUcJJ2T1JQNgzGzzk/oAd08qeWkOUmTrw/Jn yC1sx+OoBPfBZLSfQgI+J5vXeVVbOMTO4JMbpFPHAy8xqjXfHg29LTzn2SnIL4BiW1ZIxyYA+Pd JXoEsHldFpLNsIBEOrla2y4ZVoDSX3GACVVJ0Jtt+HHfW1rnG//xBBEPxIc7q7cxD249/DNbLMZ RG+mMXIItTbELgkx2Qx9M1dfjaalZWaVKxoIhy9ptuZzi8cCgcL/Jf+LWjMX31XvfXpiGGeNW8t wXgNgeepPgjqjf1xHksiExMJX5DqHL702XCCiiTeT/mbUmo4jjo6UIKkl X-Google-Smtp-Source: AGHT+IGxAYr7EXhoVxc33ZrksSl/Em/ypRuYiR8x3fnF+qWRSgdjD+LZ9glAjjXmy6ENOW6UvZt8Uw== X-Received: by 2002:a05:6a00:4fcf:b0:781:1916:c5fb with SMTP id d2e1a72fcca58-79385ddc921mr6387565b3a.14.1759960795162; Wed, 08 Oct 2025 14:59:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Thiago Jung Bauermann , Pierrick Bouvier Subject: [PATCH v7 62/73] target/arm: Enable FEAT_GCS with -cpu max Date: Wed, 8 Oct 2025 14:56:02 -0700 Message-ID: <20251008215613.300150-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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, T_SPF_TEMPERROR=0.01 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: 1759961413841116600 Content-Type: text/plain; charset="utf-8" Tested-by: Thiago Jung Bauermann Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index f024db1d29..cc42dfdf56 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1280,6 +1280,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64PFR1, SME, 2); /* FEAT_SME2 */ t =3D FIELD_DP64(t, ID_AA64PFR1, CSV2_FRAC, 0); /* FEAT_CSV2_3 */ t =3D FIELD_DP64(t, ID_AA64PFR1, NMI, 1); /* FEAT_NMI */ + t =3D FIELD_DP64(t, ID_AA64PFR1, GCS, 1); /* FEAT_GCS */ SET_IDREG(isar, ID_AA64PFR1, t); =20 t =3D GET_IDREG(isar, ID_AA64MMFR0); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 68d9a4e734..4496178c48 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -73,6 +73,7 @@ the following architecture extensions: - FEAT_FRINTTS (Floating-point to integer instructions) - FEAT_FlagM (Flag manipulation instructions v2) - FEAT_FlagM2 (Enhancements to flag manipulation instructions) +- FEAT_GCS (Guarded Control Stack Extension) - FEAT_GTG (Guest translation granule size) - FEAT_HAFDBS (Hardware management of the access flag and dirty bit state) - FEAT_HBC (Hinted conditional branches) --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961402; cv=none; d=zohomail.com; s=zohoarc; b=SHv5AAHE/7AybB8+ppONXXPSwJTQe17Rmx3xPvxunP1aR/XA0+cvNoZYdfsB5ZFkdmQqyBJdhvXEiEkALI2iPHzGPBbjXcXipoFjeBVQGJKKUr0FaNL7BnBnI7X/Q4hyspI9dRfFPFnZxN7BDc97eVxETuY/+zwlu6gzvci3JeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961402; h=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=xpLUB39e27zCsQVh6voLbFSTlvBthanXH7KtIvU1OsE=; b=Axohh1rHujD9inOzajByxtbUNykDwa7HEXF5Vk0dvpitnXnGWp4ugQ2EeWYrjUTFkVc73Sij465AVMr/nFc3Zyeq8IkquN0v4TcF3WI8JEmfblvnCNr5AgmtAEeWVz5NkAxdZ9jJRqjPxigx7Zzf3lHq0KZyhB6txfg/2agjgvU= 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 1759961402660120.52958572464615; Wed, 8 Oct 2025 15:10:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cE4-0001nW-Tl; Wed, 08 Oct 2025 18:01:37 -0400 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 1v6cDH-0001Kr-4p for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:55 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCV-0007Pl-VE for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:46 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-78f3bfe3f69so271584b3a.2 for ; Wed, 08 Oct 2025 14:59:57 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960796; x=1760565596; 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=xpLUB39e27zCsQVh6voLbFSTlvBthanXH7KtIvU1OsE=; b=A6yh5TMkDvf/Vwnzwo4VVTEi23aDl+bPUxWuN6aVQz/Sax8lNPfPddA26xAIDxOoKI VYa1ETFzfLxoSShKUffe1H8fbL3NRNdm10mysOjBIDEtGFUDwICOpj9vmHbkDjX/3tvc tLJzLMME3kI+g1iViZ+PgfTyPxS15lccjT+u1/9s6HEtCXMCSoNzem7mMuYZROGd6frp k4nl/x+z/cHir/pU4Z6K1vOqSDY5qB5KfxerNNyYkyGD/8oKdg7hwKggcRYbR41F3+Wk lfqXbCyoZCje/VOEl1L9hBwmQb3bFji9mXFqss9orKWYucPp8IVSuRN43I8cUP8mRN28 sInw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960796; x=1760565596; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xpLUB39e27zCsQVh6voLbFSTlvBthanXH7KtIvU1OsE=; b=G9+ys/nMDnJryFZi2Qd9ffAVMJadUqMYUxCaJW8NofLQObTf9VLKSxdJV7iPDpj9r+ dAZQGT4Zdw327vrTutKXJ/4+iZnjvuo+9cny3WFh2OYRBWEBqHwN5udKF5OUjEWC948H 7VLVTdRSFDquceZ/KfEdf7/Ln8trsAsXIew2hnHhFc2GuNq9NzHtZ2TxMhYTFUd7Y+Fe 4ulqsnEH86quP3zGjZV1LJ2ULU3wT/fCopn6EThVQNve3c7HMSZiNj4LdkYLelWrmsPo ATOoO19VmiE2T+cqhBN/VhNuCtN5OvWfcORQ5l1kAv+GJSJbaREd2zPcqOZD5Xn/jVPp 17aQ== X-Gm-Message-State: AOJu0YyE5w6vdIsBYOvVyKQdamSimC+pdkiKwXHDRYfWbNMPrVg+w8Dc 4IpL0OhkZ5SGwtmHQBLM9SJsAewQyMuuhGH75Tb4hSAADjUMFmxlsdI9STE0VMrHw4QGDY9g5w7 12DxycEc= X-Gm-Gg: ASbGncuRa8TPTeXTSmRjqulk2iLHIvEDSGE+m6yfaYSRRFe6WBf29gawZQnCaiVodgc gjyQOua+OraYE7jowNCxa4qx56BkPKTwcPqZrhaL9ZMErwIH6+3/zRRWrWbfNj/aME5FOeVOJ62 6/yOtw71p+SXjYM72SRm2TCvQD2YVgYuFzTVsuN+NchRvuFKtMHj11tFaRS/7BtFCDXFa7yn8pz KbQ3jaCwVtWZkc+LVPM+NWzHx4p0OMYkwkKtXqYyhW25r1Bqjvj5tGNnLAXcoGFyKdnW0KR9TTG ZOBSiLhjVzFrbzNCPwLLWkIJUoARoYpxMMQXJObJLBR86RR9LBn4FHxQMfxwCHaBfvkaCnCzYmf AuXqw/cja5Pirqgw8kPtVNh/VQr3uITdnFEebXp4nrMW48/hnRroAxc+3 X-Google-Smtp-Source: AGHT+IHo7l4HuV+FHyggz6MJ3IFCsft6l4r3Vy5lir1z9tCWtptwvQCL04nUa+ghHQdASIqgoQqgUw== X-Received: by 2002:a05:6a00:3cc5:b0:76e:885a:c332 with SMTP id d2e1a72fcca58-793881ed81bmr6797514b3a.32.1759960795973; Wed, 08 Oct 2025 14:59:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 63/73] linux-user/aarch64: Implement prctls for GCS Date: Wed, 8 Oct 2025 14:56:03 -0700 Message-ID: <20251008215613.300150-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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, T_SPF_TEMPERROR=0.01 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: 1759961404869154100 Content-Type: text/plain; charset="utf-8" This is PR_GET_SHADOW_STACK_STATUS, PR_SET_SHADOW_STACK_STATUS, and PR_LOCK_SHADOW_STACK_STATUS. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/aarch64/gcs-internal.h | 38 ++++++++++++ linux-user/aarch64/target_prctl.h | 96 +++++++++++++++++++++++++++++++ linux-user/qemu.h | 5 ++ linux-user/syscall.c | 29 ++++++++++ 4 files changed, 168 insertions(+) create mode 100644 linux-user/aarch64/gcs-internal.h diff --git a/linux-user/aarch64/gcs-internal.h b/linux-user/aarch64/gcs-int= ernal.h new file mode 100644 index 0000000000..e586c7e80e --- /dev/null +++ b/linux-user/aarch64/gcs-internal.h @@ -0,0 +1,38 @@ +/* + * AArch64 gcs functions for linux-user + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef AARCH64_GCS_INTERNAL_H +#define AARCH64_GCS_INTERNAL_H + +#ifndef PR_SHADOW_STACK_ENABLE +# define PR_SHADOW_STACK_ENABLE (1U << 0) +# define PR_SHADOW_STACK_WRITE (1U << 1) +# define PR_SHADOW_STACK_PUSH (1U << 2) +#endif + +static inline uint64_t gcs_get_el0_mode(CPUArchState *env) +{ + uint64_t cr =3D env->cp15.gcscr_el[0]; + abi_ulong flags =3D 0; + + flags |=3D cr & GCSCR_PCRSEL ? PR_SHADOW_STACK_ENABLE : 0; + flags |=3D cr & GCSCR_STREN ? PR_SHADOW_STACK_WRITE : 0; + flags |=3D cr & GCSCR_PUSHMEN ? PR_SHADOW_STACK_PUSH : 0; + + return flags; +} + +static inline void gcs_set_el0_mode(CPUArchState *env, uint64_t flags) +{ + uint64_t cr =3D GCSCRE0_NTR; + + cr |=3D flags & PR_SHADOW_STACK_ENABLE ? GCSCR_RVCHKEN | GCSCR_PCRSEL = : 0; + cr |=3D flags & PR_SHADOW_STACK_WRITE ? GCSCR_STREN : 0; + cr |=3D flags & PR_SHADOW_STACK_PUSH ? GCSCR_PUSHMEN : 0; + + env->cp15.gcscr_el[0] =3D cr; +} + +#endif diff --git a/linux-user/aarch64/target_prctl.h b/linux-user/aarch64/target_= prctl.h index ed75b9e4b5..621be5727f 100644 --- a/linux-user/aarch64/target_prctl.h +++ b/linux-user/aarch64/target_prctl.h @@ -6,8 +6,10 @@ #ifndef AARCH64_TARGET_PRCTL_H #define AARCH64_TARGET_PRCTL_H =20 +#include "qemu/units.h" #include "target/arm/cpu-features.h" #include "mte_user_helper.h" +#include "gcs-internal.h" =20 static abi_long do_prctl_sve_get_vl(CPUArchState *env) { @@ -206,4 +208,98 @@ static abi_long do_prctl_get_tagged_addr_ctrl(CPUArchS= tate *env) } #define do_prctl_get_tagged_addr_ctrl do_prctl_get_tagged_addr_ctrl =20 +static abi_long do_prctl_get_shadow_stack_status(CPUArchState *env, + abi_long arg2) +{ + ARMCPU *cpu =3D env_archcpu(env); + + if (!cpu_isar_feature(aa64_gcs, cpu)) { + return -TARGET_EINVAL; + } + return put_user_ual(gcs_get_el0_mode(env), arg2); +} +#define do_prctl_get_shadow_stack_status do_prctl_get_shadow_stack_status + +static abi_long gcs_alloc(abi_ulong hint, abi_ulong size) +{ + /* + * Without softmmu, we cannot protect GCS memory properly. + * Make do with normal read/write permissions. This at least allows + * emulation of correct programs which don't access the gcs stack + * with normal instructions. + */ + return target_mmap(hint, size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | + (hint ? MAP_FIXED_NOREPLACE : 0), -1, 0); +} + +static abi_ulong gcs_new_stack(TaskState *ts) +{ + /* Use guest_stack_size as a proxy for RLIMIT_STACK. */ + abi_ulong size =3D MIN(MAX(guest_stack_size / 2, TARGET_PAGE_SIZE), 2 = * GiB); + abi_ulong base =3D gcs_alloc(0, size); + + if (base =3D=3D -1) { + return -1; + } + + ts->gcs_base =3D base; + ts->gcs_size =3D size; + return base + size - 8; +} + +static abi_long do_prctl_set_shadow_stack_status(CPUArchState *env, + abi_long new_mode) +{ + ARMCPU *cpu =3D env_archcpu(env); + TaskState *ts =3D get_task_state(env_cpu(env)); + abi_long cur_mode; + + if (!cpu_isar_feature(aa64_gcs, cpu)) { + return -TARGET_EINVAL; + } + if (new_mode & ~(PR_SHADOW_STACK_ENABLE | + PR_SHADOW_STACK_WRITE | + PR_SHADOW_STACK_PUSH)) { + return -TARGET_EINVAL; + } + + cur_mode =3D gcs_get_el0_mode(env); + if ((new_mode ^ cur_mode) & ts->gcs_el0_locked) { + return -TARGET_EBUSY; + } + + if (new_mode & ~cur_mode & PR_SHADOW_STACK_ENABLE) { + abi_long gcspr; + + if (ts->gcs_base || env->cp15.gcspr_el[0]) { + return -EINVAL; + } + gcspr =3D gcs_new_stack(ts); + if (gcspr =3D=3D -1) { + return -TARGET_ENOMEM; + } + env->cp15.gcspr_el[0] =3D gcspr; + } + + gcs_set_el0_mode(env, new_mode); + arm_rebuild_hflags(env); + return 0; +} +#define do_prctl_set_shadow_stack_status do_prctl_set_shadow_stack_status + +static abi_long do_prctl_lock_shadow_stack_status(CPUArchState *env, + abi_long arg2) +{ + ARMCPU *cpu =3D env_archcpu(env); + TaskState *ts =3D get_task_state(env_cpu(env)); + + if (!cpu_isar_feature(aa64_gcs, cpu)) { + return -EINVAL; + } + ts->gcs_el0_locked |=3D arg2; + return 0; +} +#define do_prctl_lock_shadow_stack_status do_prctl_lock_shadow_stack_status + #endif /* AARCH64_TARGET_PRCTL_H */ diff --git a/linux-user/qemu.h b/linux-user/qemu.h index cabb7bd6a8..85e68eff7b 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -121,6 +121,11 @@ struct TaskState { abi_ulong child_tidptr; #ifdef TARGET_M68K abi_ulong tp_value; +#endif +#if defined(TARGET_AARCH64) + vaddr gcs_base; + abi_ulong gcs_size; + abi_ulong gcs_el0_locked; #endif int used; /* non zero if used */ struct image_info *info; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index d78b2029fa..56695de680 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6353,6 +6353,11 @@ abi_long do_arch_prctl(CPUX86State *env, int code, a= bi_ulong addr) # define PR_SME_VL_LEN_MASK 0xffff # define PR_SME_VL_INHERIT (1 << 17) #endif +#ifndef PR_GET_SHADOW_STACK_STATUS +# define PR_GET_SHADOW_STACK_STATUS 74 +# define PR_SET_SHADOW_STACK_STATUS 75 +# define PR_LOCK_SHADOW_STACK_STATUS 76 +#endif =20 #include "target_prctl.h" =20 @@ -6399,6 +6404,15 @@ static abi_long do_prctl_inval1(CPUArchState *env, a= bi_long arg2) #ifndef do_prctl_sme_set_vl #define do_prctl_sme_set_vl do_prctl_inval1 #endif +#ifndef do_prctl_get_shadow_stack_status +#define do_prctl_get_shadow_stack_status do_prctl_inval1 +#endif +#ifndef do_prctl_set_shadow_stack_status +#define do_prctl_set_shadow_stack_status do_prctl_inval1 +#endif +#ifndef do_prctl_lock_shadow_stack_status +#define do_prctl_lock_shadow_stack_status do_prctl_inval1 +#endif =20 static abi_long do_prctl_syscall_user_dispatch(CPUArchState *env, abi_ulong arg2, abi_ulong a= rg3, @@ -6499,6 +6513,21 @@ static abi_long do_prctl(CPUArchState *env, abi_long= option, abi_long arg2, return -TARGET_EINVAL; } return do_prctl_get_tagged_addr_ctrl(env); + case PR_GET_SHADOW_STACK_STATUS: + if (arg3 || arg4 || arg5) { + return -TARGET_EINVAL; + } + return do_prctl_get_shadow_stack_status(env, arg2); + case PR_SET_SHADOW_STACK_STATUS: + if (arg3 || arg4 || arg5) { + return -TARGET_EINVAL; + } + return do_prctl_set_shadow_stack_status(env, arg2); + case PR_LOCK_SHADOW_STACK_STATUS: + if (arg3 || arg4 || arg5) { + return -TARGET_EINVAL; + } + return do_prctl_lock_shadow_stack_status(env, arg2); =20 case PR_GET_UNALIGN: return do_prctl_get_unalign(env, arg2); --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961336; cv=none; d=zohomail.com; s=zohoarc; b=mL5cWPikm9C4tpkQoHBQwFpX/jwe/YnY1e0jsIey5md2mY1XRFO7iBfKjRP11Ofo6D/Ke+W8MArAR5mbgpuuELPdIepBhcPQ5GNAI55iU39hAs+cDcIKr6nVReqpEVSPsuWzvj+WG+9tW61RgplPoBIHp+R6KWtpag0J0ynIXrU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961336; h=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=FvGI0BB4BkgReDRlpJ0vAJBgFtwv/7JiHcnBRC6GEYg=; b=PJH+D/5ivo0rmfjvNEl9e8V3bRYK0D+hr53XqEdw23emdxzEL7QrCs55gksyPPBvag6d2a2AcN3JL8e3sAXGnQET2X+t9m5d358KxFtQlAEbR2Lhq4dFzhY0YZFGnc/f0gMO0WZ9Srd9Y9Z+HDZVizO0HculTgYfETkHoK/JhjQ= 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 1759961336620749.6090544761182; Wed, 8 Oct 2025 15:08:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEt-0002mY-HP; Wed, 08 Oct 2025 18:02:27 -0400 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 1v6cDF-0001Kp-LT for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:55 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCW-0007QO-TC for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:42 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-782e93932ffso271549b3a.3 for ; Wed, 08 Oct 2025 14:59:59 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960797; x=1760565597; 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=FvGI0BB4BkgReDRlpJ0vAJBgFtwv/7JiHcnBRC6GEYg=; b=pUhb5OyMxaQygNxsjjlKcHB4KhdjfKsPN4vcBfvrpqtSDXZ4e0qNiRnRdzonN/gQGw a/AXuf6hEKeQM/fpf1KOx14gTSGvUDGv45I5QaBvXGEZCaSa387q5xkAu6nWmUBlkneQ b4pqlWaQTGuisY2bCLMwwzD7tUYp2+QMh6QjQAR0wppwK67k7kDcDpywp7LhqEIivsHO eQ7CTnm/3hFsdVDKt1jPlonpKzMJea5N0wkw9snLYais2wgjnLxd0nVKljV2WerD1axk CKCV0v13ONjJr2ld0m+uz1CBmcDzesDUR0tUPZsWVwWV/dNUVmvy+TSsM7IYSGt0TYHk r2dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960797; x=1760565597; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FvGI0BB4BkgReDRlpJ0vAJBgFtwv/7JiHcnBRC6GEYg=; b=Xr69RONEuP0aRN2UcOIgTr9OzE8HHbM/Gpg7eJ/xhypqj4jQSUU7E8eIFbKlnWUym5 tzKwL+1CLmlPhwD8w2lS9x03CR8Wu/rofhB9ybaVDqel0dgkQ7NtWHm35wf8r6eGkc+8 zZd4ng+S49ZkkY55BCFF7z6BCWBpO41UEHMu1MYBDFrZDKXyCyYXflhzzZjUiyIN5cIx hZF9ZqOgHZ1CCtRIvdgg2FavFxUPQxA3HQXkqXoe6AsAjFsYuToXVlvQeIydt+n9ehET 5gTefLk/OAjZzUJ3Se9KUHICftsL1H0G65Hy5I9oYMBP6Yw6/DCx1xKBJGiMcbIRlMYn OI0Q== X-Gm-Message-State: AOJu0YzNpYKpCQwoZc6TZQnYy9+QoXjT3ZQoqIC4QkvUUYQXE/6DBiR9 TKC6+5Po+XmspA8Liw48xOv+eU9BdmisJi6OGuPQxGbj/aeIsC6Z39mc7UiPHEbgW6GZN70scgL +Tx/wXbA= X-Gm-Gg: ASbGncv6lv0j5U8fB0iwrjc4BFwlM3zNWrLE6E+NBkyQBbtsY4UrMknrYU5HZ2cZhDT MFq5XDyhNV+16CCPKe95nxlzuJ8zn/HPuRcgC2+4dS8xGBzb07x1G1cKWlM89ozOjAh984j37wm evO01urf5U+5WB63XSML72h4kdPTLJk6Yuv911OTDMPblE5XZ7vnZzlMuvFRr0Vei23QOqOEm4X iJKgCQiIoJWm936vBt2oIUlwHsiAn5Q8MkO9l5oJg/6Er6gCyY428Wn6aFk1XgSkvC5d64pM3mJ UoJn45j3uPUPdc1ZrNyGAwehCADbXYzGLMHKGGb8le2IFcNA1ISd8B1q8p8oZE4bxfQU/cAkdeu 6MMVi5aHjLLCg21jUMgk4r69MpkKuVjdDkHBRQTtDAAzNCNcFZSnfg7YV X-Google-Smtp-Source: AGHT+IEAc4GvzAL0dv6Msuxwa3X4zbXmrRXsmweaAEN2LppmiCVAAL0iVf0LqYNHR2xRWG/nrI84Bg== X-Received: by 2002:a05:6a00:464e:b0:780:fff4:f7db with SMTP id d2e1a72fcca58-793874402c2mr5837938b3a.15.1759960796805; Wed, 08 Oct 2025 14:59:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 64/73] linux-user/aarch64: Allocate new gcs stack on clone Date: Wed, 8 Oct 2025 14:56:04 -0700 Message-ID: <20251008215613.300150-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, T_SPF_TEMPERROR=0.01 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: 1759961339794116600 Content-Type: text/plain; charset="utf-8" Allocate the new stack early, so that error reporting need not clean up other objects. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/syscall.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 56695de680..dffe6c2016 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6686,6 +6686,21 @@ static int do_fork(CPUArchState *env, unsigned int f= lags, abi_ulong newsp, ts =3D g_new0(TaskState, 1); init_task_state(ts); =20 +#ifdef TARGET_AARCH64 + /* + * If GCS is enabled in the parent thread, it is also enabled + * in the child thread, but with a newly allocated stack. + */ + abi_long new_gcspr =3D 0; + if (env->cp15.gcscr_el[0] & GCSCR_PCRSEL) { + new_gcspr =3D gcs_new_stack(ts); + if (new_gcspr =3D=3D -1) { + g_free(ts); + return -TARGET_ENOMEM; + } + } +#endif + /* Grab a mutex so that thread setup appears atomic. */ pthread_mutex_lock(&clone_lock); =20 @@ -6707,6 +6722,11 @@ static int do_fork(CPUArchState *env, unsigned int f= lags, abi_ulong newsp, ts->info =3D parent_ts->info; ts->signal_mask =3D parent_ts->signal_mask; =20 +#ifdef TARGET_AARCH64 + ts->gcs_el0_locked =3D parent_ts->gcs_el0_locked; + new_env->cp15.gcspr_el[0] =3D new_gcspr; +#endif + if (flags & CLONE_CHILD_CLEARTID) { ts->child_tidptr =3D child_tidptr; } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961678; cv=none; d=zohomail.com; s=zohoarc; b=KQR1PAHmISHucG2ZvhHHY70GVZ7P4H7JHLqXHUiffTg0kX4fDVqN1I3a5SNToXN4pJVQdv+FaxpgJll5qIRqBBxrHxT6GV/L9472MAzaX88Dc+xzkmjv7Sel5f9b3vYlnX+riZ+qri2qNzjsREV03s7uLCzrCtxUf59DRcLtkCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961678; h=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=lTKzFsxEh1g5nw3IQ5A0hf1nPRnygZE/fIp9mQ9w54I=; b=XaLeglpoqWtg3cP3dnXLhWGVu6Czv/cSvEv+vDGyubz7NCUlowfzmK7k7C1EhLGXTPAG3a8KhD/jFekPiSBli9wcapgYhQwNp+8LjetZ+LJWjdvR1590goHRO2hBAC9vEmB5HjxJVCogzf4IpkjvDIA416ommydwFjMydzZ7Am0= 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 1759961678727156.6318842740701; Wed, 8 Oct 2025 15:14:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEg-00024H-1i; Wed, 08 Oct 2025 18:02:14 -0400 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 1v6cDO-0001L4-HJ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:56 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCX-0007QF-OC for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:51 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-781206cce18so395801b3a.0 for ; Wed, 08 Oct 2025 15:00:00 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960798; x=1760565598; 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=lTKzFsxEh1g5nw3IQ5A0hf1nPRnygZE/fIp9mQ9w54I=; b=GFvsDmLEDnGfNvHJhv0EHDb2PRi09SVMM0btE8Vk1G5MhmwIKbPxTavUjma9OilddO 27vdYz6pVKX7r3vvmQIBVwW11NQ23y1+t1TUNRB15jJqX998fm/af6nFw5Uw6qV0LfuL 0dPnh385r+rZDuReOZKUGVTysAyWalphZKNjObkEe84VsfDLgtIIuyHY1hqD4WBDaeOt j3QYcsTMF1OXdd9p1o6KNBqHb2tQ+W1XEYdPwIeocp+XrHpVaPUI6CUJGJQb6s3dvK1L sHoJSuo9g3UNYUKM7zt6u3kxMOagRRNJPioYGnpAUM6OI1JxU/1l0WuUdXIJufGenvyB N//w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960798; x=1760565598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lTKzFsxEh1g5nw3IQ5A0hf1nPRnygZE/fIp9mQ9w54I=; b=hp/WeWT9R4vKBMWPXdwe31KBE2zncY7lORIr4akQ6StBGN9oZtltWEPRWQjKioKfJQ Rz5sRqBT98bnp22Sz5F5ubNtB5xGjciGLQo07sCADKYDF/hb07NWT+tmVGl+se/kgIGK pK/O4BfOF49RHjxAcrU60+QnCIj58nTf8Stf+KzQuHq48iXn4nTRM2R/gRBmJxZ5F50Y lKZSsCnFfFvRGhv0bHOeiWoUmQsvWjfPsC5p8D8I1D2V3MWRVq2LEo0xgtFg+FZZy53b WNFniZF+LuF3vTL0AGSBG8Zfje+bcfbGBRdGEPUR0Pr1/oFvVrWDwAPg7rGu5Vv71uWL +jIw== X-Gm-Message-State: AOJu0YzDj8fkjH2Fp5tm847zfUa3PbkfM+EF/UwF/E6eG7c7ZBatH17i 31IH1mbFU1R5qfYHyWfeyWt5NfKOAnhe7zMmmwJ4j+DschvGEzygxaard9pWvrtZb5IL0r5HshO RzOB4pCk= X-Gm-Gg: ASbGncvzbZ8x6gZpliVop65r9BrJxAgSiWO4N0hP7VV8nzOIky3LrReMQAuSez63+lc vd6y6q++h55jbUQNeQZCq++peG/8bn0fiT4ZmIgW6twXNrG+tjP0m4DNbuIYq7aRiGFrbnYwMo2 vhTyzv3uwG4zwjSt89MXaf4rNAVmHiqhKCAuSspdbrCEe0RFtpeFeJLHVe4VY5sZPXEvhjjfJpe /Z3Ynoju8XT4BqfNmNKXrlQblVqaHs4zV45w8qE2vdbhfTa3MV5yltjB0tSJcwyqEL0ClWkz2nj +rts7VxQPZNLrQVIsfCBZbn3r4IQjdyuFXH0kbthWoD1YUmNH+GkwgQhVGPVLrRTATjPqH70dDe GC9iqy9nl2N7o9WzOt8jGBva/Z8mnRxnKQYifAVSWJfmIzSkGWOyUyhxz X-Google-Smtp-Source: AGHT+IGPElA6LyKGONa2uJy2l1RySpApELCF5vOSTiV5b5YbzEOMxqdgnMKg6XQnysJoXGAxldVX/w== X-Received: by 2002:a05:6a00:14d0:b0:77e:d2f7:f307 with SMTP id d2e1a72fcca58-79398c9763fmr6093297b3a.9.1759960797592; Wed, 08 Oct 2025 14:59:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 65/73] linux-user/aarch64: Release gcs stack on thread exit Date: Wed, 8 Oct 2025 14:56:05 -0700 Message-ID: <20251008215613.300150-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, T_SPF_TEMPERROR=0.01 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: 1759961680025154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/syscall.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index dffe6c2016..47a6b58cf5 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9429,6 +9429,12 @@ static abi_long do_syscall1(CPUArchState *cpu_env, i= nt num, abi_long arg1, FUTEX_WAKE, INT_MAX, NULL, NULL, 0); } =20 +#ifdef TARGET_AARCH64 + if (ts->gcs_base) { + target_munmap(ts->gcs_base, ts->gcs_size); + } +#endif + object_unparent(OBJECT(cpu)); object_unref(OBJECT(cpu)); /* --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961717; cv=none; d=zohomail.com; s=zohoarc; b=Sp+eSCk6wAg9QMUUUuLLFv042HDayWRJxOggSspgCuOMup89ioAkooLqvsB4gRkXeNlDp+D37oj0orsRXMYHrqia5TiKj+mGzFYtI1r343cvTE/2XWBMpNahOZVszKcBkkrLP84F5bzmynPtlyoyeGNvcDi2q9Mfr+ZSyj0U0cQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961717; h=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=o4IFYSpPWlkanvTR9M2Vxqoi6bNBaOs+Vl8SdKAnnaI=; b=I+PrEUJzQhm9ieH8GQRGQ6gfNd5hGxOrsphLfpmXS4XsxlKZImbghghlKK8e+zJmSi1WXyAbUiF1aKva5CtWtpWC0/NnqydFCTIY4NSDr7JGI1WOQvddJ9bO/D39Ti13dZ+z9BPdqH+hJ9Vr6Fz3cPUHRKPGOQfVGd0HY2XNaAg= 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 1759961717543174.96404344489656; Wed, 8 Oct 2025 15:15:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEy-00033Z-Ka; Wed, 08 Oct 2025 18:02:32 -0400 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 1v6cDX-0001Ru-Hg for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:10 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCZ-0007Qm-NF for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:01 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-780fc3b181aso183473b3a.2 for ; Wed, 08 Oct 2025 15:00:00 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960799; x=1760565599; 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=o4IFYSpPWlkanvTR9M2Vxqoi6bNBaOs+Vl8SdKAnnaI=; b=oLOYSWhEB9NQMWpO09EA46jhWeUz4PwMyvAFUwqqsDnqRwNVJDBHdsJSSuBx3OyMO8 M33nYs5/qII4WTiePvvU+D8W5gBVtLz6aV0rDK9kOWik0CjLGIgC+0bRecX4GjtmP3Mu V1c9E50sFWKFd4fBcphPp2gkyYtLaXpPlGZWUdGTxpuHdyyiW1wobvTsXEVBRZ4a/YmX piDiZuZ0g+dLHN7KAMRvwJCjtVgbSZqsG+V5oS9Vh33N4ctIMyZrj7YZhP+fOsRdIR74 P3uLrQkTnR8lErl4BPNpo2cE1LuDJkdhEto6xux9bfhbfrB+OIjYD4tbrd18de5JXkZy WyHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960799; x=1760565599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o4IFYSpPWlkanvTR9M2Vxqoi6bNBaOs+Vl8SdKAnnaI=; b=CWEyQAK3FVgJSzNj4O9S8aj2INd8+jyVNr2GCrggEfO/zQjrv9oB10Lr5qDLOrvHrq naoPM9nYklUjpdK5rTJqgAj+rt2c31crZbMhhkuIEJliVtAL7U9S5EpMQz2O4LpU0oPj XSdNlnkanHvAqLYtoEHZK+m/S5PYtwUM30/V5huUgsaifaly+P/QH8wJ2c5xj1ttlE+Z ZvuZPRi5Yw0P6ECmYmaBZTmTduVMy3AS5dIudE+fGFTzb9RkwRcFXtVJEAYxQY1+U3xW Ch8g93HOxN683TPK/rfhaWMk9S7ydoKl+0mM9WzY5/RwloDbUZrRVKDHGR1luB2+X8cv rE4w== X-Gm-Message-State: AOJu0YzWO3Mw3GRdqBBupnaQWghrQy8eMGMUHBnyeQn2ISKLCT3NRgHf gfUW//wilNxiuNBwFBlLaqBn2H9Pu2Bt1DTEItRTjOaOpU7VdU+v26ssqXcqzrNuXxgeCNWcCqt vHFbVW6U= X-Gm-Gg: ASbGncuVlRxX0HhzXz8NtqKw1nRYNaHoGG2PM64H4LCHxZY9gFF8V+OVrC21PXEazpK IRTN38sRIxJ0bxpj23hcLPSWK+oumfjp/Bkg9daB13U2h+VOTzzrRqhJt4F46xYxVYXHm+K1dHP Zpn8MHLWxCwQC0giEGGI4GTOH1U5pjaLhasgJq0J01j5bPe832L1CIipEVLC5F3YIpJQpTh2Hoy pdpJ//R2zM9Nkd+mndWyv9idWhX8fa6sb0gaoAL8d030FrMxlKJlZkpI9aG/HWbxvhOKIgotL4q Er6Zr2Aq38MHafQNY8Sd863n/hmMYKc5oDmJkGVfNZXn1UgLILdPmWqSpCphR5fuIVHtk93i4Dl WcN4UrfSnQMUoCat9u2S8J2+KeXBEV4duZPh89OpEnWc3VZbMI0+/BFlr X-Google-Smtp-Source: AGHT+IFLyAHi+sQro0M8V2tTBsNFCwcjpYwN31nbcmlRFL1/y38t04Rub5dj3FL2MM+wr+OU7rX38w== X-Received: by 2002:a05:6a00:3911:b0:77f:3a99:77b1 with SMTP id d2e1a72fcca58-79385703346mr5002224b3a.9.1759960798590; Wed, 08 Oct 2025 14:59:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 66/73] linux-user/aarch64: Implement map_shadow_stack syscall Date: Wed, 8 Oct 2025 14:56:06 -0700 Message-ID: <20251008215613.300150-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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, T_SPF_TEMPERROR=0.01 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: 1759961719198116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/syscall.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 47a6b58cf5..8546f48a05 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6358,6 +6358,12 @@ abi_long do_arch_prctl(CPUX86State *env, int code, a= bi_ulong addr) # define PR_SET_SHADOW_STACK_STATUS 75 # define PR_LOCK_SHADOW_STACK_STATUS 76 #endif +#ifndef SHADOW_STACK_SET_TOKEN +# define SHADOW_STACK_SET_TOKEN (1u << 0) +#endif +#ifndef SHADOW_STACK_SET_MARKER +# define SHADOW_STACK_SET_MARKER (1u << 1) +#endif =20 #include "target_prctl.h" =20 @@ -6605,6 +6611,54 @@ static abi_long do_prctl(CPUArchState *env, abi_long= option, abi_long arg2, } } =20 +#ifdef TARGET_AARCH64 +static abi_long do_map_shadow_stack(CPUArchState *env, abi_ulong addr, + abi_ulong size, abi_int flags) +{ + ARMCPU *cpu =3D env_archcpu(env); + abi_ulong alloc_size; + + if (!cpu_isar_feature(aa64_gcs, cpu)) { + return -TARGET_EOPNOTSUPP; + } + if (flags & ~(SHADOW_STACK_SET_TOKEN | SHADOW_STACK_SET_MARKER)) { + return -TARGET_EINVAL; + } + if (addr & ~TARGET_PAGE_MASK) { + return -TARGET_EINVAL; + } + if (size =3D=3D 8 || !QEMU_IS_ALIGNED(size, 8)) { + return -TARGET_EINVAL; + } + + alloc_size =3D TARGET_PAGE_ALIGN(size); + if (alloc_size < size) { + return -TARGET_EOVERFLOW; + } + + mmap_lock(); + addr =3D gcs_alloc(addr, alloc_size); + if (addr !=3D -1) { + if (flags & SHADOW_STACK_SET_TOKEN) { + abi_ptr cap_ptr =3D addr + size - 8; + uint64_t cap_val; + + if (flags & SHADOW_STACK_SET_MARKER) { + /* Leave an extra empty frame at top-of-stack. */ + cap_ptr -=3D 8; + } + cap_val =3D (cap_ptr & TARGET_PAGE_MASK) | 1; + if (put_user_u64(cap_val, cap_ptr)) { + /* Allocation succeeded above. */ + g_assert_not_reached(); + } + } + } + mmap_unlock(); + return get_errno(addr); +} +#endif + #define NEW_STACK_SIZE 0x40000 =20 =20 @@ -14065,6 +14119,11 @@ static abi_long do_syscall1(CPUArchState *cpu_env,= int num, abi_long arg1, return do_riscv_hwprobe(cpu_env, arg1, arg2, arg3, arg4, arg5); #endif =20 +#ifdef TARGET_AARCH64 + case TARGET_NR_map_shadow_stack: + return do_map_shadow_stack(cpu_env, arg1, arg2, arg3); +#endif + default: qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num); return -TARGET_ENOSYS; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961822; cv=none; d=zohomail.com; s=zohoarc; b=d9E64+Tjhz6eY5SIMw8M80e2nB5+78c19JQp/7qRPPwmB3ErM2GAHtk/odDFvSY/pNcUX+2l0yE7KoIwtnhf7c5uMFsogNJ7urYUNs9il9UJhw3qlrUJOzvUcYR/KGPpumVJNeMn/CUrCS714Ahn7p2w/wbPdkUh+7wsJSJCSxA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961822; h=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=JF8VeHAMXnS+KlXHqFd9bhXPg9cRL1eKSmFQYNi3XjE=; b=UXFRX04XYDhzTy0kTHPGxhsh+45S3l+R0RM65KW0VFKqtPngg1SIO0HGi7ucDVhda0C/FysOKxHDY8W/UElwkOrOfzhP9Z9yWZX6Pswk84iFP4dpaOtiqD/zPmskFiXVkH/xyW4sYD4dYIOS1SPGcmV2BizkWdKlEjBEs2Hcv+Q= 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 1759961822887328.4794761901585; Wed, 8 Oct 2025 15:17:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEs-0002cQ-Ah; Wed, 08 Oct 2025 18:02:26 -0400 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 1v6cDT-0001Op-0e for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:01 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCZ-0007R4-GA for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:58 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7833765433cso408705b3a.0 for ; Wed, 08 Oct 2025 15:00:02 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960799; x=1760565599; 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=JF8VeHAMXnS+KlXHqFd9bhXPg9cRL1eKSmFQYNi3XjE=; b=JpTMzFB0A8dvSnVgxkgKX+8zRw+lqSnUD56GqX87ZzTfjYAG30FSF9aih5c/bAIPVu DnrDt68UHhxGpOTcuOzbjIEEBdwoFMS+w++yGfvepzkaSG87zlszV0nMdQ28k0OPIHcJ qyvJ7Witw4vfr05xjbvpj8EslknoKtE8XBrDUfpVDcBv/6HrmIfsTzUl7C4Y5DLzeH0f wSkFMQNwdjjgJHxykLJoXtT/4Ik61AN1/Uvhhot1trJ8zQSYKKQZESLW57R0O9vLhgNg 9OrBTDXix0sB5WswYdJ0tqZXzo+rI+8zS9INjwTEFd4xGmzVsVIZGD963bqO1MklzjuV ohGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960799; x=1760565599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JF8VeHAMXnS+KlXHqFd9bhXPg9cRL1eKSmFQYNi3XjE=; b=oMK+qdmgKsYd0xiviPKRCJDIltkGFEIVix+MtGA7mNSidU58HWEL2Y3Z0nh5SL6Jxa Xt7vgm8U9ikv6iQHJJL6+CraUvz2ZKFT/rQ0mpoE/KfIDHyvdPJo6SeAKsM0fDQsCDOm uArBC2PRZ8vqkhUQrC+PaI8+f8DXIVPWWWAFNwqY6AjxHXkeUfG6JKxivKONpDUl0nPm glDJ3RPfsAYPgrcgydbVHKUA+QC5chToFghKuSoAloT5KdrWtp3QwZ2+i6YbB/u1FJfI fyrjx497s4lyyiCyX5RKZsHPqdhOXbm6dh7j9qRun2KhvH4MbqpJ2KtpHuqNEBKyudbO iOZQ== X-Gm-Message-State: AOJu0YxlPgpgLO6aYHsMHAU62sW5R//v8hJeoEGHoWk1OtNLIxqL2B8Z G2pphyCQamN9PSW5IeKC+WYw9FFRl/Z8WhTtBzbV/ecIn3MS8XC2OFRpGFKqb5uFTb8dvbdLVFI LoHGWhQY= X-Gm-Gg: ASbGnctl+LbYwVNKjETTwhcdbYfd6OUlUM7Gw+/uxTsy32WjX660pKuBRTe6ayxKZ+A apo1L/g5bSneYwZp+F86oQsBUxSs0qfzSyfsvr7tmAY41kn7OcrRpZqpy1IHcSWrblZmHWEdJOx oIRbcIZsgCVxuHQHwR7O0m+1dFBboITn9d/1/0d7gKtDf7JMxacSoncOsInCXXUdHgTGSJGlw8+ Nta29KUDhbMhUmaPmG+u1TiU8Psd/5gJaSsrfzGZkLknkcFlVktgDirPXHeCIyfJXn5PD/gwdEf nDQ7FeSp8w7CZ+SyJ6/7yiSVzAAwzialKr9StVQW0F4FqZ7eDpy50fEUyv74qJHWC+6Yw6zWiNq etasYUrD79GpDw/5ayMDQCPEWwE2ymBJjk8loQNe2B5v0FiD3ZP1brUZh X-Google-Smtp-Source: AGHT+IGIyg+oA9mlKAcTLf1i8OHTwGFKyoVgiS8XG1UJC57JAAkearSkYVvm2q72NSJ12QW1evtadQ== X-Received: by 2002:a05:6a20:7286:b0:2b7:949d:63da with SMTP id adf61e73a8af0-32da813958emr6611633637.18.1759960799234; Wed, 08 Oct 2025 14:59:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 67/73] target/arm: Enable GCSPR_EL0 for read in user-mode Date: Wed, 8 Oct 2025 14:56:07 -0700 Message-ID: <20251008215613.300150-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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: 1759961825685154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/cpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 8ecf8a5e4d..98da468313 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -311,6 +311,10 @@ static void arm_cpu_reset_hold(Object *obj, ResetType = type) env->cp15.mdscr_el1 |=3D 1 << 12; /* Enable FEAT_MOPS */ env->cp15.sctlr_el[1] |=3D SCTLR_MSCEN; + /* For Linux, GCSPR_EL0 is always readable. */ + if (cpu_isar_feature(aa64_gcs, cpu)) { + env->cp15.gcscr_el[0] =3D GCSCRE0_NTR; + } #else /* Reset into the highest available EL */ if (arm_feature(env, ARM_FEATURE_EL3)) { --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961834; cv=none; d=zohomail.com; s=zohoarc; b=IvAWHB24eq+Brf1uSkIvK4IcB8IZeLWrlforl3rceD07UP0U+bLWSZjYjMRC8UogprvC0FuNP1g+M3iEf/f6MHa2Pz5OavlE/zQblskqXsNfIJquGlXPAzetRsiWgNn4fH5WvVey3evXc2bhgcPbcJHizOvC7rypAf188Pbsau8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961834; h=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=gclATv708qJLJB/SCyo2oWtJwkQ64mZdma6VCmxYGoI=; b=PGF2ForLaIV7ARHa2FofUr8rtjMM0Xgrff8KDn/uDUXCn85ZMH+44NxEcIpxu0qqaLGN7BKLnZWM6BgQiJdyre30fjDNKjT55+r28gWBtKgQejZi6rKTknZGaQ20JmSROB4ktHW8oUplNa3ffpoa8CMSRCnoiWPNbIYj3Jxq6wU= 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 175996183463761.060630722147835; Wed, 8 Oct 2025 15:17:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEu-0002nh-NI; Wed, 08 Oct 2025 18:02:29 -0400 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 1v6cDU-0001Oq-AL for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:02 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCZ-0007R0-Va for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:59 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-77f1f29a551so388115b3a.3 for ; Wed, 08 Oct 2025 15:00:02 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.14.59.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 14:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960800; x=1760565600; 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=gclATv708qJLJB/SCyo2oWtJwkQ64mZdma6VCmxYGoI=; b=glyo/OPv0HQAKkOVu8l/q9TNtiFqF7FyD5ni5HuApkq8lxf47Em238dDPI9i17jU1N Mz3S8nMsha8iA1chbkqf65W6JO8leCoPgZwYmUjw5YX0r+Bma1I5MkHsKuzhYNTCk8v4 MCDMZG3A45SMXbiwayyR84OeB4WdWMuHnP9+U0o7hXFE4Q1R7ZPXl/nWDDlD+VqAWnj/ nDawtxOnKkqdIOBsCzN1m4eotjmvkO3L+5+YeXo8N2zxC9Y/zgCBRAmBwemlMoU4jrLK EBKrKw6OU1s6rVPJdFOHINlAlwO18kFr8xDBuV5hhsYPEoSi9QDePS5KSq0tEf5VuTrC H2yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960800; x=1760565600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gclATv708qJLJB/SCyo2oWtJwkQ64mZdma6VCmxYGoI=; b=d9LeYVZ93cWmjuw9kkYI47wDIG47g6ecbL28PYXlqKWFDOZlFizZlX+eOgg7h3DfVT 5bigc7ZzuCspl+HiXH7fK6pnJG5b9sCjA7LyBDvg7JZkmSXc2RjumNBesjBmPRbHPQNs e+ucUqsmBeMv3KdSf6l8ol3pMoSQwNk6Fp8mMYIg2zQx7VPqSVvUGZXb5IUHmouh0MSS bRg8P8Km9Srpwmv2UtVsSyrEnYn6hioTwc7P6tCoGYyPPIa+llowUVSahcdjnFvrQRf9 WIZBzTUVXc1j/JS1/J3gb4IT7vyiG/hE2Sehl+0wF/O5FVChtGBQ4VhWhAavP9Ux8fvB zGtg== X-Gm-Message-State: AOJu0YxeyT3HKSI6nABFUp3xJ2rkPhFAhj095IATmggJoIFI0TG0EWZk L1nXZO8DLXkDoDn0zyEcCIC3EYHqjSAcE0VM1YxL2J8TlRR+F4SDd1dswdVbQcTOBw/vxDSAkug qxxMAHYk= X-Gm-Gg: ASbGncsQxuS28Q5bFit8rqScyTuHmJ35k4/EfraZ4hPqbdFMQzRMv2Ux/y5/PLbZJqF qf/BnHNrwSeQlUVg7fTXmYjkJKYAkK9E3Bf3w2COaAd/rrJ2mynt4vbra5SWCfEDV4aUf8whW6R r92j+JXl2vG50YNt5K7LeLvw4TKQadFr5em9U3Q+0qjfUMkeVDH+Ek3I6Pnge2lZVWPfHV65FkW gcITjIAgVagYsxd+/k28MJHoNWmaf2KttLn0g2QRtLC8wk3NDRA/+hIvQ6x6CONdSpiWMFEiZOJ QUr/ROT/U8ixpeczdX6nS31Bbp1JDfKTghcSnVgWDf+1QjX2aAiBD1dlflKx9yMchjS5VjmDyBc V26ve/J6/b6fawfjQAoyrACqyYSZ+vQSyixeCdIkfSnYJ6v2yTnmoPJIR X-Google-Smtp-Source: AGHT+IE9NJmhfn5ox8y9wKFZDBD4qS0zmwY6LdO+/QAGFkuQSgBgXBPbfhS2H+EXyoIROxFXpoI7vA== X-Received: by 2002:a05:6a00:1406:b0:78a:f70d:b80c with SMTP id d2e1a72fcca58-79387826a86mr5410572b3a.22.1759960799894; Wed, 08 Oct 2025 14:59:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 68/73] linux-user/aarch64: Inject SIGSEGV for GCS faults Date: Wed, 8 Oct 2025 14:56:08 -0700 Message-ID: <20251008215613.300150-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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, T_SPF_TEMPERROR=0.01 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: 1759961841130116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/aarch64/target_signal.h | 1 + linux-user/aarch64/cpu_loop.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/target_signal.h b/linux-user/aarch64/target= _signal.h index 6f66a50bfd..e509ac1032 100644 --- a/linux-user/aarch64/target_signal.h +++ b/linux-user/aarch64/target_signal.h @@ -7,6 +7,7 @@ =20 #define TARGET_SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ #define TARGET_SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ +#define TARGET_SEGV_CPERR 10 /* Control protection fault */ =20 #define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index 50a4c99535..7f66a879ea 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -89,6 +89,11 @@ static void signal_for_exception(CPUARMState *env, vaddr= addr) si_code =3D TARGET_ILL_ILLOPN; break; =20 + case EC_GCS: + si_signo =3D TARGET_SIGSEGV; + si_code =3D TARGET_SEGV_CPERR; + break; + case EC_MOP: /* * FIXME: The kernel fixes up wrong-option exceptions. --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961496; cv=none; d=zohomail.com; s=zohoarc; b=eYXsnSQo5awAC4WISQpJGc3+KFgXKckV3Qu/8wl4EB2GY13nZwrQshKf9Gd9dJldj0oILnEC+nq2bfE197PU36UZM3Jzwg3DOqsy2Y2YCdQbi44Hw3rubh7ZXJCoqdpPtXx08Qp96WjUbI14/+rvDmVP9fcMlktrRruYIFWklA0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961496; h=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=jUo2eLEQH3tvadRbtyXeqZmXKqgrSzHJmdQtpKn9Hto=; b=AnqDJRGs7nG1BfMwJMYQLvqISU7drOm5aVKd6SLhIAR4W8IvjdeBacTFpPWMucEIXzLxgF3dUdhvNoB51nP39Gc13hjF738d9fQYFyb4YEzgLugqfPb58Oj6QhFpcRyOibEqGd0x8YCbWvidvB1OH2PvDezv3DM0gXIGaXYOyN0= 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 1759961496491814.6084201612631; Wed, 8 Oct 2025 15:11:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEw-0002vu-BO; Wed, 08 Oct 2025 18:02:30 -0400 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 1v6cDh-0001UK-MZ for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:19 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0: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 1v6cCa-0007RO-0S for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:07 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-781ea2cee3fso308871b3a.0 for ; Wed, 08 Oct 2025 15:00:02 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.15.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 15:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960801; x=1760565601; 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=jUo2eLEQH3tvadRbtyXeqZmXKqgrSzHJmdQtpKn9Hto=; b=SX5R2+Mt/DZ+fk3dvM1EhzjTP6G7R1cOnnpsGSyPQDWYjyjwZ0MoIPMNLTOmbHislV Qzm2Zz7DsIi+Sg7bjwSWeBwFfcglCAMetWsgdjad8o/VcYHnshlPgJykhWbnzuHC1uIK KHsHyZ5emt+/fzR260s0exO6QlBc4WaQTgEFXQitE2CzCfHx6G4a3wpC3ZpFE+CkEQsJ h5iQxOGFZoSMdTkRGpd5hHDIAb66Zu7J3CI08Xy/SQ0YgDQoGFa5U+75QCsnm4QS91o/ RlEPhvGzpSCsJ2jUki4tH0PY3emQmTGf4YTd+UyLVIunrQYx19/ZbP91AuoZYfAyAsw6 Jmtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960801; x=1760565601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jUo2eLEQH3tvadRbtyXeqZmXKqgrSzHJmdQtpKn9Hto=; b=hXeWTI3C0U96mvCdRMvhzjdfkzP/+zRPZLUqUI1BGEPG5cqYrH9pqpO7Cw5TSeGQAz 1LJMYS1v/aCt8aTxNfykCpPOycxLiX0coRXCe0ujxEJPrl1Psw90Ay0yy4hd4BZPxtSX KrqMh8pLtcSNtF4MlnXcKZ5DSI+dvUe/XU3GD1qVCgMHVh71jqOQVOCy1fSo3ea+EPu4 lQrk/lI6Gju3j0bsaqI4YS3qugKw/EeDUQbVB8xZ4w/eZ8+1oPqz28BJXm+R1dvk8Wv1 LxWtJMQkhgBWlFyT1onbZiT/GzHB75E0uXh5R13YZWPB5gbL6ODfZwFanE8V2xq8gwpu /xSw== X-Gm-Message-State: AOJu0Yy7rqY9/np+pLIAswTEoKWhFKXRibh6G83aqmKdm9f8gN7+cdeG pXiVKOtStn1NlNPXEEZocwCH5B4JsB2XqwkI1RRQ89+7sR2cnpAab73ohYyPSg+BSOayT2V4ObQ uRnzwgFo= X-Gm-Gg: ASbGnctt4M2ItV2wkT5wQ7v+r0kk4YijxFIRMzbnDWn2i5M36nSojPdpBIxlC/7OXoR 6ZtnbOOjF4bQVrt/jsmv+2Vyix3p84yhX+C8UNWWXopJfq2Y+8qIbfMd8uTkKswei56ZJQmnQBG j1b2DC+CDinT/sXU+UtGWd/OuKIQgXBHYV59AbgkTTvWsFXRc4Ukapni1DpJwfdoMP8SV8r/yyO o4OhcbMXdFqWZbsqLkAFLGxfvh1xOnAX62IwV0hpfZzkod9dhYRY5A+8qEm555/V6GtNxuQGAoI sEFQlIOj1g1haugPb/hHG3y1eXxWqbJ71uZGTUQk11Yzxg2BY03XUhS2/TjTH9RkuOS68DGilkA aFJVCAwZcCl1ZnVud6vS4VrDy1hN69P5rqxS0LmS9cerw3PqAuX6qNYwdMdasFNmfkIA= X-Google-Smtp-Source: AGHT+IGGWYcaFKaFoCMBMA5VTA3mg8dktTKgIXCGMmo56TAXwjgjAFJ8iVcatXl+9Kv+Bvckl8WrPg== X-Received: by 2002:a05:6a00:92a2:b0:783:c2c4:9aa5 with SMTP id d2e1a72fcca58-79387d0f5aamr7090675b3a.32.1759960800496; Wed, 08 Oct 2025 15:00:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 69/73] linux-user/aarch64: Generate GCS signal records Date: Wed, 8 Oct 2025 14:56:09 -0700 Message-ID: <20251008215613.300150-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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: 1759961502453116600 Content-Type: text/plain; charset="utf-8" Here we must push and pop a cap on the GCS stack as well as the gcs record on the normal stack. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/aarch64/signal.c | 138 ++++++++++++++++++++++++++++++++++-- 1 file changed, 132 insertions(+), 6 deletions(-) diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c index ef97be3ac7..f7edfa249e 100644 --- a/linux-user/aarch64/signal.c +++ b/linux-user/aarch64/signal.c @@ -22,6 +22,7 @@ #include "signal-common.h" #include "linux-user/trace.h" #include "target/arm/cpu-features.h" +#include "gcs-internal.h" =20 struct target_sigcontext { uint64_t fault_address; @@ -152,6 +153,16 @@ struct target_zt_context { QEMU_BUILD_BUG_ON(TARGET_ZT_SIG_REG_BYTES !=3D \ sizeof_field(CPUARMState, za_state.zt0)); =20 +#define TARGET_GCS_MAGIC 0x47435300 +#define GCS_SIGNAL_CAP(X) ((X) & TARGET_PAGE_MASK) + +struct target_gcs_context { + struct target_aarch64_ctx head; + uint64_t gcspr; + uint64_t features_enabled; + uint64_t reserved; +}; + struct target_rt_sigframe { struct target_siginfo info; struct target_ucontext uc; @@ -322,6 +333,35 @@ static void target_setup_zt_record(struct target_zt_co= ntext *zt, } } =20 +static bool target_setup_gcs_record(struct target_gcs_context *ctx, + CPUARMState *env, uint64_t return_addr) +{ + uint64_t mode =3D gcs_get_el0_mode(env); + uint64_t gcspr =3D env->cp15.gcspr_el[0]; + + if (mode & PR_SHADOW_STACK_ENABLE) { + /* Push a cap for the signal frame. */ + gcspr -=3D 8; + if (put_user_u64(GCS_SIGNAL_CAP(gcspr), gcspr)) { + return false; + } + + /* Push a gcs entry for the trampoline. */ + if (put_user_u64(return_addr, gcspr - 8)) { + return false; + } + env->cp15.gcspr_el[0] =3D gcspr - 8; + } + + __put_user(TARGET_GCS_MAGIC, &ctx->head.magic); + __put_user(sizeof(*ctx), &ctx->head.size); + __put_user(gcspr, &ctx->gcspr); + __put_user(mode, &ctx->features_enabled); + __put_user(0, &ctx->reserved); + + return true; +} + static void target_restore_general_frame(CPUARMState *env, struct target_rt_sigframe *sf) { @@ -502,6 +542,64 @@ static bool target_restore_zt_record(CPUARMState *env, return true; } =20 +static bool target_restore_gcs_record(CPUARMState *env, + struct target_gcs_context *ctx, + bool *rebuild_hflags) +{ + TaskState *ts =3D get_task_state(env_cpu(env)); + uint64_t cur_mode =3D gcs_get_el0_mode(env); + uint64_t new_mode, gcspr; + + __get_user(new_mode, &ctx->features_enabled); + __get_user(gcspr, &ctx->gcspr); + + /* + * The kernel pushes the value through the hw register: + * write_sysreg_s(gcspr, SYS_GCSPR_EL0) in restore_gcs_context, + * then read_sysreg_s(SYS_GCSPR_EL0) in gcs_restore_signal. + * Since the bottom 3 bits are RES0, this can (CONSTRAINED UNPREDICTAB= LE) + * force align the value. Mirror the choice from gcspr_write(). + */ + gcspr &=3D ~7; + + if (new_mode & ~(PR_SHADOW_STACK_ENABLE | + PR_SHADOW_STACK_WRITE | + PR_SHADOW_STACK_PUSH)) { + return false; + } + if ((new_mode ^ cur_mode) & ts->gcs_el0_locked) { + return false; + } + if (new_mode & ~cur_mode & PR_SHADOW_STACK_ENABLE) { + return false; + } + + if (new_mode & PR_SHADOW_STACK_ENABLE) { + uint64_t cap; + + /* Pop and clear the signal cap. */ + if (get_user_u64(cap, gcspr)) { + return false; + } + if (cap !=3D GCS_SIGNAL_CAP(gcspr)) { + return false; + } + if (put_user_u64(0, gcspr)) { + return false; + } + gcspr +=3D 8; + } else { + new_mode =3D 0; + } + + env->cp15.gcspr_el[0] =3D gcspr; + if (new_mode !=3D cur_mode) { + *rebuild_hflags =3D true; + gcs_set_el0_mode(env, new_mode); + } + return true; +} + static int target_restore_sigframe(CPUARMState *env, struct target_rt_sigframe *sf) { @@ -511,8 +609,10 @@ static int target_restore_sigframe(CPUARMState *env, struct target_za_context *za =3D NULL; struct target_tpidr2_context *tpidr2 =3D NULL; struct target_zt_context *zt =3D NULL; + struct target_gcs_context *gcs =3D NULL; uint64_t extra_datap =3D 0; bool used_extra =3D false; + bool rebuild_hflags =3D false; int sve_size =3D 0; int za_size =3D 0; int zt_size =3D 0; @@ -582,6 +682,15 @@ static int target_restore_sigframe(CPUARMState *env, zt_size =3D size; break; =20 + case TARGET_GCS_MAGIC: + if (gcs + || size !=3D sizeof(struct target_gcs_context) + || !cpu_isar_feature(aa64_gcs, env_archcpu(env))) { + goto err; + } + gcs =3D (struct target_gcs_context *)ctx; + break; + case TARGET_EXTRA_MAGIC: if (extra || size !=3D sizeof(struct target_extra_context)) { goto err; @@ -612,6 +721,10 @@ static int target_restore_sigframe(CPUARMState *env, goto err; } =20 + if (gcs && !target_restore_gcs_record(env, gcs, &rebuild_hflags)) { + goto err; + } + /* SVE data, if present, overwrites FPSIMD data. */ if (sve && !target_restore_sve_record(env, sve, sve_size, &svcr)) { goto err; @@ -631,6 +744,9 @@ static int target_restore_sigframe(CPUARMState *env, } if (env->svcr !=3D svcr) { env->svcr =3D svcr; + rebuild_hflags =3D true; + } + if (rebuild_hflags) { arm_rebuild_hflags(env); } unlock_user(extra, extra_datap, 0); @@ -701,7 +817,7 @@ static void target_setup_frame(int usig, struct target_= sigaction *ka, uc.tuc_mcontext.__reserved), }; int fpsimd_ofs, fr_ofs, sve_ofs =3D 0, za_ofs =3D 0, tpidr2_ofs =3D 0; - int zt_ofs =3D 0, esr_ofs =3D 0; + int zt_ofs =3D 0, esr_ofs =3D 0, gcs_ofs =3D 0; int sve_size =3D 0, za_size =3D 0, tpidr2_size =3D 0, zt_size =3D 0; struct target_rt_sigframe *frame; struct target_rt_frame_record *fr; @@ -720,6 +836,11 @@ static void target_setup_frame(int usig, struct target= _sigaction *ka, &layout); } =20 + if (env->cp15.gcspr_el[0]) { + gcs_ofs =3D alloc_sigframe_space(sizeof(struct target_gcs_context), + &layout); + } + /* SVE state needs saving only if it exists. */ if (cpu_isar_feature(aa64_sve, env_archcpu(env)) || cpu_isar_feature(aa64_sme, env_archcpu(env))) { @@ -779,6 +900,12 @@ static void target_setup_frame(int usig, struct target= _sigaction *ka, goto give_sigsegv; } =20 + if (ka->sa_flags & TARGET_SA_RESTORER) { + return_addr =3D ka->sa_restorer; + } else { + return_addr =3D default_rt_sigreturn; + } + target_setup_general_frame(frame, env, set); target_setup_fpsimd_record((void *)frame + fpsimd_ofs, env); if (esr_ofs) { @@ -786,6 +913,10 @@ static void target_setup_frame(int usig, struct target= _sigaction *ka, /* Leave ESR_EL1 clear while it's not relevant. */ env->cp15.esr_el[1] =3D 0; } + if (gcs_ofs && + !target_setup_gcs_record((void *)frame + gcs_ofs, env, return_addr= )) { + goto give_sigsegv; + } target_setup_end_record((void *)frame + layout.std_end_ofs); if (layout.extra_ofs) { target_setup_extra_record((void *)frame + layout.extra_ofs, @@ -811,11 +942,6 @@ static void target_setup_frame(int usig, struct target= _sigaction *ka, __put_user(env->xregs[29], &fr->fp); __put_user(env->xregs[30], &fr->lr); =20 - if (ka->sa_flags & TARGET_SA_RESTORER) { - return_addr =3D ka->sa_restorer; - } else { - return_addr =3D default_rt_sigreturn; - } env->xregs[0] =3D usig; env->xregs[29] =3D frame_addr + fr_ofs; env->xregs[30] =3D return_addr; --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961473; cv=none; d=zohomail.com; s=zohoarc; b=S4cN6wMJ2k1Y4V7kVvG/iPBHRevoSHK49Xz4Z++nf2/M3/octZS0grX3GKBHlc1kB3Fs6sXs91zQISYIWfxLyxJBscd1W7MhOGThqo/DA6XSib8wOA2iNRjBt/Pi0S2L+3VGtYu+7hWMsNhLhDkawR3KohwZMFXbzeZ01qXTQak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961473; h=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=3IYbDL7ZzrPeJgVCiHhUdegByQ1ip3ofl4M+Y1UUBtM=; b=ChRkEUkkU7efIT7ON2grkbb4qIg50Jv+cirPzuRwl3ZxQ47YIftt8ROJFZHv5hpZlIpD4Csp1l4AFLVvo8W5wbO7EPjjcoG8FK8Ufr6Mm5WC3Lo5fWvaU4u3kYcrUH7xRSDrsqxwL+QNfNClcrFg4eRAHYb5xEDY0AhiKNhHb5M= 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 SMTP id 1759961473057739.2231853434962; Wed, 8 Oct 2025 15:11:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEm-0002Jj-4k; Wed, 08 Oct 2025 18:02:20 -0400 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 1v6cDU-0001Or-Jk for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:02 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCa-0007Rj-1S for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:00:59 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-78f3bfe3f69so271623b3a.2 for ; Wed, 08 Oct 2025 15:00:03 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.15.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 15:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960801; x=1760565601; 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=3IYbDL7ZzrPeJgVCiHhUdegByQ1ip3ofl4M+Y1UUBtM=; b=VeSQ9HqNqSBtzmOXLsriIwCZyQgSQDeEz7p+4wTdCWasloeVNRlHfp0rwGUsMvCdct C9RkAxpi8iLwYnp4r/GWYryzoKh5Fi9H8a3kabESHmkLQzLs8KWiMTLVZtiAwWerUO4r nz1VQeU93qpAofbixTuBiG+hMsX6yQTmjEQ6jPYYCJi5wtT7KAQRRm9fBfGR/pyCCb/V 2iOZkHBHZbKnZTDnicK2MMVyXPrMPCfkvq4yBzKrZSf10j5znwVquqpwlq/LUl3JLRzA op+oWUfj6HQ7h9FYBflA02zvRSowkglSoR1alQhre+7GAZRbsJCDEIXgQ/2V2GdwEWg6 piEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960801; x=1760565601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3IYbDL7ZzrPeJgVCiHhUdegByQ1ip3ofl4M+Y1UUBtM=; b=DNGho5LV4p5LcEYuOn7Mg1sloyPqrDDoarh4ZuEYHBMR12/suHthQ+4Eb6MboircSH np9f6j3D9RMM8Wh4/6y34hfXqdnmnk6invUyzfIn8NDb4za5RaTu8OGTRku7ivv5Luvl 7gp209IK56BZBY73Otr1T7Xh8RVf6PKzuk6bpe9Jcq5XF5+fxLQupoaa7LeFzUbQ5jfZ ZbJ/PKLaKwXHsN79Pr+ErrkbHFgCbLFNIn0J6f4rf6C7Kx/7bz4QTfUgOmvGYEluErbr B/53YNV/zXBa4WDtxSFJS+Ep4vYDvXFWo7J9iNYp59E6iMvr/7BS7jBDqifQ6H84tnRM CbSw== X-Gm-Message-State: AOJu0YzbcPjBSHk20/JDxSCxizacmo85/0YCi0LKHU2oP5bk59KqmM13 o6zK+bmCkiD2mkpYJzB9wX0s76G69mRbgpDpZPr6vW+JvSbgbII7B6ZsQIZHDzvp4T3+S/Ai4W0 haHMvTs8= X-Gm-Gg: ASbGncvO84MzGrT9vr/43f/80kBzrfFePtSZ3CkO5JBInme1yHrr7wt04QU/wr9z3Xf LwQYMvb5lxJIEttQfW4UnZzMhfZ3T9gBdbw3TdNaodwVc6aidC41TxEzbw+1MMWJf6S/2Xz7ciT +J7i+qU7fM9xNcorNsaZcvjpLDeHW/+UoJ+JyDmbF+3JfOtMPa8j1ywy+P4iQTCL+W4Z/AKUekU rFfs5VP5Vh4fQqksHd7Ne1WsY7LXoMyCNZouWF0QyWiuJgKpHTuNcWEs9b6VQJ0OlfMAmmB0K79 xoLY4JLrFJH2nbBcB5oRdpL1gd2E3kihI35SOpwCTXih9j7BCZbxEp3k4+kDKOVhOFdVm1kyxjl lMM6YvdBPcwJhmjifdUzyGsKBU9DCSXVO0neyr+lNtIVb0QU5wbvByPpH X-Google-Smtp-Source: AGHT+IGf/HYizIDf4VnHyN9VwXV+QrTakTxI9hy2ZTflQLcfFvpIA3aJAeY0y3aayfmSPQ5SAFZs9A== X-Received: by 2002:a05:6a00:391a:b0:781:220c:d2c1 with SMTP id d2e1a72fcca58-79385709914mr6537245b3a.2.1759960801076; Wed, 08 Oct 2025 15:00:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 70/73] linux-user/aarch64: Enable GCS in HWCAP Date: Wed, 8 Oct 2025 14:56:10 -0700 Message-ID: <20251008215613.300150-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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: 1759961475612154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 77d03b50e1..3af5a37776 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -169,6 +169,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_dcpop, ARM_HWCAP_A64_DCPOP); GET_FEATURE_ID(aa64_rcpc_8_3, ARM_HWCAP_A64_LRCPC); GET_FEATURE_ID(aa64_rcpc_8_4, ARM_HWCAP_A64_ILRCPC); + GET_FEATURE_ID(aa64_gcs, ARM_HWCAP_A64_GCS); =20 return hwcaps; } --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961402; cv=none; d=zohomail.com; s=zohoarc; b=UsSP6RzDGX+3ovM1z2q1lnDERRFRQ8N2RNp5ZFUpENQ5sUIhIhlLGHOvv6tn62amnDswzDUM3YwIemQqjYia2+PBylpyV4EdlS8238QtK/qcyCi+XWvPnFZj4jMaQXs/oXUqFPBv+GjWIpjqRzGdOI3nPVPuv7TGAFERrq9ixo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961402; h=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=cqQF3KdzeOa+e2b5cPo9hbNNnmvLOG1QQkCMhq6keuI=; b=Do1gxuwc+D8TrD09cJ21WmtD5doOKZ6gq/nG0c+U5MUMZoYJYV77+cF32rD0cMmgN0J3wyNzmOWFAHPyUQN3BwRIa3aBf1X2ZbRKxQDel+88ZA7vTUnVUkFozjRTpe+gi589g979VaMJP+mu84LXDiXyQHhnBcIsegvdDtjvzlM= 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 1759961402304333.1673227466339; Wed, 8 Oct 2025 15:10:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEh-00025c-K4; Wed, 08 Oct 2025 18:02:15 -0400 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 1v6cDj-0001UZ-90 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:19 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCd-0007S0-I1 for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:14 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-77f1f29a551so388129b3a.3 for ; Wed, 08 Oct 2025 15:00:05 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.15.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 15:00:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960802; x=1760565602; 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=cqQF3KdzeOa+e2b5cPo9hbNNnmvLOG1QQkCMhq6keuI=; b=M0MwX5LHQ83cJGB2UTZ8l8rsX48YMvPhfB2giaGo6hJvVDJgYXYVvRQcScRG1JRXEM 4FJJNd4aw8EaBueTUTHeKKWQTRF2hKhWfDNE1G194MbY1qIcsLgOGhoMgI6SYwVOTrcu hM6FHn6IIbR1KCXNWTA4lFmte04Iu9lSSFlHQyw7AtFEp5yhyZ/0rN6YehQ8n3D8rOFQ X7ohHjgMLic7GcVaUEg6W8Hf3O6/XFTDDnaJ2JbPlWxBpnwHscD4h84GIMYhZ74yEcOt p//3M4kUMe2bn3AGZtmwriSljeyA6VxcjlwskjRoUixZhKLdbyeAxuKy6jW85GjMP0AJ iztA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960802; x=1760565602; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cqQF3KdzeOa+e2b5cPo9hbNNnmvLOG1QQkCMhq6keuI=; b=orjD39uRtqlgKWSZ6y51CiSMsyOZFNHy1qElf7FkWPRgVucZylsnLoQLIjsGZLCqHF mwNpk9bid/9O5OOcYc08sC6qLCMcCbct1Ci1Si8jUAr4qk+SyXyqpttAFMSFAtrS4Cbk uftHOdEBmbAstwXfXo94dMBTBf3ReXnNs1hdvnk9xVu8slg/2Xs5jGtyHsDZY9ERAIse MukoT78fze1LVmFD4C15tTQQ3t3wyXCwO0foeOVD1Yd5WHqhDfXO5nPJuDysiwn3tIMt SRq+hQOkmDrfeG/mK0bln7TrV8rjYbhLas+yUamJKxO9aZWKGX2+/zQGkYSUCPlId7dG +hWQ== X-Gm-Message-State: AOJu0Yzuzffz0fh1qZ2qC7SWjDpDzJ2AACjHOp2VGbikjyOFtG6vN4e3 6mqf25kWWYF0Ngf/cckT4yQGsO5Pa/KD/46o56aa2d2S1/FnyzzH2unzz0z4kfLPMWD+9bEJFEn n1LvoOqo= X-Gm-Gg: ASbGncvYOxHwzlQsGWPM/9tz7eUlz+0lwAwXpZE8TC7mxRHVQ46HY6+zZNrCUvrmc9L PgCPwlILB0SgOjSHvH+1Ub9PzTsOwhCGT64BcX91lxK71j9pwymJPTrylW+u6n+LyLRbaPDFhiF X5sxP5MZtpA+QS+cW42iN6Q6yxmtxz+83K7NCVXnnMTd2rKPRss902VJLWTeE1CcFgLYuY+pIOm CMEGO5deS4TmCusHHYexpXkvYoEB2+vpRMDIgauSfTHCcuHxjp8SDsw+2m8VVj08QyvynSMU58B OePL500qVw5hoRnRVZAQSL6DazJA6eF5QiaW/IhWCA/eeF3uhCP3BP2YIumxeFbQCEj+9vszUpW R4XEoc7QVkSmskm9pIqO+n5UCG9cMMHLefamxLNqABUtIwTJcVaYz3ltT X-Google-Smtp-Source: AGHT+IEuN7QMzQZsApIjoT+KnOKnRZ0y1DzyjRktuKEFfv3COKFl2WgrI52Mt0sRMzOtHBdtbFvIDg== X-Received: by 2002:aa7:88d0:0:b0:792:574d:b25 with SMTP id d2e1a72fcca58-793858fb1f4mr6186771b3a.8.1759960801694; Wed, 08 Oct 2025 15:00:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 71/73] tests/tcg/aarch64: Add gcsstr Date: Wed, 8 Oct 2025 14:56:11 -0700 Message-ID: <20251008215613.300150-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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: 1759961403787116600 Content-Type: text/plain; charset="utf-8" Add some infrastructure for testing gcs in userspace. Validate successful and trapped executions of GCSSTR. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tests/tcg/aarch64/gcs.h | 71 +++++++++++++++++++++++++++++++ tests/tcg/aarch64/gcsstr.c | 48 +++++++++++++++++++++ tests/tcg/aarch64/Makefile.target | 5 +++ 3 files changed, 124 insertions(+) create mode 100644 tests/tcg/aarch64/gcs.h create mode 100644 tests/tcg/aarch64/gcsstr.c diff --git a/tests/tcg/aarch64/gcs.h b/tests/tcg/aarch64/gcs.h new file mode 100644 index 0000000000..99cb4d4e38 --- /dev/null +++ b/tests/tcg/aarch64/gcs.h @@ -0,0 +1,71 @@ +/* + * Linux kernel fallback API definitions for GCS and test helpers. + * + * Copyright (c) 2025 Linaro Ltd + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef PR_GET_SHADOW_STACK_STATUS +#define PR_GET_SHADOW_STACK_STATUS 74 +#endif +#ifndef PR_SET_SHADOW_STACK_STATUS +#define PR_SET_SHADOW_STACK_STATUS 75 +#endif +#ifndef PR_LOCK_SHADOW_STACK_STATUS +#define PR_LOCK_SHADOW_STACK_STATUS 76 +#endif +#ifndef PR_SHADOW_STACK_ENABLE +# define PR_SHADOW_STACK_ENABLE (1 << 0) +# define PR_SHADOW_STACK_WRITE (1 << 1) +# define PR_SHADOW_STACK_PUSH (1 << 2) +#endif +#ifndef SHADOW_STACK_SET_TOKEN +#define SHADOW_STACK_SET_TOKEN (1 << 0) +#endif +#ifndef SHADOW_STACK_SET_MARKER +#define SHADOW_STACK_SET_MARKER (1 << 1) +#endif +#ifndef SEGV_CPERR +#define SEGV_CPERR 10 +#endif +#ifndef __NR_map_shadow_stack +#define __NR_map_shadow_stack 453 +#endif + +/* + * Macros, and implement the syscall inline, lest we fail + * the checked return from any function call. + */ +#define enable_gcs(flags) \ + do { = \ + register long num __asm__ ("x8") =3D __NR_prctl; = \ + register long arg1 __asm__ ("x0") =3D PR_SET_SHADOW_STACK_STATUS; = \ + register long arg2 __asm__ ("x1") =3D PR_SHADOW_STACK_ENABLE | fla= gs; \ + register long arg3 __asm__ ("x2") =3D 0; = \ + register long arg4 __asm__ ("x3") =3D 0; = \ + register long arg5 __asm__ ("x4") =3D 0; = \ + asm volatile("svc #0" = \ + : "+r"(arg1) = \ + : "r"(arg2), "r"(arg3), "r"(arg4), "r"(arg5), "r"(num= ) \ + : "memory", "cc"); = \ + if (arg1) { = \ + errno =3D -arg1; = \ + perror("PR_SET_SHADOW_STACK_STATUS"); = \ + exit(2); = \ + } = \ + } while (0) + +#define gcspr() \ + ({ uint64_t *r; asm volatile("mrs %0, s3_3_c2_c5_1" : "=3Dr"(r)); r; }) diff --git a/tests/tcg/aarch64/gcsstr.c b/tests/tcg/aarch64/gcsstr.c new file mode 100644 index 0000000000..b045aee925 --- /dev/null +++ b/tests/tcg/aarch64/gcsstr.c @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "gcs.h" + +/* + * A single garbage store to the gcs stack. + * The asm inside must be unique, so disallow inlining. + */ +void __attribute__((noinline)) +test_gcsstr(void) +{ + register uint64_t *ptr __asm__("x0") =3D gcspr(); + /* GCSSTR x1, x0 */ + __asm__("inst_gcsstr: .inst 0xd91f1c01" : : "r"(--ptr)); +} + +static void test_sigsegv(int sig, siginfo_t *info, void *vuc) +{ + ucontext_t *uc =3D vuc; + uint64_t inst_gcsstr; + + __asm__("adr %0, inst_gcsstr" : "=3Dr"(inst_gcsstr)); + assert(uc->uc_mcontext.pc =3D=3D inst_gcsstr); + assert(info->si_code =3D=3D SEGV_CPERR); + /* TODO: Dig for ESR and verify syndrome. */ + exit(0); +} + +int main() +{ + struct sigaction sa =3D { + .sa_sigaction =3D test_sigsegv, + .sa_flags =3D SA_SIGINFO, + }; + + /* Enable GCSSTR and test the store succeeds. */ + enable_gcs(PR_SHADOW_STACK_WRITE); + test_gcsstr(); + + /* Disable GCSSTR and test the resulting sigsegv. */ + enable_gcs(0); + if (sigaction(SIGSEGV, &sa, NULL) < 0) { + perror("sigaction"); + exit(1); + } + test_gcsstr(); + abort(); +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 1755874bee..5e1b3a3385 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -75,6 +75,11 @@ AARCH64_TESTS +=3D $(SME_TESTS) $(SME_TESTS): CFLAGS +=3D $(CROSS_AS_HAS_ARMV9_SME) endif =20 +# GCS Tests +GCS_TESTS +=3D gcsstr +AARCH64_TESTS +=3D $(GCS_TESTS) +$(GCS_TESTS): gcs.h + # System Registers Tests AARCH64_TESTS +=3D sysregs =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961108; cv=none; d=zohomail.com; s=zohoarc; b=ReSJu01/3FxcpsMC/a6cYqvs9kdsD+aRF2ofilVP29FrNswHf5CxkQpmrCJfzjYhRHrxOaR5r5HBVnsr30meJWf9TrMEhNy4fxzfLwJCEYWrKuHrmFYUVjelZrsrzJFb7klzuKADpEU4PywAzNsJO9ftwC+SaSF2t9E9SeNjCMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961108; h=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=55ummCXHlN27uJsHHRoko5hx4ehNW7kEFeS5FsKkEGI=; b=ltf/CHaVc4XlGK0r6HfZBUK/BqWRNzQLPWpSJBQMtlVBJ970WunxrKdyPgA2b0eDKSEfgG6uJ3HPTPu6HHVdfb+hjN4vCSdYHca5CYEmZMc0itLXR8U74c57Kxvir7TN9aSYR3CbZlTZSjqtUjSsd6DMAc5I3CU8Kx+9pgdMWpY= 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 1759961108441605.3890512653916; Wed, 8 Oct 2025 15:05:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEz-00035G-Sr; Wed, 08 Oct 2025 18:02:34 -0400 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 1v6cDi-0001UU-9z for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:20 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v6cCf-0007X4-OA for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:11 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-77f68fae1a8so384137b3a.1 for ; Wed, 08 Oct 2025 15:00:04 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.15.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 15:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960803; x=1760565603; 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=55ummCXHlN27uJsHHRoko5hx4ehNW7kEFeS5FsKkEGI=; b=NGjkjxxxstddTwC4dF+eu077L+QM0AoH+xSGlpin4UhohIoliNgix75wpUxNWpDw9K kGG6NyFxGuyQG3Z1PSkb4h6wsOreCgMt6bJMLDl3FLAQlfXNIey5vUVh4GkIwK9eWSv0 m+lEft20bKVRbMuZsmTkJvisuQ2pJKoYnqC6BL08hT0m009I1haFxMRRpeLip8l8MDol 5MkQ1l0j2x9kI6hy6t5zeNnWD+CtrfrqRTY66L+ziFSXmxz1CitHxG91/yAyJMUaZn0K 1+xdwkjlce/emxY7VXPRhkE1Moe7YJhsUrUsA6Qb8EM4x/LXVF3jpskyW4X47G0s1OMG Mi6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960803; x=1760565603; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=55ummCXHlN27uJsHHRoko5hx4ehNW7kEFeS5FsKkEGI=; b=pMxCK0HptD8geJltzQn0opOkkcv/cKY7kAvnZs0SP+FptXxlyz89lzIMzZraWv0EpC 66D6InIS6SxSe4X6Js22kr5+TiJqFGWQ5zLiVz8pE07zSBum+tI38uWIhYb5mQwhyew8 PRehm00K41S/eBXn+S08uFCmHEKbg44DL+lOjj2nmhva7oB3kPvUWhxngC3UURkVoVbk c1DQj15NFtHHDS/5R4HpPbJu9JQIKV4nn9D/qBJl+7BAXYXPNMS0ldjKmyfaSOeH2KOf gPhsAq213qDHhNRON7hfyfk528pjmEn+r/bfgATuEhdJiM07b2wj9EVTDRqqDHiRWT+m NE/g== X-Gm-Message-State: AOJu0Yw3zoIefg+BJs9ruHIXtO8upveJ1dbcIu6gbAHoxOtmieMUFkCT bBbj5DJV3cPwvxjGyALWucLBYSOJfua21enNOyQRTc61dEQviJLiavB4KqcyVGlG4zaErBSTbia or0mnwmE= X-Gm-Gg: ASbGncvB47b7VcVH/M/nTi/JQyJEeAb0IeCujlLBJg4I+fhyazyQuGtEvBO0idrkyWR up2ehbt95FiLR3hUFmwTRvNxDIvQzfOw71pIfvS8bmo9cQRF8zr5Ab7DneZnEKywCAa7g224aq+ jh/2MwZJ71ciCtDZX+QCEGsJEuZ6G/F7MuFu54Xg+Tw3I8qvWhVzvsStIikrHiNGyYLQGJQ1fly EVyldog6EmamtneG1QQ7TWtsiCTP0nYQdgUprwVvbGuuDHOjK18JlO3HejCvwSLGioBfDSfc5Tz 4WDHamir1Y3tw2dOqiMP/Jx3g7mKew9ZQ8KrkbKaK0GP6G4vFezxu+PcgV6CSUbaTD3BNyn4Kp4 j1nj7Hv5E/PZzVpTtseSpPk4FA/8DApkluySmg+MAgfWCOKUI0wF9OaUhu0xKu2rwfC4= X-Google-Smtp-Source: AGHT+IHM5x6IgkhCfX7nq/gY2YUPaMBOOJRcNu1gpn0JHxhN7sLETaACZpe31ZoCPZAvw07hnmtaVg== X-Received: by 2002:a05:6a00:178e:b0:78c:985b:8d3b with SMTP id d2e1a72fcca58-79387437020mr5267530b3a.23.1759960802847; Wed, 08 Oct 2025 15:00:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 72/73] tests/tcg/aarch64: Add gcspushm Date: Wed, 8 Oct 2025 14:56:12 -0700 Message-ID: <20251008215613.300150-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, T_SPF_TEMPERROR=0.01 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: 1759961112245116600 Content-Type: text/plain; charset="utf-8" Validate successful and trapped executions of GCSPUSHM, GCSPOPM. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tests/tcg/aarch64/gcspushm.c | 71 +++++++++++++++++++++++++++++++ tests/tcg/aarch64/Makefile.target | 2 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/aarch64/gcspushm.c diff --git a/tests/tcg/aarch64/gcspushm.c b/tests/tcg/aarch64/gcspushm.c new file mode 100644 index 0000000000..c330417a2f --- /dev/null +++ b/tests/tcg/aarch64/gcspushm.c @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "gcs.h" + + +#define GCSPUSHM "sys #3, c7, c7, #0, %[push]" +#define GCSPOPM "sysl %[pop], #3, c7, c7, #1" + +static void test_sigsegv(int sig, siginfo_t *info, void *vuc) +{ + ucontext_t *uc =3D vuc; + uint64_t inst_sigsegv; + + __asm__("adr %0, inst_sigsegv" : "=3Dr"(inst_sigsegv)); + assert(uc->uc_mcontext.pc =3D=3D inst_sigsegv); + assert(info->si_code =3D=3D SEGV_CPERR); + /* TODO: Dig for ESR and verify syndrome. */ + uc->uc_mcontext.pc +=3D 4; +} + +static void test_sigill(int sig, siginfo_t *info, void *vuc) +{ + ucontext_t *uc =3D vuc; + uint64_t inst_sigill; + + __asm__("adr %0, inst_sigill" : "=3Dr"(inst_sigill)); + assert(uc->uc_mcontext.pc =3D=3D inst_sigill); + assert(info->si_code =3D=3D ILL_ILLOPC); + uc->uc_mcontext.pc +=3D 4; +} + +int main() +{ + struct sigaction sa =3D { .sa_flags =3D SA_SIGINFO }; + uint64_t old, new; + + sa.sa_sigaction =3D test_sigsegv; + if (sigaction(SIGSEGV, &sa, NULL) < 0) { + perror("sigaction"); + exit(1); + } + + sa.sa_sigaction =3D test_sigill; + if (sigaction(SIGILL, &sa, NULL) < 0) { + perror("sigaction"); + exit(1); + } + + /* Pushm is disabled -- SIGILL via EC_SYSTEMREGISTERTRAP */ + asm volatile("inst_sigill:\t" GCSPUSHM + : : [push] "r" (1)); + + enable_gcs(PR_SHADOW_STACK_PUSH); + + /* Valid value -- low 2 bits clear */ + old =3D 0xdeadbeeffeedcaec; + asm volatile(GCSPUSHM "\n\t" GCSPOPM + : [pop] "=3Dr" (new) + : [push] "r" (old) + : "memory"); + assert(old =3D=3D new); + + /* Invalid value -- SIGSEGV via EC_GCS */ + asm volatile(GCSPUSHM "\n" + "inst_sigsegv:\t" GCSPOPM + : [pop] "=3Dr" (new) + : [push] "r" (1) + : "memory"); + + exit(0); +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 5e1b3a3385..fddb7bc9cd 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -76,7 +76,7 @@ $(SME_TESTS): CFLAGS +=3D $(CROSS_AS_HAS_ARMV9_SME) endif =20 # GCS Tests -GCS_TESTS +=3D gcsstr +GCS_TESTS +=3D gcsstr gcspushm AARCH64_TESTS +=3D $(GCS_TESTS) $(GCS_TESTS): gcs.h =20 --=20 2.43.0 From nobody Fri Nov 14 22:20:19 2025 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=1759961608; cv=none; d=zohomail.com; s=zohoarc; b=M14hvanOwB80M1FgEQEpipK1+/KuSI5gS+XofbZxDohlumjEYSz9R/bkPn5kEbjLUgLObVzsuOTij1NRz/r+kovrNWVQf7x3smtrW9988q3j++k+VN8cXMA0fh8N4HK4cwqbSz7TjXOKdOZl4/7Vkdo/kekbuSHeUgW7Asku1SI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759961608; h=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=3CvJSXdiWhbprsJzICEFPWeYtoNE9+mbwDhHlNPU7kM=; b=HE9B5txvB2RbzJ8zjKD4vfhXXGRqQmjoMIO9Ys1sfOnwkP80l9itRDIDMLAldHc8BHW+u9GCQzFghR94N3A/iqoEiHX/MeCen3v3cfSjrIMXpv5dXrG16hIUhxMIcrW10BFa8AB3K7/glOgtWMFkSHVs7jth87+o8fVxgry6Y28= 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 1759961608516664.7954439357362; Wed, 8 Oct 2025 15:13:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6cEx-0002zc-6D; Wed, 08 Oct 2025 18:02:32 -0400 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 1v6cDj-0001UX-Rx for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:19 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0: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 1v6cCf-0007bb-Jj for qemu-devel@nongnu.org; Wed, 08 Oct 2025 18:01:14 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-7810289cd4bso283792b3a.2 for ; Wed, 08 Oct 2025 15:00:06 -0700 (PDT) Received: from stoup.. ([71.212.157.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-794e1fc9db6sm740724b3a.66.2025.10.08.15.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Oct 2025 15:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759960804; x=1760565604; 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=3CvJSXdiWhbprsJzICEFPWeYtoNE9+mbwDhHlNPU7kM=; b=aD7bzi01aXBjrXFeLw51y66oPSO2EzoPY7lUmI0QLXFkizvirvMLMxfuHG+8oJuoeT LrRWRnDsmigwx4Ikke+gBnlB7bg2v/PBytVTrx+gkn2evJow58AlR4gZIK1zJUTmscFM nSxpfS7nNqMwKnY8uABWps2a0JITNyy8DGFsccEiG073Co2HWpIh2pRhcLJs2X7v1gpw MBtKPEO6r9wcJUzrPQVibb34I6R79YpI6v/FN000rZ1VcGQQlkEESWFCxv7qXi3xfuon bLK6vXCEqRKAGsI259+0L1q/NPVzVDqJ3mdh1PZISgwbwnOFZ+J56Nmfdf6IHzH3O31G iFdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759960804; x=1760565604; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3CvJSXdiWhbprsJzICEFPWeYtoNE9+mbwDhHlNPU7kM=; b=WQu2sCXop1iDFhdVRbwY+9ckKTshT7++dn94ZHpcrtJYUa3QBnzWLHDZkAdI3OXcTl T/2CZro9Yk/xiSJKATaHHLzadj5OGttZjKm0+h0DcJ7PS9IC00In2h9jHCEizFImqKmi s9egGPa63QBJ4AZ6KWI6BT/oyHGWH4d+NC9UGU+ozkLwXK4F46040ADIR3si+h3CcaEU EdYazs2wEPtBK7cEV1qM6E8fzi9aULdNSNazM11m7m1JBHKhQvW15+AaVIZ/s1sDKaTP 6sVp/BrVFakfjr9IOy1TF3RKHjmN2cbALrEiUNfhgomINo2gOHhQ8HwgdKcQGICa3Vsm 8O7w== X-Gm-Message-State: AOJu0YygfRzbDLmtJCC7JmXDVR4AQQ1Pgz/a0SyQ6OYSpOyYsQXDbvv3 lxiAl0qF1btq2x84nHCpVyI2flUrvpjj2Gx0/XvHwtxKnGgux9c9xcRtbbHNyzibvFC5O3xb1o7 rSDD4aWc= X-Gm-Gg: ASbGncsULyKH1Sb4XpHr+evbmojfPWMSqBINE1QVBbRblNSU1DLAhNEAbl3dVFW1mgk Je+nt+utaFvBCgFcsLDmHTS7Op4o82kIH6jAPexq5isYLMK9bSHeR/Y4Zqlzp9mi/ck/CYrJsj+ 0DAzkeNKr5Iv91i0ufRAHs5S5anMwu2whLGtxbjeP+LCm3PUrh8YdMzrpD32zNgWdegHeCseVua DqrUhTfqnpg6PUX/yQC/OAbT3RpIXOhq+DY/7jgNLNTQLbsFDldthDixKdGwrDHttw7aUPm/fgf G3CCrKzuJEcgG4KrneKoINR62FAo2bRVyqg7lZVB7VfnZ/R55+lPWmaq18EJPz/Vp/Ng4Nhy9cN vgSa9K7lDck2irttZT2iwpqWIztUzXnlGVLGww1dXScsIdTERUXtkskZStQ4DgIKdYVg= X-Google-Smtp-Source: AGHT+IELqBILhiNNSAYEg7skJqPvx1cysn7hLWyS6Ddye7mrhPWqikP9shQUPzDMT2jwAoKZdqirqA== X-Received: by 2002:a05:6a20:6a1d:b0:2ff:1132:8c39 with SMTP id adf61e73a8af0-32da80da6c9mr6219620637.4.1759960803547; Wed, 08 Oct 2025 15:00:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v7 73/73] tests/tcg/aarch64: Add gcsss Date: Wed, 8 Oct 2025 14:56:13 -0700 Message-ID: <20251008215613.300150-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251008215613.300150-1-richard.henderson@linaro.org> References: <20251008215613.300150-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-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_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 1759961611210154100 Content-Type: text/plain; charset="utf-8" Validate stack switching and recursion depth. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tests/tcg/aarch64/gcs.h | 9 ++++ tests/tcg/aarch64/gcsss.c | 74 +++++++++++++++++++++++++++++++ tests/tcg/aarch64/Makefile.target | 2 +- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/aarch64/gcsss.c diff --git a/tests/tcg/aarch64/gcs.h b/tests/tcg/aarch64/gcs.h index 99cb4d4e38..e821963cb8 100644 --- a/tests/tcg/aarch64/gcs.h +++ b/tests/tcg/aarch64/gcs.h @@ -69,3 +69,12 @@ =20 #define gcspr() \ ({ uint64_t *r; asm volatile("mrs %0, s3_3_c2_c5_1" : "=3Dr"(r)); r; }) + +#define gcsss1(val) \ + do { = \ + asm volatile("sys #3, c7, c7, #2, %0" : : "r"(val) : "memory"); = \ + } while (0) + +#define gcsss2() \ + ({ uint64_t *r; = \ + asm volatile("sysl %0, #3, c7, c7, #3" : "=3Dr"(r) : : "memory"); r= ; }) diff --git a/tests/tcg/aarch64/gcsss.c b/tests/tcg/aarch64/gcsss.c new file mode 100644 index 0000000000..9550c68e7e --- /dev/null +++ b/tests/tcg/aarch64/gcsss.c @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "gcs.h" + +#define IN_PROGRESS(X) ((uint64_t)(X) | 5) +#define CAP(X) (((uint64_t)(X) & ~0xfff) + 1) + +static uint64_t * __attribute__((noinline)) recurse(size_t index) +{ + if (index =3D=3D 0) { + return gcspr(); + } + return recurse(index - 1); +} + +int main() +{ + void *tmp; + uint64_t *alt_stack, *alt_cap; + uint64_t *orig_pr, *orig_cap; + uint64_t *bottom; + size_t pagesize =3D getpagesize(); + size_t words; + + enable_gcs(0); + orig_pr =3D gcspr(); + + /* Allocate a guard page before and after. */ + tmp =3D mmap(0, 3 * pagesize, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0= ); + assert(tmp !=3D MAP_FAILED); + + /* map_shadow_stack won't replace existing mappings */ + munmap(tmp + pagesize, pagesize); + + /* Allocate a new stack between the guards. */ + alt_stack =3D (uint64_t *) + syscall(__NR_map_shadow_stack, tmp + pagesize, pagesize, + SHADOW_STACK_SET_TOKEN); + assert(alt_stack =3D=3D tmp + pagesize); + + words =3D pagesize / 8; + alt_cap =3D alt_stack + words - 1; + + /* SHADOW_STACK_SET_TOKEN set the cap. */ + assert(*alt_cap =3D=3D CAP(alt_cap)); + + /* Swap to the alt stack, one step at a time. */ + gcsss1(alt_cap); + + assert(gcspr() =3D=3D alt_cap); + assert(*alt_cap =3D=3D IN_PROGRESS(orig_pr)); + + orig_cap =3D gcsss2(); + + assert(orig_cap =3D=3D orig_pr - 1); + assert(*orig_cap =3D=3D CAP(orig_cap)); + assert(gcspr() =3D=3D alt_stack + words); + + /* We should be able to use the whole stack. */ + bottom =3D recurse(words - 1); + assert(bottom =3D=3D alt_stack); + + /* We should be back where we started. */ + assert(gcspr() =3D=3D alt_stack + words); + + /* Swap back to the original stack. */ + gcsss1(orig_cap); + tmp =3D gcsss2(); + + assert(gcspr() =3D=3D orig_pr); + assert(tmp =3D=3D alt_cap); + + exit(0); +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index fddb7bc9cd..55ce34e45e 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -76,7 +76,7 @@ $(SME_TESTS): CFLAGS +=3D $(CROSS_AS_HAS_ARMV9_SME) endif =20 # GCS Tests -GCS_TESTS +=3D gcsstr gcspushm +GCS_TESTS +=3D gcsstr gcspushm gcsss AARCH64_TESTS +=3D $(GCS_TESTS) $(GCS_TESTS): gcs.h =20 --=20 2.43.0