From nobody Fri Nov 14 19:45:21 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=1760102313; cv=none; d=zohomail.com; s=zohoarc; b=EDM02Ty+uMUnXDW6E5g7hNtrzLkn+/eTfJ7JirOfRZ1IH4Udl94VNcZYS0CT+hxI6NgAfvcvMY1P6LHP2BSgnewJJ0Dekz8M9f9lKqYo4A49LZGmuHJ2SFdMWkcfEFa83xXMsp8BPWwKnaBbwY5/9AXVzR5R0YTdiA2tTdHV6EQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102313; h=Content-Transfer-Encoding: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:Cc; bh=j8CXWoA91XTJZvcdb9Zd4U3ILTUSgZk3asP3C56vbhg=; b=VGeOEsPJ/a2aUDMi4OTRgJ7grzP5ZhjTs6lB4pespgXLfbB9vebx93WN4384tgTTh7W1y47y8aI6x1eNQsy5dOox95daz95FSn3Ue4rkkiN/RAIpnU6xrxw1kN6wJOffRA6Q97+1hBdl7JTngX/BpcZwNcK6zfVlNx0CwR//3XU= 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 1760102313709621.1723396641811; Fri, 10 Oct 2025 06:18:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Com-00065X-Qa; Fri, 10 Oct 2025 09:05: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 1v7Cog-00062z-DU for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:50 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CoU-0003ke-P9 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:50 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e61ebddd6so21344665e9.0 for ; Fri, 10 Oct 2025 06:05:34 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101531; x=1760706331; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=j8CXWoA91XTJZvcdb9Zd4U3ILTUSgZk3asP3C56vbhg=; b=K8kM1dZG/dII8jcrEvg3FK287Y6DYe+933oXETGKmkwgI88nv5eUq/x4XMDu1Rkaeb vmfZfTSGkltBRdcbsdm+Nik0wY8VdJblZIbPwqlFxM6vtBFsKNJovLPAsVT6K/m5IomY eDzXFp+tpqzjdv9OfK003a4zDgZqcq4YdeToP22iXyBgDKnQI9jZELUaasqPFs6YNN5O wj1TKnoEkMTe8f66D+G8XZt8Bzy4vXqktufil23njmcOAxOSR1v3Ic/6jo9QfxdvvQBr 6YTneE6KjAqu6dsiFZt3iWamA35fGqMRmbnaJJEiOOrFex+xiTDb0vjDUT1y33j7RlJN iQ/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101531; x=1760706331; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j8CXWoA91XTJZvcdb9Zd4U3ILTUSgZk3asP3C56vbhg=; b=QKOH41db7aizfl1+e1MYPVU6pVLgc7mDwQWQCNZnTxokQXwFVCjUgSxXaFcQ35yqyH owhlgJpzXONi6bu9BNd132n3yTk3elChAilON8nQQ3KDyAU4lzJVifoBdbwgR6qwYoNl Fb33Fu4ENsjmtp/bFwTt4meZFm2H7amVnvh4Z69pL6mb9+Nsm3HMH8T2ZTgYs3dMb5z8 2GG4FrC5Udt0ConEvBJQkmU2zb58PoK57UsvuCd9jEjkeaG/RFMLRNh9dyc4s3wNDQ74 2DJwqMk9uoNA7ahQBeJI+xrhhpxhKH/0Jtc36jttE4gCs2ALuOkKptTSnY9v6QhQiBq1 rilw== X-Gm-Message-State: AOJu0Yw0WKKumMRmHFdP1jrUglxCLseUj6zonnocjrYdJETB4Hq7q9SB ADPVK4q+S6fOyyMFzpkX7tNWO9WcUxjewci6kC1aH3I25i6Dv/PgPQ6KhYb9ezzefEvdOzjWJkE q1pcg X-Gm-Gg: ASbGnctH9WMhtZa5LPgC669PEClEYLKWJw98SQ2qjGzUiiEfXU+4bdgxwdzzgp5ouYa RjMmKWM/ABivFlGJ4Ki51YPM+eZgeme2J/BuR9ZpVn3QOUfemhAO7qET2Hm/bPEDAhjHICSDESe blFTgGEtjEiQJzbj9hRwO3v96Xwe0Peo2P2actWdegLRKqTsQkuEZ1D3x+Ao2UuWB4nKk4uF45B 2isfIr7DtSMH1/13jzbBIveBzXbvbYX16KRji/tST578zvoXq6iTV+rFQqXijtfoeHWRrk0DerF y5vUiYF+WAWeIa8LW70fQjJBAOe4Fl2g4cPK5eZGJXXPXcXm7NvXXzoaYxOKaP9VcEVQkANkoII q/spgU8hbRtpBz86hhItl1epCicDFTEp9NMCpQQM6L+D/E9/yXyaVXQYea34G+w== X-Google-Smtp-Source: AGHT+IGyid99tW4GPFPPNx6LaJM+DPdTHWGJH+l126E+dIz6nwiqNNde4FE8MsZ3KDq9fCv1ZKqVzA== X-Received: by 2002:a05:6000:4006:b0:3f1:2d30:cb5c with SMTP id ffacd0b85a97d-4266e204a1fmr7345699f8f.23.1760101531048; Fri, 10 Oct 2025 06:05:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/76] tests/functional: update tests using TF-A/TF-RMM to support FEAT_GCS Date: Fri, 10 Oct 2025 14:04:12 +0100 Message-ID: <20251010130527.3921602-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102317541158500 Content-Type: text/plain; charset="utf-8" From: Pierrick Bouvier Signed-off-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 17437784bbe..05a3f52d5e2 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 ca892e0a8c9..6f92858397a 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 bb603aaa26c..5e23773f93d 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 19:45:21 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=1760101627; cv=none; d=zohomail.com; s=zohoarc; b=HLAiGOn4F+4Jwt5bSy/eV+ddOAzl1TnwDUOPyNx9Yxcg2Ce1vECqmjnaPWEbEbkq822oKfjqQw5t4JIfsEe9ZoW86JpgL7gR8ewwd1UOFufqhWf9MMlrgGqkoreDDCyYEoJplOyvd6KSiT+5vheTs6n4hsb6877ULbmk42kFrJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101627; h=Content-Transfer-Encoding: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:Cc; bh=rND9KTNhjLVjhnxkHUd+e7pq0Tu9WRg2XRHElf/VrAk=; b=YO7LI4NDcT9LlWflaYJd+StcksULAJ7BxLsSFhmCPa6SKrpCJkJvlGbA4TcENB7nDnS9/VGrNNxiebyKZa0ZcnRkpXIbA64MhRdD5reE7IETENmoUO5KUS5+OMWdoseXVAcBimP41hvaI4TUToOlYVb3lFr75XpyyXMRBJ5kdwQ= 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 176010162753925.071806611720262; Fri, 10 Oct 2025 06:07:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cof-00062j-TO; Fri, 10 Oct 2025 09:05:50 -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 1v7Coc-00061Q-NI for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:46 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CoU-0003kk-1g for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:46 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-46e4f2696bdso21969765e9.0 for ; Fri, 10 Oct 2025 06:05:37 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101532; x=1760706332; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rND9KTNhjLVjhnxkHUd+e7pq0Tu9WRg2XRHElf/VrAk=; b=rhNz10PHQiscvj0N7s9WtHiDQHil6X752lX7ON/fWw8XHkGkOhL/DqYOirmGSzmojy k2NrjHuYxslrjaOzxBFD1fwNCqZJBUL/3ssIx4UViMpRJ21m/oiqb8IqQZLTfXm5dFod Gx4wkTqYBK128Uz90m8Vm9yO76a5fqZnatYwPpcQMQ59dGHHz2iOKW/BKM0SLti23WFy eQ0PmvfYGZbVkOT7/hUq35otrouKToImctzpmCR6tY0S7XCBq5UyXD6bJZEmS5FhjFlJ 0FeAr9SWHAnRfqP//eZLosfkcINNK/E9M88iYGQ9R8Oatl9FYiGUGBaQ94d4uHp4gyj0 hesg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101532; x=1760706332; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rND9KTNhjLVjhnxkHUd+e7pq0Tu9WRg2XRHElf/VrAk=; b=Ip7S7cCDvtzzbDfIDEfmJMI0SzNvPrBZCRSxizBB0aDVYEoBgCEx5kIlcs0BOafBv4 E8klAdCUMr8tVqkUSvkO48ObUyfVAp1rRIUiMzoumfgPLOk0c0/LHYKI7OyZnfinBFDF AIWuG2SjHrdajczGidlT5k1ojMY9pIGZqfSW6Kew+VsDfZ+py5zSwQ2SUHs7+2UZvFSp 6OcT2kXOA+QkjsJVJTRc/ug7mREBboOzVn+Sw2u0aDBpogaMm+yAvokMAYT/809RnwOY +1R9J/w3lh7SgHZ3jN7W5mVPofoqxeSoYROr9jbinpSi1OmPThP9vTwsiqs9E7v0VW/f 1bgw== X-Gm-Message-State: AOJu0YyRqVJRZtbtSgVwnDnZZmrKsKk545lnJA777qcYLFZ8Ybc7M2Rm l2PloUngAfA/B6Jf1eS5X/qu37zL47f08miAkbhu1Z1cWn0ScUQyoWXsgCeT0eNSqSoEnT6kFcw Z17Ej X-Gm-Gg: ASbGncsh5OkSVOXFZkD5NrPVWl5CqrIbneqHKLonPRHU3yJYrbGAXaTSM6utbdOlizB 6Zrog4Sim8/2EnwxlJbH64Wg7KWY5jrGgK7NB5ICZRr8RvbdlGRZAwTuQWBP9QwOh2gqAb2L8cT nPe0wr4cBsV9MJ+T3jXTbtR3QdJs2e6Kmc/PzpGxHJcZDzhHHA0AAa8pD0KXvmou1vNXgPVrgo4 skaZwHp8n2mxeGHkGh0hhumRyWZ9ESepDOneNRSmcJnHLHo0X9clKrVCD6SgZjSb9Wvyh88K6xA /EEIQhl0EVJnG+XepDiJR7RJwaeOhG8U+vMUQSq3tB4GaS2trv1F3wbNJ/Y8Zn3dtHee6pNrm/z oh8uxyBKf+OrsETVfx2jxfowVKBdxIbg/SVST6JFDcEFSQTVhtmYUdJ3lhYGYrQ== X-Google-Smtp-Source: AGHT+IH5/vLrzME8imxLKRRaK2xjFHelRYPdfFcN4ctdd0F6zEq8yZZXhqdRQPwqr3wTbNiRblH4VQ== X-Received: by 2002:a05:600c:4750:b0:46e:3b81:c3f9 with SMTP id 5b1f17b1804b1-46fa9af30cdmr87227595e9.17.1760101532072; Fri, 10 Oct 2025 06:05:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/76] target/arm: Add isar feature test for FEAT_S1PIE, FEAT_S2PIE Date: Fri, 10 Oct 2025 14:04:13 +0100 Message-ID: <20251010130527.3921602-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760101630121154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 f59c18b6ef6..f3e90408f7b 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 19:45:21 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=1760101944; cv=none; d=zohomail.com; s=zohoarc; b=GOq/6+1QdOPcLEmrjzi/Lnz2SVJVskSswb30rPb1IH3yBLHUD1kGVmnS39hW2gaMyFq7mvegs7z7OelRz4HsGQ5mig3Qa0wGKbyNKH0oRuRpG8HS8KWGtXGpa4RhUGAZQKbdm6xcge3VFeOjbQp0GIq5Oc6Ca9qietNp5cOfGrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101944; h=Content-Transfer-Encoding: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:Cc; bh=1FvLOemgvKDIEtSEwbgd8ROqFhdvpG+48MvxRZRHw+M=; b=Bva1NurfiN8Fj707uNuRgOhl00FlqigIwYCFjYeIVfsgsompYH3WjRmloekV6NhSShmZWu25OU2ZAPSqcMCdRoZgzADxIBnrHyLL9EicBcd6ugrd6WR768+3DzWNi1cDlw175/yMWg/c4e3RkVcWnNt/H4C38g7uAaWkPqEhasA= 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 1760101944872678.4371326232196; Fri, 10 Oct 2025 06:12:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cou-00068u-Up; Fri, 10 Oct 2025 09:06:05 -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 1v7Col-00065K-MC for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:56 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1v7CoX-0003kw-2v for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:53 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3f0308469a4so1245908f8f.0 for ; Fri, 10 Oct 2025 06:05:35 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101533; x=1760706333; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1FvLOemgvKDIEtSEwbgd8ROqFhdvpG+48MvxRZRHw+M=; b=Ivsz/RdugwW2jdt8bZdb8INp/0g0mzWGi662ybOM+ZsCy3jo3wAC9xE9qZ0+wxDNqB x6Zh3r7IurYZIO7pwLFw66HpLKTayE81WwMKd9CF4GzOc5XJwDFGKS56x2IS7q/ViK5L 9bvq/lufOjrvdyWcytitlHtZW1wONr/Q8KFyhVl+8jTheR0lUir1CSo1Gw/m30arOB1k wPJa+dFpCWVdjb+zbw3nuDaM34SWQwWJmQph9KSRRYRW/XoyGpSMvyuUeSb1nWqXKoWd aKQ4nWVdAMMKREB2LDi/Wk663u3OYz/hN6xT0zQYhJARWaHKqifMLVK1MLvTzzfdkKeI Fe7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101533; x=1760706333; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1FvLOemgvKDIEtSEwbgd8ROqFhdvpG+48MvxRZRHw+M=; b=g+D/0MW6htCycPdbvVnpwotaUdKXG6wqtDdLI2FMyVkXBkG/rp8FDDseJvyg4P7rRY q2j9BGGJHbPF5pASsgIMaX/iCGtczw0scMnRwxn15mvdiUxFRnUHjMStyGP/J5hEnRnS Dx6Ut9wMQtFaSa90Jw0pzbJhrS6slj/XYQ0Tt9nh+WWqulvOgBf54hWsIk22upewSVtM hQ2NYv7KtBMxR5ovnoMzeos2CL5mC5mic3BewB+JVSl8K5mknjQm2cxoU/hY7on4OAFG ZMSi4EkZMUilMW+yXLSriML5NmjycCVNcgYSbjDR/gcHMbOkuROKbvcTXpO9eZsB+tAZ n+aA== X-Gm-Message-State: AOJu0Yz9sZOU7rJ2BhzVh2CtdwFeIrtHfFCPCEQYq0hSpWZ38xQeCGfI uuVzMlra84ic9d7h0cvzLAVWaPYVHk65KYooJ+CSAWEVAqMrndxfcQpXUs/b3FsA8DcJvStD1eq jg260 X-Gm-Gg: ASbGnctRg3G0mP9ykheMkzaOV623Z1VG5DAfuSdQ1j5sffGxnXNr7mTJklZdnSTSSCl xTQSV7tN6l20Aet/KECZEL3U4nQuLLqM1CvKp/CkYj+HhXAT3O0c4Te0fu14B7Y5NApJYNApzjJ NRyxTPlIs7WrpjqVxScpqswJv+mRY5PcfZrMQTR4n4FZCUy0DzYO6vPE0Vpas7SXtVOmhF6Prx8 EUzMHPeNbRW7+9Fb+BlZOLHGzyxFeO8hNGIcA6G+/nGwb41cO1bezDVCMBN7rxcqO/Z3n6kGqOA fn9ZbvzCSwIaCnQVaz2c9k5U9roaFUB7Len5rJgJOjKrKkYyDBD9F2QDp5a/P/kxXO6K1okHVdH Z03TdmRXzwp/fK+ygG24YCMJA9SnrQk/E4euGtJatNUirSk2M7AM= X-Google-Smtp-Source: AGHT+IFzMTxFI1Hy9lBoNgbo7Ofkuboj5gPFXDCUvsvUmJbTOnzYqBRFJzc2/gQ6EYmyAX2+do1Bfw== X-Received: by 2002:a05:6000:4284:b0:3f9:1571:fe04 with SMTP id ffacd0b85a97d-4266e8de175mr7622159f8f.48.1760101533069; Fri, 10 Oct 2025 06:05:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/76] target/arm: Enable TCR2_ELx.PIE Date: Fri, 10 Oct 2025 14:04:14 +0100 Message-ID: <20251010130527.3921602-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101946139154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index b7bf45afc13..c9ebdf144e3 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 19:45:21 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=1760101840; cv=none; d=zohomail.com; s=zohoarc; b=kCXFXWb1BA3mrqJGFjOIqOnYWsR1AQRa6vy/gqnXCSz9233MuwPEM+O+ZwRaFYz+2yQLC31eayfybOOc80ud5xDK6hyG7f1shAf+6FT7rIhjqCPptaZEz/vDEA368wfMifydCPvOzvfXzaPiZbAQ7ADuWDPob/684OHLWNhKApM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101840; h=Content-Transfer-Encoding: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:Cc; bh=dx5k1CdxaRZ5+Tptck/uq9yaU0heQGJNoP2aoiJPgbc=; b=i9V6fheROxPvqi+QU9MIOAxcyUrk/Fmz/WehWttoCQ5MmSkCuto1gUmlMC+mRrqpSQyKHgK830SGA3DcHEgrmF9Yxjr5eMz8oOq/YbDvRdzdOlZh3FykgQPpziO3AVQK8N5FojbJDRzMHhsL/wIjaAg1nUiA439YpUS9XzCJIu8= 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 1760101840186410.3863422928073; Fri, 10 Oct 2025 06:10:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cot-00068G-5o; Fri, 10 Oct 2025 09:06: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 1v7Cok-00065I-HE for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:54 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1v7CoW-0003lB-Fn for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:54 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3ecde0be34eso1633969f8f.1 for ; Fri, 10 Oct 2025 06:05:39 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101534; x=1760706334; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=dx5k1CdxaRZ5+Tptck/uq9yaU0heQGJNoP2aoiJPgbc=; b=mLjBH+2SusU3Dcm51pIb+nlJGFdyDiiBd3p6jPTwJ6RHWuLfds1WTOou9X/Mr9F+e+ DSbYbCbu+q6WraclJ7omUJdO4aqNd9lDVCIUeVTObddDNHUB8LznoFUxEl5wHre6n5VJ tF0UJ/RKxB00GISZED61uZO5X9eNWstOAOWvRgVls+bDxdnnW0/S3n2AHKp1tDTk8QYZ zXCQwyFFXp52rpURt8c4eaZNkefIWmrBBzKo/D4TqZ/3cpAXnyknazOj9Vd4YKsQxrvM soiidChi9vSOj4NIxhUZwfjQINQwLgBHt3u+vOm3w19S2Xro4FtllmrqoccKJ9B5NNEl syOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101534; x=1760706334; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dx5k1CdxaRZ5+Tptck/uq9yaU0heQGJNoP2aoiJPgbc=; b=EG1YPJnCy2GsYVzeREWhKJcFm8sN1ilnTeS4yiwJk+SlLKrpzeMFbtAUXZE65nFMND aoJ+0FUIh+AtS/Wl065yJph8WdEq7WJP93LCxuHNYhsYmasmBaooI1yR6LkXXDIF/n7u LrqE8Cou2GsOpXIxrTU/d/7RhydnccoocgXrk2lJXuHSFkf1Bq209okU2U+29tcSsh8e lDtcHqSdBP0E6/VtPixDfNG3T4kx74PmsNdcMOA6kYdT1sp7IzBI/tf8k6+zglA26W18 JqQ6r9sHa+lQsSSXjPTuxpq9SbLTHswy2JvkFEnnSDf27Ve65VvCL5NVMPpPu5pWfs8M shwA== X-Gm-Message-State: AOJu0Yyhzaj4INKkQrOASP0Qa3Pn5UQQKe/RFhsaCVT4aLQVgkC1+ILT CIcGK1jB4PlqmvUwPy9YSJIMia9gl7HU2aAVi5jT6jd1O+aT7rcE2vc1ysuNqzwjUpWtxcfvX+9 XA5k4 X-Gm-Gg: ASbGncveVpN/mwRysdIktBQymp+U0HcRRqCpnhMTTSKTF3Rbn1EBMlW9DS6td6dH0f4 ZBYoE2BKW1Smq1NQnK0nwkkfAjMVTMNsVfDhtw/YWySHYAdr9l6WLYaAnZd/JcJuoiUUBiYhjUX oxmZFk9+WiL/L4as9L/2AMOHcRqEZ/cN+T48C0gVXQTVqdepbdAPWG/oTGKsrNelzp/yLXIi4dL /XB6EimVRmwhMS3L+j1wFFhebN2L9Jj15CIKdBlyhnthAi8D5fuG8v97QGUFyuTFLGO0e6eAqXc yMMJEiCCN0CvPQlyxi8G2X4ZVDNMqJT3TZ7vsRlH4LFICigrgQ103d4OczPV8grbXPvmoY0/qhL CmFWviArnWgCXGNdU8hSVoe7476k4KAobKTqPbxkaCDiiax38iN5m0i+pE1o7NQ== X-Google-Smtp-Source: AGHT+IER5l/V/oVy5qOFU5X1q5DPD387hKmVrB0oEYCg9thqLR/3hN7I+IJgMJSBzPDEmavOM6QouQ== X-Received: by 2002:a5d:5d85:0:b0:3d6:4596:8a3a with SMTP id ffacd0b85a97d-4266e7bf18emr8605218f8f.17.1760101534183; Fri, 10 Oct 2025 06:05:34 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/76] target/arm: Implement PIR_ELx, PIRE0_ELx, S2PIR_EL2 registers Date: Fri, 10 Oct 2025 14:04:15 +0100 Message-ID: <20251010130527.3921602-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101843535158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 57fde5f57ae..f48c4df30fb 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 41414ac22b8..c9ea160d035 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 30e29fd3153..9bca1b8eae5 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 c9ebdf144e3..20a189ef4f7 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 19:45:21 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=1760102452; cv=none; d=zohomail.com; s=zohoarc; b=Z0r7m5cPU+7XfI6o8ohlB7M18XXp1Nujz3S8Hn8WD0DG6d6oddmQ/oVM2LsuJ7D42rm7z7lZP0DYOLxLrSto20YYksMQuJx1LpXnRT0nkYTgT99CB3iS0za41nCKiseVdMgyuAG6sGYsNuq7rGIkMc3SLFkaSiJMaQzZzXHOGGU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102452; h=Content-Transfer-Encoding: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:Cc; bh=op1IEfIKIcRCoQLOQttqu/+UadW3y7InhKh3c9xcRII=; b=UIQmXG78rVoOSYLjfFxvEvsJGCBXPyahWcR3coarsRDcAWdut0i903JE0rJdc/7wWfgmRVTA0gLXMhFkPWf819yndQ+DLbyLUKx3sFmNk1jOZhPuUacBcW2wcl7eAMFUbxQCecBdclWCMSugosQSoRnnwVhLdLqpopunou74CCw= 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 176010245199618.051986504326123; Fri, 10 Oct 2025 06:20:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cox-00069b-0A; Fri, 10 Oct 2025 09:06: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 1v7Cop-00067I-Gj for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:59 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1v7CoX-0003lM-W1 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:59 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3f2ae6fadb4so2384193f8f.1 for ; Fri, 10 Oct 2025 06:05:38 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101536; x=1760706336; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=op1IEfIKIcRCoQLOQttqu/+UadW3y7InhKh3c9xcRII=; b=obknaknlqp4Ni2Xp6bbUrpApDxbLjFRuAr4jdFWggBkodd/dhZ/EeA1KiffnPVHxlD 37ZHLzmqJ/xMs2V/R7eazVkeHkV8PQ3x+FSrb+lCzIz1r1xomg+J+4Kv4hF9FFd76lmB PHZFk54eRAJxlkfoO9NPv13MWFjPGcnu08dLB0Zw+g5ar3/tc1/Ax6twRWZDEQ6fFQ+8 HKzwc+6/CKQhuaNYTCeGcU0ZX2agAxHn6HL64kYMuy8MaLUEP3AuFosyQZUSdIi1Avve 1sNbHEMPNkZaZ2uRqaUYbbluIiFkkJcEUxtt3ap+LzchhMcvmzw0RRaiGSSzkK6wqSVG gDtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101536; x=1760706336; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=op1IEfIKIcRCoQLOQttqu/+UadW3y7InhKh3c9xcRII=; b=MED1R2LqZO7O2JlgIuTL7XoBhniOFxZumZy/LVjz2IRGHgDVLomC5eiprnBFZJx8Xf HcYbLNljr51xFxMi8G8Kc+5I8NVOYtuDeR18NHQyqNvGP8MMqJYZ+0y0kMQsO/uezPhR r/jJ2P+9pjP+3ygEt4kRilOX6N+1xi5XmQIKZySsbMNgCVMWYdVmEieA7ekZ/0THr7Dm QyAEpa6L9v8umCcUBL3VBOiYHYPNqV2JECT2tROjZWJ4y/ODogNIV1warjCGq8v5JD5H qcS7VutEknsQTB1eqk71c3YV6N9PNdhvTeyf6aLg7nL26EA7DU5KetUE1WSc8o6YyXDM QeIQ== X-Gm-Message-State: AOJu0YzEY342pGvnKWHbWst5n/u+66mkz3NfSzvzvYc99c/Y5CqAk/2b 5rDnV6CQIVAZ6b2+oEM7BY92dJYO6PRWyjWl6ANfsdyXabAQ3TvehzbPRjcUFe5mLELWUgEjfG+ 7Xp5R X-Gm-Gg: ASbGncv3rZ7rPBHhg2p3MF5RcgBlxkYNGG7xulh7gjNM72rZpy1s6PTXyVdQ6mP2vNI VLLBkZBuh9nQJonxxUSO24ou1rz35ZgtTarH6CAZdGq2MPTYDOLxqBYFqAtNcvah/XMfKcK56vy delGT3xUgGFxO+43OpiijUnCG6X2VsixRINNEab9Nyh0VUJJsUiHR3UzOy2FD1eeeXKly1Xihhd v0wn2y4vggveyz9bQ2JgRlNTVK5VJINjsMLLb9WzwPJwn28E4KfrewuCLw/APrp8jDstDuFuiPc GuWm58sm7tqjJrOohtQGMoHC2EgrnWR0bgA5wVzILIOPRScA3FB+MUGjYQ6z9P5QnJ3eBRpwyWb DMNSfW1DnwasIcU/YNquEN5yG1GbDU3w9iBP6v0cuW7hhYll35nghBZz6ONblJg== X-Google-Smtp-Source: AGHT+IEmWLOuWJf4vCeyg7j3MBKkAf2QSpQJDffgII4Br1+Plvx6/lrOiUS4TLHAAnlyOE2xOa/+HA== X-Received: by 2002:a05:6000:604:b0:424:2275:63b4 with SMTP id ffacd0b85a97d-4266e8e4cd7mr7611866f8f.61.1760101535684; Fri, 10 Oct 2025 06:05:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/76] target/arm: Force HPD for stage2 translations Date: Fri, 10 Oct 2025 14:04:16 +0100 Message-ID: <20251010130527.3921602-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102455094154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 20a189ef4f7..b7bc27436f7 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 e03657f309e..26570231205 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 19:45:21 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=1760101625; cv=none; d=zohomail.com; s=zohoarc; b=glE9h9/TPFLZsKr+2xOujpsxBtcOpb4rz00zDi1HMQ3ir7l+GdCuyUGodYYEhDxFPNk/INFdpN2bAh5BGkLgg43h/GGR79950PyzDWThUz+cwI9j0IlqpKgQW4pnH99MpIlxaP61IPj7NLIo+LQQVJLCdjX5YIfb5qfP3Jxv0D0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101625; h=Content-Transfer-Encoding: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:Cc; bh=YLNaK8Bxzz1FjdeCqLMiRgOHl9BJ6T9HI3hQdq9vqtQ=; b=YFK4TqzKXi6xrIUJ3EvvWAHJia+h2+pjf63plq5cAoX+NbhIDm8gUSJAKks9oksrZ6Y+HDVTc+YoveHz6po8enucVtSl4U5iqtC34OSE9Oy9gSwz0bEq5QwhmweWd5h8HLILN8PrHThtCtLigH06SvxzaJzVw7SwIMmA77pp9D0= 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 176010162511589.60032467302176; Fri, 10 Oct 2025 06:07:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cok-00064y-Ni; Fri, 10 Oct 2025 09:05: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 1v7Cof-00062x-WD for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:50 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CoX-0003lV-19 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:05:49 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e6a6a5e42so10069505e9.0 for ; Fri, 10 Oct 2025 06:05:39 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101537; x=1760706337; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=YLNaK8Bxzz1FjdeCqLMiRgOHl9BJ6T9HI3hQdq9vqtQ=; b=XUO41K2/ii7c5dqg4DyM8svdSaIMrPdyUjDVT8kLZu5dGDIXkegzV9PlV0NiItizeH NuMgeBUqdTDQo2yyLFYvzrtcK25/1sWIdR5lcTqzJiG3gvilgQL1Hmi2+dVMQ++4lLZF 52x7QMsqxztR8KFXi9ak05OfQ5L+m8PSiaqGOhZmWf8sXGwSowv3PAxXm4T38omoTkt6 ih9WHH7Dowk3NusFzf/AGzYZTPzB0/YigORKshPNpB3xG0fIXttwE1SX2ThjmFOjrN+h AO4Xu38YBVHAXl2+WTtdRAFFdIAMVa4uo6QKqth1KsbWH/KnUi8Jn5Rp42ESxt0z1LFh 2zOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101537; x=1760706337; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YLNaK8Bxzz1FjdeCqLMiRgOHl9BJ6T9HI3hQdq9vqtQ=; b=GXk2Oob9RegZVrUXPDeqK7qJrLp3lrzUX4T+JxZacH2tYhCxMiTfhXejKsth211clG wdlqNt3oPT1CV5LakaSZGCl1JYOUhIVyGth/ziEHf7ysyMqkRJI9Z8QcAcvpuTqnW/DS 7uwXAZ4CKkd2spyZ33N8wznqGzqrSAkvnjl5IaoDl1qw1k6EpXchkyXmHgcCf5j9EmVo XCZTk7JbMaLXQDDRbLMHnzyu1keRmPbT5IO+OmrAH6bjyIlPSBDEsRZgM6QF09HO/gK0 mqr+5+EzUiTFat/cZJVw6EZ7t7d9d9JeEfdRxwSnyPSVXr8Fv/EZyX7P5xeelFpp7yP1 83GA== X-Gm-Message-State: AOJu0Yyarz87sWCSWW6R9Aj798QVUOku0HWXEUu35qt6IZ9GDLKAvkaV o1fDtWL/d/SOESMPXBquk855fnz9PBoiE/xudl7q48Paq5+peJU7OweTR6AtpEVvfb301HzT7bY qhEtC X-Gm-Gg: ASbGncv4sHxdud67hs5F5m8ylh1JaSarwKF8dfCjEbGrdUJhO7kf1M5fyADHm62CEcS XTHF2XoYPjyG0AWivTi30nPng7rxF16R7XYYrxWBYc/Tsm5KEI5H363KrKc+dXJ5Ovc5HzKOXzV 8xbXuFWF2jWdZEwxeZmir06CJ8d7z8mPCPCGP44vtXGluihfjCXxCj+qoQI2BM7/9grWluAlhWH WgiKFKITpGL1UBxtlMKg9JUYzK+oe3aggB+O4zC/17Fih4EGkbPXADAX68DDATiE5GXeBdgs+L+ NA5Q1qYkbzc19xI9dWaVVWdMRrnmUzAtVE70bKItWj3wIr1n2yhdBy4YIcWpG0Dyu6c/5z3Ko7C J8da1SI2snNKV7B8D3oDagafFNcBf0JzBTJgpzmhEwRLWWIDbdvc= X-Google-Smtp-Source: AGHT+IGQbZCxOiyRNI3movBRua5/hlyJbawQOx8xPA8AT8VSJMixHAoy02CVEJiOzz4hOyP05KPfuw== X-Received: by 2002:a05:600c:45c6:b0:46d:ba6d:65bb with SMTP id 5b1f17b1804b1-46fa9b01de9mr90074565e9.31.1760101536654; Fri, 10 Oct 2025 06:05:36 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/76] target/arm: Cache NV1 early in get_phys_addr_lpae Date: Fri, 10 Oct 2025 14:04:17 +0100 Message-ID: <20251010130527.3921602-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760101626516154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 26570231205..e1515675eb9 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 19:45:21 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=1760101627; cv=none; d=zohomail.com; s=zohoarc; b=nc+vrAcSgHAK7MeyW0X/iq2OKy5dcPMCes/9zopVLZuISQJsBPzSP6z1syA6gUIO8EM4GzfR8qmG4AfcLeGzrNTtmaSJfO5OIPiR9P++A86O5U9zH8HemX5rJFsLQMA6F5Shnp3EedOF5LPvHBmkMF8muCV7kxslwIAL5qTWgM0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101627; h=Content-Transfer-Encoding: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:Cc; bh=ASyzth2+dJyh1MI3oXSuce6UC/YaXqBlkKj5sq9zv/8=; b=QKwvNqAV4RxRvWs1Eef/wiKuXtQ9WtNJwLT5Pko8oPvhQil39nMjhtKlUpJG406I3xKGHq7r8anGFRYRx4Y7yh/xPICXOAcQuxwUHUBsILpgAimuBQQElT/cw+XOwugT0oIocCmk61Ksp9hsIDvNVs7n8YXhOhzi9KJQn0b+xgw= 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 1760101627175340.1708722647144; Fri, 10 Oct 2025 06:07:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cp2-0006AF-Aa; Fri, 10 Oct 2025 09:06: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 1v7Coq-00067Q-HW for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:01 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CoZ-0003ll-Uh for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:00 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e37d10f3eso15327415e9.0 for ; Fri, 10 Oct 2025 06:05:40 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101538; x=1760706338; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ASyzth2+dJyh1MI3oXSuce6UC/YaXqBlkKj5sq9zv/8=; b=vrvhbYyCtdzT5BlYbsVWSGmBudnB4U+EilDevsHkuRwsmfbqtBGUsFauMZz/qEmB0F 30G6W1Wt+kbE+YYq8/ma5nXSSnjN7EK5hOFDz9uft4vrL/8Pc+ZkvJEM/Zx4PwK2a5bB iSiBWM7BvoT1o3oV3Wexc3QElfBAdqybwsiHbKRan9DebtttU9pX33ohPCWWC8pdce5Y Hph2L6tjknmu3WlYfix8u5YlgVdpr8dbQLRhZNkHotJgPWboXH7c4ULf8+WjgGVP9dfY 5L2WTqd4hr4ahZrvsir43WBkckSHrK0GT656AmRccPXNcpGrh7fWwz9wJeUrvaP7ii3P FpDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101538; x=1760706338; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ASyzth2+dJyh1MI3oXSuce6UC/YaXqBlkKj5sq9zv/8=; b=fDCAQvx+Tam8/aAElDwEn8vJ9yKp2e1DVKAADeEocreHcGuHRVpuvo0j1X/1VLHdFL bpXpjCUi/wbLPlIKkCytWg/BEGz/MxrJNj9cKzMq9bwPHqY9kMc2tor1BuDOI/7dQtFX uynYZqItNErCkz1IEgMJhRx8dXeZsj+aIdoZk9w7gZ6lq3IMi8oCWDrVjQMX4t+BsO4I NszpeYRWl/D+qKMHUH3bsae6ibkWxcmaXR+wOc+efIjY2A4cU86i1a4Y/Ih7Q5AC2fWP mU8PhqdNbL3AwoZRDyYAwcxhtctKEfNcA8rBXE74xoYzhA3AjDvPLBNueeSp8RYIMfVC 3csQ== X-Gm-Message-State: AOJu0YyucSE8/WePYRbbd7QHKSvmHK19RYBQBvTIBCYKyYmkDT2LptMv /oeP0O+zE20pc5zTMPF1s+B+HDZWad0V3ZtkdSW02F1nQu52eWHeqFDQDGVzHa4b2FcHYFVQOdV K4njp X-Gm-Gg: ASbGnctU8yq2uo4mBnQFXRbep3SHTypJtr0Y/j8IUH6L7fiX/M76o3alTnkhVlHxtSJ 4gtTiakLKO1UqiB5Ot8Vdkbh60sdD+U1feARiLr3zuNCWtdTIW1vnJUkXDZA3+f5rhRgArMhDyK PVuGYOzxwX40RdF9eU30lGXHXR1k8ucZzlKHMwmwHc8MFx/cfbRYQ83UkQz6vUgARqC3mUEh6iZ tIc5VwaBrozzdoetICmc57ccQoXH5dyWy0UZntYvR6bsOxII7bVO/bBf1Zm0jlXDv9PQx1v0pU6 kFYGGqtYJi+8BQxYWPza2xJ0wc4Sow+JV7XKPN4BsMPwICUd9Ov0ryekQ+IMlHhHckksXiL6+HE YcOd0i2+rHdigaQFhyz6klAePYZc0aYNG140cVeMWQleqQMTePjI= X-Google-Smtp-Source: AGHT+IEHPJyeEhNjV1tb8c4DcYPcjewmSjBQkHNYgjkSgLwFEsSCtcbmCT3fxi/vStiukbbl8Jualw== X-Received: by 2002:a05:600c:1d18:b0:45f:2869:c3b2 with SMTP id 5b1f17b1804b1-46fa9b1834dmr83842385e9.33.1760101537784; Fri, 10 Oct 2025 06:05:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/76] target/arm: Populate PIE in aa64_va_parameters Date: Fri, 10 Oct 2025 14:04:18 +0100 Message-ID: <20251010130527.3921602-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: 1760101628317154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 1d958dbf685..face1019f52 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 b7bc27436f7..37865bf70eb 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 19:45:21 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=1760101670; cv=none; d=zohomail.com; s=zohoarc; b=kgdrxW7NCdnjYX+b9vgEyDdZtJbTZ+zg3xj4gVnTB2SY6Q/eIV+XxlWDeIo4VRpczC8HtVo+AWjYUYqbfkkQu4d9UIgfv07JjTa0msF6KQI42ZZASN3nbSv4KatmovlbdGeybkoGtr01cztgTrsKi/2Yfo5HKpZr/rS2W8Uk3h4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101670; h=Content-Transfer-Encoding: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:Cc; bh=Z/5RDRYORElPQjjMWsqBeVSyUnH9hIYqmfXN+6XAN/4=; b=X+dGoQKAUwfxCCVwNYQvms/IJ8bz+MuYzdV++fxEEyUS2Q/Uv06MtNe80Wrg0A+EdohwTuy9eFSPmjlNiZU/4GGnu7YZv3IGLmlkrFX8zmk7D4lsXjE/yawppFCJodKFlTkyeY0qi9sIpRdWGtNZESWCb1A5wpJa5OQSoJ5PYlM= 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 1760101670138342.08614588763623; Fri, 10 Oct 2025 06:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cp8-0006An-4M; Fri, 10 Oct 2025 09:06: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 1v7Cou-00068t-M3 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:04 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Coe-0003m7-W0 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:04 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-46e4f2696bdso21970775e9.0 for ; Fri, 10 Oct 2025 06:05:45 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101539; x=1760706339; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Z/5RDRYORElPQjjMWsqBeVSyUnH9hIYqmfXN+6XAN/4=; b=kBmtKjY4r8XSEvHm8izWEbqG6oK5hOufRer8vZwmNOuUM35EGbpCeMaymMciRLv3zt oG8sRMiEKxQZCmsIlUZb3/5bXQPVd2N5SErGjuOp19zaM+ieSN/lOs01qMqW57C2f4cu HMei9uwX9xlfXYTeRXnc6UANOSnlPDq5eP0RJHp45DrpCCGrW0PtoFQrUyu3l+GM1qlV /1oDLgH9IIwnxhYCM7plPGdjD5P5gu1UbdvDUZPOLMMB64kU5qdK6Kc3PjXpUAN4z6rw MvdX4DcnGrs5f2O2204o/TavTy5TNx9xzLSgNxbi/+h1tVGHvmdufgAMNztbgih0s+bL xMJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101539; x=1760706339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z/5RDRYORElPQjjMWsqBeVSyUnH9hIYqmfXN+6XAN/4=; b=htub+/9cPbiHn4MpDFu7lRk0wlNI6xV/tDdab6MoJ7uDomVf+ush4nKawhbZgBIDlv bLaNhBgXMIhh0gCysGl1bOZN06MGojtCrQoPIAQzl/ItmQyN4TkxDPUhAWjma+4sMQ1a aoy/DAPnv6I/2EMbaJ1l5KyS+YKlxuIi6Ve/pp6CrYCRffelpqWdr4uUCKO6GCY4uXEi n+W9Rt+pRVKmJvltoGqdtwdskRatsuYqTd52DDPwj2h+yIUSXw0D8Mt2ToSwpafescPj 5Dz/bp6IwDkfpfIGiMhioheCDy3cQEBXXu86L5h7fyPioo7QEwKNizVS9rRs44avhTuH P/aw== X-Gm-Message-State: AOJu0YxFY+OzY6e2M3WJQhyZalC9jy6vdrutWGth1gUTtJZxioJSvnI2 NaYrKx+OdSFmAgHIT/QZiYYdaNVRWHDsBoB6CuodJZRQ7y8aCIU6n/8V1M0llAjErL1QpRKEl+v xXBfn X-Gm-Gg: ASbGncsu+jobgjNNcYIOemviHxtwmqmpK7XdfkFHzPkXI3vbaxr6+Srh4Z/aRMmVR/X CcFdt3f8BvFh5kx8DyjdLxcyBQAduHGCIlMoEQ6NmziSkevSf3EZlv8BtxVP5hGADqLuRg5aeA2 qyV+I3xw6vmya2r0xAzr8QY9gWhML/K8pIvcAwGLUY5FqxY0ucPNd1m1JscJF1Ss3KtufReWbKF 0mjFJxuUPkwBDWnVNDFkWdnO9mL/BVjC2CUjA8JoCqLEFSGN0uJM7oW5oZjDY1Ak1rzS2S8zFsy eEe/MTV0zgsWX8jZrsx4bfVuxm7AzSHwBOmsnjiA/3/LemgO5yc2DBW9wsX3atgjkFzGB4K41h7 wPjSPeVdagD7YjhPsz35K+UhnJw2xpmM9bGPDUQqIkRJRUpx2MNtAz77HOf/INw== X-Google-Smtp-Source: AGHT+IHxNaGRZlNCB4Ute8t6kaoRQAsfIFK4lHhSwygoOg3KSmjMo69EbKBXN5Q8iZb6ZIFtqT/+4Q== X-Received: by 2002:a05:600c:3b29:b0:46e:7e22:ff6a with SMTP id 5b1f17b1804b1-46fa9aa1d79mr89302655e9.15.1760101538799; Fri, 10 Oct 2025 06:05:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/76] target/arm: Implement get_S1prot_indirect Date: Fri, 10 Oct 2025 14:04:19 +0100 Message-ID: <20251010130527.3921602-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: 1760101671893158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This approximately corresponds to AArch64.S1IndirectBasePermissions and the tail of AArch64.S1ComputePermissions which applies WXN. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 e1515675eb9..59135560776 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 19:45:21 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=1760102255; cv=none; d=zohomail.com; s=zohoarc; b=N73RSHjJ6FFJoUiKhndxuMVB68zlkrvFUQ3Z18MGgAVCKOY7DBlAaTqtOlchDV5kNiAMEP6S0mSYgAPiC9pvT09irflzTCaDcpGWWGrJ8J4cpX1g2SY8v7vphninE0cX3L/VnbHL6V/eHXP1HG4XKznN4ZhZ3JHqXMYUsR+Jn2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102255; h=Content-Transfer-Encoding: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:Cc; bh=jQndNdeetcNr/PbsPypNqg0wlm459zWbpBdE5jQZ1zE=; b=OiJR/C4o73a8Sn81VbouCFQ/1x2w9bgG1seZmj/WNLDfHUNwqoLnnkL05LPWIebvTdhiVwUbOCAOG0RMwna++hygCHjrnIY/cZW2V0KXHaXmQNB+z6PvL17Vn11u9W8mO3Ze5crJVuNVmksmGKHO1HjMl+75w4ubaOoRNIPHBGI= 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 1760102255620913.0638990695473; Fri, 10 Oct 2025 06:17:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpA-0006BV-S7; Fri, 10 Oct 2025 09:06: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 1v7Cor-00067j-DM for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:02 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7Coa-0003mG-Oi for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:01 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso2101311f8f.1 for ; Fri, 10 Oct 2025 06:05:42 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101540; x=1760706340; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=jQndNdeetcNr/PbsPypNqg0wlm459zWbpBdE5jQZ1zE=; b=b1pMVGMgvgPPgGr5e0g6hjEfovrj3kTCPWwh8G8KX5vgoo70XfKP3W8KK4hSRZOdTg 7RIBsTf/2t9dsxKEStloZW+O0GZl56KJtjYk5c0//QuUZir6mylPjYBvz2JXhtQh36kx nMY/clP4GkcbSkZwaoRHmA/SzRvls7LM3jF5AGs6I8CnYQt7jqaZmLSiwlt2i23YGm3F eZKiNjP9pDcWIilu+NZFBGsJa82SW2ZwFNO6vD4pw6yxDyrg2NVF/RSP+QBPjI4BREuC Ldv5Xp3yF7VOa5nBQhaHe1x52/CO+8moMbzvGHgp50TNfRKbmaFpmZkOfNOrI81X5zG4 0b3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101540; x=1760706340; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jQndNdeetcNr/PbsPypNqg0wlm459zWbpBdE5jQZ1zE=; b=SYuqzqkJvz+C5Vt8Ne20JIaJJCRPa1OvsFfBU4aomVUts+WDq5keUdgLEvc5zNWWLp LPB+wWeA2cPr57ZgkWv0mmCtHC5rUHG8TBHc+ktnd1/9HAiiG9L7Wht9AV40Dd2oHive iidR51zSVWCAd+Ry7sGPbqqQ9b+cSW79+GUHq1z69w/T+KWhdUy1udCBD065vZ36Cy0B 99TqET9KCWR4VMBZfrt9AHQIdUxPQcf3JPoLE4GOyGJxagazUJ3Z7StutWaGQmCAhgm6 LCuNhmMOzebz0bvsR+p53NAIKPi8vnwkAi/FrGDOTqghJZJkDsnJ6DLzHlOdi8GpqN9F jO9g== X-Gm-Message-State: AOJu0YxSpZA5MNMsLLUyJeJt/ec7uA1x7tmATlgKBEgEpO03CIYUFZHv p4Ac1802Hzl48gkwIHREoshatYHrN2eCT8D7o4faGa2frw+GtJFKyZWTV9trlXLUEu125LPF/DR idffZ X-Gm-Gg: ASbGnctjKXTSJrZFO87jRdSj/PFFSuHhYOJ+qARtmKs795DRxXBdEeduQQNKZQ0Q3GM vvpQl/Zok0bd1AZnfMhEsP6t3DFpq5y5ddhewlZWFGYqvn0ZCOFSMXcNIcPH24Z4gV5tfcgmU4t ywJkY80JgMC1JMNmxW0ii/T4vUTAzrsClWILXfanE0RoNe7wLEWfC4D0H2D1csrDgqPjXbWJZ6D D+CyYxBQRNYwiULR5y+HBpvHbZMPKuyxdd80qG03EBYvk0+NrGw/Fu/kSTRi3JFiY7zoDpzPN2f ac+PTZqXfZODhAH/srTPJNhERztv5U14zp245RZlTkQcL64B6W2hPYv3FYFP6gYc3qybsOhlVZQ ZhtbW5WSIuIxjEkVnhWC02pJUSywbYBSFQuscNqCGWzNdBwNX2/s9+xtLc+kUWQ== X-Google-Smtp-Source: AGHT+IGAJYWTb5Tw7g5zhZmcQJBx0P6+9/Aj55au6nuq4swoCvWQqrWUHGaZkDYtPuJjnoL54TP15Q== X-Received: by 2002:a5d:5d88:0:b0:3eb:dcf:bfad with SMTP id ffacd0b85a97d-4266e7e17c7mr6626858f8f.34.1760101539842; Fri, 10 Oct 2025 06:05:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/76] target/arm: Implement get_S2prot_indirect Date: Fri, 10 Oct 2025 14:04:20 +0100 Message-ID: <20251010130527.3921602-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102260940158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 face1019f52..22947c4b78a 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 59135560776..2e026a7c597 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 19:45:21 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=1760101755; cv=none; d=zohomail.com; s=zohoarc; b=N+CHVVQLUNhVA3fBI3UqegWW2sg4p20Uob6b+/1uowm/aOc+iQNazdDXfTHTAG8PSZwmqo5x0vUSs8NOH7bLwtIi82wMGQUh9wtAyMOsygp+99TmAeuxMOrUPg66/N6UGf6Nox2T6rEfnNClMmE97WLgLDNVktDSD2d6L1e8/ls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101755; h=Content-Transfer-Encoding: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:Cc; bh=TCA0a51x/0hU4qwXin7PiPqwLCuzNIeSk89CpOUqDlU=; b=P0X75ndwjcWsjSjFugMRzS/PiU9vVh8XCwiIHyKfvZ5JSOZsnpAMwtMaIagUlqFO5tBctjEI4kRSOVcld6m+IoK5EJTCEEGomPt4R4jRjaFASPPp/uhkFkxIu3iTmYV8HbeRFbNpx20xSJ6wtF7+18FAeLKnjUvlwQG0NJhaiEs= 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 1760101755108709.2750594229846; Fri, 10 Oct 2025 06:09:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpE-0006DO-Ay; Fri, 10 Oct 2025 09:06: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 1v7Cor-00067S-1B for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:01 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7Cod-0003oD-H4 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:00 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3c68ac7e18aso1425394f8f.2 for ; Fri, 10 Oct 2025 06:05:44 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101542; x=1760706342; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TCA0a51x/0hU4qwXin7PiPqwLCuzNIeSk89CpOUqDlU=; b=NWZmcx4hqIjgfxS/Jt/wQzl7/OOBGDowTsh/sSirzuFvgbrh7QCBgl0wzb+D+ASdfd VTehLjzZDjkZx+C/vJmFPK+CBsUHcqfldLahtO2/1CRFkL8s7ttE5xIOP59fIjVlNb+U vvJY8XkccLX4W39mf/1fz4WQTNigftp5u//gGqqCj4vM0nlqc0Qgze5VigqO9kyG+ikZ Nb6De9mswDXVR0jeAbzD1cgzo0LgBkNb9VDoR/6t5FKoPBgD4OoO197kni7U3PDVX5jd ideUPKo0n8zy2lwtnXDsoXIr5EOb+UANsKLOESBK/X+bJOeQmrlTJBtq4LjjJ6jQm1UL ifGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101542; x=1760706342; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TCA0a51x/0hU4qwXin7PiPqwLCuzNIeSk89CpOUqDlU=; b=rjeeIlZevevdUo95BSRjZ+xWFeyehr6g68zbKG5wHPlVXZCxkqVX8WaZWPn30p8YlS 9nhyxq2vRyo+EvTyL3Cp7LfQ8lRbdM70/asYDXUPzIYOcmE+Gh9lqca8bpuVLyR+bFMf IH0FXuUzDi/mVjm2nmNJKnKpSh3Ly6fx+jgSQfyUs4vHKxgxgxcpHuy4Pz6kdibqwkti 27k7M18lI8TDYGp5+6mtnLn/odwZdYf7mvGLCrDIdJvNIARQ+9neIGK9r4lGeSViAxUh ny20AmyjGa0sDvaWc7+8Qn4j7hKT0TjTcDEbztELTCj7WPOwVJwhUAynd/vtQtEorjCQ f5SA== X-Gm-Message-State: AOJu0Yw4A/kBfEpiWtX77+su/tDTy1UCacHxmxj5kVHmeH6FhVmuSgi+ wACnoTLnj7RV87mF8ApmaHIh+aZ9O7I+T62+/gbzkoF1Ocy95dpR0eHNStjq8LZOR8PM0hgpAp2 JV3Jk X-Gm-Gg: ASbGncsxr+ONiiXAdc3Vy19qgB/KAdlhRJ2LAamXx5p8SNYgYorlQUswx3FhmJXRwV8 54quQdj9Yoe02hEemShacRsWbmbfb44lWDgev1JFcng6yXYmx2dYDAVNW6PpAGEnsASi5J+ecYz etpEiCnv5Te+I7d90J8WQXSDHozvMKZXgdH+TtAQ+KR8jOwaP+Kc/gCUlOl7u2XbSo7+4kZQvhx /GGDkVXXMz9bHHtwzAmasDwylYiyE5oTkVlOJt7J4IFYD5NWH8Pv/y1Loolp0V+sOft1aG3iRYb QLSoUFntZEX3vVpbDhEm4pqi135DJJgtbDpCgUvjELUXd2BrLIkQVV+eieO3zgA6rsI6Llr5jB2 ALeblZQeCbPH7BobL0cJRGzEevTrj3bpBEv2+oKu4e6WVkRhvW4E= X-Google-Smtp-Source: AGHT+IFC5slyhWb+h9iqyRhpE5DnCk9+lqxGlem8Kx5OKri6oH3y7MN0E64C6QIVsiYzSNoJYPwa9g== X-Received: by 2002:a05:6000:604:b0:424:2275:63b4 with SMTP id ffacd0b85a97d-4266e8e4cd7mr7612106f8f.61.1760101541582; Fri, 10 Oct 2025 06:05:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/76] target/arm: Expand CPUARMState.exception.syndrome to 64 bits Date: Fri, 10 Oct 2025 14:04:21 +0100 Message-ID: <20251010130527.3921602-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101758408158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 c9ea160d035..04b57f1dc5a 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 37865bf70eb..bd5321348ac 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 6666a0c50c4..ce20b46f50f 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 19:45:21 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=1760101942; cv=none; d=zohomail.com; s=zohoarc; b=cR6tFv2VckJNGfJ0lhPUx4vlHEhu80/CXFVniJRJyCzwn0nFryDDaOQQFDavL8GnNB5m4c6163MyaAiLg3Z6H8sBF5oGZDuTA6SRlSaOvupFk4tXE2PNomjsBBnqUL1Hy2UuAaM/afpzaNiE7ndHttbSwnDTocX/4b6iV5g/JpE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101942; h=Content-Transfer-Encoding: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:Cc; bh=9dcfmwjYkbZTi8Wx9NVyh7rWPBg1Bwuq1q8D9KfASMg=; b=Ktfx7tTC035sZP2rEubnrWinsKp4OASKOxBug75Qe1L9PWKXyBhct3JLkZdWXZL7D34EesjukjT28uf+7k18ehsVlQeL8v/wK3Q1/S4R0GT9zP07LKmJqztzUavPODwdm9PoY2dHjWUGb9PLvC65UGjLwRXYDv5Y7rkh97dsxEc= 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 1760101942419676.9859905018213; Fri, 10 Oct 2025 06:12:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpF-0006Gy-OB; Fri, 10 Oct 2025 09:06: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 1v7CpC-0006BG-50 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:23 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7Coh-0003oQ-1b for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:16 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-4257aafab98so1792390f8f.3 for ; Fri, 10 Oct 2025 06:05:46 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101543; x=1760706343; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=9dcfmwjYkbZTi8Wx9NVyh7rWPBg1Bwuq1q8D9KfASMg=; b=KMZAjugfrUXzwptjHpuarjgCgzDugLoAVAg5Ku7ZPSjZt8tU3mtESbkuKc5NgqDGpy STqz+iNLOQNG/SnbRERumYMkbdI/iyIDSBVmOLV0YuTUl3QgGcniobH/ujrNWHIYVx1b VF0vZml6DPHDEw05vyJeJPc3yAmkdLj0hp4whFWjetTsCb49UYLmwF4gMTvptXdw8QEl 4l7dEfEQskrDNc+e+HkBoVd4ApQ09TkEcdAuYAzlhYH1wCTCs8UAe8+CjUFSDQqyjjtd VLWsvQiTNQPuadlyUmHfFcoAvM7wHxxDKG0IUvVlm3jL1HLOyOzmkDJvbsGwp0Py2TTA 7M6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101543; x=1760706343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9dcfmwjYkbZTi8Wx9NVyh7rWPBg1Bwuq1q8D9KfASMg=; b=oAa0xxU6Q94/rEZ4PU3wUHvvFwHgAHLtiVEWIQQU5v1LYwt8XGwT/124fPPJuIG9/V HELHnZfC4Pn/XS+CR1231YfgUyECKZ4YXddQ6WfnzweNZEgDektU9TkCIQTSJuVvJiuR LjKeb7ehBrQB915uf1mDkDK/YvjC/7p7EJU054MxVz4HRYm4gUdpTuKmMrE0QbmCZtRg WSxWWikZCsFe6igfyXQLnMdpeBWDsG0/hp/TgBJQsXiCAnLSeiHpmTpH2QFNGST3O9cC o2M12e7SGu3TvfzYgSvf5vTTDQSjsmHNV3hJ6LfV9IoN4bj9xXhmgyUXwFL5Lgcvvp8B 8Rcw== X-Gm-Message-State: AOJu0Yyg65d9KonsQS8Q0Rd5SZ7bpujIMusmMC+NNjpcFW3RYFW+jPQr 0Uo1TbFFnbkzYNFNm+bNQw64H77Ly/69I70Zcosbxf+VoIc6U9b5vs8pGNZyfYFTjaz28aATtOe QcEJk X-Gm-Gg: ASbGncsr4+Wzg7iieprX/HCUwgwLTm5msF0d9G6SbGJ5xhbjv82zZdsaEcC99nwqVK5 zUx+NqaDsJ9wHRvCt1ZUi0mhgnFgoLZZub4eHOWyG7skXSH+nKJbOSuXIjqY1b0pSDhvsbapppT 984XqjUng2ZmrYva+gE/K0nQGQIClZHeIaaPxTKg3wSvY+1iSYyUA6JPy/86k9qlBQmHgHw9nLC 1+ggY4lfZ+GFvF9LcealO2h1zG7oj9maDZf3tVzOZdOHTdaVBvwT7htRqDV/NL6I4k7/DcTU4ki AYqQnBWq1Kv3K0Mqk2aJMeOgFwhqjJSlo6Cc4OJXS7hxbqdpjWANIT4v6KMbI5EgDcZ1/fpD7uv LsLjlxsOHkExoMK3p/Jr6GVGoY1ZLII5eAxy71xIyRJu1g/RQ5+g= X-Google-Smtp-Source: AGHT+IFgMEIdujMWVwC9MiC7RDIha0IW2vZX87omVv1bDowj2OFfGxTxWXG4dbAl8Cghq0lPikniqg== X-Received: by 2002:a05:6000:26c5:b0:3ee:1357:e191 with SMTP id ffacd0b85a97d-4266e7d9252mr6968186f8f.30.1760101543087; Fri, 10 Oct 2025 06:05:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/76] target/arm: Expand syndrome parameter to raise_exception* Date: Fri, 10 Oct 2025 14:04:22 +0100 Message-ID: <20251010130527.3921602-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101944093154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Prepare for raising exceptions with 64-bit syndromes. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-12-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 22947c4b78a..b59650959ec 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 aac99b2672a..aeeede80661 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 5373e0e998c..dd3700dc6f2 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 19:45:21 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=1760102735; cv=none; d=zohomail.com; s=zohoarc; b=MgKyjCL1lCif3yL9IMzOgpj4fCxOvij54Ne9pzCE1ngDyiW91p5LH3A0Dy5H8b5AFwpQ44GyWoYGeF/iLApEPb9F7ytT51fncYkIh4MpRS9N3xEjbTfmTcHe8hVfUWVqc00ejM5k+x+xCdBdrRAcKV7rRZ7BCneAB79/kZUwLWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102735; h=Content-Transfer-Encoding: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:Cc; bh=VH8TuOXK/91AQCE6m+GMPfGKCjQGAriOtz84pgrVsYE=; b=F8EBm3HD+QFxKOi0GypJMMHhDTS7HFjMm5/Il7a5+GggCRYJIeGwB+8cjjnVC2q3n+P4d9zpIU1H6Wfs76WUanPKL1hr6j+d/cFMBS9RM8oDGrtEw2fyvBMQbVG9L/VKnsAnKjAyx029jQlq0w2+p1lz5/AV0bStuXQjb/w+EgY= 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 1760102735596775.8317250902398; Fri, 10 Oct 2025 06:25:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpK-0006Je-NL; Fri, 10 Oct 2025 09:06: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 1v7Cp5-0006Ao-OJ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:18 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Coh-0003p3-2N for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:13 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3fc36b99e92so2277581f8f.0 for ; Fri, 10 Oct 2025 06:05:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101544; x=1760706344; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VH8TuOXK/91AQCE6m+GMPfGKCjQGAriOtz84pgrVsYE=; b=LA/VtPZuWxyKxsBIbAeiwyUJdxIhX4kYVnCqAhSApFkZuXwn/epKtkD8Vb+u3JBorf AlSD7yxYrdCp15DfSmpw3VuGilj6ZYpAuxAVwZZnq3TpOQoBhNVox/3JYIvDVX4+rtpA LVIQ36+dnoO0JhCY48mudfpDegnKiUrg97LoQLYI0eNM+hON3nNWb4u3S+32RssO6cDb U0cdRfrAgwmz6TU4W8jrY2M6I+tgxX1NA020niULIgDi6mjmYzcNIC7M3kVR70u2e7A4 eQctghGi5Aktqs61qtIi4oKf5qbhjviCl0x49/AFuCSHVe1c6L2TUSWCB5Bj/lHXOGcw dU6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101544; x=1760706344; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VH8TuOXK/91AQCE6m+GMPfGKCjQGAriOtz84pgrVsYE=; b=vhqVcbSWcDGv/0WnmbTg2S5u3GvXXqzu6+ggYj6gB+3b3Bzly9r/UVgNWdzcVn5biR +dmgpJYt2euesX/isSNQY8VtXSxsuMbBVZqNzAc1llfo0v66mO8nfIranCdt3FDByi8g sCzPXrIuqAN+cGzSa4WkdAPqXEyh2izWf8JxgXJipYm9hmYgDeIofVePZSiETIsm23DN IQ/acOObLQ9kqusAPRd35WMVA61GCasZxHbbf22cKlSKu7g7bOMNI8boYDwiD5gVpsNP 7J9vFPfH6GEEsfQZYAKPQWEbcnFhjUKJP+g/YlOchzJstPYW1Vn0bod/RZ1bYuYSp0O4 uRFA== X-Gm-Message-State: AOJu0YxcEeIW9EkBbxMkO4qqB8CXwNlaz5B1KXC49nl+K6nm6kkCGu51 ts1V0UTI0oV31sxHMtnfIVsPYtBGdFJwJtWuz5rs+H3TQb3+MPSVZCMRs8ztrHfkF65E5ZGk9zV Pn1ga X-Gm-Gg: ASbGnctus8jRgvMYiIQfLDM/KlplZVL4FqdeVIHLu7PiQVa2YUfIBoZ1hOgeYCTHh/U l99rlq57jBHWroC+aj8H1MqyZSQ/0kgL9frY1Ub+3QStKoLBSFGkeoSP8LWuctKvizDkGXiWW+4 qMuNE1fIYTS7Dv1IYCVydpBUff9cIS4LPXcYRD4+TPb31JDyo/ncBpkPzkS6i40X8EBrPHVH6hf KMjaq4ZQuvRMN0OImBBQIlwqD/qNaEIHqGVzdMICzlzqlX7bDjvE7t7EIBQcKS1bF+1CrewlrBy sWET+1CXnzgtiBfdg6VlHWTeD+J1okvD67QFAic7E1KprWvg8mZ+yzPIUKXa9YjyCjQ9R+nmkXp HoBSSIBxNk+PKRIoPoS6zb/rI22PqJphFP7zzYcetd4HmBJ2jTQdgXlSCXZPUlA== X-Google-Smtp-Source: AGHT+IGHEyMzDLHnzQHciMHaIbu69lnMMk7+RVLukf37bn55HtQ3ttGIzGUJtTnM2xZYk/wtJ98TGQ== X-Received: by 2002:a05:6000:1845:b0:3ee:1494:27f5 with SMTP id ffacd0b85a97d-42666aad658mr8461025f8f.13.1760101544363; Fri, 10 Oct 2025 06:05:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/76] target/arm: Implement dirtybit check for PIE Date: Fri, 10 Oct 2025 14:04:23 +0100 Message-ID: <20251010130527.3921602-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: 1760102738187154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Both S1PIE and S2PIE have a bit to make software tracking of dirty pages easier. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-13-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 b59650959ec..69eb1df6173 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 2e026a7c597..21540a1ec3e 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 23c72a99f5c..ae2acd67276 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 19:45:21 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=1760102001; cv=none; d=zohomail.com; s=zohoarc; b=EbRnA2pu2tEDlvGxQuOpLJLIBHEb6Oi0/YdGZYgzy/1qFtewomyBy59/aGeYPDJUmrelAascpXBKju5n78FfNf6xUjWHL4kWT5Ha8f0KfaruZjwnMO0BiYiUYddNzZZfZXmFgUhbtt9kKhdakXymZMPVp7e91zjx5vMLsQpUb6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102001; h=Content-Transfer-Encoding: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:Cc; bh=7Fn77nA9fi9EfoppxXjEuvaOw+8iwaxtAjZMWeleC4k=; b=nPwvmjRbysSBEAik94YuLNzwpWFuAhvUYrvsbPAjJQNjUwhenrl1HeNxhO9AawFfBHqdLgG7sEjQdQfWY49jfKQJxhoXZKSjhVzNCfq26neYYcmd6JIr+r3kbs1KQAUdW7QoUz0WCqdkYr6JOj1yzZdNXHiY9i6i+AHYxuQ2uGw= 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 1760102001535169.89738847424405; Fri, 10 Oct 2025 06:13:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpB-0006Bq-Ne; Fri, 10 Oct 2025 09:06: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 1v7Cou-000690-Tl for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:06 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cog-0003pb-4Q for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:04 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-46e430494ccso12205645e9.1 for ; Fri, 10 Oct 2025 06:05:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101545; x=1760706345; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7Fn77nA9fi9EfoppxXjEuvaOw+8iwaxtAjZMWeleC4k=; b=XAzbk7e65bxBxnnY8aSkWpQPYdVGgMOfUiUw78XHktB6rgzvWOfHWwb6eypw6YX7vV 9STaGAUmXljabJ7h/Y60MA6KCFkjq4nYq4dWaL/wsQYt9JfgojLaI4VNvPSbSR4kaMDA /C3YIhOsZsKECtuqJE3i1qltVeXS6xuhAKkLjCqncQ7pudDK671cag4iMyhdavLZZozw Qg+JPRKur4wKIasrosTuNTqJaJTaTsOy7XS28EEXu4GVd2b1J0WePBSBGeTtlXwQQU4S YzO9bwvxdSSBqWGuUgbjw//3ytGukfCCpc3feDXtDAVk0QpYjzKyaqQkqWaR3i2+pIFo NUTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101545; x=1760706345; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7Fn77nA9fi9EfoppxXjEuvaOw+8iwaxtAjZMWeleC4k=; b=b19I1HfEvNeMByf3Ga9a4KqnDueH/gg8osrVOTqqGwQqrIE6WRj2o1qJ6h5Bt24Vdq 2RfShR6Hc/6ciP3akgfjrlZWj4q2KysyMyCA4tIKRtX7CArW0In6AO9MYgBYm4PXmDae ynhV0nO+eBSxLP4ZTgXtazXlhD3iwgZriHpuTy0VwOCOkpoS+i945vev0CSp0oQOlrsa hrk/4yXlJxhiyCTRj5b5J9/FTR9Cd0b/V0C6NXZA03D/pXMr6dLVlNX7Jq2ZelONN42g M+1vQov98dH3fmkOiHP98APXfNYfX+WzF42YQkAya7+ZAWQBxEibXkmvJTV8A7RnzOvr Aqmw== X-Gm-Message-State: AOJu0Yz/kc29VWkqnCd5BsglDV8RZKLvK2eNlkFeTjWRU6AocPv02xyJ 6WLrXHyda6TmM0EuhetRa60tuN48/dYyZAm7BYZNXiir1e7ulV83ZoQBlGWPtj8S0AYvDhfyaSy wjr2T X-Gm-Gg: ASbGncvArBWyFAo0rMEiy1xmI0qfOhabx1tw2CEDRB4gmrYlgecWaTpLIZncMS+ZTy3 OAlWLAq6qKEzC4SNTPZ/Y87q8QPZkZi7zp1tD/JC2rmnvoBOndY9NmG5LFQHeUV5aH53Z/SrYoa n6FWALZlPphK4OMNSccCcNts+V5sDyqu87YhFgJ0M430VLpHifufGPYovR6i9C1a7WiMVEdyKuM naXC+2suQFFAbNmiZAePrVg975CsPJbtU7Z9la66w7n9ZeB5MdpBC7ym/tCkT5prp8yQV5E1FGb 4+865mDLBmncW9gLw1/3Ygz6OLLcv8bKoATSRS376rz8oCAuEXt44VqcjRaI39e6NcRcRdxGfxh C++KVLyvlPLLOhafqUlgjcQ4/tsXqmKvJa1imvsGL+O5jShXvMB0= X-Google-Smtp-Source: AGHT+IF9AnHdO62mq8DKLzM/yWhyWmfSAqZHozLBMjI/5mTiB5TGBWzLMxiVky1lPCNAkm+x6Nmuqw== X-Received: by 2002:a05:600c:4ed1:b0:46f:b42e:ed85 with SMTP id 5b1f17b1804b1-46fb42eedfcmr25960185e9.38.1760101545488; Fri, 10 Oct 2025 06:05:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/76] target/arm: Enable FEAT_S1PIE and FEAT_S2PIE on -cpu max Date: Fri, 10 Oct 2025 14:04:24 +0100 Message-ID: <20251010130527.3921602-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102003003154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 2 ++ target/arm/tcg/cpu64.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 1aa0a6e4c39..c779a50570a 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) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 8c617fe37b2..f024db1d29f 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); --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760101756; cv=none; d=zohomail.com; s=zohoarc; b=TECoOlayzcupgqKT7Tv13zCSvDKGNA8pgA89T2oiKs/z2ZvkBnnbFJv+gR4e+eJBkwazCyLkzfc52qxbXUDWPmamYc+/HwQy0dIcIMJO98+qXtyZ6rwota4FzBf+EqctZELqImxgnbOe22aiZZ3P8fK9tUOlOYmen6jD7wL/Y9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101756; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=enwh1J6egv9t5DFR/y6StdYupePvfYrOAyg7vK7uziQ=; b=EdouQu564mw/WhyxuSK8RHDmdnWYGehe13r4LQRxk0MizVqmX9tMsKWwHVH1gKKSVd6M8uRixtNNlCkepa+S2nJbNoFLynkyEV6T4EuMG23tdbH98ATi63Uj4oKJGsfxrumfmRNfRvHA9m8gxA8jmejj5h9wVBAo4yldHOdxsyc= 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 1760101756762440.69156292118794; Fri, 10 Oct 2025 06:09:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpE-0006EV-Uy; Fri, 10 Oct 2025 09:06: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 1v7Cp6-0006Ap-Cv for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:18 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Coi-0003qE-RZ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:15 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e47cca387so20234665e9.3 for ; Fri, 10 Oct 2025 06:05:50 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101547; x=1760706347; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=enwh1J6egv9t5DFR/y6StdYupePvfYrOAyg7vK7uziQ=; b=Rl9KuDnSq5bkZmN3iNUDiH8lixZW0pLwGIZpRVkQYh5jC9C5g/pTN6bvJpoZG3AIOT cRL1RHTBmnw6tfESMhADR9CO2LYRVhFVHXFeo9w5E7DsI5ylB/e8rvW0EHhMH6c6DWxJ ePnn9/Ptvv85n8Pc1qSubIJ1T1KORiUwXjvgT4uJGeDpPvmc01wMenEUZvLRgkFKgzFs jk0FwxYdLbq2V8EavaV6jueSHhcq6mZu3JmeKxhUwrL/+Zi3TnZRPpFKmwCsBXkLAfk9 r2QK/+2BoGdd/Kz7bbO+sss3+t+wGbRN4jBVdCxXtBSSAKpFjagiEl3XIk2yLxWj9IDV z1JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101547; x=1760706347; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=enwh1J6egv9t5DFR/y6StdYupePvfYrOAyg7vK7uziQ=; b=PsF9ut7NMPIHC7Qw8uDOx/OhJpVoA9jl3Y+kQ4Du/PdyVwD7pPrc38A7yvbhGzYId5 K4jOx1dfmb+LRh2UWphI5MHXZ8LPWrKFTKpXn5+aRKyKjSsLsXoojmMPOcFXR1pMgHmG Us2qbx/A1l1VELhxOu9KtHPS+ynG/BXevinZUIV7Ka+1mSW+FxAKp1WeIi1p7YmyOLZF GCuYHTGmVRPG6ZDQWmS9CQSpBRZsOzFauWN7coC2HJO4RI7ifwWqF2w1bSqOueG5L3XH KN65gKgq38iRmuPuQcLVejWdDCC7BP+Is348Asyg0GwoOk1sL0t8axi+GgbX0j/48xB4 T/Jw== X-Gm-Message-State: AOJu0YzuZGfb/4qneBcJlfxcmAEBPKETh8BjgbDjtBfX5iMDnFgAJ7xH 7/ikuM0Rv9ZgeVxHuieTJ8H9dtagV2WjjnJo6JG/B7FkG+D2IRLqteX6EMb3MXb74WSc0/IKc5T CfWhP X-Gm-Gg: ASbGncuoc6j9BgeXY5eGuoQO0mxoeHOwTx2WIdCLDCFD0fGjvrqccfjuFIWKbOwFJkq T6/KtSA2enleUK1HUBG4bP4PNhjXxokfNCCtaM4QGUBXgDv6c8ud5AObSJTWleYUDeoOlk6tNlG BrCQxiEIEq5Xnh3ML2D+RN47T0MzkgglOktLg9KpnBFkqE+oC6DBYdERWQjHcHpZS7OtjGejnbM 8g5fVE/9pSSLQMUUqu53mKA+1DDjc1XfiwdPYnH/R5jFy4nvlkE/nx9mX+uJN8pIcf7BA/VnDoe yFtC14agIQg/uz3iHJoSYLCqnIVwnvbQmhtOErypcLsKM5mjHHNgobkKdUD6RFROgGpQqd7tPHN OpRf7IW0JmbqYEVdUgSSI6Y7oI/GVpGh7ZexVojHtB1GDtkofNtk= X-Google-Smtp-Source: AGHT+IF01bSwxs+gJP1JJvcPIVTuji1yeTjvhfHhjLA/P0LrqaebyQnw8my6Dior/S+icyegtLlLAQ== X-Received: by 2002:a05:600c:3483:b0:46e:1b89:77e5 with SMTP id 5b1f17b1804b1-46fa9a996cbmr79201265e9.12.1760101546622; Fri, 10 Oct 2025 06:05:46 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/76] include/exec/memopidx: Adjust for 32 mmu indexes Date: Fri, 10 Oct 2025 14:04:25 +0100 Message-ID: <20251010130527.3921602-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: 1760101757675154100 From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 eb7f1591a37..66d9c58b3af 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 19:45:21 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=1760102767; cv=none; d=zohomail.com; s=zohoarc; b=EReN7Wq4aR2o+WnVWQafrsP2PSsPBGTrzVObzGBtS0V3wug22hkQ+pKdIdHvCWixEWCW6cpVf1LsLuiUL9xSPOBoba0fmpbwQrb70+yb4DXsQFTL6I1zkIpBg/6XoOIN4eTLyBkYYuWCTnAzC7oARqSvxuS4aO9cD4/MiyqHAHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102767; h=Content-Transfer-Encoding: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:Cc; bh=xXmMqPnz22xb+g2HM6yf3gZM6LeywfZqHIoIxV6VTOY=; b=mY1U4GMpyWmH2Lca4ALLyc9kCxzHEiMKtQf9VSku6O9jDTVQsfBAqqX5UaQGWfbJ8DEgeg0ry/6ykRBzWjmaGjsU7CAP78BwZeUF+S4aMCogwVayok7OfXVglhlEDpSCU0lZJ46nZgDScl8rYdDap1zXVPGCg1LAXMda8gxj2oQ= 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 1760102767970311.26250881428336; Fri, 10 Oct 2025 06:26:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpP-0006NB-Vf; Fri, 10 Oct 2025 09:06: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 1v7CpF-0006HO-WB for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:26 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7Coi-0003qX-SU for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:24 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-4060b4b1200so760251f8f.3 for ; Fri, 10 Oct 2025 06:05:51 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101548; x=1760706348; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=xXmMqPnz22xb+g2HM6yf3gZM6LeywfZqHIoIxV6VTOY=; b=eiZV4gEwYIa5TH6AXGMqJMeC8qAZwyrSyJYjTJaxnPPQ0C98u7MTykjOJ1UzxCH95v aqhCP9UNe/Zc6MFM+iiBBQ1KsdicDC+qWExnohtlfj0KChsirot+J+vbZP5ZX+u1a/X1 VQFTQTASh3jxFTUehjZ/JYWsCTor/AR5yiQdy6EDCjTVTl0Y8kOL6Sq23TVQPGop/vcX GNaAe5LYfPy3uLSDKC7YiGub5NgTcUNylq5NB0QltNaX5sjo0l8kLAx9oDNfthD6Ceuw Ah0MQujaH1cl/M9A1d1JAGeEfEuOgbbEguTsi+bawsnQWYliAVfNKuvdwJZhHBoeO1gk IzjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101548; x=1760706348; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xXmMqPnz22xb+g2HM6yf3gZM6LeywfZqHIoIxV6VTOY=; b=pfIqePqauoJ8W1nX/HW0o+Tm8qur8eWrSQ2Mckxgbrl/AqPuwKUMD3uFPMxJwUlFCu 2xMA37RcFLVdgbX1O4rEe7Y0GNRJk002dDDnTb0WGqSjcDiTVBvpalnBLE1M3qX9LwLF I8b2wHwR4Uo00/Bgpw4NfWvkvqMqAcir1rAj5DwRou7qhCVhkivxbvt5bpWCd9ut6z+T nNVAFRFoN/PneR8/9bubvBtujadGKvqWBMBvbKfQ+lxTtsjLMZsLQ1i20Y7Hqv1esKrx VEFlNca+cF6AwT+vY+1woX0lNx+C/gwxh0gCSGKw25A+AiQxgx8UZA/F97K1hbeNY+7H bHLg== X-Gm-Message-State: AOJu0YyStMldq8BnmnR5j87C72iWLf2Rblxn6nR9qtHbT6Q7E2giPLEL GPmq00El44KuNRbHHhHKL7T/TCI/liOT08cAZxFp1R3RqEfoICmlyA2ieAgVzxGFfoRQJ6ZpgZu 3eHm0 X-Gm-Gg: ASbGnct+4BRGoZ5GmMv/J+xrOR+iUyws6fix0Je/eiDDhVCoKU/RsvZISSdGFXAp0gZ BOqnj3XYb+qtLV8ttyBysBUlOrQgYuY7Tf6DRYgnZmsE6hq1fR/bUPyURO7XLoSngdnFbc4HvNc L39YhrONaHn/iD8o1NnAfnlUe+lzq9HmbwExgcots/MCL6KiXF4UTFe1h3bv1fP6TVhOFg57/5x lHUYgEU/ZIA6XnjOlE2QEJB/xFeHu6DbQzeoEmkt7N7SZEibptLhxl1deNfMjmDUs/fPcu0eDWG 4FyVTg8xt+cfURai5eyFVmNBaq8XgzH0lTMDbXyFUJFocsmW4IG+DVj8zoMs+oIIM6lK1CmjSUo dY5l7z4rRFX1TEEXS/24MqJLyY7qRaqYQWpolLiH2Uxb/xeIzVVs= X-Google-Smtp-Source: AGHT+IGiH+5wfuYkRDijkLeYtixQ47cn8zIxcGQUrP99iNh91lzDi00KNgbbjXlwflQ6FzmdahpTnA== X-Received: by 2002:a05:6000:240f:b0:3fa:ebaf:4c2f with SMTP id ffacd0b85a97d-4266e8f70e7mr6577031f8f.30.1760101547839; Fri, 10 Oct 2025 06:05:47 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/76] include/hw/core/cpu: Widen MMUIdxMap Date: Fri, 10 Oct 2025 14:04:26 +0100 Message-ID: <20251010130527.3921602-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102771317158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-16-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 4f7026a1191..d175edb6f8a 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 7214d41cb5d..3010dd4f5df 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 19:45:21 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=1760102564; cv=none; d=zohomail.com; s=zohoarc; b=EP++JYg/G+tfPPzm5VCR1L1X1kbt2t39ZvEkvb2Hksy4KRP421GxBFf4yVCKLN6/+oictmKfqj91XXGQh8P2O9i+ypjfvYviL1rG+OKvJ+wVmsF4aVLQ7yHiZvI0RXyAwvmXlK0jEQFiJHp6o8zERggg6mEvnUY9QJmOlroUQrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102564; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=D8IqJau8J44WxSvng81ucdCDlJLKa5JbZmwCbYy5YK4=; b=FTVQt3uWTvALdWWB7WS1hfKx8yOC0c7beqHMpPobF75KdnD1A4dFowIkSN0IwJpujlsc6OwLB9S/3hzKHvFY8+LpA532rui7ze8Wr982u5Fh5ctAbMzf1E0mwqMtjnZIMcrG0WliDvHsm5Jgk1TOFT2WhbFl0hvqVSX1GPOZcvQ= 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 1760102564706767.669236033918; Fri, 10 Oct 2025 06:22:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpY-0006O6-3G; Fri, 10 Oct 2025 09:06: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 1v7CpF-0006HC-Tu for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:26 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1v7Con-0003qw-68 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:20 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso2101446f8f.1 for ; Fri, 10 Oct 2025 06:05:53 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101549; x=1760706349; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=D8IqJau8J44WxSvng81ucdCDlJLKa5JbZmwCbYy5YK4=; b=ytzSWS24Xsy2X03hYPpaYVW03v+O/3k2YEJP1lacxnnV4WWG+0VoN9tv0zvfh0VREv Gj1fmhne2exutWHrn0RgGYj4jYRnszqF3dV/xG1vu+7b7YOdx1rkORV8J4fBWqVzKsyy GiemUhEN1pQXrKfhIatWVxHNbBcERl2DVoA5OI8oNvrGyiOwMO3NPqZ9Z6qIzizFuV6v SjbftBJrUO8xA0tU849beygAZrGf+cVG01kXzInqHU8osbNuNEp12k+Hmsjn+NatZ1vj Vg7l/QLONSrkrRwAUjQCJmAq+lAEoJtLmGHiRG3IqSiy/XAobHbksZGXKRYUImej7wn2 8Kyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101549; x=1760706349; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D8IqJau8J44WxSvng81ucdCDlJLKa5JbZmwCbYy5YK4=; b=nVuLt1fFwoA9sgKNOiX90Vn9ivU7xLq2POhBchdRvIc9swnUNphfCPP3yr0GpGRzPf 150XfnGOohXZGGiukGnyXClsE5+8xVhRED8UgcZOn0AYr5zy0m/v21EFVnqolsp1VwZa idO+DGNNCjvVlMW2YsIroSSLRXpOKcamacvjC+JHg7O9qBJbB1GEz4E98lfv+jQyL07u UdbDb6GChcNA65vz1pytSp0Sm4Ek3/8ewGPE2lIGzsyhs9RbmYZXyumV0jPsrdEbXN23 w1bYf3dOV3sAu3Ht7w52+ysg9ROTDI932P266uWlFL4Jb2ULaWlisAk95wyEvxoVG5Er BijA== X-Gm-Message-State: AOJu0Yw8LxvP+kqOSvyhT05hIeZPgFT+rLTBCOr8q5b2IFh86boW+zfa qOVLv21GY8Aeu2SHrUrQoY1MbETSLLK8HiX3iyFpUlMVl3x/ihMY3zUjS6AhOFanRDO4Mv2geqQ xpd/o X-Gm-Gg: ASbGnctkhgbHQXvXAiJGikO9C73RptusDZJGrsKnZYcfjkxYkTUw3n59F+Btb4B49Zb 76DwpPLGZEswVjDXsleHFN6vFc0drAwj/lK7Fx4wQhk1aIt0EdFQUuiSFPVvUaNN6LUeUW9AB/r LMbB+H92By3FVwD8XfOy/7sbElVYlAw+7LNkp5X+72bza4Gln+2jCoXg2sAwCNNgaIDGHpH6p7a UtA3TdrN0RHzghGL2o33coZwi16hRgl7uOAyRU7gVhsdDRcSq3W2xJigHEXtfzUMm3rKdGq3wJx FOrJWIBCsRs0wL65A45YYQYdzXwW65UIFVHnR/N9e98jAwNgL4f3Q+lZlmQNrpQPqmre5YklX6I twC/58dkrTupvPyhwBNloQMXU01m+bBRzi/xH299+7qR1LRp9WMAf4cZiccroaw== X-Google-Smtp-Source: AGHT+IF0xh/Ofe1+2Rcdps1B7t6PQ+/rkBGkUsYOjvykGV6Bp8TL1IQ6a5ohuBkSNXSJk+Ppt8J58A== X-Received: by 2002:a05:6000:3106:b0:3ee:12a8:6f1c with SMTP id ffacd0b85a97d-4266e8de388mr7943631f8f.46.1760101549106; Fri, 10 Oct 2025 06:05:49 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/76] target/arm: Split out mmuidx.h from cpu.h Date: Fri, 10 Oct 2025 14:04:27 +0100 Message-ID: <20251010130527.3921602-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102570731158500 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-17-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 04b57f1dc5a..6773676973c 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 00000000000..5b9b4bc84fd --- /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 19:45:21 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=1760101672; cv=none; d=zohomail.com; s=zohoarc; b=OrbpkgUDAI4WmWS+gwWazy5I62eCCfC/22ginw6hPejGC2j5FBr/1YZM968DnmSAsG0+E8npVPIRRVcbm2hBhqiEC2QH/pVPXfVICnFsLGA/deRDcdXyUA9FI5dwns+TT2+d2YgbzI0qMAfM6NSREfjAd3nIosm72PUbDsAlAtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101672; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=nc3FUyvFcnG+H77pArAXwBs9t6gjKqIi2V7SbkZILMg=; b=hBoURxReZVUSEHhF+jFuOOefdZ5Ya0OaTnUfHdvdf5QkFvM6UMW1IsPVIflbk2sR8unCn5BSP2Q5VtA2b/WZscwLaZhgKa+CFLV9IhxoeNNfBhGHlSFoo04dnDGOGP7a7znk2DOZQ0FB7icXy5dXi0goD94wi2RHOCPpXl+ofqM= 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 1760101672188389.8193672575512; Fri, 10 Oct 2025 06:07:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpN-0006Ld-2b; Fri, 10 Oct 2025 09:06: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 1v7CpB-0006BH-BT for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:21 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Col-0003rF-JX for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:18 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e33b260b9so18872985e9.2 for ; Fri, 10 Oct 2025 06:05:52 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101550; x=1760706350; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nc3FUyvFcnG+H77pArAXwBs9t6gjKqIi2V7SbkZILMg=; b=hplZQGRp0CjbIHUnWXug92SZx8VkreOu2tFEcw3nQQmcOnJYCbFYUz/k20kZMtBEyv 9PtibtOwco94xA5PgdzneUmAZNodGgAeP8g8Xwif6r62FQEgZ604AMIYq001ddsL/gM+ Jlk8n83oI0Y5SVcPQBXTfdVtYHmz0K423X2sNAlId6qDVl43cQD2KXXHtbRpTu5VfoGE Vwj3/2rE/pCYUYKz8fexji3Xgl81cemhT5m317hv/SCNO830STSEJeU9XLSYSnWgWk7P UQAwNPHKged0RUlWA4/nuGy2sGChOYLJ0OKY6kgmUWaDvn+zv+oxyjSMVx9Y56q78rFV byvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101550; x=1760706350; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nc3FUyvFcnG+H77pArAXwBs9t6gjKqIi2V7SbkZILMg=; b=AN+KoduhA46enqgUEJrw7cRe+gZArk0cO+2U91FhMBfESyuO8vE1N9gxCjzTGAbu33 ZtOTxSMNPWnZayk/5rErKVF7zuNZllI2qXN3Xr520tc5ozipcyXlQHjAGIKHZQZ3AbUC m1MXBBNraOCT8TX1wTdJhzjLJAFv+nBOJTpX1me/eY5Jp/XNwMpKb8eZP8KyvsriFqZO DGfoIbKxpSa8RV3OHYy/XLZ3bJGWQB3VDjf7eTEvMGzfbFzWatVu+tkBwQCZTFx5Avzr oLiyilPg/uV0XiwBR3IYn17ssQ5fT+dRr/bGTNHjP+SLg9Mj8Tdu06iSuXXXp7GxfRn8 0DQQ== X-Gm-Message-State: AOJu0YxkoOQBaipIQr8enhiGmOv+JR0xLkS1V/P41Vrk0BrA1lj+fSNK +c2+3jfnkXRV8kDrNmEx/PTuvTyKF954zs0YSV07ABNgBVf9zjExYv8BF4h17KjfAtYr8AHCimD TGPLF X-Gm-Gg: ASbGnctJjtC+/S8FAU9OhchOLb+FNqsVOQchv7sOhByNtW0LHyP7kvXEaLvv20RuQre riQB/3//CVsx+NtKCR2Gu43qRI/8809uPKVIwHPBlrXBxHndLeIsF3EEk+pnF11SvWg9/g3NENp jqkcyI6a5vLsMKWGC4CsI0pSIBuk25Q6MLsdtgVtBwxfJmiw1WCPiXgEMkFVBt8MhDguxS/D+ym 4W8goFE/cIbc6eYCfom0se1sQMfLou6/DT+IMg7EIUE+T4iKCPI4/2G5iIzQyPfx/J3jM5ju8mO mxBeo+TALdyWNYIgzyEEPbSivVMW1hkaZ7BO84nIZQ2PSrV+ue6ov2Mw5DEqz2xIaKfQQxSb9hZ 06dDiaJOEu5dFqAgIGsAX0izHmvIB/B1AETapYDc/PtjKI4EhfjY= X-Google-Smtp-Source: AGHT+IFB4IrQqAQy7J7ur3F6SZGT8c0MWJC+5ch2tbPvqZvkGA471GY3F9mqzZtUV8uNMPO5FakYsw== X-Received: by 2002:a5d:5d13:0:b0:425:7313:b561 with SMTP id ffacd0b85a97d-4266e8e5115mr7199828f8f.63.1760101550232; Fri, 10 Oct 2025 06:05:50 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/76] target/arm: Convert arm_mmu_idx_to_el from switch to table Date: Fri, 10 Oct 2025 14:04:28 +0100 Message-ID: <20251010130527.3921602-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760101674711154100 From: Richard Henderson 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 Message-id: 20251008215613.300150-18-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 69eb1df6173..1a234d41c2d 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 00000000000..29bba4ecb54 --- /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 bd5321348ac..b1d68da1333 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 00000000000..309b1d68df5 --- /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 638ee62525f..f9f0beef05e 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 19:45:21 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=1760101643; cv=none; d=zohomail.com; s=zohoarc; b=CpFh+QVCWB1SE/qS+GXHSMJUbb/dyriuhqnbIN66nyyFznyR7kC2N0Lcv5GIicEoERbcSKAgxbEWwym2l3kAyvRd8HIa2NqdNk7hy7MdCBzn9bg3UGKt5s37WmaixnG5rHSQmO1XhPydiXWE5/k7QvMKLxU7aP8e6JIZRynDqd0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101643; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=qkiAm9klqXf70kNIK/VkAMKe9JyyDrfD0aGOLz3UN9g=; b=n590FkzI5yutDIWQ//+CUNCaONAvKjUavlInto86KPdgY/Y2OwSssyv2vIi7Qo2ULd5yoQwghyQDMdEmE9bpuHtJJM7+SIW0SDQ2sgd1qRCpzrmiW1atxrxXDcVrzsuHAmXeiFnH9I6YK3zcUfFqocxAueFuhUzheGjNttq+AtQ= 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 1760101643021817.4854365728289; Fri, 10 Oct 2025 06:07:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpM-0006KL-W0; Fri, 10 Oct 2025 09:06: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 1v7CpF-0006HM-Vh for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:26 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1v7Col-0003rj-Df for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:24 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3ee130237a8so1691963f8f.0 for ; Fri, 10 Oct 2025 06:05:54 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101551; x=1760706351; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=qkiAm9klqXf70kNIK/VkAMKe9JyyDrfD0aGOLz3UN9g=; b=O0yNXBy8gTgVzKPhgIJ9vainx+NoBhREbvZq22qS11dKdWju0ritKoW6W1vIsVPsfp Z4MijBzd4yMMibrAI7ZKdIQ+vqmkpNDsH7nne9kCvl/4HtCrdfSVqu/HmTcc43AMZPZT mxDnn+AO8r+DtHKmyp7+kvcZjNjPkN6k9G9+GhWucEOs5OJfbuetBBBO9Jk7iRV9gvfA 3wdH9UXqlf/OaZJjDq51vNMJdDc4/ErRcOeIgCG0fWHUwJ433lKS3mJMqmMlRaW0QQUM smDfMKFNtjNRvkQ1ibL0lc1xh+g3xTvSHz0OTgEyllF6dW7/qsjFZvcWCJq7QamMp7v9 KWPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101551; x=1760706351; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qkiAm9klqXf70kNIK/VkAMKe9JyyDrfD0aGOLz3UN9g=; b=ndWPZopWRpscPQzwgfRWFTWrqBruKqFewOQk1j5sy6U+Q5JAx/W3FhqBefN/Xr5tJ0 reuOMTFZgPoqq+2KqvMRz7h+hkkLRki9ruDNiGxMvVtcqbu1OxlSw1OJr5/CPD14X6bb bI7L2wyxjvBI7Vk0vyBBLFx+ROfkUf72Sex3whSQ8X+AJY8UeGNldXn53YbjTt/x5r2H +5rLG6CdTkR+4GM5jOzUK3simlRRBb9s9gTN02QzZvbFW2+FNchHQ/gNzxWnnOYZ3lfU wTwaOfBAHMnDoEaZSEoB4Un2utVPVIOrVe3/zFFUoeWk8FlvcQHmp58xr8gS5M6mGfRs Gfhg== X-Gm-Message-State: AOJu0YwHkPpkNEq93x4KL1hSs56gGPtZOlx33pEok4keVnEg6xcq+a9i yfVKELoqwqLC9wQps7Ank0sd19QJKbzKceMPFqtVcvK9g9nuHblLsQpwAu8BcSHosjLab2LItQ5 Q7Nui X-Gm-Gg: ASbGncuaWlormMUyEluu8N1L+jTAxeD+8/qv/W/0woaIvtguWc934x6er3ZCcELknnz hT2njyjbEQywiaU0KCdYX+sX0p/ATUi0GRnCagaSyP8oPmTviGQIJJLj7zL7dVeQ8HhDpLVxhk6 BJT+eh/nmraorB6wWeTqqyddZ73WwRNWrMeAxz4atyYeIUxiVLMp8hqQcJceFCWG4Cjlaag4hw7 sZE72hLQNa25vQyVCkF2tf/4n2KLLglJ6+ipvRHTyrqgThdt7pN43uW6T/ZCZvqFn03oT4Ro2Rt uL2mL3QdbreZBSAu+yfDa2aG/U+CD8uaRXDefK0iD9eT2meMJtviYuTwR0qrecdsg0uGSo7CPsB yIJqCZ/4KKtApfzbDTTOem4u7eVyxCPt+NcoDaIj8Nzs60C3bXBw= X-Google-Smtp-Source: AGHT+IGcN4+0tJXlCEGuVnUuF8Oc+KvFAQWtLkXgWGjB80vzXn9piGaiXNbZdKU7WFgYnRLN4+EnXQ== X-Received: by 2002:a05:6000:22c5:b0:411:3c14:3a8b with SMTP id ffacd0b85a97d-4266e8dd041mr8036415f8f.61.1760101551262; Fri, 10 Oct 2025 06:05:51 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/76] target/arm: Remove unused env argument from regime_el Date: Fri, 10 Oct 2025 14:04:29 +0100 Message-ID: <20251010130527.3921602-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101644267154100 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-19-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 1a234d41c2d..bd7ea820674 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 b1d68da1333..a55161ef40e 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 21540a1ec3e..9c89ffe8a54 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 b96c953f809..bb48fe359b8 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 19:45:21 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=1760101738; cv=none; d=zohomail.com; s=zohoarc; b=JZKiOxlwiBVPY1nWwgyvjAKF4Bac92zBQSSkU0lnLMRIiGlQ5Sa0goauTx/khdXo9IEcexFSVR8T2jvGUS7HGcSzJgD+GAwuRuaH7gj07i5LK0CsMdW/LRFeuLvfSJNCG6nZ4ZRTUztlMv8FrcdeYfbzZk1SIPz4m2H09JmHN14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101738; h=Content-Transfer-Encoding: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:Cc; bh=0Q885zFVInnnyenmxn7nFwJp4DJDPyybiDmu6p+wpaY=; b=JX9QjFWZRd4YdclAenV5xrayzGVktfj1+gcEaqYVPkn4zN9d6dZY+YKaqIOyOBhJb2n/Ihfv7j9LwVrEfjaQ33K3G3vmdaZnQPXs3smUAiHpQJzQKSgmMOBeKtYbpjXoRDn3UOQHm9qSvr3i4j05YNU8FXaTuSXkF8WNwFMN8jc= 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 176010173874919.260288826144688; Fri, 10 Oct 2025 06:08:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpQ-0006NM-5L; Fri, 10 Oct 2025 09:06: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 1v7CpN-0006MK-5S for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:34 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1v7Cop-0003rh-Aj for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:31 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3f2cf786abeso1839137f8f.3 for ; Fri, 10 Oct 2025 06:05:55 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101552; x=1760706352; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=0Q885zFVInnnyenmxn7nFwJp4DJDPyybiDmu6p+wpaY=; b=MrSnwClTgTEJiCxjxgRvcve/FuafzRTuaYfasqCVSMpIPXxk4JsjrHQMBRCvaXUDN9 SeMOh4CCdIlPiIoVtmL0WfRKoJ6YkTMZxYisAS8KQOO5ei6quIdHFWSJALNMNXyycOw1 4suXC2uHZw6Ohi1yEPHuLckjlNU+9pA5opA1tbRHohus2eaCBCZNoHNT2+UqzCQjf3EI qbhl2MDmD/WRhPCZuO0gP1oM4ZBQUuLLDFfPwWvu+g+jpDqxpAD5qztE3H2MaYwfqLzH m0pCZBIA6C8mFLpbCCkZRakBstWMtb/cjOEoTGGtYlR/MRbbkMDRJ291zIas9v3UUeBT q93g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101552; x=1760706352; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0Q885zFVInnnyenmxn7nFwJp4DJDPyybiDmu6p+wpaY=; b=Ii5mS42h9sCitW+HE9FMG3YUOAk9lWDHKNzMYr2ZEZNHOJddE26q6DEQvqnGrs+ykL cmy4bCK0qdrwrWV6nNPIKWHP0b6POJQppNYs5v+z4jiLx40ul2JUvNtNkUzfrEEb1NEb 1m8Dqmkz5XvBuf2bWKBcTzqmHRRzKjxBJDDIlio/OCU3aETuaFjpv+Mj8ZN8h7ob+qNe //hsidVR6DXmM8DShiWv1joRfB9xtNdfJ8AHlvxBGv0cjAKRzgbcXaiXlz9JpItKHkPs FNvzA8yUU4pEloW2xpprlh9ZtjDrWS5EaflSVC6Wp64EPXy6cufahZeS0pLV5YTGR2f3 VWqg== X-Gm-Message-State: AOJu0YznQJ4MGWy5UVPQRFTpDQG2NRZbKhPRu9bwWV2pjzQkqDwowW6A dkE9f23x1B/60f5y/CYwcZ/u+R/Dxaq+irVLJXldcvLyLS3+v7f/zeXdx1Q4/GfVX4b41OQndA/ mNm1b X-Gm-Gg: ASbGncvMnmktFcqXw3K0SS2Ww35OYmSgu/1ah+pCeEX32v30+lORy8nHuq5lZYkPTH5 OCOi/17F5ETPe36lYIRnTskA++l5gMOBczknUVL9chwDU9WSROt9uYluALa5bt4XxorsacxNHW+ 4WRt6owtOYE+nDEm02eNpyGDfna5srpm+/oWnsWn6zCWdbCjFxIkeSJzTeAeNHi/SSIgsQLbY6f zReGeZ6uWXH8nZCdGAXsaL5ZWllveBM4admHxyrr9T22rsFJHCS1FkJQf9X4u/WaHvqEdaN1Ob7 W3A3MFMlWeYngv5RWP+TeYJ64VM0D8+cYrjqlpR6u8XEsXauZTwrShJEqjufD/68A8L8XnA9En9 FaEQ++gEa4pnPvzumrPycsqmfa7P6xjkA4oAjSgCOmVwN5X+mT8k= X-Google-Smtp-Source: AGHT+IFzC4trG+wROLWK0ye2WjrUO3dV8VCaJGDqu8h+DJeJBbtqQe+VhADdOzWn2d2jUcIO41qSVg== X-Received: by 2002:a05:6000:186c:b0:3ed:e1d8:bd68 with SMTP id ffacd0b85a97d-42666ac6107mr6071102f8f.7.1760101552260; Fri, 10 Oct 2025 06:05:52 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/76] target/arm: Convert regime_el from switch to table Date: Fri, 10 Oct 2025 14:04:30 +0100 Message-ID: <20251010130527.3921602-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101740188158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-20-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 bd7ea820674..319c39a4ac5 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 29bba4ecb54..d8d64a14d62 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 309b1d68df5..6dfefa56c24 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 19:45:21 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=1760102805; cv=none; d=zohomail.com; s=zohoarc; b=C/ak8Mpm0XzKgFrLGe1BxZ4ZRRnppHoqCQuglpzmkjHz2pUgU/s1fH6nP4dyek44nJPPQoG0XPgOQ77sq9mdmRVwAJuHQ7j6ih3a08SY9NiuvFduIIMDEeRKVWtN6CuH04CW0iEU2anvyrlnUfE+P8vdu8CkIZaaZJHeelvLe2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102805; h=Content-Transfer-Encoding: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:Cc; bh=A6Fr4akqg+k/eUh/idaiUuxsZEJtFwaOFQyKEOHQeJw=; b=Y/PxpkJfmGTSsOtF28bHkGl1q7IVZhkP81M5hMqf8BsgHkhCllmmbqsIc7qUTRw/w0RB7WMSCCyMYBWkZ4hJVNGNVV9SztCAIqMFS932clob+s+sxmTeljVsR9oBOOaeseNq6vAMuLiuqce1LnCMtvTcgf+tLur3YS3kKqf8jXs= 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 1760102804885515.7983836820741; Fri, 10 Oct 2025 06:26:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpa-0006OJ-2C; Fri, 10 Oct 2025 09:06: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 1v7CpO-0006NA-T3 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:34 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cos-0003s5-O1 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:34 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ee15505cdeso1829276f8f.0 for ; Fri, 10 Oct 2025 06:05:56 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101553; x=1760706353; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=A6Fr4akqg+k/eUh/idaiUuxsZEJtFwaOFQyKEOHQeJw=; b=Fsq0anltnrqRia0UFpJLDL/WOBNbpDVWGGyDToWc8pEEEX/kLECB+w2cnInoZJL263 o4q/eAV9ydyMHcXaEfbiI0SHst5PTsGaGBL7ZlSK9mhAoJTmK/QuYJitfagk7u9ugilp E81OK0zYG7VgkBy8lsPRiEb2ZVDdA4EoBNta+9Iff/sArnF5mr74irMy63XELctPiUCg jCkfnbVdBdNIwXrKlClJV3aRCDPvf0xQzhmp4FqIDkW9wY7mEQ8WOCO/j8tXkFA4kk/P c+GtdyPT7LVukFpfYJmfxwZF6zOdNBfbsI2eNZ0Vqg/F9+K6fknia91+AAzZlNzz2Z9k AFQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101553; x=1760706353; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A6Fr4akqg+k/eUh/idaiUuxsZEJtFwaOFQyKEOHQeJw=; b=vrP+xDNH6ewBL3HZkWxNYi6i7DbGcApV8uvG7pF0oweAwuxkK/n1qAglp9twq23OAf ijvgX0uvdL7kOiwg5W89pAJ77ZYtYfXjwaHCLT+5r2sl1JKVlbEkISvAe2BIKxjzn962 6eUKjMQ84/6Mt92bfEBcx2RgsOwosqciNyjlPtdqu2D90WCiFFufYwvUlPFTokqWlzWu MLfMx8hIV4d6GnrCzt7Z9CVFKr+REMDjanyAhnxQJbqZJP7DqPhdMF6aBn3QCZGByF2u 6GMAiM2I/CEPRm4FdI9zuhzKkGzYuESv5xjEg5DGlTz6vQs9axQ1Aije9qSBD7W59S3F d9jA== X-Gm-Message-State: AOJu0Yzt0mVETX7rc+7wOl5MSiUxQHVnrm96ooYcr3BQtUmSezKCqG54 hsiSto2/SoeA/lO7vSbSbH47qfQG1H+OMshGVRTQf9O6wU3UGHvbv2w1SZrzEkuyXWFdzPPIomd f5uhB X-Gm-Gg: ASbGnctYWQH8UCk3bjSKkxpKXT5ImuxbMmk0ljcEbsnrLaAdwZV3mGwF+vvvjonUdJk wkoL3vdZbwRi5aEVjxUOfrk/n23o/QIRjdoDUyTc1cy7RPlE666Piyoo12+Sv5k+Z4VCrWYA314 s4JiWxsAnwbowbNGHy5v4U8KDJ2DBQhPN3HdGB5NK7vzhL3cu/7YUGh98gKgqURu4IhTHrdFjVt t8Bw2i4PHpbaycOQ1z1ZoNO49IVOjNmsT5zX0boQXLKIXCqz6WOLEiKrW3vlkK9JK+DELgMYwkt ZekTS5Jr0rzt20CwD+7LVrhvX4mPz5qY3Q37AZGrAZBxMmO5pX1o3R79ejAcMKK3mzlDHaWue98 sLlla6JCOOkapNjQvHUIWZzv+eRgXWnequN5LNX0g83I7O2rI3HvTwXdRqKPUVA== X-Google-Smtp-Source: AGHT+IGz0QL0CqOlgO6f1QerLgtPcZUXgurDrAwFFrYcVBIJE3TAoYvxvSG+qkVLMq7DgfmDIl5aYQ== X-Received: by 2002:a05:6000:4284:b0:426:d30a:88b0 with SMTP id ffacd0b85a97d-426d30a8fc8mr743380f8f.22.1760101553334; Fri, 10 Oct 2025 06:05:53 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/76] target/arm: Convert regime_has_2_ranges from switch to table Date: Fri, 10 Oct 2025 14:04:31 +0100 Message-ID: <20251010130527.3921602-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102807849158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-21-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 319c39a4ac5..061472a9439 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 d8d64a14d62..f03a2ab94c2 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 6dfefa56c24..f880d216067 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 19:45:21 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=1760102648; cv=none; d=zohomail.com; s=zohoarc; b=PvSyyCs/18IEuZk2ntvbBfeIMPmO/SemZLAP+lm/YJeMvPaGPL7942R6dLdaOiHwmpM+DRdVNxnX1gsPwTPXgqpNHBoZk6CmcSxLVzaRKMUeX4xfD/SdbTypsrEf6yIu034VXWsj/Ud5AClxyp9eDtm0lKcwFbQ3PdYaVJSSQ7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102648; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=8Y++lkUnJh0nNy/sLg43P+iw17GG3NjiUgzOyrg7o1A=; b=MNKe9qxGti+v2DvNFttGXKLqMtlHRfFNEus94QdX8gYn7SS2NHVOqFRjNYaj7Aa0Z3ux9B80rpvaCvvv2JQ1DMq5MPs0pNR9Q6pB5SuhjlgaXdgGWXvX7hqDWRdKg/88ypZIdIV/INgacWk5VZooOr+IWtUwx6JUKaUuq5nVz5g= 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 1760102648892260.52893409753835; Fri, 10 Oct 2025 06:24:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpP-0006NL-Le; Fri, 10 Oct 2025 09:06: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 1v7CpL-0006KN-BC for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:31 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1v7Coq-0003sY-6k for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:26 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3ee13baf2e1so1589636f8f.3 for ; Fri, 10 Oct 2025 06:05:57 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101554; x=1760706354; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8Y++lkUnJh0nNy/sLg43P+iw17GG3NjiUgzOyrg7o1A=; b=anelHLhcwlwINSGdBNF180B1dGRLKyYVthispgFOw1mdZ2QfbMiz6Stg15lF4/cq24 eWny+hjSipC4bo1/hdI9L/lr+dF0a7rf/zI7pNcW6xVHz8FrmCw1C4PSAR4ov7lkzBIE 02aIyrySXCEkyw4pxHhbxyh+r490z+9ksZgBvGmWNymc9hV96MVywCYxHB4pO4qihwl8 rMU15u0oyyOBzfj582rpvuXJ7/ogFi/VwI9CCi38o3ZMOivN0EUkacR84MMO3v+RSpeN RbO6A0uNCKcfa/qqueiGuC0cD7m1VgWKOidSseVzTb1KmH7nBvSLafFUXQkjkSJvfGMo UULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101554; x=1760706354; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8Y++lkUnJh0nNy/sLg43P+iw17GG3NjiUgzOyrg7o1A=; b=HhC9qTmXTaAf76PaXk9l80RbqxsktD/x8iyU8/JEGOMsECniiEZ+y2/JC9h9vCwNHM YtJxn/XIMsG0X45RJY6DsFz01iZaeghUwQqT8/Ahw7c/tgiEUCEP/jRgyeZu09KhSRkr v+VnWdRmJzUfOsBO40T/zv2zDrw30WZOeCKHJuDmpXerrfwSrzlEh/dWlA0d5lrOJ5xL GsQda+xUfk69KNGdZeCOoHXH7JMnyzIclNgGeg+zKNJAE1tw/tje3HQOLigFsHO/LOVB mQyP7+ZwQvk2pE3joLIro77hPSbPQtusVzg6bjW8+IuMdQIEwyYa3dmGtRQwyiyqmJlt RR+Q== X-Gm-Message-State: AOJu0YxuLO/fA4IcZvCExu/8H+2kyaARC2m7TpIbr26gSVFrukUw+EYn qst8adOHEmHNOZwBh7l8BP48SfCCZyBcnW+YErelf59kgCsjEU+tc0/veYFm7kQO69SvYfeuIyW UfhbB X-Gm-Gg: ASbGnctFa5p15b8VBFX9Z74nh/OEukODqGQFLtWWCu/jz1xiQEr3i7VwJE0FXgDl/bV liN2nDiLjJ90+vJsP1sK8uaZVHqJPV5ZtxV5QnlWqGweDfg97kD7ed34DDQ8eyR+673qyu6ji1I 0Y1gs7uG2nkbYJdM+zHF8UiDK2pH3RzXpsOs+n87JDu6mrGNVgSxfyPY3Wpf9NMJrIGjs/g13M9 J0FW7j9uycWSECCPXlanM3GK0VJqNAEHahrINUiCqUSG4Lm0dCAG/OBlX1TCIoffLlqLU2zEapU dbbrSRIBmmGZPJAXaR5MxqqplyldSoAG+Jy/jhTB/b+xzWXe83QDBk1wLaie7zpZwgxCjUE3gck CpmmAnN1HbVSrG8CXzou60yNyEqRm6E2ab5RhaFeO+2uUqsD/xNM= X-Google-Smtp-Source: AGHT+IGMShX+1YA+fXcbIQWbz0xD0F1LTph8cyVDdyur4+HGpi4L6nQSWrHqngSj56ba0KNwAHdV3w== X-Received: by 2002:a05:6000:1a8b:b0:425:8bd1:fbb4 with SMTP id ffacd0b85a97d-4266e7df95cmr7741013f8f.50.1760101554325; Fri, 10 Oct 2025 06:05:54 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/76] target/arm: Remove unused env argument from regime_is_pan Date: Fri, 10 Oct 2025 14:04:32 +0100 Message-ID: <20251010130527.3921602-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102651106154100 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-22-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 061472a9439..cb2ffeff59c 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 9c89ffe8a54..1080b6d69d4 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 19:45:21 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=1760101731; cv=none; d=zohomail.com; s=zohoarc; b=EtBD/jTANqFxYhAzS9vgaTEqLolS/P1vlv6FPCXW8GSibNsU0Zu9eqa3lEUmr7RFTi9MnhIV5Dj5tjN9ehzDmQUAyjk/2Ek+6IjEzCqg4rEhXzhgW1Yft7Be/aC05nvIurd0h7PXZp3+c3GguLP+APMKeqKbLoH3fHjnE9Nka84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101731; h=Content-Transfer-Encoding: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:Cc; bh=lxhn2hVQLgClGRWrodtHBnz1RoXtS5LamITBr0kvSJc=; b=RMUnmd4ZSfyWVdWN8JKG67+LesRNj2Mq2sKBrLtuZnzKZC6RchWcJdmoOoV/XN3CFWGJJIgr+w6H5zlpDXyYUQELeGnY+AE6QDNdn5NbuQlkfz2E/FNZez8oMED4ZQM5oN0kNa8zVlhZq7IAkb3bwfPSh0EIAdb9vLcaenjy9vQ= 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 17601017318893.3071567696215425; Fri, 10 Oct 2025 06:08:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpM-0006LN-Uy; Fri, 10 Oct 2025 09:06: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 1v7CpJ-0006K6-BC for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:29 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7Cor-0003sZ-3Z for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:27 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3ecdf2b1751so1429204f8f.0 for ; Fri, 10 Oct 2025 06:05:58 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101555; x=1760706355; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lxhn2hVQLgClGRWrodtHBnz1RoXtS5LamITBr0kvSJc=; b=uXfO8pLJDj3h1l9JeKm4Aaje1Cx8NoWeZj/tE/7fLkZy1hA0gUEQKMtq9DeqSk7k9W dr/hgIxQvX3LPwXRfZHN1w8iwSpYROl98ZwxAlCdp+JufiEbfQSygMEUq5IZT4l+K6/N xqkzP/ILmyOahp7Hv6f01A1yDjANvKXIcOV14j9uWzqQpJg32wsvTGZqHBaZ/vOPjMuU Afh80nq0ksbzBgxpWcmEDBwNXgb3RFQKT0zLYFqIITPzZ2BVnBxL256vs5nGAg1X1A6k h0HlJdqUh9bE9/jVQsj6gaITYSeRlTSWs3pi6KNpnZoViiw4jGJ6yPxoeytZZIyzCRE0 yIHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101555; x=1760706355; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lxhn2hVQLgClGRWrodtHBnz1RoXtS5LamITBr0kvSJc=; b=m8LtPAG1X6RriOtxifgywfH4k9cOgIcnT0jd6JZLzOFrIlrWiGORId9YaVrJyZOlFd gi23mZoBoo0j9yWuAMu08wab94Nsj0jG34e4wmwnDgZ7kwWQCxV6lcDUTJ/LLPsAf4XI 6ZR4fB46ge308oWsjMyORpMj5Jiz0SvcCO6MatmMrYkXWYfcMD+tyAUC4V2ZEhqIDJOa OHJ4oOwGpx0VHKcFXX1iIrsw8aN4DELNZvY6knt+4fa7smqRi36VRluJ1n2hqPO61HGN mdmi5OtmdB/I4JoiyA6MXRX9ng3+2qspLJuH9ghFoRGvSAv3iGRXy8K9AYEZdayJqkA7 hp4g== X-Gm-Message-State: AOJu0YyvSA9XseYI1s4AyJYAfwVWNiR4XG0rQhSKt+IQ/GOjjlup4fsF 23H3+rnImyReFt5LAlKkj+Zcla4VmhkZHWe21cok7+ziw1ztTtNDmB+D+vDQF+gQfvipOt3Eah1 hb5r8 X-Gm-Gg: ASbGncuYYvUa/DIc/Ci2flvThCrtFmEL29eRn5jAP9S1QyohiP7TQ7iy3qQPXUvyiq3 Kn7FujBZPLEEidqWL27mPDBr4WwLP4LPGNRYCuYABhoyafEo23ppgjA1HHJzonHcp7CYYYEiEX8 6xHsCcBVCZuJDm27JGi/4Xem1y21UVnw36y03bgQ2TC0f2pILrSi/cPA5gJhjo2wqLPYcnYsh2J 4VLglfnzSy1KQC4ocMFjamoByP/cwgNoN/dqfV0SsiemMhERxCBh16VSIfNvOy/4D2BB/7jQMaV 0sKA+q0/VJ/n54Qel5nt2I1hQvTpxoRPy4qBk+DKWbwav/GCbBDMUWfdFR7JyJHNCV4EC2vrlpx WEB8NFlDiivMYc/8YJb1G/eKzIqBvaYumTkM7Guala/cbUTdn5ioAnXJ58NpJcQ== X-Google-Smtp-Source: AGHT+IEP6fwpuZDsHhrqbKLuD55cQlDT6Fy9bw1G6khYi1BCiBciaPiLWSqwKXnyWxdHiXK4U+k5qw== X-Received: by 2002:a05:6000:4212:b0:406:87ba:99a3 with SMTP id ffacd0b85a97d-4266e8d8a8bmr6283442f8f.30.1760101555420; Fri, 10 Oct 2025 06:05:55 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/76] target/arm: Convert regime_is_pan from switch to table Date: Fri, 10 Oct 2025 14:04:33 +0100 Message-ID: <20251010130527.3921602-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101733371154101 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-23-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 cb2ffeff59c..819ada7a5dd 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 f03a2ab94c2..41baf1a003c 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 f880d216067..98db02b8e54 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 19:45:21 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=1760102263; cv=none; d=zohomail.com; s=zohoarc; b=aLvI7OwYPtU27tRbES39QnsApbWkaOuWO9Wojb4c88FH2Bwpl8d9dGEgikpqouyH6kpmcn7x8WIpUDjX4wBxnQAbNZMxSDPRvd/Kb/DYgZiUTsluKqGtOCCwoXLi5Dx/xINl0mLzAe8xjoN8Os1fDZfM+WZMsw7kGr+oFHOr8nw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102263; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=5ea7zwkpxAfZI0yrGmiDGMtnDe3MhZXY+7jpLKebbvc=; b=Fz0OozXPU92hkVTlHERmtczplR2g2XT2Cz/PG9kZTnGSJftXa4VOVsjgxkpGflP5e/vneOHn+whR5i3nRe9l1GrK+Uj/MLVdRPGxmkrJ7Yt6jbk3p4LIf2t5k/PBMmRQrFlZlSbL7ep1pVCCw3526sXCkWgHk/I2MQB1dRwduy0= 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 1760102263892286.4707557200991; Fri, 10 Oct 2025 06:17:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CpS-0006Nl-BE; Fri, 10 Oct 2025 09:06: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 1v7CpN-0006MM-5R for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:34 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450: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 1v7Cos-0003sr-M4 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:32 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-4257aafab98so1792587f8f.3 for ; Fri, 10 Oct 2025 06:05:59 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101556; x=1760706356; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=5ea7zwkpxAfZI0yrGmiDGMtnDe3MhZXY+7jpLKebbvc=; b=RNXVsV+qiq4ziyWiOA0KpZA8ZN69j33WMH+J4RAVA7FDj5kf7yPFAMEUI0vhovpP34 vGiLADbV6HifgBgucz32Lu+IyZii96DF8d7LKXrGuopttCYxsr+qVGkuAmsYphgf1vQ5 kBAUS2gRLii2L4902UIGa04UR8ButlLXssQYXAzm11Ur8GStIt0IWx5u5WOheo2tHWPK D5kS72QTB5UjXf9Dre/RQE6nzEELDj8ORMvNxKY4aNepbgMnTGicyrjtkFhypHOo7vd4 oEIIC7VUVzghNg5B/kMN/a+qLieaMrBGv/VmOkCjlwFVxrPGfT3e2Km/6Mi6cyG9cy8w IGTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101556; x=1760706356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5ea7zwkpxAfZI0yrGmiDGMtnDe3MhZXY+7jpLKebbvc=; b=drmH7gMj+j7ZkeqV1oh8Zd7n1fKwOb417sHgZo39gpw7OeORjOtlPR3uSS6Uhe21Tv RTOnzeXow6nEDCcrzptNIqELFyC/J00FqsBK6k2UndRreaAwpadcZGcLe3tb9XnYTZFT qNdotQwpyGx82/z97PMjc+ktXe/wXi67aXFsTQTVbiOMBZAzVSxLji/2VrJhapNWIjQR 47/RU2Fk13xt3/1ByjchaNbrmNdZdnW/CWiY9X6O5A0hFg1REJqJ3H9B95b3eX+XVaua NIQy4upbYS3p2wZfc4HYHf3TWCrfkFc19+8fqGJvpyuRjyCrgL491az7BLSzR3th2lyR crBQ== X-Gm-Message-State: AOJu0YyZNx2oGiDep2vhUZhFwwxO9HiZCR6U92mDBekb0Fpy4CYnq2Al ftw+6lzLWo6crd8PH4Ew0YdU8/rqF5kYd8H3qr0Dcorm8D8CIzOhGAYNxGclAHwB/NI/ZEUOSvS 9boNE X-Gm-Gg: ASbGncvbhSV9ZYSVEocD8K0fJQTQ7TAtqHDEshr2EwFD9eDEvw0n2qYRC7fIr0lgRLI sNnNk4PteLipwajpkmJWVpWCvRM/8PqXxe41nhibrY/fSdjB5FCVLxdA25LLhTTK1231be0ilpA ty3hwKSocNrO0PSywPbCerIZQY3Lp0mqs6bCSYcm7/MbYGeW2EJ67/W+U/JKhHyh3Ns9cAZEgkG g+Ubxb2u1LAwK9s/A+EpXMrj24Sq3jem5uW6CNuKSPih+QbbQLEdnILlyaaK/YCPl9NiwLvqNJy auSM+IC8bnvlit8bx36BHe1rLmr/stX84RzGEwcjQcHnMHT9UcMZ4eE5Bm7JWvgau1W2YTMkloG DLEvQNLN6fepsnCcKOA5vcY68izyJfUpoSfQitTVqVaOjHYHg+8s= X-Google-Smtp-Source: AGHT+IGaODIBS5qMHW3YkL1JLnbf13eX0YHX1FYwYBywZF0XZOSsQ7SeVheiU9Yis5HNjbaMwqXD2w== X-Received: by 2002:a5d:64c5:0:b0:3d2:9cbf:5b73 with SMTP id ffacd0b85a97d-42666ab9929mr5781240f8f.6.1760101556371; Fri, 10 Oct 2025 06:05:56 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/76] target/arm: Remove unused env argument from regime_is_user Date: Fri, 10 Oct 2025 14:04:34 +0100 Message-ID: <20251010130527.3921602-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102266930158500 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-24-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 819ada7a5dd..d0d976cbb08 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 a55161ef40e..aed245fd868 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 1080b6d69d4..d6d4bf3b23b 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 19:45:21 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=1760101731; cv=none; d=zohomail.com; s=zohoarc; b=fyAW6oemlDwtxuttBqOsHUrG6C0AxGqH6UnVZMnaRyUdFJCYtH/D+Tvaad+3iBZP28WRs/TxDw4iwdMX6kzcjBH+hjfXrG773GsTnsrDxc1qNFI0TC9h4//SVm+HAQMFpv1KJWqJQvdh7WvrcXT8jzJ2xBQLGBdQhnQoAwA5Z5g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101731; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=tgxDCeYY+hPQV5P9VqVCtdojob7RiRndVUUkk5KB/ys=; b=Tzgb2jdy2QFwwdTlq0zOLZ4Rz5ldhiY9c+2IqWUitnuVoiHsidvVn9Q1m8yDcfok4CgvNGd5WW9kCgFk77PMbXe9GLr9kcXByK/gCTYQFCljOLa8l08NUHaczFDV/wlbueuWdgKe+6kVhG7GL6AR8conepz+FVjLb0xLbFiAdso= 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 1760101731236603.0408930474181; Fri, 10 Oct 2025 06:08:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpk-0006RP-1r; Fri, 10 Oct 2025 09:06: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 1v7CpR-0006Ny-F8 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:38 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cou-0003t3-TU for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:37 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e52279279so14550395e9.3 for ; Fri, 10 Oct 2025 06:06:00 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101557; x=1760706357; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=tgxDCeYY+hPQV5P9VqVCtdojob7RiRndVUUkk5KB/ys=; b=fRVLa/a9UJq9PCI7MJS8vbVrlNIgwtPeHR5UpdBkBwYMU8tisScqlRi0JLeYLizaZw 3ZLN5SG/tQp0V6xYDFqAe1WEQbd55ti3n3mheUsS0ljD4Ye9rpwOJzAKBYrJTvJ3CRv6 gLUsUW4KG0a70QFvrYAspUxLm326YB3UaS1r4gGZEPWyjhPfVxMyzTyYjE0nJwI29D2e EYS15gBfVraLrdSNj5p8sY6XXBHpKGYBGRtt90ifjMkkxbZz8j4y6X5GXHENfvXru6xQ RsbqUggDgqo6lUqij44hWISKMpTYl5qVou5X7/Qch6vPHIRz2qmPxuhL4BhqxqgZpugb dXFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101557; x=1760706357; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tgxDCeYY+hPQV5P9VqVCtdojob7RiRndVUUkk5KB/ys=; b=FfVQ+nJDmsjoS//55diFuNi8L2VUeCrX/63iuiyCTilHQncIPOMmD+cBxKgJt01Zjh WDhZtooGD+D2nSVVmBrzU8kN59EZDbhQdcClAp96gppYh58muweSPEHnOHBOEPm9Dkem kMOg6SAuX+3gIOvxoh2BKAajJDn2xrej3CPaWQd6QUumeEC7beTMY6Bodivcg8v9QvSn ZdMEuEy/cPsurrst7BZ8RCvFByeNY7NDDbatErn0ppaR+PJTaDyIRIkkGwaI4SNvpaQR 6smKzyCqAUng39Udv3ncIXbX+X3esaxXfRxM6xQxiyKsQF6oUOi6B8m1njAepEfJ58ul kKyA== X-Gm-Message-State: AOJu0YwoME8VIhpunonUUC6Vs0T1MoRsyUztp0XJ6DFSlyyvBG+3rxaj +ksOeJ++Rq8qr2Q9YXAMA867160ldfdoNagjm3ocQ/p228BWbot5RiE7ofx+k51bPS7eljba0Eb W+Hld X-Gm-Gg: ASbGncvhHP7z5HpkwkhgiK/ZWAO2DT8rxppVvfEQsnVsk8OLAtta50E0szewtcKXmVH NNGmL4/DHeImhjOV3ySQ5n3ufKqCyW0khbzVRBZ07lixHt2WcScju66kuPkX45eK33YVbjjHytI 2rmOtKCTgQ9joPq7PGFUQ/nz/h8WCg4l1lyidbFhE9rAje2Pmpmag0vj9SfsuWSPxb/DOeOmHO9 sEp5XfbInzWm6LaQfIN+GZPhhntNqplPTOoxwNojSKq82xoxYX20Pj1KOOHftdwMFG4fbhBJMNA oe0COWWZ9wK0QWiZ4aeHgy696e2wXu7H2MK4nxl0M1GmzhR/+7WFA+Aty/HqtA62q5NkeOErvNk M2HTmlZkg222p8prDxgyweSF6taCzR8GJLm2mKeIg1ydLVy9CPwNeOZdxO7YFcA== X-Google-Smtp-Source: AGHT+IEdnoZea13FJpMsH1WlJER/GtgLOwN7awe0IooajhzOKU4xg4WiiAr7X4bUjxxzJ3rjO1Qt3g== X-Received: by 2002:a05:600c:3f1b:b0:46e:1a14:a81b with SMTP id 5b1f17b1804b1-46fa9b17e09mr73281885e9.36.1760101557385; Fri, 10 Oct 2025 06:05:57 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/76] target/arm: Convert regime_is_user from switch to table Date: Fri, 10 Oct 2025 14:04:35 +0100 Message-ID: <20251010130527.3921602-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: 1760101734246158500 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-25-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 d0d976cbb08..c4aef8b50e5 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 41baf1a003c..3e51c0f5790 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 98db02b8e54..1c1e062bfef 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 19:45:21 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=1760101733; cv=none; d=zohomail.com; s=zohoarc; b=eGS1o0LoCfTYPia5reEqYtStHdlC7+do3d2OYwxTKHw7Y/87c83sn0SBwk3GLvMZnjtr9tFobuCVs2VV1zM5t/2tWJBoMauu7/qRYFBWQau18+leDNkvumf1hlMwH7nKBkmOEDVEU3+Ww4wQYidLVTF29cHROknLf+DBv47KZcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101733; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=KxyTOiNMZt6zIm8TmF6tcPi8+k+LcYsPvCM7+rmLozo=; b=hjU+bAhOky90gRX5M/kN1vADLwBEi8/bNW82dRrQBYDYwoD+sdCk+T2czG9naSXzY/sSrKK16VZcMkakb9Ypt887rpDXFPP/z8kk6TvdbMYneNoQ4wdkHg9Pn63K31NGim33LCYnnxKcvOhsrbkrpzvTRS0DC0HJpYbRe+gmqmY= 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 1760101733662767.8582937712887; Fri, 10 Oct 2025 06:08:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpl-0006TL-Ji; Fri, 10 Oct 2025 09:06: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 1v7CpY-0006Ob-8B for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:46 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cou-0003t9-TJ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:43 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-46e4473d7f6so13082445e9.1 for ; Fri, 10 Oct 2025 06:06:01 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101558; x=1760706358; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KxyTOiNMZt6zIm8TmF6tcPi8+k+LcYsPvCM7+rmLozo=; b=JxNospwZD4O7tZ2bJ8v4tNjv3M+E99G4FnUY8GQ31fHWbXSGlImeEVhYEa4k54Tt6K YbQ1eMTei9xZdHIOdCRWsSrHWYm43x6Dlikuri2ksrMd+/SKivhb3u+HwQ2qvlEyUp8t BtxsLD9ep3THTQi2plKjNHkk9CJUr01LI9bx1mOJUEdyoqsFBm/nwz9ESNKk1UtfQnLy AAIS+CLEzz2B78V9n7Z5cs8+X2CxT1RKpgT48h9dZ9rL2NCUy9to1m7UKKBgZ79rCxHl bmhwkKBRL/oiMy+kiQOvewhxfL/heZ8L9llJnPFzKq+qYGi/0IIOiN68OPvQfR1OgtrG Rdag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101558; x=1760706358; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KxyTOiNMZt6zIm8TmF6tcPi8+k+LcYsPvCM7+rmLozo=; b=PobP+Qb/69k1hHWFo1L9d4MJF3s0z1e7+M8LrrfK6GaauMZlPhUR/vWbAuNVk4yc+k +SUXBAFMCktYjuNbA1RbNoSwVFkMAvmKlRRyZiBHyAbULu1pZTw2/36wCTvbuLCWn6uB HaDMoRJPnlb8UfFHalKlomLHXf0r/HCwQW+gQ8oSx4nIkC/imLzgeAHu6nnD5j+U+YE2 fNHPV/JSylKAoA8ATBqSh9mNwPORMD2tIfOOzHVwtEsrqtF12SurpvWbMe0rj2pG7r3c 2MlSTR28jNqRh0VWo44HFcL69mkqjCiRnaHtTyLHr3Eb7N8KFmZ2I7tOlCvBJL5CEsM3 FUjg== X-Gm-Message-State: AOJu0YyHvCskA1oc/or28CzioiZ+2totzOGjRtcVsX46Bx5hSUSt2jnj AJigfMVA1u6ofNVReyAh2n3LYz7xQuCcnQW54ZcDVUx/xgpfhOgaWIqaGpiMF2P+fK+N/qWndZe yKBoJ X-Gm-Gg: ASbGncupTQM+QZElmxEh2aXzNAR7cb5dA0Ai0hfhJYHQIR6NIBuz3hMGtgWpyuvphu9 zfvt+9owiyTYpLx8hDcGW5H8ryzbOVo3ZEKA0Zy+aC8d6Fu9ORHChxJXjGBA8wYowMNPa/DeLJC UQQnbmksYX9n1C6UuuXnaTyXrNxeeXo5uTorY/Fjq3luDxZhfH5wcEtJqnh6SrKOaBO6eea1IKN ogqxdjEB+gKBtUyiVvbtpoAWo2bo7kg8TJRalQUzPNgOKklIOTrK2jPhwbUrw4ksOT5Z8K+NiY2 pEOsEnTgGcL3uDL2SwPHgcGy0d80t/Mf8oI6iGo+27wB3nBmebL1VI8f5WcMkPUte8stHrBurMV CLtK1DC57/zZ230/psM+UNl2H2R0DDzUw3i/w2CjK6J2VP7XaEEi4gdnpXgTPSA== X-Google-Smtp-Source: AGHT+IGKNSKThK07QiSnLYc3drp+4sCrf7JHQxMyDWY5XVPWIyoOvidR/oqIxN9o6VqC/RzioeAulA== X-Received: by 2002:a05:6000:604:b0:424:2275:63b4 with SMTP id ffacd0b85a97d-4266e8e4cd7mr7612745f8f.61.1760101558372; Fri, 10 Oct 2025 06:05:58 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/76] target/arm: Convert arm_mmu_idx_is_stage1_of_2 from switch to table Date: Fri, 10 Oct 2025 14:04:36 +0100 Message-ID: <20251010130527.3921602-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.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: 1760101735428154100 From: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-26-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 c4aef8b50e5..92883b6c0e4 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 3e51c0f5790..55fba4aae26 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 1c1e062bfef..c5b43a59327 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 19:45:21 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=1760101780; cv=none; d=zohomail.com; s=zohoarc; b=fUupkH7migVqOgGbawFi74SNHGpl/pD8pdwGUAPvLuHwY5rve1QZrAd9WGzjENr1lR3uNC457Loqz7vAKkwluC3CAT2NpeoyLI7fiXD5p7w5ZCtL0qDXQfa8QlmHGjPDAUZ5te/xGxekgKoZwZ+BviTdyrIgXI/Uq+I0odIhomo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101780; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=sSydecAbKfM/Sk80G4rIV2ZnoCty/L+1TLVKi2ojoeg=; b=dVKhX6BtqwSCRmnR3a5bRb7btMHUFO8ACCafaUowgt8Cp+QnWqJpXYUphbUr2rLDSZe2HW+mONWHPqOfLung3XTwmDv4HX+c3ysohmThqDqjPr/nLurEJJn6Qu+4Iu726KnQjALes+hZDpKINN6wy3caQ8TOaRx4tzH9+yHsoYc= 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 1760101780521647.5514528676322; Fri, 10 Oct 2025 06:09:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpk-0006S7-Lj; Fri, 10 Oct 2025 09:06: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 1v7CpU-0006O9-G3 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:43 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cos-0003tL-6U for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:39 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ee1221ceaaso1495470f8f.3 for ; Fri, 10 Oct 2025 06:06:00 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101559; x=1760706359; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=sSydecAbKfM/Sk80G4rIV2ZnoCty/L+1TLVKi2ojoeg=; b=h4ARH/CaCgIbqWimKg3Op2xdVSu7XsLerCAJmj63+7Lv1vzRx10dvmHK7w99duVjp/ FyMInGTSkH65nF75QOTJQ3cYdOAkXnOShMfEDQMxoSNkjms7V+VHMfLjPZdmJNUz4Lr/ oHr+Pa/65xpy/WZYSjbJJdj8/YhZI7Oz7jpswpVNt+mkz9P1MhuYA9MvWJy+9Cz1sMFq N/ttVP9ZugVOt/2u4JDuYDF9qrBrW63kqJcV5ZLMqGgWQwDLooy9l+fyBFZ2PP5AL+jV Tg3flzmHkskQfudTZggW4LMDZCXChEQhcalBhAamIMpoM9+k5yLgjz8YxZUAtPYDi6Gk GPrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101559; x=1760706359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sSydecAbKfM/Sk80G4rIV2ZnoCty/L+1TLVKi2ojoeg=; b=TwpdXgbBhjtFXokTKF5p2TMU/lAiYUzO1qA3w88kjnjoy8EHsILgcq4uL8xg3Anlwr OVxxffkpKP/0s2fJDgec4KfotjPPCfbIJvHmQw5V6kn+DPRcEFeHq0LDhrC4Hc8Bxe2t hqyTfLtvpYNkaEsc/xgP4XBaMG3YFAAbtToeqamSNDN4gU7ldsbH1tCSPkwJS63hQF3c GMT7LN06mp06Z3sS3WSjLgYFKBsXCJ/9HhJEO5VmWObKFw9GcMwMGAYoGrRRgojK3OCS ytCzCVuBCCL7G5tOUitmnNYnQezCU5tVtrje4pi01IFhyrQD0ZHCGf4g31WUDsS7hiSX ELNQ== X-Gm-Message-State: AOJu0YwqDve2tKF6LS1FRg+9iIi13lhOfUgsPC5uKFCFyW3qw8dxxhny Yj9O9WRYu5QnXse/GWl6ZKDOgBpGAxS3HBt0beQFX+w9zKpUVYeiczVKcpUG4wWI/pTUmAKYVEM NV0Vd X-Gm-Gg: ASbGncvLx+xF3SGoaSeCyZFoaELncPXzJ3sTcyZSLQ6Bi9gS9o6Q7JnSu1EgY4lSDP9 bscf1aHRcKnWp8+dEsB/FBF831P50LL8hFEKrBT1kpjAbL6StEs0k7RZmTFbW9tdWO6/4MytlS1 DXbNDPxg08JZmL9iqlyEQZVBnBTfF3F+1KQeR4jVnmbxyRFqn2V50AzNjfD2LXJKWSJ9zK9tfr2 LD4orJfHDrppz4CpfsDxoK62FdzW1H0wIpf8K58abywDST2K8V0z87OEyQFelbl7M7v6iCNQQ/5 pswO1cJeCXabqO17XZEVRrM27VppSGZs6OR/nzZu5r9XG3CFdzI+PQ1XayMQ61nAltiC+A7mMk3 i7Y0pC4siLuNnJL5W5cD+pAw2vX+47NWnC0CVm1tmXeS8m+SQbkbJvkiFr9T/Lw== X-Google-Smtp-Source: AGHT+IF3JRfpIWf093/ugvEDCAedKGVO3ZSDsk3Df8a6xtPa+cVCgGZ0+pJfvCGh6WaEZczX0hbxkg== X-Received: by 2002:a05:6000:1867:b0:3eb:b80c:cea0 with SMTP id ffacd0b85a97d-42666abbbabmr6297894f8f.4.1760101559223; Fri, 10 Oct 2025 06:05:59 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/76] target/arm: Convert regime_is_stage2 to table Date: Fri, 10 Oct 2025 14:04:37 +0100 Message-ID: <20251010130527.3921602-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760101786848158500 From: Richard Henderson 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 Message-id: 20251008215613.300150-27-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 92883b6c0e4..591b509e68b 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 55fba4aae26..1d948aa6f4c 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 c5b43a59327..61a682e655d 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 19:45:21 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=1760101847; cv=none; d=zohomail.com; s=zohoarc; b=ls0cWKMsnAZXTd0wPJN5bXHnyhiMmmlo12lIffONcytnHhNldUWkjkrwU3NfSx9hshHEWEzMB4x/f2FRoxxgc4W/Kc8zX5GsvM7eP8aRaC5kjrsdYRolveX2Z6/cFe1G5XqdlMLwlvP0A0k4We7geaX34W4LHj7mwn5bP7ScpcA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101847; h=Content-Transfer-Encoding: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:Cc; bh=GoyTaIdRptHmLu6pNiPJXI8uDaMgXTRXO7Cq+l1KK0c=; b=AkSflBSQl1RaOdx9K4ErfAMHlgA5g6VML1ewpuJdRc3EzactdeTBkla3y5cskE5I+dmtGu2wuqgYeP6kUR1BzWIMD1lU173WgW8s3mrHy1I1YX2xwPXYIg5rbZ+XGvNSSCisPX0BC2iXX1m1q9dneyFspbJSHXsLuP7e87/FB00= 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 1760101847683435.27764181171517; Fri, 10 Oct 2025 06:10:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpl-0006RZ-Vl; Fri, 10 Oct 2025 09:06:59 -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 1v7CpU-0006O8-2i for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:42 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cow-0003tx-AY for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:39 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ee64bc6b85so2230166f8f.3 for ; Fri, 10 Oct 2025 06:06:02 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.05.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:05:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101561; x=1760706361; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GoyTaIdRptHmLu6pNiPJXI8uDaMgXTRXO7Cq+l1KK0c=; b=zrZIXCyi/Ey72QTcqiadseAtfZAlmDhjMhkPjJQtsA7yaPOIm1IgqEpVSyFt1OQO4G pezjoPGRfDPzhdNQPUnnSIakxbxSi/LPH1Gj3vONrmsspIPRKiHVYK+ryqS/eLEhLoXK OkJ6JKYFdcg9u+8UI91yQ16X/q64aSixw9+PuiBNEhNqSYpf2X1zINgmaKtS5QJmfV7z CLc3fEgsLIvmdM7LUNDzzVoAFy6e58yONbF4t6a/rBqhz8NADY9goE2iFsfESGX0c+z6 OCxglCisNUTDJbk5KvVeBd1DalHFs80hNkIqWAmuCO1WUS7cjchFpmn0DMMmtG2W/LYc JlrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101561; x=1760706361; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GoyTaIdRptHmLu6pNiPJXI8uDaMgXTRXO7Cq+l1KK0c=; b=Y2ZWSRWMc/U8ec3ZCcHYbVlTH3fFqrI27MMC1Ik//+6m6OIhdUDcLWRITLYgB3pbg+ JQnE11FUVw0SPRZz2rFkcidab02d64o/DkxjlVah+4r5WvM43Wetc1e1UTo2uJ7I5yBE UIOTy0e/FnjZzn+H68K/gTBYUKAe867mlIQLuNdd2I8HVwySPiFswMPTs8QwVoOHl90/ Y8OtzxD+o0MaOcaNThkJZzvmt8K8c2kOYTpLdMK6M09bIScMg5DUhUhkD2DSA9X6/RnJ UcoXf2HGIL7X26dWLar7OfH13ApJXSRBw67Uxgu6/lfQyPUZh3PMZ6Wluth55SFrhoDU KwAQ== X-Gm-Message-State: AOJu0YwjGapaCZgTYI+628KhXx5v9z96G7j89NK5sBfp6/TUW+oasN8O vU+1a1BGs/9CxYslUcVBFqwYh/GK4psWbBvo6AnpgiiRZ+EtDgtGQrK7BIAbCD96uw+NHnIuxa4 iXXQL X-Gm-Gg: ASbGncsU3SjFuGCi+G+DfNLxnBHBrEvOEWUqAxWjeyu3tB5ukpzfdTO9tVmQL1kjun4 zvPZgYTKD6hJPAUA5VjRVmXBkEUQdF3+9qYB3rA2K8fTQWXt2eRb8Cgx2xNPK9/g6roaDmZelAr hCe9vi00ei/KvE7roN8fE5l1Hars425AWclwJkW4dswaCwp786Kp39b5KBt91z3F+ht2/wSP/l5 tjAhvd3qMRhnZFgL24qfXHftWtIMe1hF5Rc/w6bhOntTcYn1c6QWBKvoG429IG848PjP3cloT3j vN38OJAapiCd3u7f0lcqW+Ebxt8aL8bL31PTI8XD10qbyGvAr7FUMC8hhzzGJJoMCpuFTMWMbXo 8dyyZzsxjgk2xbaeqDjL/VIkc3/oX+DonmzGZp0Os4Z622TOtnRA= X-Google-Smtp-Source: AGHT+IHviXaP5BDU3+SL5cTg1wYoZ3D8pJbrpjC+eW+4yb2t1IXd6MLKcykyeGCpb5nLReXeGTXthg== X-Received: by 2002:a05:6000:400f:b0:425:74bb:7c4d with SMTP id ffacd0b85a97d-4266e8e68a5mr8047453f8f.61.1760101560585; Fri, 10 Oct 2025 06:06:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 27/76] target/arm: Introduce mmu indexes for GCS Date: Fri, 10 Oct 2025 14:04:38 +0100 Message-ID: <20251010130527.3921602-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: 1760101849682158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-28-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 d175edb6f8a..e79e8e0a8ee 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 1d948aa6f4c..f494ec348d6 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 5b9b4bc84fd..8d8d27337e0 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 aed245fd868..6642cae0cc4 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 61a682e655d..42b003db9cb 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 d6d4bf3b23b..6c52ed1ad00 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 95c26c6d463..1a0a3325836 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 19:45:21 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=1760102449; cv=none; d=zohomail.com; s=zohoarc; b=ltp1pB2FPYIJbBX0zFtAs2u4wp6//HpgAlIDuG3cCayT16PNq+T14jRclmHJs7VuZbfndt+wX68M9zToCWoRPxYh4BqilN9y5tzKVWTjx7VJDYz357HnX8Uz3+JxQDIZHO/jnFcvVqT+fwomJm7c2+zOtLlWj8v32JtW7XJ29dU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102449; h=Content-Transfer-Encoding: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:Cc; bh=60mif/8MwhiJJJmqgo8olqmhs50uYNKWIxL0Oe5uBc4=; b=MZLfwEPJCu5k815jEw0Y4r4+qCAoEm3zirU1j3YzCWJcOWPEHUUGx77maxYKrSrJ6GW4yn34Mof9Jvh7tpM8NQVzofFPRHP4fAsyC5DbaeWtWnxjxB5Qsco0Nnm4/zi0FbNH3ranCjF4DRODWDklMWDE0jVOoY9YUQP3mJA2wYk= 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 1760102449876509.610878398047; Fri, 10 Oct 2025 06:20:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cph-0006R0-Uf; Fri, 10 Oct 2025 09:06: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 1v7CpV-0006OH-RG for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:44 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7Coz-0003uH-Lc for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:41 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3f2ae6fadb4so2384639f8f.1 for ; Fri, 10 Oct 2025 06:06:05 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101562; x=1760706362; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=60mif/8MwhiJJJmqgo8olqmhs50uYNKWIxL0Oe5uBc4=; b=BxzKUL7q9XF4UOlq2vDBWm5x70VcuKkpIt89Rd79HiCISeZx1AiMne/I2C4z8w4B0v DFM799oWRryJ17cM5bkHdXsvYMeQyr1QG4wcbZw4cKizo5ymZogkRE33RkTwEwwsNnBd suP2LcS7+0NvDPVsH8i7WBK2uRXH7lftWmxCDtyheOIOKw7kvDgIWRoBJAgPLxqqF67Y xQXvA0Iua6+aTYEQx+AOztFA+XWWVc9DCIbMQwxj41dP15E6EvNbfJMDK5/Qs6zqYLcX K01ezrSxIxERvyyUl7asSrH3SY88TtBAOLVINApNzPp15aVGNV0Ax9qxNWB6wxyBghvx P8RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101562; x=1760706362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=60mif/8MwhiJJJmqgo8olqmhs50uYNKWIxL0Oe5uBc4=; b=gcF6UydJ0CWGscn2XwQVyEGPB1HpqnWfi+g0GQ3kivU5qs1BO7y796McfZIHwDoR3D htoJkp+Lm40yqdYiNJbbieBeEurbvSSeHVkhXQu6xlf11mEuZb1G1sUrR1Y7CkDZFe0y oVOZPSmtPg1xPRLcybv8dlAkcBtd5z/Dl6zc6L/K7hiT1dXFLJV9CCqOjdswuyz5UXcG UbvLDCgCCx95LByb2AKtMu503vNwuEJlttrD8j3REe5nLfPdo0+C8StFqPGfYT/9+Vn3 jNScgKvAEDCz58o3JqCMRKbCzgz3wq5DkjQDY0z9bMemg+/vacoorG/qszRNAU0LvZgS LKfQ== X-Gm-Message-State: AOJu0Ywh5/DgDjPRdT+NstmAdEn0YHdlOUNrxsLpqSBMIs8jeJ42qGyD 5JJg2rstKqvEbGEnE7B9rCyx3EzpGMuMivApfKIoIJezOGGzt97AtCVeLIfFWKAJTlYKKFa0boq u4UeW X-Gm-Gg: ASbGncvdyjyBbLJp/OhNUYMNiYm5N8Mw0Jo26VggP+rCNQkfePOWefHIM07Q5EhIbQf 7X9ltW0Usi4gPHFLM4A6jTpBN9FMnajKBqJdvk7RW6MX5K3hpcoc90YjrNbMUJzHtWMusreZENT 7Z7d+ycBAZ1Jur0SB8368eTwVk1rnBbOGBEMv5dzSPn2m6a1xHG2tJHa6xmgCEBbPM227n3b2vh wYeqrkqNLAgXrdEh00BKO6V2oV6DdqTBEatnc4wxCJTcJbN6GCP7SjQsTJKyvuejXVQlS4qK6me xs5jquA5W34j5WmZpbtSWHWyABSDmJt5fqEwTiFNIordQ3AcnyBojPgKuTvKoF+LdzK64vim1Zz hnujzNdYrddN640xv/1lL6/RMU5vR3ZMXJHV0Nr8H0bEHECfr/P1YGXvphMg+tQ== X-Google-Smtp-Source: AGHT+IH1j4psnixOwklT48VUw07bYwkabZwhOYudc62NkxKbriYJxRJ7FPpMHZOAPQsl2xz/Td37vA== X-Received: by 2002:a5d:5f47:0:b0:3ec:df5a:90d with SMTP id ffacd0b85a97d-4266e8e4dbdmr8105717f8f.60.1760101562025; Fri, 10 Oct 2025 06:06:02 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 28/76] target/arm: Introduce regime_to_gcs Date: Fri, 10 Oct 2025 14:04:39 +0100 Message-ID: <20251010130527.3921602-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102453190158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-29-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 f494ec348d6..962b0538526 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 42b003db9cb..a4663c8d872 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 19:45:21 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=1760101877; cv=none; d=zohomail.com; s=zohoarc; b=QTvIpSJsyG3UaNvDoXegZGwyUAgziFMg2HQQ880J5VQXENOqtZA3GOLw6SW2Z2g+GCUEWKkYWjWCtY2q1dnCUygJgcJRisrVdJaHcrSMpbrNw6LlQvUJBqyQ2F841f6eMT+NudRkOxz8oEHbSjcKcc4oqc2HTuRps9UkvsEMMqI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101877; h=Content-Transfer-Encoding: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:Cc; bh=/huW5XyGSqEWizP95On9B8pHQS13+WfJtd9lPwIS+q0=; b=oDwLcDM6muHQZY7jH6CqNF1RxCc8wQBdZ94601PmvnjYI/UsdM/7Y9LgPpPTIzo85T2kanxAAQ+HdxpCrRGyM2seIpEzLeoKxFFlZn4B/QVGTms0QnB2QRRxmG12DvImIOgGsihAOSayXSsdo9yoqzbm4z54edumYAHy4mIwPrA= 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 1760101877306989.1244387487898; Fri, 10 Oct 2025 06:11:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpu-0006hA-6S; Fri, 10 Oct 2025 09:07:06 -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 1v7Cps-0006dn-ME for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:04 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cp1-0003uT-L3 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:04 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e6a689bd0so14131765e9.1 for ; Fri, 10 Oct 2025 06:06:05 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101563; x=1760706363; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=/huW5XyGSqEWizP95On9B8pHQS13+WfJtd9lPwIS+q0=; b=C18f0zgtxPMkQOzYwIBrqkpLZ9EHWbQdT+5ssC0k76Dhvf4r/Pa3glEIjbh4qWto5e lQflDSpBf66B8nidI43/8oDe7TvR5kUGRRCgtB0hzoemGEsEK/QfwT0b4qTwjTZJkHmy sQspQloJ/8CJ3+2KZy/2U9kW+B+iPiDg7xfKXq0mx98S3qfgmnyJ4bPFraDebhhHtNkK WAiAuYYtprStkoEfLwENCpOo4xmTbDJZUGRUgXjs39B6cbFyENz+i5Ye2hbUedck0m7m kHNmfbUN6PyXNbezWtvkKGafXJDJLp2hwO1L1CCX/IhoHILlBdpRsfsyzaQQ47Zc7X21 pclg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101563; x=1760706363; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/huW5XyGSqEWizP95On9B8pHQS13+WfJtd9lPwIS+q0=; b=LYNN439T11cz4bYIxGs6F4w/fcUrqoN/j1fx4OwCZ9J/qK0AaKsxS+YEIfQSP4oYkI /m31K05bjeGtMUE8OtxH1CW/jvvsvKEmmq3VAvN0RSPAPQBrkmC7rFwEt0hiGanQdI7d gzNkH64yv3DjKfQphb4PiavBYprCF2+Bxu+InMhne9LggPwSy8XybA7Ii90S9ZYrTazl F3fRPPVtagDjHlO9cf6iK0oJLOJBT42sAGekoiqQH0KEv4CWf1p+PaeIf4FQHElF77DV MW2wrJOrN3vQlcwSnIKxYpG5QNesNTxhI5asern0Z8RtBOps/sJCSpZAmQihcDDGuNa0 XuYg== X-Gm-Message-State: AOJu0YybfFcNUA9868NQ5KobCXjmUO0WV5h9EyveIwJBzPGmlbEl7hfg XFPLlutm8n13cA6HD1XmQF1mlYGPHS+IDeNZMTBVBkfW0zE7zahCWEstNuHC0/aCJFRWcmfySlj F1wyL X-Gm-Gg: ASbGncuH5WPBLv8dE+TZExlINL4BzwO68Q0wXiyWVun4jdPajOmFkuIjvl/+IqW9/eQ iHcSZdRqFHqWGx+C3Lp1E5+1CoFkW/l176FV4hre4ZAgqstDFUPMfPCbKlvgKQO1PPzo+qAyD3C jVvns/XM/HfaNIy74FlI21urjbhKXwC6RPQO6am/+HB4uBG6OFNXr17omtJ4eiX9XP5kpkQsHFo zkFTbAHL/WefxiL7L7C+SIU2BcSJorTXNF/F8gXMR3R8ASmYaK9aGZgqNqUDoKLqANGUMmveYKQ U2suQQYQFcBXZ64MpUcMqzjWQoP9lykcJjBfyGBWyjUlyYpsj6p0F/OxJN97TAAIMvQrmdSXXQQ 6JkRMsD1TsMNpOXJySfsxuH20RmVTQzDxXtbqwytUujZPEHvY4WEXzX5cir55euvqYKw/vtct X-Google-Smtp-Source: AGHT+IEUia3J4j29m6CoOlZtCF9PJfdjjrF3B/EIrY03NFrnfLzMzoPE6ukbwbWUodVj4n/wpTkrSA== X-Received: by 2002:a5d:5d88:0:b0:3eb:dcf:bfad with SMTP id ffacd0b85a97d-4266e7e17c7mr6627858f8f.34.1760101563107; Fri, 10 Oct 2025 06:06:03 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 29/76] target/arm: Support page protections for GCS mmu indexes Date: Fri, 10 Oct 2025 14:04:40 +0100 Message-ID: <20251010130527.3921602-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760101879237154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Take read and write from the s1perms.gcs bit computed by the Arm pseudocode. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-30-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 6c52ed1ad00..d4386ede73e 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 19:45:21 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=1760102299; cv=none; d=zohomail.com; s=zohoarc; b=VB9zdxQOXk1dAdVzewhsp40OS5AHRysK9HBsXEPqymYyy/ybBEqhR8C+79zIn6j0Ps4zd8IZrFw/v/hNhxXQ7fJe4312ZhlIsR4v3gPTAfAXJ1iSS0ZNhs4IZxSRshwqwd4uskcOxhA0Tp0/5g3AzLsLnsjnC8jgWviJiMh7Sz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102299; h=Content-Transfer-Encoding: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:Cc; bh=292z2MU02er6ms83N6eXvrBWbKEHO79Jw5fbecSdDAQ=; b=J1ULPeSoDL2PxRoCbszUVFR1vWZEP/cAgDKYSqiwaZYE18KEQHlgn3aKgQlZVd6JPO4L2zFzT6ITqtEIFYGEAVP0DF3Ecu3nfBsvfq3zrzr6SXzZMEfHTEzzzzxmituLuxcKPd9eSdKNFsOB+MT1TSJa9bgns5XkfIJo8/uKSU8= 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 1760102299863295.39992250605394; Fri, 10 Oct 2025 06:18:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpm-0006Ss-KZ; Fri, 10 Oct 2025 09:06:58 -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 1v7Cpe-0006Pz-OH for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:51 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cp2-0003um-Lh for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:50 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3f2ae6fadb4so2384688f8f.1 for ; Fri, 10 Oct 2025 06:06:09 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101564; x=1760706364; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=292z2MU02er6ms83N6eXvrBWbKEHO79Jw5fbecSdDAQ=; b=sNRw7/ewvluQRCe/bRbcYF7+u/lZNCiD9AW0Cmpc9ZQ0n3a4Z1x8/BwwLHTC9rwfRQ IqOzHa9YgSIo05ShaYkQfsFQ7KOKjwY7srt4VdhtWj9Ze/Arl4iXKuC9hOaMg8mdrUcx +qZddBrQQxA6ilLTInQB29jDys5M4fD3DKsC0UgrW/DRpds59fs6il39bs+WL/04DfFF CoS/CI9uz03Z+p1CAq9It86hG6y9A/kYwwdfF1frWXvmcP1FE3iEtK4n9BKTc5NoGvHJ A1O2N8MIb8c+ihJsg5o4nrYiervYMfV8wJQnC40GzDMgh4UgyyWXuj+LCSoQdRQH88AZ O0iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101564; x=1760706364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=292z2MU02er6ms83N6eXvrBWbKEHO79Jw5fbecSdDAQ=; b=R8ocuitHwzkkx4TYTO29A0IvAADAEewn4mWA3/zLiKr53tOu1B8d7gHD+SfXDK5PKj XvJMWiw3BPLv6NZSDDn8Ls9tovscciLspSSuKAbFWvuMGTXIVQMz2V7ReDYjyVEHyLU+ 3WdEPTpW/zIWCtlGgKbWf2AFR5iPETmIzXHvw887QEpH1Rv7GfwnCe6WY22hYV7TINw0 gPy4Dedqx80+VqVA5muEIshokddusTMxNxD2X2sv5um30V0Jcx5gV/KQgOZCujlh3PNF cKUPiwrnKhbrMNa0CwCyqCIFG00vd+ybht1OCX/5QInUj/jXhnIZe640DjPITSDLmTxE V05g== X-Gm-Message-State: AOJu0Yz/4n1cWb7JZzqGKwZkum9P0P7xos8XgNtm0n69ijXLaCkrpw2c 0iNGheA6XTI3fr+r45eUyvVgL714SgdLoCDm333qc4qzQxQPjllJn8gXOSVlu5FXUKCHtzTBFwI LU7Gg X-Gm-Gg: ASbGncv7LtRnLXJgw4gQGBKoEqYsBFnSIsM32NVjGkrTHmsSkkv+j62Gvt//qPYtR3D fe2CCYeDo+Sz5pwOxCwo0+Y2d2gqH235sCJI0w6A2+R/IZxgQ3YItKtTuV5FMM2Slb3wdNrWYg3 Te2pHqnmfazSRu6lIhDldfnCQ9xNhQijpW7W0ZSPCrqFhzZ8MHTZ0de4Ew+pP7mO1/GPCTSY/BA 8OA2awbyVekNdMCKLn0McN/KxDte+FZYMUJOXjX9qAh0kxWa15LK641TQHQfHqvgciEY3PC2LUv sCpOTCqEsAWVr0B6B4r8kP+GEjvkct4HJ9zz3dnXRw4dqj4cmq/3RCDdZQd+WnxXWFePbpBYQ+3 otchRpOHVggTluQATKy3gw9X+qtoGf1QxET+tysw6NZieV3y1gak= X-Google-Smtp-Source: AGHT+IFhqH/MNW9tJ+1XU0ve0NGblBXTkKwG3mADVhovWZtQh+s4W1iKHNMFZvpB79DJNkSQTiHmjw== X-Received: by 2002:a05:6000:2c11:b0:405:3028:1bce with SMTP id ffacd0b85a97d-4266e7dfffcmr7655260f8f.32.1760101564017; Fri, 10 Oct 2025 06:06:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 30/76] target/arm: Implement gcs bit for data abort Date: Fri, 10 Oct 2025 14:04:41 +0100 Message-ID: <20251010130527.3921602-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102300517154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-31-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 ae2acd67276..f1983a5732e 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 19:45:21 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=1760102167; cv=none; d=zohomail.com; s=zohoarc; b=Lc4opPhbbBlnb4UrsSnWK1NXuqNVIbkAemOhdyArmVgCnIzetjgA4sS6XCOkPRZyyH+E48IHfnzEtQmrasP/SJnm76zRVaJi7mpM9N9xD2lR+cL0fBKDY/spFgBIpdAgjYIvv3bUqeylGK+YV/TWlFIHXE7ZfcHwQF9WLXpMzeg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102167; h=Content-Transfer-Encoding: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:Cc; bh=fy6Nmaf+Hy4K6iUgM9jgvpsvnnLpWkOyEh230NdUHFE=; b=X59LBxKwrStFnIANRgpjiaa4eELXc07kbTG1EI5HEr0Hv/BGB4qO1TwD14YXjzB61OEKuSUCZwW8ig9qILQkLBIrKP2gTOHveXd7cwJ2syu2FSmgAMaWUzanxN6C2hTGyX8I8ArePkhcqwauP3Zxv6c7giLn1zKczAJ7EjX8t1w= 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 1760102167236642.6504973087405; Fri, 10 Oct 2025 06:16:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpp-0006Uw-KG; Fri, 10 Oct 2025 09:07:01 -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 1v7Cpc-0006Px-7G for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:50 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cp0-0003ux-JX for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:46 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-46e42deffa8so18560315e9.0 for ; Fri, 10 Oct 2025 06:06:08 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101565; x=1760706365; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=fy6Nmaf+Hy4K6iUgM9jgvpsvnnLpWkOyEh230NdUHFE=; b=SZqouwzz4HAGXcTOA5O6eXhlZ3S9uhB6TwN2hXr49HA++qZ7CthInFtdUJFCJIARqi N/MUbR88SzwJA/h3PRKADgSyCTKr1jT66v/aGpV52PKEFakmGqmXAtYAjITQPArqew17 9Ce0b1ecXuOmF0cr8sq7Y3ZNV2qI3SMu8owZSBd1RhW3OE/SyfLSSpJi/Gw7l50ohmNK z6ZOsyK+MaJmwGgGBegBsLox6xUAjcx+XedjXNSaSTbmGeGE9649uoqMbyX+pZ+n4BLY 9GbN1dAQng2lo2EGiDHVuPmAmVoXKhiYnKoL5XVZXiM9gpJTpuLiEOKBNMiNczKhhzBW vmsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101565; x=1760706365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fy6Nmaf+Hy4K6iUgM9jgvpsvnnLpWkOyEh230NdUHFE=; b=FixXD2du7w74Vv+xZhp3hGLbpPoTBatKolsK+BFP4OQEiCTzh24r4fHV/6prJtBe+E W0IwRgGgl/xEmewpTDjmpOoArvRV+XMmaa95Nxb9AJLNzNrf54HcPBpm+00NlOXA2ctW dzfUwwiBJutxSSiqMBQVE9cwIiUZMW92kei6zfBBo3beyLPIjTp8HhhoYop/wrgNvrQu pQPCSaefCpSKAs7WDZPW5EE7a1YZ3mRt8qBaGnlJXHGQElq/T5/eoaKVNAtdGF37IaWK 61CLL58B5FyLyXRKHgeNe1p/3/gLt92S1vVRm98qhlhCNQrpMbi0hNv5LTlN+u859LRD 9S4w== X-Gm-Message-State: AOJu0YxGELgYp1wJ0WkxMaVS1VhyuM9BXclkftQzRZE2UM0WqHNmv64Z 1krfDIAYhW3a8nvqo+koaLu1UY87TJiyUSzkprvNVtOXoO2vJsM6cKi5pvqNsXzel/zQkOdjmgB nzL+K X-Gm-Gg: ASbGncuhKSwbwn2+Ic0bn9u7LR0M15UqbA8lrXKIuMPcBtRgaGgFlPWJ9LB29lepqms qOMiUYfgQByHmeN2JeqlMYzlZKbK7usMwKVtICdYXZyKqsE0KqcLo3hwMXL2mpwKJDJbXWTSzzh O8Myr3leSyhkdgP7hSr5+z8Hzo4J/W3ZuhrvUW6em8hhDN5lmexOg2ViRMIqrHf23ozmzc7dL4S XnnyfoaKx3G1oihdbO2KbQjohvuVwNCTCrAA/2j6rycSlxtNuT6Kl9OlBp06mKQBUMoxDoIbt7i t13CicZBGFY4Ut2axwuE748HyeI0Q1MqfyOXBjBQVD0raL8bQTItU+c459//0sKpnNRvla60Sdi 6HPtEgW0rFBIawMkZwHiMcAeKIuKRsuKvwYfm8COmzUXlLbJC/4w= X-Google-Smtp-Source: AGHT+IGzKAyQpF8E2ijgeCDW/gqTOidGQXx8RIxSPsNA+UXsz2aXCcujDESoYyLzD63reLg2sgdX0Q== X-Received: by 2002:a05:600c:4e47:b0:46e:652e:16a1 with SMTP id 5b1f17b1804b1-46fa9a8b482mr78530415e9.7.1760101565052; Fri, 10 Oct 2025 06:06:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/76] target/arm: Add GCS cpregs Date: Fri, 10 Oct 2025 14:04:42 +0100 Message-ID: <20251010130527.3921602-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102169534158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-32-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 f48c4df30fb..bd2121a336e 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 f3e90408f7b..0f0a112c213 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 6773676973c..e55524ae107 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 591b509e68b..109aa104bfe 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 00000000000..1ff041811d2 --- /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 9bca1b8eae5..192acac1f5a 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 6642cae0cc4..64b6c21aef7 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 f9f0beef05e..3df7e03654e 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 19:45:21 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=1760101865; cv=none; d=zohomail.com; s=zohoarc; b=M2Hl7pf8w8wnyVgUvtpOYtlZO/6xE0YZafsSa5CfeOg8pMVG97tQy+NKECGvdmj2DsLCqv9EJ2z2mdC0DDghvsaj83/k7Wg1RmbxtpfPPNrEkMU6e0AqhfiuUzUmIkyR9XjQdVWwQpOaChtHMxsA8DVkYZ76D0f6MitaAIPvHa0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101865; h=Content-Transfer-Encoding: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:Cc; bh=Pub1kIdE9G64B6rKPe8H449qD7Aw9ZiKf5kp7WhFjHo=; b=g8OnsL5TG2ITnVgDVhWHET7RyfJ0CGPYICU1OmkqSMRGS9Ru981KY4rhKvS0bAFZ00T52qeI0pZ3xKBna/pHkZAfCvHv+IEf3eydWiEAT6WBl/GOW+vAsxFyeQ8H0JAoDKyYtgfQXmtzg2RbINlBaoEtqCfdUMzMu73DAYGEVhA= 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 176010186524210.862931240478133; Fri, 10 Oct 2025 06:11:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpq-0006Uy-NE; Fri, 10 Oct 2025 09:07: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 1v7Cpk-0006Rc-17 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:57 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cp4-0003v7-Ea for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:55 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e42deffa8so18560465e9.0 for ; Fri, 10 Oct 2025 06:06:09 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101566; x=1760706366; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Pub1kIdE9G64B6rKPe8H449qD7Aw9ZiKf5kp7WhFjHo=; b=cRh8NPw5nJs52yFplFmSNnxMQlPu/6V8i6kHEqz4fOVD9r0pBw8NnzDjeGUg9ovym3 SxC2ScqZsa0kaK7nTWwlE6pk8ugukARStruEC5Lb1xEo1Q3yAh0fg+iga257nOdL2pCL UWBpIXQnBgoxuYDsDiiPnlf4YFED/KHk9uEC1CWsZSpiXxgP+po8qWdCKWikTAM1EgOd kId9yXdy0vDsZZVDnlZeBrwlXEIZRyaRzIIjqGr3/+Gx7wx2j0mLoY8Bfb7ZWNe8C5BE bKlO6FwiWRD/EFJjVMLituds0vWJkx2XoKyVtCPWhPTY/beyZMk99vWHzZT+SVnwXtDe BWDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101566; x=1760706366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pub1kIdE9G64B6rKPe8H449qD7Aw9ZiKf5kp7WhFjHo=; b=lyJoIrCIr92+4B3O0m8Xizj7mPNnWrzt+zhgd1cHbuGjZg4FS+0+7qTkN0CLBQ7FKZ Tt0BAw/pPd4bdyR4QQcwkT6XD7XL07TYnNuWtxI/A6B4O2w5J6COjHoRqAiPGMdTy6aC K2KzkSe/l3NBGZJ55w55szfqjUQHMk4m3Y4tx0gWBial6WI5S31pcdG8ChABAjTagamF rmcaGPKsCnEbUGRJpVAl9DdxGtToQdX2LfjyETIbHJNMPqo9PU0FrLS2z0BGXcaHARNL HzqBDK/ZHcNT2rcbpVlqJeT2im5sWsDHKDenp4Wlc41Xf4UyDXvMUGQRYTBmWnI5C7Bm XvMA== X-Gm-Message-State: AOJu0YzoUQ3Jm+KEOGVmeOK8CNEOG2tsr2qtv6QWB+0rmpdD8+D9vU8l 35jv1snjxb8onGpCrlLgeUyYFmPfBQ5jNTs9UdSURoLAbdAV36+oDmeypyYElHOjBbpNf4qpS9M OE2Z1 X-Gm-Gg: ASbGncun1WzbmzgPPTTuiJSNq/7M7YWKBqWOEAxYIwalBHnHer3gaOxHtNAxuhC8E4v qsmTEuk2Kvf7T1n1CS43qdDFKwHcuqwnJN5qb/7Vx9Z4v9zaHl22/U0VKOfoICYnK5Q2cAZao14 UXh18RhcuNr/HA/sylg+rfAz1dgKID1c5oAO9svMzcrXZ9N4u4wb8QaP9ZJS7fGTRWIAyCTrVuc hoZY3kUjVcx1ffAC2Zw6cbIER/tSYLIxcJCuIP4IBmyldxr8tzZy4+aeSyjNepX5eLaWGsyXIR7 wcPGVzwoTdhZGX+Xw/kvc7K9SxUd3HOkAqZ4eF7k87zo+vSP2FgYjAtHHlN5H3WlKtcuXAcIYhG 8U1oJkqKPFnBkJsiCgVy1JDywADQB9Js/LTV84GY0dfSw1mi6m9JUPTmmn8ZTtA== X-Google-Smtp-Source: AGHT+IEWS/z7xR+ZpRsMfoY2tzXt3uREviYO4Q6eyK/SeVLHAGSKrE+pKshCDgasc3Xm3GRpGWrM4A== X-Received: by 2002:a05:600c:6304:b0:46f:b42e:e38c with SMTP id 5b1f17b1804b1-46fb42ee457mr26532935e9.39.1760101566078; Fri, 10 Oct 2025 06:06:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 32/76] target/arm: Add GCS enable and trap levels to DisasContext Date: Fri, 10 Oct 2025 14:04:43 +0100 Message-ID: <20251010130527.3921602-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760101867743158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Pipe GCSEnabled, GCSReturnValueCheckEnabled, and CheckGCSSTREnabled through hflags to the translator. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-33-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 e55524ae107..775219364f9 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 f1a6e5e2b61..761edded525 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 17f83f13a40..5c9b9bec3b2 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 a0e3300231f..693eab1c012 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 19:45:21 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=1760102170; cv=none; d=zohomail.com; s=zohoarc; b=A/bNkq2zhHQ7fZ+xoleLs+E+cmxCirgn5TUDIjO9FrDO1ohKgRvJRUkJw+ebxaRPh6DWrFxeYXHYRlFJu7yf1iKZ0WJOA9kSlRNs2T32SMjPbsCM21I5e8DXlHIkLf+FKipn6ADH+r3A0ps5IvZUTjNCFmRy+KvlpDA2IcFnFjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102170; h=Content-Transfer-Encoding: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:Cc; bh=6acoF10IgwOQIq+Rlh6sImEcjn84PPUAbsidN28sb/k=; b=VnrMiSoYMfZeM+2WwrZCw6/OOhQldvicwtatSW8twWxpl5A2AAP6ProjQif2pe6gS4ADAkvBdfCbh1C3lKPT/ccHW+uPKubukoOAvZ8jGM2bceSr90lL+E62vR4jsO5NmEZFIVxLudniLLkQFM0tz5raiT4H0jepB4FAtdhICIQ= 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 17601021700835.324971804393726; Fri, 10 Oct 2025 06:16:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpm-0006TR-Ck; Fri, 10 Oct 2025 09:06:58 -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 1v7Cpk-0006Ra-1A for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:57 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cp4-0003vG-PD for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:55 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e491a5b96so11250645e9.2 for ; Fri, 10 Oct 2025 06:06:09 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101567; x=1760706367; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6acoF10IgwOQIq+Rlh6sImEcjn84PPUAbsidN28sb/k=; b=otUm29Zi/8kl9ZSYMLJYbBdDQtPoU8SaZpN5y0/iwHX1peItOJ5CS1E/tkgXrKABHp rFNWgmesHi+qdEt84RGg/s0KRrn+q6Gh9AFwTMHepcOXdhOkuOntBavk+VtuwlBmb/oL ih6qpbM4DN/nbc5+dmXfp0urooMELE1EAGKSqKZAIaYJ/TwshYJfTSeK46W69sfdfpVS qX6N/5jZaMeiFeMbJwiUoIhl56tikFp7S+P7tOSJViUQM7YGJ2xIO0mTy5RjMa9m4l7v gw7B25ydzbachxfQ4SIBVnSGPggzfJtfCv/QDdEwmEswQenbSwOWLRNYW3kQB1JH6I+d 1rUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101567; x=1760706367; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6acoF10IgwOQIq+Rlh6sImEcjn84PPUAbsidN28sb/k=; b=WQ7/HwH9YmpePPLgLvB0G4whYvnAg9IiaMGrOXrk7iOtzhfTZM/L3GilIC+9HuAESq 9zCmkB08x9pV8fxrTmsB3K9Qv603SScH/GK6zZUBOGHyFkJMLwsIW6XhzVqETJBqXsoL EjfglY/XFwuMDi71DmofjSo7z6CO0LtnZDoItcCKbNbetn6wY9MqTTgAce8KTBlpwNwt t4UOofUr3yDLgJ1kkeplVDPcAVfLqrO7snXlmhwiUdZ+LYCeoWwVAkTGQaxVLOOiu/e5 v0qbK0QrwY/BEWcaAUq/QB80wxan6xT1a7sjsD6eriW8k17B7t/X5EqnVp+tQlA/ngTX 0yiA== X-Gm-Message-State: AOJu0Yxlj51LkMpldM5aSiJnphsi4uO3yOoIUF4kZG5CkfxYGjSSqRhv 2OrB6GE3dYivpBABUQ3pIlyDuoavahOOk34nADnOtG47/EtW3DH5pgwY1tP3RyqLmuj+UsHRtkA clGL/ X-Gm-Gg: ASbGncsDcejDh9QR67KfsVCQmmuKnYeFbSO5tUpiP9H+7X7hVR8TjM7EONCaaSJ2D1S 5huaguh50xc3paBvuHqqeGEoblCp0S0WsDCL8iBzBREF3kELIKO5dt/NX4vgr0glhDpZyYGhBLj 5vgmA8UDWrhmbUaiW+TBQ5Zk/Le0ecmEAvud1h0fuDWQxcjkyQDWT0EaUcZ7wlUM5HcPrWkVdfO ljj9Tje61mZ6d0gyAZd7n87MuKq+KvF4YIj0MhSRZCSkWq1K080FQhL+Og9QL92PAYn6eYnVy2/ LQ0RFin4AfUVFDGZ0RT15RzAU8+PM675tf1OUrxDQsbQvH8OSidntqh5Rwuh/o6YnUKDASAZKNV 3TGeDXsy3sEr8HAbSLIC0vLooIFF4/281lIULuVfEUwQHMktNxxY= X-Google-Smtp-Source: AGHT+IGUnbEU97fO2dCyMNBE1sMJKvBAQXDL+RP4tgEdc7/TZkjn0+xvfVltOcCnxoK5IwrZPDZavg== X-Received: by 2002:a05:600c:4752:b0:46e:3dad:31ea with SMTP id 5b1f17b1804b1-46fa9af8fb0mr84401155e9.17.1760101567149; Fri, 10 Oct 2025 06:06:07 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 33/76] target/arm: Implement FEAT_CHK Date: Fri, 10 Oct 2025 14:04:44 +0100 Message-ID: <20251010130527.3921602-34-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102171630158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-34-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/tcg/a64.decode | 1 + target/arm/tcg/translate-a64.c | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index c779a50570a..68d9a4e7342 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 55ff6c504f1..8283a9c83d9 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 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 693eab1c012..78b2881a155 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); --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760101813; cv=none; d=zohomail.com; s=zohoarc; b=KxUFNFwB5cx/Y6nXLxA1M3mRPg2zaSD4sx9T1y8XOKmGRrogOs/WP7oJkPR6468kD7ARShNfciYIAyZ62/3eJHowUSh9DrhV1TEHDseiHXUnHXosKCCQ5eBhgqJ2eSr/J/SovDaxNuHzT4URGvMg+TN7Q67aYIrMWGYNVADzP5k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101813; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=ewlPxRur2UwbnMrdBufYyXSEz9OIf5mQHJvcBpq1vY8=; b=Ja+J6Hh9M8oxsHu1Xtkr7p+vgHwZ0EHaQtFEL6b9xIFmoygAQdK9KmmUtCnaSj++iLXHFI45uonEQ7Bj+XfGS35NUZwXvOTGJxm9YzwFkFjfJ9MhFD1MuPlZ31JvqbtbaNR1c+WTh5cMH/xf6i/B6esLYEgB0Mwn8ookzHBcTKA= 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 1760101813817257.6147027087567; Fri, 10 Oct 2025 06:10:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpr-0006a6-R8; Fri, 10 Oct 2025 09:07: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 1v7Cpj-0006RR-8S for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:56 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1v7Cp4-0003vd-Pe for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:54 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-42420c7de22so960230f8f.1 for ; Fri, 10 Oct 2025 06:06:10 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101568; x=1760706368; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ewlPxRur2UwbnMrdBufYyXSEz9OIf5mQHJvcBpq1vY8=; b=ONzoXpJq1i0UDd7pabsxm7c+tsREbTdhJsRXJzS5t5wwr+nYKgxtzVk2wCZZgxU7aK IqAmmVMsPgWIzxIaBCh+jOVMIEicFcXYeIgOgbN9Y7G8TvI3K1H/P2yvwbXE5/wOlXL0 o4Zp8q/YOM7tNgwqrIxdyrmOAnhc9oL152wEjtekkXfnhIgOOMcf0UuTkfy6qokmdb67 B21yGSlbJNciS1MNGBju/9xE6PXvam+K7LPCh+wqebbKW7HhqqGfMkOk5fV9NKTCWYIX fcXK2BGTlf+nMeiQjSoLDB2ZYRoUx3uNlEHG7rEdfghBGVxQwbKZIyGFNB48qRHIEaP0 j4Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101568; x=1760706368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ewlPxRur2UwbnMrdBufYyXSEz9OIf5mQHJvcBpq1vY8=; b=unu5OvzoJnnsVSVbDM6qEdGLAWW8mJFNptFRs9uOO9H855EJfjJ2YBfWnSaqMAO8vk J6A9ID6mHuvlPcCOmMp2uIe9At63a05r58yhwGyYHqknUDg8xB7eKX2drZgakm8Td6AI t/L10gpIICfhKmQJCi5vu+A9ZEdll/c6hBw535oaCgdOrpeF3ys1T9QTK0SXUL9LCDwA TrwKIZRqvvkGWXT4DLigUNUIjry60NZCirMcHnOWDjBUcIp/8/u4gj7ea4G0B1x7EKnm nBxMABv/g+3l6inIYBCXXWI5zHJmR6YWWSfIki1twOqoa67gmSKOVp7dInjkoey5+VQs R3EQ== X-Gm-Message-State: AOJu0YzrkUmMEE1V6RAGjIAzvusfGiPfrhDqAGiDDh8+2wSjpOxND9Jb Fx4+P/H07+7iT1bjd54J9M399fzJCZWuiUAx3kLboicqeM1c/0Xqmb7B05zCMewFIJbzZqBnPM+ G+Fsx X-Gm-Gg: ASbGncsdaO5w5VTx5ZNNLNGkDqpmVL8JPpltAN2cwMkhZgpaz/dUv+BAGln1ExojsmV vy4EWpqpx8qfo0aMpVMHdRlzk/CFZG3k6RKjvpOfhBj3OfZ5ImUzWlG6hUk61WoF0aDlGBQa9Wl /amtRjEW5TBZ7hZf+V3NV85+2J+LFk+326BmFX1INMsKzFWWgSDq0Rk7FW+HXcKc48s90+mzPJS zyp8R1DbKxReBB6hrv4eiXxWXuOxiRS5W1WnP5PZzyitOLvc9NYwQt+JVxFBi8PulZeiv5r0ZcI EUZ/OBzcp5+KUNfZIhwaLcHj3vjgnONrLxFox8Y7wuAwPrTi4M6ky4L/3YejYbE1HZ6iAuVtoBy mjkna+/geU5w01KRk/hYJCKFSef5MkhiSQ5Dsk8RVzdlMzyWp/8uUyv+k+vBahA== X-Google-Smtp-Source: AGHT+IHpPQF66e/Z6WC2IIzfZ4YDrDPbuNeLnnR3xNayZm1WVVQKsFG7u28jrlCVx5RsPQUd/nLoLg== X-Received: by 2002:a05:6000:4212:b0:406:87ba:99a3 with SMTP id ffacd0b85a97d-4266e8d8a8bmr6283991f8f.30.1760101568059; Fri, 10 Oct 2025 06:06:08 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 34/76] target/arm: Make helper_exception_return system-only Date: Fri, 10 Oct 2025 14:04:45 +0100 Message-ID: <20251010130527.3921602-35-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101815208158500 From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-35-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 85023465b76..b6008b5a3ac 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 71c6c44ee8a..6d77fd0113d 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 78b2881a155..43c9bfef93f 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 19:45:21 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=1760102259; cv=none; d=zohomail.com; s=zohoarc; b=H6tVKLxwO8/BRd65fHh7897Vl7cIg08e+6JSXRZURMwTdpJN/7k9UzPKrYTjO6q9iZuyfTJcoAEZYp+VPUKHI43woaalnecGJmJTKjlPrRtOmtrO63RNN9qMzBCwrralsYuyGs+QWMmdXywkZvaj0ZFiWW0mjzMgiqp5OQL+dhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102259; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=MSvmoSrAJV0PHNDRdiCeXCMzEorMA5U6KlLoiYYoLb8=; b=HhixI64yGvig4WnT0mS5dnia2BusYlR5nsk73RW98bZ5A5cxRfohd45sPZ/g7/xZxPuLhwhF+BSCk1JJ5MJ/K+eGenp5xwUjTeNyHo6EvN76GfqPwrXjVMW3gVbF+2JMnvaVk65bZfYdFLFgAmWPSTcTfnWaN/JH+VTmTiL+65k= 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 1760102259850374.6807564434605; Fri, 10 Oct 2025 06:17:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpq-0006YL-Al; Fri, 10 Oct 2025 09:07:02 -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 1v7Cpo-0006UR-Fo for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:00 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7Cp9-0003vu-Q1 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:00 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3ed20bdfdffso1890208f8f.2 for ; Fri, 10 Oct 2025 06:06:14 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101570; x=1760706370; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MSvmoSrAJV0PHNDRdiCeXCMzEorMA5U6KlLoiYYoLb8=; b=Jp0AYb9b9tX+BD9wDlnsFRl7y6do17NAB1bBm39nvLl9+ZsDgPNDjEVby50fxu76dU gY6DSsGHpOJNBc/pfDuHqap0z7SlsJ3RqO6k9TTMh7IS9DVxNEf+vFbgc85i+gFp2I1l 9I8PUUVqn6yzN2Za33LRJmAcUIxUGweENMrRp9NN9qKXordzsw209ELgtC3pE2d8fRR1 lRH98pD0ILO1ToeDa4LVrmsE5QPICZ5VrX8bpOqyBCTDmj2BRRU/wSb8wo98OoqcyLD3 U4QjcinAy1z7vbaGmajRnVlHVZ7qR4UPKE3lYg8MrKpyVPwg4l/alkm5H7MCGHomSHKP n1mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101570; x=1760706370; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MSvmoSrAJV0PHNDRdiCeXCMzEorMA5U6KlLoiYYoLb8=; b=UIwtId7mfkTmFhrV6Cq0rNoBzVCTsWLxu6HWBBtdbK3PTJefzHl/ozLAtSL0rZzT9N 7nl7+0hdH6enw1WPUlbQ2KK56wkis9lbU/tGMQZTHSnSNlQVYU/Ni5Ih8n3pbqgUi7Gb XKBsnkk5pQvsgpVAgzajn1LlXZUoJgorZTGbyEXQgCfU8upz4y27iyIxvGR5TWsj2cad I9JE9NoQft21Qb8m52MXeUwQoqkPeDkTs4BskMiCo7sOrzTS0GlRgZ3qiIUUUZVEMDcH TgBcsiV+mUs5zi/Gh+Rpm6STw31ll5o0ob8FFS05T9MeZVZWnOio4R+0OQ6E5tUU6HTd uvnA== X-Gm-Message-State: AOJu0YzYwx0kWhZPw0pGk8uh45ESmq31TE7aedZTOPrqlKO0A6L9lai4 vlJ3ESS5ikuvxMluB74yDvibIw7Fm59sswobYxv8qmmylBp+Il1Odo85HZrMOtFfvFZTp794PYt 5JTTG X-Gm-Gg: ASbGncs5FyR2veoT9idrywB2nI/dycbWHedYq9bHnHzy2LwZra0+TRldn34+37tEgrQ LZHIi4CksdloyFXJchY39Ihf5HFcoHxHuzH2tBP2M2dZaphj6f+hdniwNcNm5UoSaygAy8PwtTO qku8juqvL3MH6wRTV/a8NlPy4MdyHTrnkgLp3Vccq5nqS2rUp6ElcpJQk7yvpUCq5OFDTHbjUbh Wcl/pzlp5LCe2xDds0gFeEtxPU+8arBipH5+n9mFWAAfyk3MxLyUPKq0DD3fvh2aSMZnIYgQHCT JEtTBBP5+U+qpeLHYIrbHajvtCTedzLW9jBXhII79GzTxU/9ami1IyaUAqgQCbk/MoKLt8jfNCn LyPTYr4lpj7JYbPUjwuwjM93OUHjIBNmU2Kp03Fr5zkv/FbQdSlBK545tcN5cAw== X-Google-Smtp-Source: AGHT+IHBYYq0SSa26Yiarw1d+oFjkaSog5I5DWzqGHjO70xW0bzhJKcxHV6c12vfTzn2Nm+5YcMqdw== X-Received: by 2002:a5d:5f47:0:b0:3eb:c276:a361 with SMTP id ffacd0b85a97d-4266e8dd630mr7793595f8f.54.1760101569583; Fri, 10 Oct 2025 06:06:09 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 35/76] target/arm: Export cpsr_{read_for, write_from}_spsr_elx Date: Fri, 10 Oct 2025 14:04:46 +0100 Message-ID: <20251010130527.3921602-36-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102262145154100 From: Richard Henderson 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 Message-id: 20251008215613.300150-36-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 109aa104bfe..2a85ab762d5 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 64b6c21aef7..def4edf808c 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 6d77fd0113d..eaea7859d35 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 19:45:21 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=1760101735; cv=none; d=zohomail.com; s=zohoarc; b=iKdsjivx4c8JNuigCIcR4qklxEBUM7JAjRSQE/DiHYqNneLTQlHwgj7PfGujQvNVMC7hBCMn1ti1OA0ummKTgUxWc80RdAu+ul9nAxLBUi8cQABvnZ+eibYNa/QLGGvPKY4dJyp+xp4JENDs6x/2FiHF3cet1PjX7aRl53oKjpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101735; h=Content-Transfer-Encoding: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:Cc; bh=kQkqYIIBJ25tOC6umdO5kpN0TMl6FCRUvjpStoXItRo=; b=HX4qCnK6xDTTSegWZUj/V7c0WmogWAYAKeyCwRdoCavDUjhR7k6MdUnShIczQA8HQifRJLnZ/GVgbxVNMuAZOKg3G8weg2soJBnzxpcRXh5l8mYZNlKVAWo6CqFE5FBrf/5AJawT3+sXHj1WTeaTiFm4JmnPEjP+uJq7+ibBTYQ= 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 1760101735496649.2720907849556; Fri, 10 Oct 2025 06:08:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cps-0006dF-6e; Fri, 10 Oct 2025 09:07: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 1v7Cpq-0006YM-CA for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:02 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1v7CpA-0003w2-4y for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:01 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3f1aff41e7eso1539723f8f.0 for ; Fri, 10 Oct 2025 06:06:13 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101571; x=1760706371; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=kQkqYIIBJ25tOC6umdO5kpN0TMl6FCRUvjpStoXItRo=; b=M7/TPsEEIDdEj3dAKZIoP8G6kR9g/x2gjXc4+TDoNkJu51t7cZaAcpR/p9UwiVufQU wBXdxWvQ2jJ7JrjPeGTdHjjkQl/6OcXtVZRlcAwakoSFGGCWkUSw29asbu1vCPdW3HwP kqxUtZr3w+oCK1LJZY6TII7EhXiacybIssvJJBR9SFXUMeu4HMS7+DxlJp02mSBtTi9p A4GuZ5XQlDwMX5WB6cWmc+j1ZP43EoRORhGP9z5DJ8t8+8hFxhx3vwOffjIhXiNknxUa MhNwz7KofOauvW3EmvgrQGR36il3Q0t9v0iwLy0I5DKcRJWyYUzGOD6XugKGn3mpIZVg hK3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101571; x=1760706371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kQkqYIIBJ25tOC6umdO5kpN0TMl6FCRUvjpStoXItRo=; b=A2lx7LlbMjXOTjYhPLchylWGU1P+yfZfvC1A9PRJBR2UnrrPE4fGJmVPQzSbR60Gzv azQq6hZtf2BVMe1XBwf5DCMb0KRlBLi2yg70fiZjv2YVtLuJfqXkHrD2+gWMH4MqnRIs l7JYVZWDDZrQI9yaUvRPlyapXp5i0UkoTT4lvz2vwu/TSDtenHbLCkVjCSiH31cSSJZp pTU+DMiWmQqeu6J39X88VzJuzZsYfaOUS+14trB8Le85+IGimHNKBPaZKA04up0vBA8x QptWENAU6Z8LiC4s6pGXG+D8NtMzYeBkLDQDhvN02UM5C15HCtzifs3Ji/uZU+B83c6p yNhA== X-Gm-Message-State: AOJu0YwUui3CHMo5WJt5tF/zwlFCLs6HGmFg8FO8TxPixs8gaJtzCIgM 34k12sK1sDAcnlr4FXIvwJT+3vLnCGECQXmIRD8PGVBmflp8ic0zY3DxYPSeNOVKF9S+ZnblpkI yiY9Q X-Gm-Gg: ASbGnct0Cvj+4eU4NqHb1cyBaZMbBpEXcS4F57L3XMBEid555IIObLJmHuNwiP5ZQKH FXnlPN3oIIaEURNih98Dbl33dDFxgtMGMlkakW+Ud+2SSm8fIaGTjiQpWyvNN3daBP8v2rfYzIs Srls117mkKTnPGfbR+a0Zo5HsfHlex2ZylAa6tTgoZ8pN2vVbZwWJUEd2HuarmQVFyMyOKYOtYw KhVp5TQajYGz0DUhFleK5zjiEMQEyMoN15Yvj0ayzkXRbjj70Kacsxm/mJugyzsVSIwCQZp2Prp GT+YdfQHzDzPgVxFVCmWYSTTOx1tg9EjLpdkY5szST/9+uwiK33LgNFAQmtneX4LwHiBpe6TK/A h1dBxf27ikU1Y2B2ltmUq+6Nbil0YxQvqGsJDt62aD/oRzR+y805JkVNy/Jfem3fHo6BTVYka X-Google-Smtp-Source: AGHT+IGgm45nVtg9eErjWzP9rqkWs5R8SZHYieFUshPiz/IoH+ftivF3xfZB4mXaW1ilNiYaMa3u2Q== X-Received: by 2002:a05:6000:310b:b0:3e7:45c7:828e with SMTP id ffacd0b85a97d-4266e7e1843mr7079130f8f.33.1760101570717; Fri, 10 Oct 2025 06:06:10 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 36/76] target/arm: Expand pstate to 64 bits Date: Fri, 10 Oct 2025 14:04:47 +0100 Message-ID: <20251010130527.3921602-37-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101738316158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-37-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 775219364f9..b8abfd82762 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 761edded525..943dfd45fe7 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 192acac1f5a..cbb00c3db33 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 3bccde2bf25..65d6bbe65fb 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 def4edf808c..8e342b08118 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 ce20b46f50f..44a0cf844b0 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 eaea7859d35..08b7db7c467 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 19:45:21 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=1760102506; cv=none; d=zohomail.com; s=zohoarc; b=Ce6swuun40RAiKKL/ztwf/JohnL97p5VuYBU8wd9AvCJxu9XqysPDIrDLQllIA7NPB0PHORHQptqsGKfk9YYgPTh+nYyQrkuaQEGAXFdumpLT8pTptfnSWIo2umiUsgjRpLEwM6b6p8U6px2czqHBrMR4qsxnMXyowavvUM/SXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102506; h=Content-Transfer-Encoding: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:Cc; bh=F8deSxcO+Ly74Rq205FouZcpmRk2eTbvPunc2KKPDxI=; b=bVEKVJyamNpBMAlPPUEzaP+MGkkdp/I++vOVxHxz8uCEtLlxhfDUpftlmsV8O/IFfOPSrjGN6SdPcuflkDKqklLcpE1oxKxiARAXa6yJYZVweRbkrvGuKrfRqR90EOEIdmt5ZQvHrMxY90p76F92e0DGnJfGqH36WSuhfeSbuDM= 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 1760102506410913.8313056954097; Fri, 10 Oct 2025 06:21:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpx-0006q1-4z; Fri, 10 Oct 2025 09:07: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 1v7Cps-0006cX-OL for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:05 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7CpB-0003wL-As for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:02 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3ece1102998so1237658f8f.2 for ; Fri, 10 Oct 2025 06:06:14 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101572; x=1760706372; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=F8deSxcO+Ly74Rq205FouZcpmRk2eTbvPunc2KKPDxI=; b=mFVjeOUPIbZodv8UGrZDfCwRF2Jv/DVX6EEQH8RncvQkLtUP9IGxDs6i3rAogecuZV 7JEmdXXVKHcjlmNBiMFl7YJu87RSM+VJ862ejkenhN10V1E52HebITOGTMKqskf9j2zj MVnjl2M51NzjP0PJO/09cKqZZXAe+o1iwYoErlEd5BjboZCHjcDB9KqRgDMbtF/fEl2l hHIBAZIzv8csA1Di9tEosjmedhklVfZHKgFn/2icWilmNmjj9nvxm6Ok1CEDHe3Tw408 pP9jFL8CAt2dWXcSxqJYNy5IGUDue1x7TX765/QsgURSVXPwMuOHo6q5eUJ/inoQWa/y SuaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101572; x=1760706372; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F8deSxcO+Ly74Rq205FouZcpmRk2eTbvPunc2KKPDxI=; b=v3Tzyu3hCOHSeKwoHrXNo3/fRLKRr+A++YOtDiNUANKo81t0UDrv6+wbi796enGCTZ UhYBfQkfpBTGDWFt3fzBUp0SP5hX7B1LnYbX6vN7/YlS6R4HTBh5xC0Mw+GZMnHqAYnN CC+YghF5Aou2kzRQ4oRdlmtKfpvJ8fMomdG2o22tFGw6jaPjtIH9MU8cZ78R4CDXvnOS sK9Y/y1K8cEKZlSx9o4dEOSNw33LchD0Wr/IqeUTcJ2bU0nbmMz28JiyzXmzgV9q7KfQ CBcn8iH317y1Ulj+zf1yL9MOA6teJWGiG2rWd+sispeubI6wMNhjlOdtMH28D6WF2ull fTIQ== X-Gm-Message-State: AOJu0Yz5hS4wl35WO1wyiFVoYWeb5gQTAPWlajdyMeRbxF7tdn7ly3WA s/MlF8t2d6Z/QklFP8HeyO1SVYXmOYM4dY0KijwF1te80dF67hqgaVxv7JcQ9lPsa4zFK4DT8d6 luW5m X-Gm-Gg: ASbGncvjlphiCm08BALkAndPLytIvAfAj6ScdyPA+PPBFKPhjbEHxKU8KBQUD52f5ST 7nXFrXf7sFwArodyBThH+4thfbE3URVKXlWkOQCkcjO4u4+9mV1GJSueVbhcRKNIF3bdOkdpsfs KskJua7esw0XegtwywKeBKLaB3P+vNEkZlPMwv5hsWyPmUZdRoAWv6GXMNvQuCje1LffYgUn2jf 4g1asiFvBPttpfmioZaHowYRAyvhakfPGmy4j9w8LhmUBCy/6GZsVpgUhieJemU6jQyeaDZ1+X1 SdVAOaTiayLzmptjlFq/gRy0FIW3r2QHXMh6vFDrb+SzPFumjbVBZHkqm7P+ghdtiZZ6Rr//T50 gEmtZv6EKb7wBwd3NhuAmaAkDxBjI9l7bFNz9eqZ/B+EWskcTKjj6EJnyaklreQ== X-Google-Smtp-Source: AGHT+IGVbc2ubU52zcSKaoqja05rMaGDvjSKi9BexLuJ86VitMosBSwRjEngYxw0RUlWTA/EGtecpA== X-Received: by 2002:a5d:5d03:0:b0:425:8539:ed8e with SMTP id ffacd0b85a97d-42667177e89mr6918645f8f.23.1760101571878; Fri, 10 Oct 2025 06:06:11 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 37/76] target/arm: Add syndrome data for EC_GCS Date: Fri, 10 Oct 2025 14:04:48 +0100 Message-ID: <20251010130527.3921602-38-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102509987158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-38-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/syndrome.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index c48d3b85871..bff61f052cc 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 19:45:21 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=1760102530; cv=none; d=zohomail.com; s=zohoarc; b=jT6t9jUyRQyKmL2JQ7au271WWs5OvQshBAAxRgFVvXAuNbDLG/JtFKdwcD6QPuym1Rrg1H2wInrIjnHdaHnClLgG3XYpJ72kTb4vk0WZ8sNVOs6Br3hqdUKxSsD7HcCqUT9wnm9bRNcAOYM9DuKSv/UolgVaLVBYNQ+FOhqwKMM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102530; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=yZ1ukoZcfL91EUHEhf8u5pzbtt8p50/QdMP7WRR0CUU=; b=mplnLMUx4Uvc49D29TWDcvZtzPuk04Fjmo5l7KxaJGd594K1HHd1y5auY0pgQSvSHq4sWw18SIpn9WI4ev4Z1Ll6eqkUv36cLt7JI2cZyoq25la8Zj3FuB0oEcoWkAr3PL37rlHrIIE4SYbqx9NbgG12/bLLC7Ptl3vsmWuWTTs= 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 1760102530480406.01673119845475; Fri, 10 Oct 2025 06:22:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpt-0006e2-9p; Fri, 10 Oct 2025 09:07:05 -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 1v7Cpn-0006TP-FL for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:01 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7Cp6-0003wU-0A for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:06:57 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3ee64bc6b85so2230327f8f.3 for ; Fri, 10 Oct 2025 06:06:15 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101573; x=1760706373; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=yZ1ukoZcfL91EUHEhf8u5pzbtt8p50/QdMP7WRR0CUU=; b=OUA1YT8vsLANCCzAam8tYqhWT1Pbr+pEO23wBnUOly4qyClwPbvikkUN2Dnt8ijEIN p6dgzLGyci+MHmRX7Pq8e/q0DYzpSwJdCrCHk1th6S5dSVuDfisqdbzEMX7zgSMOZzkl hwe8dLl+qd1rE9soa29uF0oGYrz7nxK5gbDrDJcvYh5s49jaFfPFjtNl1D9M7O6WvtHg k0VdwLwYt39u63s71AJJq4YQTsHlapXYquf3/PzBDTNjhOo6dM4m8YEEMM490lVMQ7kf XZOqjSi0DJoIkY/fjLGa9395gd8vW0Aipep0Ie7NJ2RI148dzFzJp/x/J/HHBZ1rRVPJ 6pDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101573; x=1760706373; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yZ1ukoZcfL91EUHEhf8u5pzbtt8p50/QdMP7WRR0CUU=; b=VyYe7cyOZy/8NcKd0s3m0NsrrIv5gKxjS4Rx5+RIaQoMAg3O+hJEwvNKIwHmjtiIfB z2kkD3/ypBCAGHB9rTsKGHZKBhRJUtt1Djba9oMGG3epB+A2FFwMI7Qlus7ouozEqcAS 6oB1E7Kv8p/953qrkNr8D9voxUWkAHY3x/Bw8xkI73q4sTBKPjFPf7mq/lqScl9KXwfA Nod0n2H+EUaHoVQQk+LC6dSMWGZxmBwuDsQCK1v0BHKz22cl3LqoKRbAIykZXt5Qmmb+ ELKv4hOr2Y0T8zmEW9aPPEvPc3/WlIkD39x/P6jJhqQv/PvS794XnhoZgNds6Zw6xJKk wISw== X-Gm-Message-State: AOJu0YwgCfdp8OxW7A0wfHHQnV5/qbF51wrwKAC9f8TFkrJ8DfPwiv9M /QDH6A95+wqcKti1JLPI22feHlU7WG1zqBEFoLnUtrZXa8qwEEkuoOFumKkyKEyZ4y8hRzvEaCZ Rfpc8 X-Gm-Gg: ASbGncsn9+Vti9nSPUWdpbMWgUzecaPRObAbRrsTHjq2jK1Mr82nT4c7KrcW7Jd3Ggm LMBiEvINumJr9t5l7MtTPwGyDMe3lr4tCtQA+H8efrbwzP3wxJ8wsAxw5cc/Q+FBDt/I057hD9j 9tFvHih5rT4DK5XuXCil9QLjrV5Wbcxbd50+oX95PoMVNRGeW1SnhW8uHqYb5iUTDFUzdMhceSL dEM9pGzHfhQliWG60osDuqVsmPFz/ZdJe4r6nZXEI/hUoA6ySORSppJvC/O3oG6oUXITUYJaMe/ 2kZH+I2lQh6BVUwyhA/Gf78symMUjqPX1zDPTX4gAwIXI5kV129ap3/AYVcRF0n+3YCdcMQ/nDg MGWt/0ArZcOKc594MENcvU8N7wrgyY2WZwBHp9nIoM8EYCBOWFuY= X-Google-Smtp-Source: AGHT+IHoZrz83o8mfyTN5B06D66bCAdQ1tFBlHaaieXALH+CcS05s7cmY0tWDbc/s8baKmTLmtclQQ== X-Received: by 2002:a05:6000:400f:b0:425:74bb:7c4d with SMTP id ffacd0b85a97d-4266e8e68a5mr8048050f8f.61.1760101572853; Fri, 10 Oct 2025 06:06:12 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 38/76] target/arm: Add arm_hcr_el2_nvx_eff Date: Fri, 10 Oct 2025 14:04:49 +0100 Message-ID: <20251010130527.3921602-39-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102532183158500 From: Richard Henderson Implement the pseudocode function EffectiveHCR_EL2_NVx. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-39-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 b8abfd82762..54f3d7b1cca 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 8e342b08118..e397fe75bd1 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 19:45:21 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=1760101939; cv=none; d=zohomail.com; s=zohoarc; b=EQTmMQ/CGBfWNaM2NJlNyshNWznOQYyH21wAaJF4iqnTLjOPcudA6IG80fdCh8vcqM78/LJHWkvZJ6IAuhG/xJ/EzOFf1NuqkES+vuJqB1xeyfhbGkdPiiplSPwCUPQRy2/lGbasiJ7OS6Tvuj+zct3K2DNSHWcI74nJuNeXjnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101939; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=+8jceCDiRONn0TjKUE44ua6cHHKQ5femih0Xr9aWkgk=; b=FtrMKYIFl/6MLuvRqWg8lMYRrVz06ohuZm90JPNNo520PON+a1gZkvqBhviY3QdK3nt6qDNDmEGUbVi8LPyfTmR+9erhHrIi7JxlP0053Oc3CA3RjvWgCWYy1byPFKh1mPj23nJvnFCAgd+gNiugMDLzayCbc8QI8aVrHBkvjGo= 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 1760101939102371.64277301080983; Fri, 10 Oct 2025 06:12:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpv-0006gu-2d; Fri, 10 Oct 2025 09:07: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 1v7Cpq-0006V9-LR for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:04 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7Cp9-0003wg-Ty for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:01 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3f99ac9acc4so1729070f8f.3 for ; Fri, 10 Oct 2025 06:06:17 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101574; x=1760706374; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+8jceCDiRONn0TjKUE44ua6cHHKQ5femih0Xr9aWkgk=; b=RVvw+MUEDznlWaRVJHiq9jpia8PIGCpk/LR+PiU1TbFqJKtokEEAZNCqMB6KeJ23yk 9wgl1Cfucdewv7NNeLnYLe/3cIUlsKZ9AdA0M0UM3c44Bj7ksIfcP6W8OfgxQq89d9TP w3qJ1dwwQ0daxURrps07uqfWD8aJBXgLHPhRxBqRtpXwWOZYrX5P8C+lWhMi1ckLjAe+ UDwe6w/f6amMDs5SxY85eZIdq5K+b8v4qs9K4Iku9SuFoUgwu6+igr2iTbNgvivTaIhC KL11drkTMs+GQUTT1euT757iMFapt5Ud2LhM++8LkDYLSqlGgVjzGlKv/4vjOsqCoNSX C0sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101574; x=1760706374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+8jceCDiRONn0TjKUE44ua6cHHKQ5femih0Xr9aWkgk=; b=lZp/AfWB3QZM7BmSXcSfS3qbkv4zFnpKLzv9WpdZrcLPzZJ7kiN7cTHOLItMhssnt9 bYuALyvB5sSmuFgl72yQyHUb34p5e3XZf/yXh/grPf2FXohhIiQfDq+YOTbgt4fYYWP9 /xHYpX7R+RxrQipCdf/JQtPfVO/s0DjK7nRwder2qj7N2nSSgA+LVZ/h75xCLgOYD7Z3 VLbRj4QU/gEMj0/2rMbndhSy21xKuumub6XpZoj1K/hDSF/SVk5vJNRc53ADX0V0+ZS2 F8H825akpOMzFY4kQBEmbRF8smvXPjitqCls8pKQW2BjsjY/gJRGGPwwpkldmPZ/ybdr XeHQ== X-Gm-Message-State: AOJu0YyLOFDJCY8Fx56PRxm/EH62JZUGSUDfBLeJtNT5LvJAF3Q79kRJ LkRfggraLKXRwpHnl0rcikX4CHnpPhomf00sW9imMkXUveuYXiWOxF6kyQ2vYnc/VczMXOTIJ+z AUNsf X-Gm-Gg: ASbGncsswOi9K8yyMALZqZVOA4sJ+u+YwxQxyfkOzqVfLvHAU27U14H4l7bmDeQw8UP YcE2Yw/7nMizXKN1taRL0Ll7M3qj02jSSG4C8nlK7lm5ysq/HmzAAV3D3gjCn500MtnF/bhLsXX Qr0hUCsvsSXjFCvHR8ceYwA0m6r/m5E5Ar3rAEl12yy8qMGUvOTTfqA8Z/KOKIO2zLwEUdfCneU +ip6WeOgZQMZpICsxQ1TD02mMOGytvGcaj+MNlKzxdkvsexghD2HX5ZoqXDd9W7Xb5HpbbLdvJA jQ3YIyiCvKFsxz1jTmtogccPI5BNiJua5f31UIT+oOA7YL589+1GzdW7WMYuDGax+GRNcebyaZl lXcUva/FrzubzF4zrTb2lNPXwB5+VdGd8scWTX/DQOEE5igJqLwdI6o+gUV2dsQ== X-Google-Smtp-Source: AGHT+IGxZ+WS9BfrhqvxH3/RvtgowMEhSuGSv7RYfCRlnYmlIfcif9bfEjvhTa6BcYJXZxJcErbjSg== X-Received: by 2002:a5d:5f48:0:b0:3ea:dd2b:5ef with SMTP id ffacd0b85a97d-42667363e68mr6119464f8f.18.1760101573916; Fri, 10 Oct 2025 06:06:13 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 39/76] target/arm: Use arm_hcr_el2_nvx_eff in access_nv1 Date: Fri, 10 Oct 2025 14:04:50 +0100 Message-ID: <20251010130527.3921602-40-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101944783158500 From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-40-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 e397fe75bd1..2875f0ddd2e 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 19:45:21 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=1760102070; cv=none; d=zohomail.com; s=zohoarc; b=NBJsg7ru3MS3dnB5R35w4pVVenjaJgbObYBgGaeevbpbBUvhFrGtmxwk2MGhJd5Jw5rsEw9GUeWkPRhtNlFq6CAKJdQTAW1N7zJDDpLrrXZqHlph45WY1wLHN6NPf1ZfESMbmJw5A+r7VywymguK2lamHphJF2T3YeR/KrZGT3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102070; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=tWYSJKZV/KW1c4fToUoxKrkpMIhLUZuK/qErLfRFHHc=; b=g2h23cQBEFasQDqnEgmTK0tK5dcWGoN2zZvmJ2ClRaw9axNLhJq3v5gPrFXhhPIGESaCp43arJFMdwPVWgAg3V4UH3LLPheOpnMVEFpw09ESecnmu7C209nyaYIlcyyDwB9DaP7YYOQtspFmmRMkr/heaP33aTjvqZ0Nrzel96c= 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 1760102070522604.7897471109956; Fri, 10 Oct 2025 06:14:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqN-0007Hc-Sm; Fri, 10 Oct 2025 09:07: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 1v7Cq5-0006ve-2p for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:19 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7CpG-0003wl-3M for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:16 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3f0ae439b56so1333702f8f.3 for ; Fri, 10 Oct 2025 06:06:16 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101575; x=1760706375; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=tWYSJKZV/KW1c4fToUoxKrkpMIhLUZuK/qErLfRFHHc=; b=lFduxQ6bJKgFvaXtzNOr3dyixqcD53y/ipd5lvw8e4/XXvOXTTrfHTDTIKu7UBIyKT mxMh61hZwwQhxky1Jp2CXeuWiwtngS2fOb+sHBbMyfUyLLviOxz831IcqcYRXZZWiAUv HMjaom83ybSOlAzFL7Svbd9OMhbFbrsRcEFJeYZ1lqeg35qYHSKIo6WJQ0DMO23j4udj kObsqRYlUHlkS3n9y7Yh0Vw7HcwbowRR8tHfMCaig+R4OD66OZ4KSt7CRPdcqUYN/E/u LENoF5Aw7mTHrkfQ3LjQPULsMXeTiZY6SyzH1pjh42xFU/gTtDwr9gnIox8ep+FLqqQH DZCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101575; x=1760706375; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tWYSJKZV/KW1c4fToUoxKrkpMIhLUZuK/qErLfRFHHc=; b=AuuQOymcbYGg1TGW+8ZfWaHMhtgFLG0OIxuEEBc7v4y1gfwVz+tSDZV3hajK3xyf0i zc+rw8KZCs5ZoFKiKySiTARsucwIYJSJXSmY/5lhGcAYzMJ/Dd+z025dkFJ+XnvI+MRd xFqP6VXxiKtnctadnr0KF9BKNl2qSPSOILewlqAqPpBT+9gxWQ3EfDQVVU48vWInJwot 4Gz/g5qGwiKFS6LabQWC7TKpXj/0EXzPOADOrcI4TAByEeglL6khv2VqpVTBwwJ1dloT 2+kF5kBz7sPdw+GKE0ea9hrFey8U50RxvHXhWqW6Lj0/36VWMYxSzw6L1tnejX4B/oeG VG7A== X-Gm-Message-State: AOJu0YzW3gpN9mkDRT3nj5OUW+0pKTGbQsO0hOpGEiaT65keyofqLYD5 37Qf1WQFu1W5a4ebGHIcCYmeLCV4F4oSXhTM6WsmA6JG5Brnb9/ttv+obGH44VJYqVlwdSwFM6w DvCtc X-Gm-Gg: ASbGncs6gDVeVND4di7ps7h6HBdUjFg5R8eB6k+XJip2hdScYzZfRCzHK+h54kCpB9N aYw0SHAKVvug3vkG7WO3TB9MELQ5GZ2Eloqs131wv53XCmWglnX8SgIy/2BkZGZuaOi1FaKaaYu Rahft8Z0gbtrESrRLC6Kp5bykd70a39q9bNeOXyKv45gCyZrpZ7fsyIOTgCV2UcMDHNCetDxNyW i2oloZQZslMEu0vsWddCMQ1viRlGQ4GXDP1xOfIx5qCmtxBl/SuTffgbXtKMHaUtKfDmUxcKlxQ gjoweWv7TKUAxBD6CQLbYee3Taigpp0GozBrW+wmBP17F4WTgwX8Og3DalT9UZM2DR7i3wqCHfv zyhqHIyxwjV1V/nY1soHcDXiGZHpd+hZC21+u4pI5v3gZGiL39oWKs/zCKJDU/A== X-Google-Smtp-Source: AGHT+IFs14Eu9rPXVgW7Rk78Ob6bQq6TOrqIq+4Y7kQrEk60gGvo6y5Bam5TINiZugrrInHXvte3xw== X-Received: by 2002:a05:6000:615:b0:410:3a4f:12c5 with SMTP id ffacd0b85a97d-4266e8e6da0mr7613961f8f.60.1760101574928; Fri, 10 Oct 2025 06:06:14 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 40/76] target/arm: Split out access_nv1_with_nvx Date: Fri, 10 Oct 2025 14:04:51 +0100 Message-ID: <20251010130527.3921602-41-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102071945154100 From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-41-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 2875f0ddd2e..5d40266d96b 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 19:45:21 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=1760101688; cv=none; d=zohomail.com; s=zohoarc; b=ULZqSyNxD7Q/gEsxu7wAUu0ANLnKQ0K0ytJ2NKfnA5upiQH06XdWgZlHPKyBgcLXsKQ9MUc0ye/1p534d53mU15GlgKR+KQZV8dBzHnb120ffabdhUVV7ZGB2ktzgUJwjm8qodVQA1Wph0n2Pr1KQg4uvlOm4h70dsRCjfkg0HY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101688; h=Content-Transfer-Encoding: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:Cc; bh=ppETInW3MEqjqW6NdufgfdsoZNQc59d69wd6I8lXxCI=; b=gNvehPEXJI/gzqtrwTkJ/Pv+co8tcwcY8DMlYogon0z3B16Qs5eS+nZUUWCyJIQumwYDSmi/K2gq05IxfBG/vmqQTXJWrpdrlFZFUFq2aGhDp/XYLALmUiR5pLvuqerv8uf145RsLvxHQvS781u4BZ+m7rgkiIzB5Fps5u6wOns= 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 1760101688587566.8151406625245; Fri, 10 Oct 2025 06:08:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cpz-0006tZ-GT; Fri, 10 Oct 2025 09:07:13 -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 1v7Cpx-0006rx-V6 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:10 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450: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 1v7CpD-0003x4-Nd for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:09 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-421851bca51so1275173f8f.1 for ; Fri, 10 Oct 2025 06:06:17 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101576; x=1760706376; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ppETInW3MEqjqW6NdufgfdsoZNQc59d69wd6I8lXxCI=; b=b4B/L+4PGitiwdak4iFk6r5SvjfcZrZBJGVczGQbmFY/YEU6N0Ro6wO6akZe/JK8G2 PQmsnZmuGZJM7yf/A9UFZt9foHVGBH0UqCVubsYqYAdWRe+TW/s4pGw2Un7KBPEV9FUZ /jDk3i8sXlkgk8nQRVy0ahZGpEuWEcWvuSZS8F8p+hPYNTFbLSn7IVK/O+byi9bXteCi QJUUAq3U6ixKZyY0f/3Usxmwtw30Wig+PQ2TXWbhNrvmRBE3qLsS1drqOdxM/MCiV1Fg 6VOTz2U57Q2lguU6ZdZY3UwQyaFKCK6iLl042FuZwUYbgCAGDeJKeIBmv3S3GwqAsP8O Fy0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101576; x=1760706376; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ppETInW3MEqjqW6NdufgfdsoZNQc59d69wd6I8lXxCI=; b=nQy6qbNFX2JUUbTOcJUkfeqNzfM63s21eCiQGo/K49cX1+nDlBjg76EJo0+Rz9jnyi usCinsUmwBoOaD+f8ZT45eqgl5Eyj7LEkKp40JvTqMBmYMPlCavUBXsb7J1kneIC0zeU RlTirTv2sSVsyXgE/3mbAUoUCsBsPZnhiVFkYfPVSCG+JCX9ovLn3Qx00TPq/RfYtSx6 VsQ8iSBalLm+DGHBOrdln5pX8v+OYmQeGUvh+BrjmBswBfEx4MWY2Tq9sFf+rRb1wSW0 CLGESZRmAPIVZKo2nwrFYEuPlaIB5hs7NK7XZkTZCeFLm2+bu7q2lXWWOO89n1d5QfKD 5xtA== X-Gm-Message-State: AOJu0Yxo0XoafAMwwMHOtoFqT1zkoqCH+Ucm5GCiECpzSGfyZA8T6kWz 2UWbs2TLECAVdQchn+PqbnZk7bXq7q/xu0j4XsEM1IDkJyp58xBHQMrm9b2gMN2K4JjQa1g4gZX VMzdl X-Gm-Gg: ASbGncuZfHWnKxwEZVJF5UySlZ2nEN1XDzVEx+q60QPhaZA+Qlty+ZX//1AJI9eEi0Y LnP5M4T09hraaAMb3gCvuhlPTmXFdXvqqQ6lc476XqPLYYcXv5gGzUzvoaZlCcoaIXoCd1NeI/2 OVLyqem12n9p6wwHjWa9B1arXHyRSF72FLmJkuVdoGl286y+1eN+ECI8Ge6+KvlImM4uBR27xd9 hXj0HiPephJBKMbintjo56lPJ+ZySbDj06IqOvNE7UkNSjAOjAzHQEHC2fk4s2tzBSF0SOPkIwd wI0GzCvpdfAgDb4y1OFGFpwK7SD2f1sKcJUIgDID0weC51Imw347WP7QLUijs655XvPcGzc/Pvk k/F95oOoMBSIulSqO7MA50YnVl7j2XCZYtKqZTyfD0vvlW6YY+EQ= X-Google-Smtp-Source: AGHT+IGcGku/UhwZBBcgzOTOgb6OnJj7t2TpsTmJiaTGcJD3jl0cSdaViLeS5vnozGayJDxxdbfY4A== X-Received: by 2002:a05:6000:2010:b0:402:4142:c7a7 with SMTP id ffacd0b85a97d-42666ac6f35mr8384789f8f.16.1760101576066; Fri, 10 Oct 2025 06:06:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 41/76] target/arm: Implement EXLOCKException for ELR_ELx and SPSR_ELx Date: Fri, 10 Oct 2025 14:04:52 +0100 Message-ID: <20251010130527.3921602-42-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.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: 1760101691132154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-42-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 bd2121a336e..a79f00351c8 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 54f3d7b1cca..91a851dac17 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 5d40266d96b..1aa0a157b72 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 dd3700dc6f2..4fbd219555d 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 19:45:21 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=1760102512; cv=none; d=zohomail.com; s=zohoarc; b=FWvceZor11dP3phrQikyEMsb4aP9Aj3aV7lxndv7zCMf28ut60t/8EyRwqrFykkKPe9u/fZThpCjs85i5h0CPvcg/Ft3m2RuU96+eErqM0eSryDe3Dwcxm0Jbcfmmd03uk+1tek6p4elBdoE+/LoMa+jan/p7cXFTkNuQkYUTLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102512; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=7+nBYL3F8qlOvra824tlrP4zq/NyYtJG8TYO8wDuVM8=; b=UZewy5tE6fSyGYzUp1vRgReF5rNPKLiQ2/A9vKEqnsrSqTyO/sWaswL4oNmPJuxQ49FeCHELNaUfcSnzFJroBNLzO0ylCiYFoius5wV2Sld1jrbeHIDB4vm6+YQPqitA2JYFat1Na8NT/R+daeEdvfp4TSyJbCXPEI654AXy5uQ= 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 1760102512120422.8654905070117; Fri, 10 Oct 2025 06:21:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqD-00072K-TX; Fri, 10 Oct 2025 09:07: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 1v7Cq1-0006v2-Kq for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:17 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpI-0003xG-P2 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:12 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3fa528f127fso1526630f8f.1 for ; Fri, 10 Oct 2025 06:06:21 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101578; x=1760706378; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7+nBYL3F8qlOvra824tlrP4zq/NyYtJG8TYO8wDuVM8=; b=YWnPl/mW4LrJgSBdZygKnji0f3VMdgN/eDaJ1HWOdFL+pTIYJ9NvoTL/8qVK6bgrNs 127li20xA/t/yl06bgWEGOUKLrGN/i+q2ceShLsP9qjtDnNdU+iHXwBzz4rB0tl3pi3z DbpPEEpEut2wGu27sHxSURgHGbwC5jP1b3qkpTAhw00eYwP0gqQrXkbZhfmKgXuJYXKy qGnOjGm9OUXrEFvF9Y8g2apnJFZQrPFLiJXtc0BupbaxWmx/+l9oo+OBahHKMW5TDG6J xcX55iWmsmNV0O8RF5JCDJraypCiP5JPSDmGwHrPQa63vtMGk18RKGMt8jVd0GATrMSz gWbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101578; x=1760706378; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7+nBYL3F8qlOvra824tlrP4zq/NyYtJG8TYO8wDuVM8=; b=AhFb5SrUl3drjPKa1RG4Jp3FTNdUfzvvK66Nz+t7dg8+Fkpot1RfFCo1S3762MKysO iMxITZdNdNmWXlxA4z5g5aHyGYNKl4WOqgGH5s1RuWc3sH9bxDIKggPNzLQbjh/T1RN7 ywrh7faWzKCgFMdR75HrNg8tkqrqR0nYCWIIbQqbFtfJZp79dY5Zix+PkAv5G15du8XD G8X9/ubQHP/5RiFN+e51Qeh3v5C3wrCBFbxARJYapXwnEyFHnCNe8jRuwhou/U7mYhCY D+wtEuWBWj2puSHLiTwmI6CelZaIXQiuOajmylxqcskHdPoyTJvlrNMfgvwjYLc3oKM4 4jSA== X-Gm-Message-State: AOJu0YxtLBxJgeAmaWZOIMpW6Yzl0dIGcHJG//k77HgUSbjUCIJMWB25 RE5LuTizlT7LIU7/ptNqvQrkMc+rSFSsM9c2Y/29EkvmsqV5EI8FeTd7nD198qVHDKazmOy3Sqv vsMWp X-Gm-Gg: ASbGncuQMKkHy8p9Kje4ZzhZ27d6wsLZeTDb3Jkpb7+JB6z41YrGyCmqRRsPQ02e8OT 7zTR4uNNcE25wh1i/uEtvV/8FFptifk0Slnop4p/IbspmNd5FzGdD1/YAeOaRQrNoCmlmLfn3km D13CBOjDkCXJVBWS0ekMjFqeKqmyz80qvsLCNbnmwgevbO93a8qu2pxzEb/86zqBYIIv8v9LSC0 ZX9KmERZqfdnW2/y0b0rgk1S3yWj3HLDZijqRSN0+adCpL0iqqdtXfbPoUt8HR5R6TOgPaTxbZf 6Sc7vFn0jjn9D2bgLwTsWnjm3om6yhC1ldG+91VDcUCD9bIa9Bc02gGVIM4rDlHyZU5g4blJrBc DrKpbiHO43fs7hzXo5j2py4z5tN77JkoUgDwRswJROpo9aw5FNgE= X-Google-Smtp-Source: AGHT+IHMFOwhmXHr/OR2oBwK+pHFvwJ+D2U4oKlRQ+dGqNz18oPctB1sRFG0NpYfplokZ1gdBao6gQ== X-Received: by 2002:a05:6000:420e:b0:401:c55d:2d20 with SMTP id ffacd0b85a97d-42582a04d0amr9472662f8f.26.1760101577839; Fri, 10 Oct 2025 06:06:17 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 42/76] target/arm: Split {full,core}_a64_user_mem_index Date: Fri, 10 Oct 2025 14:04:53 +0100 Message-ID: <20251010130527.3921602-43-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102516174158500 From: Richard Henderson 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 Message-id: 20251008215613.300150-43-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 43c9bfef93f..1337e16a96b 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 19:45:21 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=1760101731; cv=none; d=zohomail.com; s=zohoarc; b=bNrKo+ttnUIzH1oFSDhGwOw/PLdATZkRsROpBIysB2VlvGC2f2Eb6JN+9aG3RtMeDnBRjvNJLXmjnotHolk0QrnXAoHrYluTErDav9PGg9cbPuMA2YkeExFyL4+Al1J1hGlyqwiGNbm8G8FwZnwi7PAHCSteWmTlcYUEOJCuC04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101731; h=Content-Transfer-Encoding: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:Cc; bh=K7Y5RxnInLeoArE7Yi+6qmjYD7sMXgKe51eDntl5Zkc=; b=bP3CJ+PrPQkQ478aZ82FShLw8laS7k8ky7hyI/bAU8gf5d0O4KWnRD73Y3n9pX0Jim28x3+MW3ScaCdpvSVs9kG8JcuItSgvLDy9eEWb1LfhVzUnTTcMFkpumJP8l+OjkZwqvLrrAr+YG16cp/U7H3LN3O7mIqYF1YwL+2F2XUw= 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 1760101731764104.57604255100273; Fri, 10 Oct 2025 06:08:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqJ-0007CR-A3; Fri, 10 Oct 2025 09:07: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 1v7Cq0-0006un-60 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:14 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450: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 1v7CpG-0003xM-3o for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:11 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-3ecdf2b1751so1429505f8f.0 for ; Fri, 10 Oct 2025 06:06:20 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101579; x=1760706379; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=K7Y5RxnInLeoArE7Yi+6qmjYD7sMXgKe51eDntl5Zkc=; b=z8BvLjAn6+9b4ORSzj4ji6QLsCVIMCnzZtGtoIuTwLgwz6QqrPMhj9FcXQTF0fSBDf 11g9K01xH1xr0qT3K7xW90hRp3K0usPc00Sp8me28+Sx5Vu+NXQuSt45RfXxelb93m7u BBdWblunxss10Gvbh2PK05mlu3ZKt0H9nskLyLg179h22YdHs1/hO5IP77MjczrFbXfQ fdD//Wtu/YSGBLX9+Af1S932TCGW6kVXxHt05qew1gswMismbpjcHRybZesyhn3P4lCI SsCB9NfNK6RcgWXT3ThjuKrcWO8V6JijssdCWYpCGWdSdb9bLAfaetnwvnauhDC1gGGs jtgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101579; x=1760706379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K7Y5RxnInLeoArE7Yi+6qmjYD7sMXgKe51eDntl5Zkc=; b=DcxL5J+ib2OzyPV/58GuhU05uTOBnSI/fOhILaDxj/eSDhXrcLL6UnTnyrZavRrdrc u+DQVX8qrK7fYJAEwc4DR/3pK8L/VTdgal693Tfti0Qj9VRy57GuuVaXkJhuZ/L6Mwkc WVuS7GH4t5kJVien2aw3auVldnT36seZ1Fmaxty80g+sTC6qTHQc69ZKACsAkej8v2Qx TbtSKccT5gZgIFpARaMnglwYD/kukPAqQOjUrWrjGnz1UP74Wy/kUHf2Cd/9/WFsBI+j ZbVTrlDzmu8snbKZpDn0jJzycBSmD6nCDgvX/jk+5Q+QFFsmuN8E019T6lgzr62n/mPE HJOg== X-Gm-Message-State: AOJu0YxM7NlFHaNfRt90ElZdNAO/HWQ24HE1fsqc1NgCD2uYVvV6yDSk s48UhkQ6b/MeuKOqn9nLDW3ZKf9r68lh0v9rgFtb4GdwKqLcBpQhXC9t8Bxsnb3hFcVO5fBLLcS xwaUO X-Gm-Gg: ASbGnctyRFQD4vQPR+cku264kzEHIJHHfZXW7HAeBu1mPsZUwsOe9UbtMoaHIz8IlRu 9b+gNWI0uzR4wHSAJIUHJkLLOVOpshg3Odp9LCNsdwuh6vm7Ms1InynUgjKJJn91RsRoHG3iojH 9HX9zKUpP5IGflcRdN/xOHWQEmUzN/bvSygAl16xnPAJnDfFJeU7fkdDBZwzW1qRLrp1i9LDmms D91z6cRkmUPUyUq8y9cFptbE1ajHNaPE6y2NJ/kAQy1jZMGUy0wwuw4RLgEYeszso3Inff8pjaJ /5YR0FQtIKivXRlBGUzJ37+91gpN9rGbSYNXXnAactVI9uSF4unebxV17RrH6B54knEqug4B8k+ EPV3TagLx/5mW7dWCUYRWg5+4EUDXVQJDBBPvfX28AfE+sUE7L9F8zkbBs7grWw== X-Google-Smtp-Source: AGHT+IHw8XSVHjZMHCw88nLjmslHCSrnKsSNnhpk3i0T+kiZYiAwFtiyOTKzQgTC/RKzw03PQPgSxg== X-Received: by 2002:a05:6000:26c9:b0:425:7679:ea72 with SMTP id ffacd0b85a97d-4266e8e0959mr7793313f8f.47.1760101578890; Fri, 10 Oct 2025 06:06:18 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 43/76] target/arm: Introduce delay_exception{_el} Date: Fri, 10 Oct 2025 14:04:54 +0100 Message-ID: <20251010130527.3921602-44-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101734247158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Add infrastructure to raise an exception out of line. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-44-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 943dfd45fe7..9a85ea74dbb 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 1337e16a96b..c037119cdf9 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 e62dcc5d85d..78d26aac043 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 19:45:21 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=1760102466; cv=none; d=zohomail.com; s=zohoarc; b=WtYgtmiwWNgEZ3bxEpi3dGglBk694gH0vGHRsQ5Sk0WCWA9hT0NnFnLeqZd83/R6sL4dpFhnnz0uBY0KmLxW/0EdOiFWs5tRWzu1YuoSYWGOTF/vD5epRzEeeXHEql9tmVWHJfiZRCnnNhmH9hiD4gg3CcWhWQicqVEjee0s5js= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102466; h=Content-Transfer-Encoding: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:Cc; bh=7RlBUUTIQO83oi35+gFqrHr8rvh5bv342xdcH4feI04=; b=HyW5w3tVk7Lg5Jqdfn4cyUex2GEX5s9MYrk1Y6b45aUKmoplHONGxnesv/EK+pvCwsHxIQWBw7LPixsNpp+mFIGiHcEp2rICQwEj20/iH9sNF5npPF6sGmpBXLBPs0UyH3QyRWB6Tw7fzSXx4GpLhTcQyv1bAy1q3EhXuCxasGk= 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 1760102466763431.4374081117236; Fri, 10 Oct 2025 06:21:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqP-0007Jx-U1; Fri, 10 Oct 2025 09:07: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 1v7CqB-00072J-VZ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:25 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpN-0003xw-1a for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:23 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-46b303f755aso16284945e9.1 for ; Fri, 10 Oct 2025 06:06:24 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101580; x=1760706380; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7RlBUUTIQO83oi35+gFqrHr8rvh5bv342xdcH4feI04=; b=cC6eUWEGhuBuuicqHMTm1qCYuwGxx9Gs3mMsbPkpJqAZA8shS5DxNV0xIdYyLd7Ch0 Hox+TAY3Y9Vp75dwPi6kKZdS8FGtTjRBgLcr9afDtEkniOeYwgqMG1Eg8UZ+2pBxNcbE Vokf6Xh8UT599xFg/BpH9dLlQNhz3oHhM5DW6NR6BR9kp8Z02QKhSc0eL5ekfVem/cOB rTZ5hQR2GSr9sYYqc6Zh/lQJHjAlLiWcNuuftKiyATj4NS5VYI3wmJZ2YWfqwOik0qlh l6b811arXZ1BipLt8d1J8fbo2l2zkR6TJwb2Kab//EkCe1yjauVCh+xgqQ2nDwffXZgp kGrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101580; x=1760706380; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7RlBUUTIQO83oi35+gFqrHr8rvh5bv342xdcH4feI04=; b=lQwe8sLiiNLu9pnAhe6R88xUNKHwRmqxakLISMGoO4LLSIG95X5Y2/iCxsEc4kC7N9 LQyP2HU8iDR72tU5VvbxMV8Fm1Q1ZX7TQCdx6msgpG+NSs37+Fs39TMB3Ao9+0OlkH4w JacvqWfntoAhnwexEN6kUk6fwPVIzelSWtfUT/pshHErfQeikZw6cpGU7FhzV8JpVkLW KC8Iawev+tyqIGx3FmGbZy+gKYEo4sWN+DafL71PMAk86B1X+MLiVrTO5o0vn0UEhOy9 ohnrEC+7YRwWo/tU6kIajFtOhHj9q7hpqbRf11/AmJEgrHGbW1ZS2EdlhKPxpxoDF1xh 3rwA== X-Gm-Message-State: AOJu0YxiqQORGuJqm/j5a0iHxVPfLvHyvz1p+/4k8pjh437ljFqtJ86j rUcK6ooXJf2VdH+oMWFLD8+sNiaZhodF6KzZc50bgJdKHxdldVK8Pztr4mvQUqVT9Gj1gEIPfLv Fc7TQ X-Gm-Gg: ASbGncttWUB9CHnFCNh47alniOMifRCY7iiLCbF7Tl6J+jiJ7k3QJDI4qyhFxkn6uEJ 9voXbiLWZRL+QK3Pd5fwrqhL86QpKRHiG80H0EFCUvTVQH+ubHP5kUFUbV3mjSrYzqAV4WMb92H pK8Gn/dnd+BmOdKpZ9E+6WTf7vNRsXrOb3fiMoEaM31oLjIMOmHCPut7cAv72vKt0Qk4dAcqt+Y a9EPQ/S9zyc5OaLzWIuWXKssA2aNwI7sC60/fj9NvVlFYqw3Sb9+7/i73TZ1NslXeg+N5bId1Bv HLJRnfbuIw8FA3BmskMP4sWgSYjycvGxNNgyE28ITryoGNeHN3Gn6wdNtm73HhRIMOwTsNJZDhI 3zmNkqOCDWQ0sKuBtYlizRrltrKwFW0e0HnO9yJ8qf2jNP989XobFFxSNn4EreA== X-Google-Smtp-Source: AGHT+IEnYd2//mv61PFZ4MvSHv3spbxcb2TMkzFxgk0lO9gXZuXM5fCFsiBJHKCwWDcAkNE3HlbrFw== X-Received: by 2002:a05:600c:4753:b0:46e:1d8d:cfb6 with SMTP id 5b1f17b1804b1-46fa9af0621mr80234755e9.19.1760101579957; Fri, 10 Oct 2025 06:06:19 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 44/76] target/arm: Emit HSTR trap exception out of line Date: Fri, 10 Oct 2025 14:04:55 +0100 Message-ID: <20251010130527.3921602-45-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102468699154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-45-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 78d26aac043..57bc8ea4c54 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 19:45:21 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=1760101810; cv=none; d=zohomail.com; s=zohoarc; b=Xx/J7+BA2h4JcW5R1JGvMoVOMf4L73D9fyuNq/gtOBcHNys++wWEt6QEJ+ZDOejbX5u5rFiH7qPiwzNH8tCbwYyb9PaZPdkagvVdjYJgSOhHSHWZFwBgRcfHTNIRBuxjIbxk0M0W4tAC74tCUVaDTjGYwQoEdiZROvITziHeEs4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101810; h=Content-Transfer-Encoding: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:Cc; bh=ZI+JmucMI1hO6swS0D2hueIshzmi+ImbluGskO1/wG0=; b=K0eCjW3ds3iBmn8inVBhssxmq9ySFXNKAJgbqnFuKYxUIhPlUwZln1VRFNZbkDWkSwq3764ubizZUE7IWwdnrUCd9NlYjqqJZS/Z0IMmSDf1z0U9axJKyw3TJjLGjY1CcDt8O80oUwYhMrBhTXHiaLxWzWiDjlmi8PqMqg3ZJ28= 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 1760101810451402.0593469293408; Fri, 10 Oct 2025 06:10:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqE-000773-Vk; Fri, 10 Oct 2025 09:07: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 1v7Cpy-0006s3-0x for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:10 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7CpG-0003y0-3p for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:09 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3fa528f127fso1526678f8f.1 for ; Fri, 10 Oct 2025 06:06:22 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101581; x=1760706381; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZI+JmucMI1hO6swS0D2hueIshzmi+ImbluGskO1/wG0=; b=oWQXjfJb6f9qDdU+COcVbWKUVaJ/PjUrpCTx8sQvRlnxTbpWV873dQdbAzMgv1X1VQ PlkilNqDR4TWz18uChmY8SvNJypqs2VdldK8gEWplywo9tpwGX/ZCWccW2+oihsHE61M Hw3fZtga9glfmqRsnGFAx800VERynokD64PIBNPtVCq7lmd02ptXY30uXl8z6Fr1zYKg rl82JFVFgBqc/a+V/b/+eYAvdHbUTNnY7H/sE9cf/QqP7CBsSCIFIsdB/uw+DETNbzCN DF+R1iblBAVy2hOoaUlAdPGlclnlo5zmh1KYrzYN9Soht2EOqrgqeaNJSVZnev/ajkyT 7HZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101581; x=1760706381; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZI+JmucMI1hO6swS0D2hueIshzmi+ImbluGskO1/wG0=; b=o2Dxq8aSOeLpd+P64sYSOsk4/pnfPqZ9vBgAahtx4C44zMPos3nphe646e1sWH8qf+ eKj4wVaUzOwlhJNXoalZX3wQF+HiG6cOJK9kLTTg499UccoGOrbnStoksU3OldvrjOo9 ZO5ripny7YJquF01UPcoZpUj3wbVd6mi+EZoDNrR8l2T2gVrNhTPYKWB+E2aZK1TYFNB t3Id4NaP5vuIMZglsi50GjlQ/ls8QkeMblVCAhNtxsiyS4PInzk8UNDXRkPpOw/VJAEw eQQcGBzQ6xZDyebKYcABqfOQ9iqtmss1LhRXq3UOCiVGX2KVj3nS0MqthmmE4yvGeb4N E+rA== X-Gm-Message-State: AOJu0YwSjfdgLV9fDoetF/dyEnenIjlFXBKss1WTDPoOLU/eJZ/SyxXb Q+8VJYkXCfRYhtbwNb6ile1UfDrwK4UMXcuTk9Qx7pN2SPSyBPBoZiCxLFVubchOt3TGNpxFxQR dkaAx X-Gm-Gg: ASbGncsDIYl8ZkSvL10H2FeZ9n1YBx+qefv9VgxpRCwtEvJbOBPgKmg/d3S+uF2AuOV V6vx4mqq1uEomUkbCYYUFkbiXEWubO1U2EpeFwdUqF6CmcY3l3Tqa8HjQ3rDVj4FNweGD3X4u24 j+YB3LQzuQa7GFCKRc1liPQp0h6SI/P8lkaNKn4L3VW0Q294QwA554I2ruEzSYT1fm8o+XzKJ3Q +FuPID8ssjBPvhbiExt26Amqi2IO4Mao9+ApkSMRFOjcliPXdPrQTp6xug3Gdxjk6btJWrmBwJF kwnCBY6YiYrMv4iIbbXAnNjmZdPyyiJtXfZQE6pWxWvWOo2ccYmiGZWrINAwVJ5YlWeLL0wUEID +iDXKTnhOzPnP6ihSaEa9ypV/gfT/+21Me5M/CGyuQGTWmGnEFNM= X-Google-Smtp-Source: AGHT+IGQjOaA+6uiJ98/uuRVu3DHauKy5imHHOAtwn0og2gBKACQXdNSv21WU5IWrzjX2zeP18N7fw== X-Received: by 2002:a05:6000:3101:b0:3e9:b208:f2f1 with SMTP id ffacd0b85a97d-4266e7d025amr7642649f8f.29.1760101581072; Fri, 10 Oct 2025 06:06:21 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/76] target/arm: Emit v7m LTPSIZE exception out of line Date: Fri, 10 Oct 2025 14:04:56 +0100 Message-ID: <20251010130527.3921602-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101812348154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-46-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 57bc8ea4c54..3df0bbcb7f8 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 19:45:21 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=1760102654; cv=none; d=zohomail.com; s=zohoarc; b=bDxqGaU+BPQLXX+Gv5WkzMYqcBiJgQm7Gq+ljTLCNQ6R5Iirt6e+2LrUIQFZCcxxlthhDGDn8NJQ30fdpwal4CNUx8pZdhkf+n5BIKdvgadJoj8l5oHxPxzd5QyMEvHOgQukdPRguZznbKFolEn1N9B0NOT6bE0GbzBtv22zTlE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102654; h=Content-Transfer-Encoding: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:Cc; bh=KWWWfmCvad/yyOAjIOoDjFHyfPWd7FPeZ8XpXrjRocI=; b=cEPyvPrl4kLMIP+7zqG2fU/dcqGAZU/4EK90uGih19mJ87I8ryi/5axoEVbv8UKBSObsJZDp20OuvdYct3kKs+RYFMM82zuo1VhAazivbw0qxJKr9YVNN24GQr6GF2pkzhz93Gnw+8tyUPqpdhJcOTb6DYAhI2Y2aySKVoWwnag= 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 176010265399819.628955902632242; Fri, 10 Oct 2025 06:24:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqL-0007GT-Iv; Fri, 10 Oct 2025 09:07: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 1v7Cq9-0006wN-74 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:21 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpJ-0003y7-3Z for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:20 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e52279279so14554345e9.3 for ; Fri, 10 Oct 2025 06:06:24 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101582; x=1760706382; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KWWWfmCvad/yyOAjIOoDjFHyfPWd7FPeZ8XpXrjRocI=; b=FVC2E9Jgq9tEZ/tsDODRwf6WgLjRELy4Y8CQy2jEIJ3ybcH5tjNcHEdh/lx6vQ/edt s8V0CK4X3gX9IjhV3GLoDtJ1h4nGddNvk/eJD/Ne04SVrmeygQKZA6lmXYAWca9vGt8J lkc/xQGD+kM1e/e+RW6SsFNC+qDuefZcLlCUkMc/9xeDETVNkpJLC+PoJVk0h7PUhI8B MTuXLAGdcXiq7BttPpg4oC4Xpvz8Qn8ioQ0J7I68ZcKt94x65r+xK28FZXFu/U5cPLOj ff9kNQdFQaHT0JrGvpqt8hxBNGvsvsdFvp0p4gO6XRZqBgcNEjk5WYSHOuYTbf8X+HXM oXjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101582; x=1760706382; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KWWWfmCvad/yyOAjIOoDjFHyfPWd7FPeZ8XpXrjRocI=; b=uo2cgQYVbyjKr/H2KBHEkdcrRTeo+ZvZ864nY8As+5nyEAxVR/yzNhlMiVg9ukmRNm ZmNnSPgsSqVieHvFszoLKrRZlSMFobNfi/lYzM5YLWQ+fl2Z04v7NxYtPLElEu+K5vxw 3O8S2e/CJ2V6KGFJcbH6qpCEnY1H4l2d3l1GYR+yZviybcb41BCCrBjQfexMEZHKCiZc UOp4JTS1vjOez5BYMCDG2xVo4pmVP7GBDTOJoifnhv4bRv5eJIAu3O1XEFiaM/0JLQPH KBRZ+YITAS3usbM/i+3hDnhJkd3mvGZ2MgkemTd3rbne5Sm2blSHGfeC3gFu80024b7a nCVA== X-Gm-Message-State: AOJu0YwD4QQT0Ye9qL4sl70GoRUzEdvGAWg3m3BzTzOi1twaG7TG6kuQ ZZn3HpOlCB6LznyPCTF1LFgTwQZDCyvwMMeyRPA+sgCsEmRcOlhL/zAM7G8IVZIA4hP7OixQmRQ xI6Dr X-Gm-Gg: ASbGncu0VoHP9nQKeTr67EACApDqOm6Dxuni1rBDAvjXa5kDWYh7KYMji4haGTLbUEX OnSwDpXpnsh1BYtrl6rg2KMWLMHswclcT4iT/PGtRn3RjKNYi89q+ddsRHMDpDDOW8+HyEPHblV t94G3Qk6ZgzXs/ZqThrFcJQyY76KHbPJryvKhJN/mUer2T3JeLE3NJe7eXrTJ5rMC2Zb2yKqy+g og8Z5UHGaC2pCqfq2MeZEl21xHAhm8wAUpGt4rsONJNGbao0/vq5VHxLlOOD7xQzKs4ZWWkosed STWqxANWhT5veI8r+mCm4oP9nKuGA7WxyEHevnCAZS8F+6PdlYstvJ4eXc2W4Q6MtBILs+emVLY HfKtp18ryEonh9c94emXcstUuWbmlVzPLX+ZIIwSaGhER7vSeXYo= X-Google-Smtp-Source: AGHT+IHMkky0I7bOpC2nX0Rs/y8QXjFks8RU3h5pBwpF0o54rD1Wp8+yq3rHlSP1LBHOl+tLMHJi4Q== X-Received: by 2002:a05:600c:8b38:b0:45c:4470:271c with SMTP id 5b1f17b1804b1-46fa9af3682mr84905625e9.18.1760101582321; Fri, 10 Oct 2025 06:06:22 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 46/76] target/arm: Implement GCSSTR, GCSSTTR Date: Fri, 10 Oct 2025 14:04:57 +0100 Message-ID: <20251010130527.3921602-47-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_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: 1760102655944158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-47-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 3 +++ target/arm/tcg/translate-a64.c | 42 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 8283a9c83d9..2ae73f443a6 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 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index c037119cdf9..b72aa968cd2 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; --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760101804; cv=none; d=zohomail.com; s=zohoarc; b=Al3xmoMtRj1WiGHV+h/9JqKcstp8NgMp3Ipe3LoM5xt3Y1YUqXkfo2deniH4gQt3njRvTtNeCPTSvfl0xF5R3E5PhEOI1Ytjpc7qBetttbdjjmxKXDTORtd6tmY+OUV2NqqaemAbjko0VVxdMlEAr2KrcdgmQr1ZbBkyL1/NUZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101804; h=Content-Transfer-Encoding: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:Cc; bh=R86oz+iNvRN69XS6d62TZCluTT9+zfgjPz1VdRvohSk=; b=YcBFH5InsP91m5xRiRQmuV1pNd8+N7jSaiIZS1TunE6yaH2Xwqp+xEHgds9FdozP5Tv6GB5PJe49vNqj20UrjI+S+5CWgGSaWdyA2eG0GtkYVGu75D3I2ct24M333bkYarQKSY7RRLYFam/rA1vSAaU4fgaVlavfMH4f9gCrdvY= 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 176010180442130.330687707844618; Fri, 10 Oct 2025 06:10:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqI-0007BZ-KH; Fri, 10 Oct 2025 09:07:31 -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 1v7Cq7-0006vj-9a for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:21 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7CpK-0003yN-Jo for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:18 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3ee64bc6b90so1281472f8f.0 for ; Fri, 10 Oct 2025 06:06:27 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101583; x=1760706383; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=R86oz+iNvRN69XS6d62TZCluTT9+zfgjPz1VdRvohSk=; b=Wydmscj/v1eC/DnFGMG3UzDtmJ1bxpFOssCA4D70R69sgWZyaVUsUUFS/VEl6Vw3AI KXqyhiHWWLruaDY3EHrHki+2aC3t0BqBBY80asvaH3/8sEdsfA6Ue09xvMUNw+2rSAyp DJTuiMQyxuj0DyvX37yOZfh+QQPQaMC9jgN8z5Pms38h0TKFQqrHc8mpUNCvIzarcbSo h7f9JR0O9nbN/NLurnPq2LdkAH1YiXS8TjMlla6vf/sP0/6/zK2ED5r0fqdzSF++YJNi w3HFG5PeREf6eXq/N8B99lOfYa50VrYgZtfyIj0wGyl7Ayfw4LVVZCO5TZ/9fGdpqxoH ab+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101583; x=1760706383; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R86oz+iNvRN69XS6d62TZCluTT9+zfgjPz1VdRvohSk=; b=mga3xwPXjN5Bn0Zv/8Wq7R0s7Hz2BoEuf1ILj3HHDIxGv+dnkQr2WjZuB4rpVhthiv zW8/pl/vgJV53mtMb8rbrOb6u3K+otzyelecz/qFjfy0Np/YZacQfWIgX8Vu38MkvzZl 2qhyhDCDpR5WqezpXDdrVJEXDRByfgBvQCuQXEIIiulY2+CF2VT9IzPsReoTiVsMD4j5 g8SS+OLcyhxvrxHowYHxFlOBKE69+VPAQBf5cSXk2K/pN+U85gqnLSjOEXbr0PLWw3jV WJiey9v3kZna8t17+IBBtWntPY0LXOMo8vx9Y06KCjWMvayMAqFjKEasA+ReOfMeh7Vp 6seg== X-Gm-Message-State: AOJu0YzXLiQqvNSx+bnsGHH05VTGwtRrEYnjS81kxogH8Vw/QbvqtgU0 hzSEQr/M7ki1TFzOWa18h89X9I6eEs3vOP419lVwakl5io4ryvfipEvul3H2GItQoouqGjLF5Jx Uvb1L X-Gm-Gg: ASbGncu5K1/nkFtNcERknHQH5Vf6C+z++2QL15iSdnihma4Masp1109rwiVPTAN7NIo K0sRb1xS2noT3u+Z6styyFY7fuSngnnW3Qd+94Uz2QlDR+IfJsMnQd8A1ZnIXSzk8FNKQU4SuQ9 ExRymXzAESjIVEqtBSBFbGX0+PJhJ/uarO+dm1SjwfJSevtFscoN8iz1NHYU2AMOj5KEr/c03bT pOa2uJTHobKCEHcekHTtmKv8q3CK3H0q2NODQOMi6Qa19xk2qfeMV+978CeX99R1I+aQvUbYcbv VFRWKaEIz924yWONa85re8tei/HlJs6BC4UAdZ/5B+2J0das7vnrBJYSj89lKUXOzTcQHb2GVPX fOmespeVxPm+yGNSIfTg5oZhzzpQGjAm2L3kUnUAZz2NCY7vsVBLiyy1B5U8FPA== X-Google-Smtp-Source: AGHT+IE2tZtyvtRVqfiLapzkubyjsorwLXmW3ocHNBIYf3E6Rw7PB69l2jENlDayOyYd5ajbahZ2nw== X-Received: by 2002:a5d:5f83:0:b0:425:8125:78fd with SMTP id ffacd0b85a97d-4266e8d8b1dmr8035770f8f.48.1760101583306; Fri, 10 Oct 2025 06:06:23 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 47/76] target/arm: Implement GCSB Date: Fri, 10 Oct 2025 14:04:58 +0100 Message-ID: <20251010130527.3921602-48-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101806244154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-48-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 1 + target/arm/tcg/translate-a64.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 2ae73f443a6..01b1b3e38be 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 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b72aa968cd2..38a1f51ed5e 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) { --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760101770; cv=none; d=zohomail.com; s=zohoarc; b=X+vsngpQEnNQAxmvkBMGuzENOnm41txwkDS5nEz734I+xQPVFlA5m9wWix1BX8FwCi1lGvpyr4j6XH9Yn11L8+91HgowxhcM5FtwgU0F8qJgzcgqy7N02GgvYR53XD5kcHd4FOahOyak56k8izYelt7BzaMm+1r+VJsatyRzyQo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101770; h=Content-Transfer-Encoding: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:Cc; bh=DIQMuibNNz2umv8aVbc23A1gLvp13ZKOlMOT1YNAnOM=; b=TQ6+/zvmIEA1hlrQGA4gGdQaERwf1UiBIYn/Ul+Efrr+XQiV2ev1Y/ZrrZeMXo3sWUoK2e429f7UaHhWAsFUCeWRowaTXCvDVnWGi1/PSSITpJiTt/xmdUHoGz07fTfcuOYJJB3SzIdga8V/4MlVzETSglQ4MOl62LonBHcfCRg= 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 1760101770981305.1535616331005; Fri, 10 Oct 2025 06:09:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqJ-0007E4-U6; Fri, 10 Oct 2025 09:07:31 -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 1v7CqB-000729-QE for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:25 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7CpN-0003yR-2f for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:23 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-42420c7de22so960447f8f.1 for ; Fri, 10 Oct 2025 06:06:27 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101584; x=1760706384; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DIQMuibNNz2umv8aVbc23A1gLvp13ZKOlMOT1YNAnOM=; b=FCAP6xfLwW5noTwWb1qJC1u85N3FtxPytUz6Kii3KEZk0f5OrnM1wD7JUlTCjZFdqx arybvnPoZMLq/Kpo+5LRfXIrS63FFbL5MSU6q1EWhIe7lfGtM5GmLS+2Qx5ImmvHTVmH S93PN6GMqWlvQCzwSQQsBhofctiatUzHCVCOUEVMYfbSuMhPlYTXRRFRNImQi43YWSnr FD/duiITplH6eZDOuryv6quKtsS01AS/5GwlOZOUG3r3xoivmpezgZKKAHWgnKPQn3ZK R81fLL3InZ7NjQXG2v/eOH92s+SgmeUqSvpIk3nHLjZAX+wlDHQppU/ZtmAMHhG7HRuY oydg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101584; x=1760706384; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DIQMuibNNz2umv8aVbc23A1gLvp13ZKOlMOT1YNAnOM=; b=b2LGHt47JLUa7hNheIzAhMFMhX5JF7TkMGDyWQ9h0kkXaNfJCOzBVZQd7IQmB+y/oE UvOEOmngV8K5OKcfvQ4SGPvoVTnKayfmATRW3omg8JMWPog0EsqRag/F+7fmLRM+T3PW d/q/aU/qZreo/fGEmzyZ44bwWZs9EcqfanTUkeNgrEo0mFfyJl3lG2UrOdYwzGhiWPSN C4H31tl/VcHhBhhIbb57KZneNgR02YpR2f0p8VwmdrEefGg/y04xRXeW2okbf3uqxqFR Wkj2mkmMhcRSSXPrW3LyZ9aMq+pRAgl0/vIJV17ubQP5S6xQiPblqxI5T1W4W05RH5CO Unbw== X-Gm-Message-State: AOJu0YxG2bDLdC9+5gVULwwutugx9TvqtwsvquVTe57l7ORBkR0A8Ylz 0aylgRV0AhG9G4G/0Ec0Huajs9czHhTn4uWuUWNBjg43upQQ+F3YbGWn5Cu2T619LVVmsINbu56 WQ67F X-Gm-Gg: ASbGnctEfowFpw0+NEatS1fo9PM53ZURZh+Z3uiPeggH12eRifevtUp4jDwQp8fgEuH 8kH3aqyN1Z+5A6vUSW5S+ZiV4n+nkPzEjwy0RprIMXujFCAZhllUkYlVop/AJCcsRzzvqrMyxi4 SCy6srBYwOfkF/Kh6eQVpoGux4bwSnJ+eFYODEoLu58Ib9EuwQ0Cy5WSjtg3qu9bR3JCWh6D4S6 LMV/P/pXbhRUR96TOrXnCCcU9lpgdpBJoaNTL506qucBwiHSCfhEWFwP+jflxB74W8qR+RkHSCP IKuqrFMC17D4o7KrhhMt9shCwDl9XkrDLA2pTv5oIZxX3oQL7hC5H4earXmOLoJuGwImXBx5kip E5tb3ew+LJvNFWkoaZUrCfVoZTOCiQ7Xh3f3+JiE1ZpbA55DQHKBBsdWvVPu9tg== X-Google-Smtp-Source: AGHT+IHqf06bEvvGVQBVg5wVFndAb8XBdlyHJMHioeq1NgQ+wUCAVQ9I3s9HD/ip4gwDeuIxZk+6gQ== X-Received: by 2002:a05:6000:2301:b0:425:72cd:8364 with SMTP id ffacd0b85a97d-4266e8e1afamr7831486f8f.53.1760101584290; Fri, 10 Oct 2025 06:06:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 48/76] target/arm: Implement GCSPUSHM Date: Fri, 10 Oct 2025 14:04:59 +0100 Message-ID: <20251010130527.3921602-49-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760101771953154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-49-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 a79f00351c8..d22ae383cdb 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 1ff041811d2..cc5a0b86e4b 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 38a1f51ed5e..625563d95be 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 19:45:21 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=1760102641; cv=none; d=zohomail.com; s=zohoarc; b=i6/BO8e8jrBdiYIXlq5luDi2v7Dx7JXMSDhLYBfxgrE5BJW6N6LVm8TNtg1LqaFmoep5JQUXJtnJDi6XXDXWmRhPgNADonopl1Dh1RJXfOGTE1dgJbDrTyWH/cpUHncNqtPUL9d2nUf+ro3yDRgY9T1kWTUezIfi26lCn49ksvs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102641; h=Content-Transfer-Encoding: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:Cc; bh=jfCqvYmDBzQS0MlZ3vkHzNfRKleHbLlTPbhSwKkY4vc=; b=GJw5m6iRMjw29FcRlB47xHvCYYVGllG1zXzZlj3CjhXEMeHUwgd31+vMBJLFOOT0BjYJ1w/Nauo/5huTqIZg0+jWeucnJzNxNd5Zi79qz+kf+8rConny1aVeLatsIRc7flOaVKYpDCliN3zDdhwY+LvYGjl8teJCnqGiY8rbZC4= 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 1760102641449850.7828956594155; Fri, 10 Oct 2025 06:24:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqM-0007GV-KG; Fri, 10 Oct 2025 09:07: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 1v7CqH-0007BO-52 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:30 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpK-0003ym-Sa for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:28 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46faa5b0372so13086705e9.1 for ; Fri, 10 Oct 2025 06:06:27 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101585; x=1760706385; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=jfCqvYmDBzQS0MlZ3vkHzNfRKleHbLlTPbhSwKkY4vc=; b=RSIz5z9oZnkE74FEYRNPjkTFQJAavi7znDOQ/qyHHpNFUyuQOElh9e0/OgoWyFd/T7 CZTE555haz/fjl0iUCgbQg/WIxopCQJ+dhKZFhFy0cKfRci+K32C9TIsAnw+yWiSemxM jRoeTk82jKlsiG19qM3rdLDdD7dBDrr1J1atLjDtPGgo/uy7nenuW5RDqIEYAbHc112E PwnQ3w80hzOJnlksMIR6ePTIl6Ib1MOSmTNcDuakD6+Naxm3o54F36sv+cs/idiDhNii zmDIGw5dNOpJEDizSGkn2kO8iEa7y5TtBUsoeI+Tg9FJb6siKT6Qdm2gVBBJjNcStCNW ZmoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101585; x=1760706385; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jfCqvYmDBzQS0MlZ3vkHzNfRKleHbLlTPbhSwKkY4vc=; b=OrUCj2AEFmLSOMGj42LEWQf76cnmXiF9/lmzUXfpClqf3Wiqv0RURRl9rpYQLr8/Bf bZhnMVwhY/iDtrJF7pdUGTjj17uoEiB7pzIlu1BH+fLyYDqzb9Ua1GqhKYLQUGAmkEnk oDbdw2H0WpeaHtDcbNjE7Rg8pWB/dFbtW1PK2pqbNdV9/MZZUZOSWpVmVCm+lNCVkg3n 0WSwrVRvSASFKIFIEB2CJkIkHiJ0xQpHuL0KcwVgIoIpw4axp0p5DC/EBP3WAw2nltoD i4ObJ9t0FLc3ZSe/JBDASsAkQcd60UrtmWUMesZazVk/ROSpPK7TDH5mOaO2RVeqGeCB sxsg== X-Gm-Message-State: AOJu0YzYmdRGSoM9ay/drNZPoUWvL3dKhi1zqab2DEcm8Bv8IxicBHCC RHDOTRf0t4SmnsG5EaobIMM0l70TIwWs350oW0eRACAiF5pfpo0ELrxzQlskfM47SdRmLhhb6OU W04Z6 X-Gm-Gg: ASbGncuhPw+FE/NkMwCtEZDwE2JbQg6TCaDvEn1rX0DN8BHvQk0mLXBesSLETcan6Qq wJKMARtwHbY4qu+j4g2QXOr/CtYyE6VqgwBy9DFi9jV5RRMHZY+QaeLDJjlJnscPowacfnDsTU9 mv/Eud2ApDsR5yO6yZmSueF3fzMwfBV3ohK1vg1SaBEzXRc1pc7eh03E4De6sOprk9QnocUeIlq TQvLixrJoFOOyJ7BymH9AalEFUZtc46D/tHDCL2ttjmuaK7XnVR2YdbF6PDV1c62a+vDlRVV3mg NDg/yxUZ+rcC+/+3V1tB7KEuQwm8zm3Gxp2TF4+6GVjK7nSE2QSXU1Nk8gUO43uLQzNlUk85cZX vQ29AmuYX3zOOwCoBflwlAP+dizC7JGtkGSntQdhchkLyEzJWL7g= X-Google-Smtp-Source: AGHT+IENQ0f3MGXkNbbuQ3Ca4FEbwmSue+yCdijK79/53OITGK2WqgPpDqsqzOmwN2Z8sMnD/aG/RA== X-Received: by 2002:a05:600c:820a:b0:46c:e3df:529e with SMTP id 5b1f17b1804b1-46fa9af9019mr85310675e9.19.1760101585245; Fri, 10 Oct 2025 06:06:25 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 49/76] target/arm: Implement GCSPOPM Date: Fri, 10 Oct 2025 14:05:00 +0100 Message-ID: <20251010130527.3921602-50-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: 1760102642963154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-50-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 d22ae383cdb..81d8f0e32b1 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 cc5a0b86e4b..15d383b2a41 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 625563d95be..7783273cc1d 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 19:45:21 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=1760102611; cv=none; d=zohomail.com; s=zohoarc; b=BpgJJHFWJAcQBBXfyYcL5KCMm7LKaZqrRUArYfhz6hl+enTOUrDFDOV6YiaKObODpqEo2ZT/J/4xMjg0BJQIaIDDGMxw3JksEjF0oGsp18AhcI5lv0NvvwUitJvOkva8QlCL46VqOrrXsmlnHj9XijAsC6dy0/6WaZk4FYWX+Lc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102611; h=Content-Transfer-Encoding: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:Cc; bh=AViFRxi1UR+n7HL/tuBoIgMWoi1XCZA3uxO+rhCMuxA=; b=ZvD1nJM7J+G1ki1wmyoYqLP2CqrvKUefMoFPz6ui1V1I8aYOG3FyrBq9HjNAAECzFiF1vP8i9Z+92POVIt4dxHPpwf5CO+vMZKHAaKotfbMCwvUvGWSKXTib0ZszPAggOxzj+4nwP+3jqtHToCZJ7GxEvQpgJi0n6EJ2kt9MLqQ= 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 1760102611334723.5782687225463; Fri, 10 Oct 2025 06:23:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqO-0007Hb-Ti; Fri, 10 Oct 2025 09:07: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 1v7CqE-00073N-2X for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:26 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpN-0003yz-29 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:25 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-45b4d89217aso11887055e9.2 for ; Fri, 10 Oct 2025 06:06:29 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101586; x=1760706386; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=AViFRxi1UR+n7HL/tuBoIgMWoi1XCZA3uxO+rhCMuxA=; b=prT1nzujF8FSUb1WmWOSoCkr2q/BYGOylNtNmJr2vNHbH4oumzyJfsZLNOsG4F4bRB sqxwtfLGzf3+bPz+zcIx3geyZxsY4B+lQAC6LB59I2CDrWnj8783ksRmpycRAwMV/sVV lw4/UfFfarAI+DLw1R9h6lAGBlixAjLgRPZSvTmmr1623QI2mwllg+d5kNpZgHRU6mqw u32sjOOiVhiirxk6fH2NJwHNB4LJGoX2C6Cy9sWD/dB5razopNdf5sygWQNPM7mjIHy1 hB+AYGr3Nk+7tYbwa+eWv+CYlx7VfBS/n0wY/h9XBRi9r23udcd3D9b6cGJb3ML2LPNv UxBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101586; x=1760706386; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AViFRxi1UR+n7HL/tuBoIgMWoi1XCZA3uxO+rhCMuxA=; b=xAdF54+t3jJ7nJpAUloYjDKbUk/PSs6tGDQW52rwgByAba6RlZA1blg35I1P7Hj874 TL22CAgLHx3zoHGJ5+5thX//2OxNaXE1piSIEU2COlt29Kr5zztv+ewZOFfqJ7Cd1POx TVG/a6k5TG3IitoyS+GdKbelK/h+xSiXVQ5xmJjre5sBLXFnIuXu2PQPnU0lf/0TKLLo OTLfAK5A7in2HbvhgQ+22isyynQtIEW0G29hUU7ILvgyQYq4+P1Tie/6Hy2o5g7GjPhv HkxI1Ay/uLrPtKars1MH2JtStlGnjH2k8FwIes+MT6ccNAd6hwl9fgMom2RWLt+1uUfr NDrw== X-Gm-Message-State: AOJu0Yz2XPPeVpaNrHnm1Z+xfCUt6zgl7vw1JQYz4pSGjEwM1KuF31tQ mZJN5OO7jC57siTqnKNEpbjD/n3CVXZgsSOqqBai5UZk/CM2zKMzrbBqst/nNEhOfS3vWppuqvD Z29cv X-Gm-Gg: ASbGncvAMZz8+6c0oUwGwQar7RI+6/Uq2LM6rjhneHZ8JZsUSJLbq1jt9tn7oZuaFw2 wj+Zu8NMEzBEy/w8OXnDR4hl5o/fGyVl0RFVUvF9HXbov1FLrVsMZWXIBXZO2GJan5yC3kYtMDz Rm+Cx60NhxXR6wAtK1Bi7LmgUmme8xoUkTHmDEbcUBvIm/h0Wm8cHKv23smpXTOqSMZJmLf79DE udF+l1gTn/XKYYelrp/dcTRPcbRNbUMh5Zf1FOnz1ukd8Rv560YrWBHTyQjJPMa7lR4w3ynYL6U sVp7XAtUVkcI+bHwXEHgyz4sN+uGj30tgV/mhITxtvJdD4jY5KBIzKYn8TjHf/XPdcDKzGuqycD v6dtwfDNcMyp8Hn5LtF99sCTUr06LOuRIeHfYhuCWlxfohzh99O42aDrmVPtERQ== X-Google-Smtp-Source: AGHT+IFB8+oPxhywWbh6wl8XpF3RMU9rqXGFd2H4xK4EXOwxS6nbiwoiyzq+nW6GGfYqTdEVbFSmSA== X-Received: by 2002:a05:600c:1389:b0:46e:4be1:a423 with SMTP id 5b1f17b1804b1-46fa9a8f9d8mr75401295e9.1.1760101586236; Fri, 10 Oct 2025 06:06:26 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 50/76] target/arm: Implement GCSPUSHX Date: Fri, 10 Oct 2025 14:05:01 +0100 Message-ID: <20251010130527.3921602-51-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102615212158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-51-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 81d8f0e32b1..909916b7fd7 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 15d383b2a41..e6c7025d02a 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 7783273cc1d..0df1916d28a 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 19:45:21 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=1760102258; cv=none; d=zohomail.com; s=zohoarc; b=nxceW4lnJX/puyguFCQRKEttf4YY/+POZcTLbse0L/Epq+N7aa0QfaboOQR25twRpuiOvP2FtO6YcEf+yb3LG4O/Dn9RA26idt+IjL8L+oY/ChgMUDxTDRve7o3SKu2nK0MmhW8iAO4PTYZtCV6GSATNP8C/Claf2ahKM3WXiMI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102258; h=Content-Transfer-Encoding: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:Cc; bh=lr17S6XUbTHxBwNSfaoJpVMYZRclxo3pq1TReeAr7Dw=; b=oCTdUgzT+4JQS4IhXSekop3tdS/a3+nfKWhqIEh8g2Zpj/IYLOiPpE8khmUmoRCIk5W7UuYh4Wy60eSR7NvLPdny9jPvDni1lpc/U3cIny5wK0Trj/BYVqeB4bDCZJALwbFqIvzo2Qh6oWHkjSlZwpk1iMQLcBLh5Fej3/YaaJ8= 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 1760102258717749.6817347902285; Fri, 10 Oct 2025 06:17:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqS-0007KU-0w; Fri, 10 Oct 2025 09:07: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 1v7CqL-0007GQ-Ep for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:34 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpN-0003z9-2A for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:33 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ece1102998so1237833f8f.2 for ; Fri, 10 Oct 2025 06:06:29 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101587; x=1760706387; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lr17S6XUbTHxBwNSfaoJpVMYZRclxo3pq1TReeAr7Dw=; b=mbymxy6N6Kncgcg2vnJLJtcA9cm0oqHclx6IZc+jfiRZ3ClDjdsemlmQOQCmBw2OHM Ajnu67pknNs7lBp7L+ygxrQGp6WVutL4Bv80C/Zg3nJKosPPIYm6pgf2quNUM2HCrO9K D2OdiY06d2v0M7HeQIIZQVex60W7CBlLLOXXJm/1jR3toVzA5pTOZBGUJOamnjKEFJd8 0/Ai6ZLk559g4KnOpEpxRzp0ZS3TcngP8HAgom59ZM3Q5M3sVgh1mXFcC5O/kbN/szUt UHKsBLTlv9xDX4glhuGLF8hrDrs2VSWUaOSjo43cZnYNXG+gdhLWDLlnBm2RDDI+Pw8N eSWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101587; x=1760706387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lr17S6XUbTHxBwNSfaoJpVMYZRclxo3pq1TReeAr7Dw=; b=gXAa+y+R5+wXpCYccehKfbCzFNBZsZYlioylCDMss/Lzde19BuxvyWZw3a4Pf/verk zIwoun4a0b+7mhIXP0MOBbiDLRjbdpLk/P/ZAUOL1mU460Qnq4z2M46eQv4j9xvid1KK bvPyfquxmh4yM6wbtgpxH/cJdUNlfXZ2VhMVSJdfvg8g6O9xmTYX7tNZhpo3rTK0S3o3 xxa2u3kzWjIVlwDIw8FuOY0VFzGKCri/Co+AlQR9K/U3lwBECDXtsPRyYHPQch77CsxN aE7ezSJ3+ymzp7NIOymFmfwo9pBgKFwNqkCfVAFbJu9IAFrvQG1iJeFuk0jflbq3dotQ BP4g== X-Gm-Message-State: AOJu0YxbXg0D+vOEoHq4g4FLYm2GspefhPhK1ximPGwAJRDn6xsZvHW5 12FqMQuD1wVr9cuoDAQtNozVqQH1/IG0B6zkfE0ntXWPEQW+fVpYB3suujYht4VtXLRTgQOYi/U C6zeH X-Gm-Gg: ASbGncupd4be6V3YSza7jA2uAH6oGGUbx8rwiSOp+jy4fMnCEIiARtkOoJpZzw022r/ uBuVp9dT5uB7U6WQm5P7y0yXOfhW9V5sVz5vkIe8WD4rdJ8EzS04MBwcVNKZI9wnXbyskiAj5zs 2oK3ogS3FRdYIp/d5DZ+/gCd+NMH7xBLrT5vhxYyLmth83XTVMRSLXgP1VmrrFZH8kXu2FZjrSE 7Ui1HkXzS49/iA7fbQ8td655GKZeW6qvyHlLPkLJejMIafmvlJL7JQMixINzaerSJ8bMRks2/5s +goYF4ppLgnIoB7QvG2OpPg7KDWjLXmXQxTSH1T7NUJkCy2IJ7u3qFy9C6A+LMPbSho5cXEelw0 hmuNDt/6C1TzFVaCFPicNipJmvmlBRacfNL0m4/fPVDgWbldGEcM= X-Google-Smtp-Source: AGHT+IFEvuYrEykNXhN9ZQkbnwPKVPLL8YA4Cxfx+dxbftSRIBoL8YasVZF7RIPDJOwA1PIyMW9efA== X-Received: by 2002:a05:6000:430b:b0:3ed:e1d8:bd72 with SMTP id ffacd0b85a97d-42666da6dc9mr7326847f8f.17.1760101587521; Fri, 10 Oct 2025 06:06:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 51/76] target/arm: Implement GCSPOPX Date: Fri, 10 Oct 2025 14:05:02 +0100 Message-ID: <20251010130527.3921602-52-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 1760102260129154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-52-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 909916b7fd7..ccf45fd136d 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 e6c7025d02a..5b5b895a091 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 0df1916d28a..72b912a6050 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 19:45:21 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=1760102127; cv=none; d=zohomail.com; s=zohoarc; b=VGQVHTXK6wmpzvnawfOgkQ/2fZuH7JK7e6C8xiR+VfcmbDIF+MMAnBnJajhKjFoPSU6jp2zN5jdawF3+05N+TlZnNdUmjz/l9dmA3ZTLj8aOH95drqfyCc5j6Ehx8F7eYYfAiKNEhb4cYnigic4pVsk60rp7VmVqHOZRO+sFrn8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102127; h=Content-Transfer-Encoding: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:Cc; bh=LBqKe4T5VSYNNeh6kgz5dxwTbw6vjxkjGh8m4B7JMPw=; b=Tk19daaqmjiSE1HdMvIkGd8sBuTAJCTiS+wySZvvrxoHzVEgC1XKJzk9/VDW5NApFhHjQg9WPh6OuVdrHzJcXwWIOLjurfR6vOYsS30/9377+VArE8cQqM+ZbnaYqImOsYeLXPkCwiIE7KmDmnysWvmBpHiLMD8YM/Tr+G0r/fI= 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 1760102127203138.53028296499338; Fri, 10 Oct 2025 06:15:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqQ-0007KO-Nr; Fri, 10 Oct 2025 09:07: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 1v7CqO-0007I1-Fd for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:36 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450: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 1v7CpQ-0003zY-OH for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:35 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-3c68ac7e18aso1426003f8f.2 for ; Fri, 10 Oct 2025 06:06:31 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101588; x=1760706388; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LBqKe4T5VSYNNeh6kgz5dxwTbw6vjxkjGh8m4B7JMPw=; b=VqEIO6AR/xSJVVSxr4mLzHkEkKrPU9hHkTNfNvpCmd8H5pv6Q2bksF7veyxhmC4G6t mhUOsJzgJmBDGGhtUOupWaxtw4EsT6Dt9D98YAsRGfipXNSPSVln0RitsB+TZmxnzdbW 0pVBC4c0L3z7U3gPzpoLjR3ZhY0iiheTn8v0fSvWK8+lOw4flGD9PE07O5xHAEDMQqZY Fz/Ah41aSmRdOSKCOBzMCa2rRiklli5piY/eOL11SzS1ERZ2ZcTuNr5BqsK1d96FJvnQ yCCV+n6z2xlS1+mPFOqlxHXQl/KCcnE9dNO7hZZKhKHDWBAR5BLacnIu1ALR39Lecl67 HLhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101588; x=1760706388; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LBqKe4T5VSYNNeh6kgz5dxwTbw6vjxkjGh8m4B7JMPw=; b=Z5qMIrH1krNoANsZ/oTe45zV+84hrFafcLt2Z6jb5MH2caxyO+/nLnFGgrifhf5rVG Fu0/SjWgNbrB3gp8AITJZk8vRcAW/RvWJCoEY0ot4wlsxhFND5/EvqT7n3+V57DmrOSF OLeNtZSqPyhyP8x3DZ1LI0Zrux7h0p1sB0xDxSHTyFCpFubtZC4oeazSdsnYaXeYHJEO 2Dt6adsjwPbWBoeueKT/YFAl33ruStZlLjTcOLgamnomAqyT2caC+KBJmxo40PbHOG0G PWszrQUi0lz2j8gyjATQbxzaHNwrQN3L0nDB1pDGMxJsgRybiqx+ODmKNVwQf7dW0O6F /+yg== X-Gm-Message-State: AOJu0Yx3jqkWCkckiQ6QJlYHALT50BiABiycsKXbjEIg2jh9o/pGyLw5 8lXLqRqsWwsg5JY54fYOLlA3ic4C0S3Rt7sWzdJyr4XBUGhY4wTsLdJHGnvsdAFeSjWtBBlhrcD oDjKn X-Gm-Gg: ASbGncu3ALkfVVb8JqEUBo9g8R+l6R0afIrJOMlRAXtQ75Y7xnHVw64rPMe33cEVFKG Uslx7E9VVrg2ReCvgTrsVe/dIJBkuiBIaZ7Pct5+/puA5KXbKA8QMMgVO21z4lcgZqrHjDdGfaL 1zE4h+esCJoBgiFiToQ3PT58Ml2AQ5tDOEyCPYg+KDsR7YfqXo+s8OaAq5lest24hDFZo9PcUp9 xwxq5PsYWkrhXz2CkMxbZgN9Wr0RLPlVA3f1m54RFv9sFBqoYuShHS4sGR7Z8BjXsceT4Hv4rVI 7YH7sAlmxmIqFSdZuxnOBWrx4wFi7MzCLbs2L6oWxDqveB/3oEYiMDgIBHyx5U9owNkLMcZaGJi qZTTzULJBzjtAtDYcVJjt00OaJsIH3+Iqu/9ZecjOLzCsqPDjo2M= X-Google-Smtp-Source: AGHT+IFbHF29+0FrHJVEkbTGxi3cElbnMy0jQ0Xc5Avr7j5mRkeROTWcz16eSH7zeQWG7EX8SavAlQ== X-Received: by 2002:a5d:64c3:0:b0:3fa:2316:c21 with SMTP id ffacd0b85a97d-42669895abbmr7455336f8f.17.1760101588481; Fri, 10 Oct 2025 06:06:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 52/76] target/arm: Implement GCSPOPCX Date: Fri, 10 Oct 2025 14:05:03 +0100 Message-ID: <20251010130527.3921602-53-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102129295158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-53-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 ccf45fd136d..6d9145109fe 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 5b5b895a091..3795bf7f363 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 72b912a6050..bb8ffba5868 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 19:45:21 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=1760102826; cv=none; d=zohomail.com; s=zohoarc; b=VA23PzFrTRRV/ihQHq2X03Zt/v70PfE8NQp4Fm36W3iiSdwiboPSHd74D4bNRUVGMbXM9dnIcv5nO0xa8zGffv0FBiPTgSDOAQvz2tm7Fs0jTi8t7EGbjb+2qQDaeS8hk5elXEb4DCuksT7gqFCuNs+9TcEQGn17xAnihR0yhWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102826; h=Content-Transfer-Encoding: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:Cc; bh=4xCJOHcUdwbyJ66aphNgzIZdHSQb/CEteUrd1NlzKBg=; b=ZVyTQxlc7kCxHKA+fuaWeQr8FaTGqdQN1Uf5TCiYY8VuF8uTH0FBCNpnlPfbBwh6bQ5FAg4mQFkv8+89JABOOiCa7q20cGNM+t795F2B065eyEinQ9vGE7FFLJikOVahmioE5lfG40wfL/dsIZGsBSFnIFruwq3AFl7qP99n5Qw= 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 1760102826539580.6507950675089; Fri, 10 Oct 2025 06:27:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqK-0007FS-Lk; Fri, 10 Oct 2025 09:07: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 1v7CqI-0007E0-LO for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:30 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpQ-0003zn-8a for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:30 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3f0134ccc0cso1506354f8f.1 for ; Fri, 10 Oct 2025 06:06:34 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101589; x=1760706389; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4xCJOHcUdwbyJ66aphNgzIZdHSQb/CEteUrd1NlzKBg=; b=ZILkD56zJtqNPdoQ7hrz+PBTcSY6clj/KSD+wtJdbgwbmnjN+KVPAr5Nd9GbM27lmT eyN+mTslq2BQam8LfKNm1on8bMr46I7j0u5dosg3UEVnmVYqtgMIggj+FTzYrB3mVbWB zg7vDG0iVzpnlkJ3tfHz2j7X/wkPVjjrICJpAW7m5HrPmaxbKBT9hM5IkTmUhNLOq5gF aC/vVGsYeb8gAdzvRqv88WQxoX3z9JCsHuNZae7ulGTC6Jf4G7cvJvwxOdbnsCOetteb Dz5rI8NWMTqqLsxEa5hbs7V4eWkoygrm1FTD3mZnrQPuWn/DaZmK7z5kXiENDHk+k5mW aHvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101589; x=1760706389; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4xCJOHcUdwbyJ66aphNgzIZdHSQb/CEteUrd1NlzKBg=; b=qnv9DSrRxz0Wjm6wRk8FUsrhowQWfoi3UGIGxE6aw8CDebdv6f3uDNWoMuVHmkc/sJ 2WUHEe12HhHkQX1ieNHU9ROUTfAupT3hqEEERiCV01QdZd8GUy2OhGdSIOLt+9xzodaK 53eWgHhZY/guEbHWQ+Q0AtSxLP3byWYlMSkl0QyakaLqt0EYMpB9tssMF1Sm6bV+v0yG I/lnj7MsAvzLeRqKg1IMtbF/Fw1ZGaNWkbMwRyDa8dy/vX8ujCzSFMMOpl/D/aZoUYrZ yzruwDX5a+hFpsXool6jnvSRV+iEDbr/9Bxc8wG2h6zV4ObHOhf1OasBd6qbkKSpy34y +SGw== X-Gm-Message-State: AOJu0YxIZAv5+MmebuEOVpLl0iyYIGVLXhivqW1lt00fL3qdW7DSGB1T lka/fSzoLZ/sqvrGML36P3L1cglaJCQUF4YsNGxgZZjlMP0lq2fElBVUkCYprR3Z9+rR9rQwUF8 +MfL4 X-Gm-Gg: ASbGnctHSv0o6zT6LT6q9Ufc3xzzMhrkAyaUgSFHCnA8T/hKHQf3W2f4YvjgL13QgIf xhB5rgbusKEjvTdZ70sexSgm4HIzpLZkAyDCPkB2eq5Z3H/RAVRydpJu01oP/bIggZZmhUHzQYy IoY5qFGeFpiE8sK+lB3aXtJ4bCJ9e6EE9a+urQgYCYq16PTqNrRy+JQQevjDVeEGq9EuN81gTMl FlZu9HCE3vF4FwIiFs3p5t4P3l2wMSDY7tzAvtoQzNXDLEZ73nwg3J5IFJMLqvskCvi3BCdp0+G TeKvh/4BnVYJkLBCfkKeom8fEI8bVyNvYPC0hJWEnvgygsW8Ojk5BRhdr0R2nAAlXEx1G8DQJmD 6iP4ngKcLtYOLsWR/8VCJQaFPK+xk/3vkLZh1t+pIPOSx4BnZBgFpi6bG5lvwCw== X-Google-Smtp-Source: AGHT+IE22qerwgrpsGHx7CuPOqHkeZPzZV3zP7u/bYNC/iXpPLTKP9gGLNgx/QmZ32iXB4CWeIMXxQ== X-Received: by 2002:a05:6000:2504:b0:3eb:d906:e553 with SMTP id ffacd0b85a97d-4266e8e61dfmr7605993f8f.55.1760101589468; Fri, 10 Oct 2025 06:06:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 53/76] target/arm: Implement GCSSS1 Date: Fri, 10 Oct 2025 14:05:04 +0100 Message-ID: <20251010130527.3921602-54-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102832170158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-54-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 6d9145109fe..e7e7050880c 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 3795bf7f363..eda5c498d73 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 bb8ffba5868..82ddf4e1dc5 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 19:45:21 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=1760102548; cv=none; d=zohomail.com; s=zohoarc; b=fsavPGm2xe7YRVYaPaBjSanxJN625bL35Ixrx18ojoAF9QgDU7dHl1CMM8DBqSY2m4lfRI1nPK7nQoGqtGW8ViGKyrM/KAu6hPFEVTZGYpuzFPE2VkwpZjj8MxyY/jU49jhxI1hbgwWEhoHdnukFLq9hOGQd3q+kf2cURCN7BEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102548; h=Content-Transfer-Encoding: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:Cc; bh=v6b0g3Y7qkwKaQxbdCJVfhB74L8M3sIgfs6PKpxGSO4=; b=hMJi1XYEoUPqHSLO48+cSduw6oZSvN9CGCbKagzPmUucM5wALHsKLCN7RyXum9TyTqEB76ucV2nxD0IJPGMmT3p2qZ+MzFQMht2eMPfF01t3IF+FMH/qQb+FstpZn8lcDjd5C/l/hu/sJKVmnWrIsLTKNdq6nZU+TaK8WjV6qNs= 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 176010254804234.04332966235722; Fri, 10 Oct 2025 06:22:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqV-0007Q5-S3; Fri, 10 Oct 2025 09:07:43 -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 1v7CqP-0007Ja-Lc for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:37 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7CpR-000403-VB for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:37 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3f0308469a4so1246522f8f.0 for ; Fri, 10 Oct 2025 06:06:36 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101590; x=1760706390; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=v6b0g3Y7qkwKaQxbdCJVfhB74L8M3sIgfs6PKpxGSO4=; b=XotlK5Wfloi7ueHFEQ9/ZGs63qDJ10c/1ZwSyrTdIVzQMb4SvX5kYcF/qJZTI5yMMo QbY9Gf86sKe08Q3+J4SOcmTqO5QKW/TAJBg81k5/02y7y1nZ9y6SfYnzsIY/evAaPPEM ylh1F0hJReLbcKCoUzOXz4vvWQqV3AZlbnO5p1mD1N8m+T0hJGszOgZYcTDrePWHU7OS ChVWuvKVPMekByZHVsI563IWOwc8S9HvtXlnM6pUp3bsMSvsrlMN3cJxIgf/qn9lq+61 s9PsbVqj2oIDhXQ9SkXefzxIckAD4NblGulrgrvj4Ifqqrt6CA5510ykJKXIhL7JDcq7 5V4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101590; x=1760706390; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=v6b0g3Y7qkwKaQxbdCJVfhB74L8M3sIgfs6PKpxGSO4=; b=mdXrZ6l5YFWFo0QMOoFwRr2KPKX4IH11+uXCL/kU5355Y8NcWJpciuhvcFamIJKVmO PnrNjb54ahD6UmjxCasSJUnhNKeIkgcznxDR6UC+5YALNAq+4nUGbTGbj/ldWeWLmwHl fZA+2iEAAQgHaCwDSL8oUIkN0QUmIonr5vTUJ6k+Uvn8loeGz+FyekLaDYWl1nw4mO0y 1N6rHRHwyqE0GXYmW+ZOElgFNnjUDEeKsYfnnopxvsuKHiVoBqQEKSM6GOkZ7pJhQ31t fsA5ygiqLDXWMF+nTPkVFKyViddjN7/z0OhXfQqks47UQVNhiaXQ8WRlSmGhgQq9bY2v 3+6g== X-Gm-Message-State: AOJu0YzgPtbXYYjBdQp8tGwq2Zuq28H/GSdqiGrjAinqZrP5d4Brd437 f11PP3MjimeUwWNKtMCKV8RHcUt0m0TYYrBTh3jpsuShW8NC201eZtumXXyaq+6tB1CTFB6Xcy/ 0Ftwy X-Gm-Gg: ASbGnctIDxM/TbqGQgNCZYMP5O49rizGFumS0t5be4FKbqec8eiZJ9CMgaA85OfUAY7 lpVAn1mEoACXUuNQpaYMe0ybeO73W9QEt6Q2zNOFNCyjT/qqfOayZzQz0V4rLmtPKGrzOJ+cIEc /y1aLzm5Zy9uqkwwh7GSw/njwgmC8VCjvRdGwSQ2kdwchnzCUignM539ir47MExSoLy+LRZtKVR l9GlxaWa9JsUVDWpk20yQv0i/gilPiZQv5ddxr6V5Ozi16+p/ha2dT5gAvEYfQnJbaKozjFg8E7 MdWhrPVevQ2/WO6KZEYGqQqQaAm7GQTUZojm6nMnl5A++Ip/OZXr0ZA0GzWE/Rs65oZTLZw6l5Q 1LhqXfgA5vJhmM8WS4Hn5jR3u1tEzIZAR2iK7GlpvIX4GN+rn+g2cH1Nx68/B3g== X-Google-Smtp-Source: AGHT+IE/GKgiO+n+8qubgs6uZCuxRK3QYdZhklvololdWX2neV4WX85U9pvnZ/ihPwoGw0H0yYdPKA== X-Received: by 2002:a05:6000:4203:b0:3e4:957d:d00 with SMTP id ffacd0b85a97d-4266e8e68b0mr7877656f8f.58.1760101590467; Fri, 10 Oct 2025 06:06:30 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 54/76] target/arm: Implement GCSSS2 Date: Fri, 10 Oct 2025 14:05:05 +0100 Message-ID: <20251010130527.3921602-55-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102548397158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-55-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 e7e7050880c..732c07506d9 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 eda5c498d73..1ed52a211a6 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 82ddf4e1dc5..d58257be40e 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 19:45:21 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=1760102304; cv=none; d=zohomail.com; s=zohoarc; b=kwuJnSQgTILvjcXjG1HEDBNVQakrPZ6NUySaWSst5C61JQxV/2TfKEkG4EA7p39d/piqLD2Z3e+tBrPMIwblqKazB1nMp8sgMhFvS3cPHa6CmjuNgtl3oahUMzRvtpqUeuKry+Ss677C18ivzMjgkiqWqFVgjhsw3+BQL7bMf2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102304; h=Content-Transfer-Encoding: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:Cc; bh=s7GyyqrpcCED3owHKwsReg3NQOmlFtdP+Ki71kwEP7Q=; b=A+57GNtuS0bpgEpPdD5DOn1U73QSlCCDlPLicEYJZIB75Sif5spzt2q8mOouceE5Dt/t7E1kKjMoQ2lHpn6jbNGT2lTRg1j80qRQouRrZ2XuqB0L48BooqG8OFWbHu3L5+w6b1QQa1VVdrb/MIh/CJq3qaGLqlYiCKE713gdTR4= 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 1760102304048670.4152075697451; Fri, 10 Oct 2025 06:18:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqO-0007Hi-Bb; Fri, 10 Oct 2025 09:07: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 1v7CqH-0007CD-OG for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:29 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7CpO-000401-If for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:29 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3f1aff41e7eso1539985f8f.0 for ; Fri, 10 Oct 2025 06:06:33 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101591; x=1760706391; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=s7GyyqrpcCED3owHKwsReg3NQOmlFtdP+Ki71kwEP7Q=; b=TB5NvlVCEbQswnnUi14zPkiyThAM1YaSN5tFo8AHi/OUPXXcLIgeI5Bd+1O/gXxdaK 64sW/Mv+JH5FlebykXN7GKby6NqCsz+Z4ZniYBHbNXUbYd7essV22WxOpEkhOteMX7H3 4LlNkO4U2N5B14nBKFE3UqfBagMa69CA4U1TmzriHuPGuI9aCqAK5Z2J52YcLsOTWLj3 iF1y5UPNZYCjXx3n2KZkc4YIV2LaAW9ag4IE4Ep0xyJBD0iFy0qtMZ5ZfuXetbrtrKBm iB3QsEPZMQWxADx3MWz5sx8Fqab9/9qimMhCpqDSFPhplTY7KVsKlRb8xLd+JZQCylVK j9qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101591; x=1760706391; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s7GyyqrpcCED3owHKwsReg3NQOmlFtdP+Ki71kwEP7Q=; b=VjwmfeCknPhaMhdzcs9ETFqAoUeo8DDeNHKtw8gtKqUonXT5bV6LxwsCcn75fZ7tqa ffHAoTOu+8pNzKu/eKDl5bRsvK/+MC3XJgtQhExJxKQWFwjnfrf0EGjfggIE35/krL6k FIp0M/Pd4Tlvbichhz2LdGMN6c8lxiHxQWdOVEd5xZWHmGuwL98TuHphhS5nyyQm1Ber eULBAVPwIkUXtbUwedB0Hl5RWiv84z1F+mlvzB8ItEJg24iK6U7onW6zZ9UhwOJGLUrV ORIUCBuXKYJ0g1PLSoEn/WmlQAhmM7vvNJcwEaGp4oo9O7sTgwztxSBRwZP24uD53Dbz RZnw== X-Gm-Message-State: AOJu0YxCgmvaCyCJyfw6pcTZFsChk2mHnuMORyyqQBUru9ZINZwN5DkM aDR4oMAP1/eYc+vvztvwF+WUC7yo49ChSAYf343Y6wWuVeOE0FdaRpFGLklLIvQ74gXGD2yfbRw X/ARj X-Gm-Gg: ASbGncus/WWmiE7E0W3JpHljzz89F1f4UGZ2XXVCJiqIXgBA03c0FwVJfQLiBSS9BTr aEHX+AW44/U2ur4izcnBXovywCtKrrDKuEec2M1g5DMGyu5aH0qyq1iSHuDaxNteZd9tCKzf/5h adhPCRDT/Y76cNUBw+zfMQ84LQqTM55+NPouKxVbMtelP1w+dw6Qcg3dwIWls2375f30jOFAGSr tWOHjv2xm4tIzpUoSIt/2bExrsUY3LArJE1/Wh+e2Vc0HdjI185fnw2cVCLDdxiXSEo11D84I3V lX5ci2DyMltuX5/XhG5upgrz1E9+ZfsQAJ9E+cKIJXWdJdpvjC45JX3d3lGzJTfIJgZFuBPRvaL P3osauSE4z9ZthrAdztO5u4vW5w+eDSAA/wZE6SmFZagAx5RiF8I= X-Google-Smtp-Source: AGHT+IHB3+xJ+oj5pKiXSMhdlK4fcwYuhRPYyoR4Wm0IMdf2I1ZstwpPf8D8TuPy3ryITSZhmZ94Qw== X-Received: by 2002:a05:6000:1ac8:b0:425:72a0:a998 with SMTP id ffacd0b85a97d-42666ac3f18mr6741481f8f.6.1760101591394; Fri, 10 Oct 2025 06:06:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 55/76] target/arm: Add gcs record for BL Date: Fri, 10 Oct 2025 14:05:06 +0100 Message-ID: <20251010130527.3921602-56-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102305315158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-56-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 d58257be40e..9a564339fa4 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 19:45:21 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=1760102692; cv=none; d=zohomail.com; s=zohoarc; b=j/QBGSZPp08IWH/czkH+mRYRi2rlSUOkhJtQsGXXpypsczO1yT9IFh9xAT3ZQtF/m7j91/ectCA5KE+KUyV46y/ak+eyTU/JzXeP4LxFhkHWK68fJUfTZEWdmhebo+f1HBAn9D8xHNKexhMAr8QUyzEBRLsm7PGHx+jcX1uwv3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102692; h=Content-Transfer-Encoding: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:Cc; bh=PxKsrlwHpoapQQL65JppSCf2QZ2QbTS/NgH2OWxrhJY=; b=h5PCIugjbdxFvmEU+zSERJ7qb51aqZ0NYwbMybucBDUXAuuH4oci7D9NAmGCDZrpNyp16t4nknM0rXajHLzO4DnhoTxQAByYw7RYcxq7uKJgAkdhEL/13u2lEvzPn8qvx5U2urzfhdOwVpLf6xFoUw+iAL60T3wVfSjTiVxhs5k= 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 1760102692383139.54337208893423; Fri, 10 Oct 2025 06:24:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqT-0007O6-PQ; Fri, 10 Oct 2025 09:07: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 1v7CqO-0007IW-QM for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:36 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpR-00040I-Sb for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:36 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3ee12332f3dso668278f8f.2 for ; Fri, 10 Oct 2025 06:06:36 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101592; x=1760706392; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=PxKsrlwHpoapQQL65JppSCf2QZ2QbTS/NgH2OWxrhJY=; b=ygklRhwedYaldtR3MrGoUKwZGAu91GK/11ci2OtWOgXukTHtJM1yFfZnxGMjNB58Qo /GG0a/tBfAM+PihqTEPjsX6TP2lMtk294a7dpn6R70B0zEEWSfoADsykEylqQ0U/s8t4 aJZ1rZ/4izuqw1QEgUkE0kFGS2l2nEx4dFqRvyzHn6DyJM7x2qwz/i2cT/N5vPAQkoB1 MIjp/E1WqIG6Qkay0Dd8A9Z4b1jdRbFrbmL/EU2D1Wj/DI7ht0947OGyOpYpLPJByOUP ikBzNRLXpPfp2Ybdh7TJccTdXVEgF42PfIxACZNAAEhlieg/64Xbpgk77hLGAYlv28fl gqMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101592; x=1760706392; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PxKsrlwHpoapQQL65JppSCf2QZ2QbTS/NgH2OWxrhJY=; b=DsuYyb36KB57waOFmYi4r9hQSE8NxbfG7kpRryMpNdNXEt1WYCwqup1LndEhK4xXN1 DFKXflzGWQ+RT+I71YTUXj/EgqKwNY1Evqpn+cYnM+2EPzRWZmnx+XY7O5Tcuwz6LfU9 +nrWYxEayCXX9U+wEtaCKsLTXnGbz/EPlRdfvhH/0Q0CxmvDnlnqDNCErXenaQCfrUdf fMX+Fg2j4lrGHxRCi34kmi+OxgVpEJylfq4X1WPFm11IROk/5IfsjYJl7wpVpy6TCzly scHa2tJBJ1d8I6QsltVlu5+JomMAq1CEdlCma8hRVe+NGgwx4sjkYdqwr6DLkGsqlVSg owqg== X-Gm-Message-State: AOJu0YzFoN7lefjPWrQNNEtvYJNixYjSC8cZojOyLJarRr165U/XjiGM tr84jYZUzAXgstC+ARVutuxbOahlXeQr8XY/bf/CZU4VRBAtM0xcHDq5Xb+f0jEGG9e+4wc4q5c LsNZi X-Gm-Gg: ASbGnctJV+4JYRkzGBYhQPSGFaOeo5pU5DOdhtIFWyPvIE7JaYDmQ0c9Czj6b3MWQva R7dPBjjfA7ZYPyEPJhJJi/PrMFpezpqfA7av7Z2W9Rwd6F6E7UU/SfuJP/wTMSf8CFTzUcXNEwm Unj/IE/Wp3OmR9p7qHIcSlJUyahvK2VBt6QnXi8YVvzkqS3u93QMUkUVLGWxsBsgKVmK2yxZsEf AQ7yB60XhejC5OQ4StzQG9+MzBoAmXzJ00shzBykf4EDZeplhsSPbPMYV3HAbmd/5nVHH5Ti6jk w14tiGatB7sWOMQC4zXpNRCkM4YMuvkzYoVhX2kqeAqwVWuMNqo+lAYzmI97QUCcmvlRbzgOSaB Hw81FrTxriISaVlcX3jc2knv70xRhIul4lYdnk1uV6Y71NIz1ZvFBdR92CdUF3g== X-Google-Smtp-Source: AGHT+IHNoaIQKUY8kr/2eBWIZn+NrIfT6y507rxInDi6RBsogfgTdx1/kl7NqzFSHN986vs+d8FM4Q== X-Received: by 2002:a05:6000:22c5:b0:425:7c63:95c3 with SMTP id ffacd0b85a97d-4267260e166mr7516277f8f.48.1760101592490; Fri, 10 Oct 2025 06:06:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 56/76] target/arm: Add gcs record for BLR Date: Fri, 10 Oct 2025 14:05:07 +0100 Message-ID: <20251010130527.3921602-57-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102696387158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-57-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 9a564339fa4..fcfa4223f5c 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 19:45:21 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=1760102769; cv=none; d=zohomail.com; s=zohoarc; b=Mns26LK+7gVs4sYKB4ck7nLoqWgtJW8C7HArgeaSX1aeVoqKgVShbMXjJ/r+yPwcYEdJCO8lKCZ/Q7UBjIwxjQJDQVW39EmILW7UjQmnxx1noJwddMEtnMRIMgUyHiVETmY+kSXvm0TwAnbu2UAzYpaPrzhDgSHybqOs1+dDjsU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102769; h=Content-Transfer-Encoding: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:Cc; bh=LDlat83cBbQCFEDv1JneA5+7VZZAldZZfXJ7NWv4Wp4=; b=gW6DmptB4xXwYXZgmr/vpecMBWNEtXkjqBGE/djKuAkcGQytdsncfx5eMiHYYVZJbpyeUYzittz1clMKkk0Eu0t9pEjbBeYVFQhn1u1LGiXhddCi9U/vvWiFkv8OT7vmAmyQxVQH+f+UeSaIiaANWtOlHZypif47/gJ1CxiB0rk= 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 1760102769532747.13212897194; Fri, 10 Oct 2025 06:26:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cqa-0007WM-Rs; Fri, 10 Oct 2025 09:07: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 1v7CqT-0007NI-4H for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:41 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7CpU-00040f-9q for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:39 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3fa528f127fso1526853f8f.1 for ; Fri, 10 Oct 2025 06:06:36 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101593; x=1760706393; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LDlat83cBbQCFEDv1JneA5+7VZZAldZZfXJ7NWv4Wp4=; b=M9nfbAS6Rn2t/ZkGEIS418oOgNIFdFnZ0ez7z7rw8eRzlnKapJ47qr+zI+xMgnRyMb nNQx7941fha5XTuXIt1U5kwG2nQChrxTIe27mY/6j1XnaotHxcGEAmsscudzIqnxpaTT l5VKOJ02F+O5a4rPrN4KAY7z8tcjiD83dbm8OuE+q6x6vxC+zp0T7PWFp94ZBWCMjThN B9Mo/y7RUUlzQiZLMhalX5S+ptoAAHeV9YleT4oX9WRDnBlD4y6ehu4wHLDMMgPbRR/m BmE8Cmwti+URbEAQnz8bf+qVK6d/h4uLvG2HfgFjgsfQcGup40K7wC1jVkwsBcMhrYP2 Y6Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101593; x=1760706393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LDlat83cBbQCFEDv1JneA5+7VZZAldZZfXJ7NWv4Wp4=; b=b4IFF4vQPzbstj+duPeDxCvNMQvFc0z7q23mJ4va4TJQLfW+UegGwiNlwMz1O6lFMK UKOdcWVFeRzwVepXobkTyNqGZ2goIbOrZ9dS5WVb5k8fHeiz7fxzE20g53QOmz+oPHMG /MAmih6m+pOjV44/QS2ue1yzYef7cPr1TmiqBZ6T0LA73tYHPDERVBJr6coM34dYfQ4Z pCPaqNUVXuQibG6ZtR8iB+Ok3Rzk+4c98AG4kVEwsEs2tyT1iJk2vVuE6j4mCq+7TKO/ 1itHxr3GxTc/vXEBgFVnLw1nmfTILDwagpNAfex6ZKSpJrVU0wkd/OwJrhCupoqTVz/e CUZg== X-Gm-Message-State: AOJu0YzuWsfsrby+Ow121UdbWL52VMlCCGO0ZgRl6SOS9Cra3lpj9/Di s/Q0EcQYVykdx9Dg1YIMFoI5v7HKOeOhytmCkaLIuEcuCv5YsWg76VbO2u8fU6PCc69/DMcfNIV 0xSAr X-Gm-Gg: ASbGncuAOOZ8YMcbCVC5gyLqo6WI6Dt0YKqwBX/WmE2lmyQenIv6LAGu9pBrdpqSzPD DAbGy+yc0NsvefxU5YPglYc/QN2yfeDo2T9eNTBc+Lf/0lwsMaBe/q0pjtlVtQMf1tC/Br/XD+l o2jtoTrNcMzHHK7GX+XZPMa25WAupkWGSjJjgOqYkAAoYwQGREe7TDG31+hVYvbYbXAUBupFSe6 fd+SjVWz6HSW4gDWZR9SAMBL9NEHs3s+9yByakc3w3hHhDYBxNRHCgqI75RANYROGXePF8E50V1 wLWjgWZF6a67W5Kn7Gk0EIsc6tyF+lKTo17RIxR+CUGu+v2uLHo8+HhZFLMFcgyrSaUhgpzTtLF TARMSdmAWAo53+b+tC/BQak0rWE/8Nkt9QHN4p0U5+pLxzznKYPxfXWrNXtkOVA== X-Google-Smtp-Source: AGHT+IGorCukm1vBd1Hun7JWdIeF83Dldvg7fAt1Rox22ISzMzI+QoOKwRXBwmM40cN+uJrKZBgG9A== X-Received: by 2002:a05:6000:2483:b0:425:70cb:9ba8 with SMTP id ffacd0b85a97d-42666a9f3aemr7755094f8f.1.1760101593338; Fri, 10 Oct 2025 06:06:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 57/76] target/arm: Add gcs record for BLR with PAuth Date: Fri, 10 Oct 2025 14:05:08 +0100 Message-ID: <20251010130527.3921602-58-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102772542154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-58-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 fcfa4223f5c..9c3de0cf717 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 19:45:21 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=1760102307; cv=none; d=zohomail.com; s=zohoarc; b=Kg8gvK+sKCCEjSjIaPzLUS869ZA5WyM8Tr7sX24bF6zuBhLCaQl1w8E42knRpd4F2XWO8FRPluBoxhOy8N+pyK+P45TnpIF2/qg1wkM/VGZ4Sc7JHjzziKZeCFHL6YQvId21FtfMXWLlfEhFK8ASqA4n8rjjJvtQPX+6Bfe+I8U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102307; h=Content-Transfer-Encoding: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:Cc; bh=GcoYvQDFP8M035QlEV9JeRldEHEaoROzO6UVFvin6Ks=; b=LFer8mYLOVmUgigeEQSPtLril5YCCkJ6+LsGfEwDROMBedK9CuYKIr53PFN/hz8i7t6CHrKxJJBB5o9ZhkRa4/x+GN8yWEbaioatBnuCq+wzmJmP9qpmicJJ8KeK45s/3Jz0rO1fperIUrUQcM0oQNEHvgJlXc9SRblF3b3z7yc= 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 1760102307181686.6150406142427; Fri, 10 Oct 2025 06:18:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqZ-0007Tb-5C; Fri, 10 Oct 2025 09:07: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 1v7CqP-0007JX-Ja for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:38 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7CpS-00040g-UN for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:37 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3f1aff41e7eso1540018f8f.0 for ; Fri, 10 Oct 2025 06:06:36 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101594; x=1760706394; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GcoYvQDFP8M035QlEV9JeRldEHEaoROzO6UVFvin6Ks=; b=fCwgEyHsUH7zB4i6k0SztIglCgHB7Yj1yC14BmZso1czcBFB3O8eOzvh7y1OFz3GOV 2BzxshPGzCMIl8D//2jZ/0D/aqYpocJI88IF0WubpYx7tylGfo5eQjvBEOdN57hiu20g bj4SfrvV9IkR8/Ti1yjAKGr533GjK17YYVt85uQX1rYoQ9QV8iVmMkDxz1V3VjGyBiGd SyS4QG/UIA4IO6W71JV2m3vToXcXlIg9GZxBRkWvRqXAUTxNSiEwyqOwExAQ3eCFxqhj b3qDuf54tcL0h/LRPdFxDqoUiys2eKkIu5kv/fZMnvH6Km8F13OyEp+elvOZ9dyR1qNP wHzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101594; x=1760706394; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GcoYvQDFP8M035QlEV9JeRldEHEaoROzO6UVFvin6Ks=; b=XFe3WlxsKaQ3Oljv2Dp+2V3zl3MnYLZDcMqd+E3m67aOgbG53oAdskHUeQhHqM0H4i /m0NpeI1RCNpZiKdCMMD6efWG1Z4Gd8p+iNoN4ZoQQvLY1eEd7nNOOUdiIIxc4EFtphF acE3Z6SRQfc64eiAZ4lS9GKPpmNCJniU8VkF67+04Bcuyh9b3VybuYnCFo9wjWTwEi4L kYRHoUszLR4ppZQcU//G0ohtqBoozOXx9brQJxu4VB8i2xU3kxq5d5qUmqjzX+eZsIbJ Dpd8VOCU1SYJ51ERZgh86np7pOc4PogtZOG4BsdsRvTrKxNf7KQXDszrbecLIVPGHURF adUA== X-Gm-Message-State: AOJu0YyrLv7jhmb3OVIAhWir9ChoRmuh/Czx+Yk+8bgUqDOrtwbSipUf 1ozU9aNu2JBFFuk8zKr6y5NFAPYdJ0bSg3Dl8bsIvf+rUbFYpXDhX+eFMQn5BXUM6VGdohCYSJj ZPXp7 X-Gm-Gg: ASbGncsv+Knd8oUvaIIuA9ldpGX0M+cGEDVvhGxwXfAOctCTFcGk96CkMy7uUYE8CvT qROR+yOrQk9hAEUGbQOtNCkWegcYaiKwItwLDU7NOBJQd5/9WmNG5cVa2PS0TWrT6uo5bqD7paa XftE1uANM8OqxQV+WRpNDSC1GIQHyRhkHxnjMw9c3JrAWQvfLfVSM894OeJLMlPcd+VQraB2wgd 3/+eyCZZ6S3iO8+9cZ70cj0Z7aULIjBJ5t+2P1hRfC84P7vK2tZ3w/mK4qKXnXzT6pPaaMIV64v HKVC+ezXP5GQGBcQVbSKsn6hlJqtAsOVyN31EoxQGHLgciFajWzB5Gl4uGOz3gYSSkvc5hVi77a 5Aa6DWpZVXyzBJjksLomvKqR07oGVluwoSmPe3y6N//b83b6hd70IgLtAqmf8wA== X-Google-Smtp-Source: AGHT+IHcj31yaBo2OCMXPzAXQXcp8pL/oQHnXHE12ifqh8INlm3gAJW4zc0hkPME+Tyr/lqV+AQ8Ig== X-Received: by 2002:a05:6000:2c0e:b0:408:d453:e40c with SMTP id ffacd0b85a97d-4266726d9famr7080478f8f.25.1760101594362; Fri, 10 Oct 2025 06:06:34 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 58/76] target/arm: Load gcs record for RET Date: Fri, 10 Oct 2025 14:05:09 +0100 Message-ID: <20251010130527.3921602-59-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102308840154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-59-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 9c3de0cf717..dfd5b178317 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 19:45:21 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=1760102699; cv=none; d=zohomail.com; s=zohoarc; b=BsHrmU7FBAw6mBEhWIyEKETsQPKSGIhC4BPHNWTnhWrbhWVX4/BfE8Vqspp4UafZVLXdT+6AAK6GQ0WFBnggCX6OTOcS/jWeyBGeZjQug6Fkv66MOSQCukp3oPNL3xp+9Z3+Nqabkslc5mnV+NB7fHvhnMFQnSTv1ersrRWY7VQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102699; h=Content-Transfer-Encoding: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:Cc; bh=LJaU/5dMmUmO+f7wS8v13TQuHhb03VPHkGjmwHQjFwo=; b=ayyia+Eg57pTRuCI1CwrPhprTiD5ZChj6XJd9FyYfa6ZcdQlgq5v1g2EvBOrZ+eu9A+fLjYAV9mNYnVlQp+l8o1PpGEbRetU4pcYPfEk018UQnzvCKmtzx7IW1icMMpWbDkKjLsirQmtx0Wlg3kW8gZFi9XUMRNFJ1MeLC7cNXc= 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 1760102699035875.7430650050965; Fri, 10 Oct 2025 06:24:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqU-0007PL-5W; Fri, 10 Oct 2025 09:07:43 -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 1v7CqP-0007JV-GK for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:37 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7CpT-00040x-EQ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:36 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3fc36b99e92so2278228f8f.0 for ; Fri, 10 Oct 2025 06:06:38 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101595; x=1760706395; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LJaU/5dMmUmO+f7wS8v13TQuHhb03VPHkGjmwHQjFwo=; b=zCDxmDiPv23NoElvzelmRGkGuzIp2eMfxPnTf+JGdFTLrd6xkkEDgZTDoOlHnNZf5w VHYqi+NjdmumZm/k/HUVHSUK3FSe1HXnzp9zjO5RXlpd1uzCHTSUSM1QauT9rHE2JPfk IVMVxPJgop4BdsAEBVcLT5eRu77Omo6+FaXQFkQwmcNLJgJ5JNhPbXb3EhbEb+rjJNxc 0AbtY2ngw+SDsBbzkRSs57Pqle7jg6ZsqcYnGKtJAx+l4A0ksOzS0xcu3MngCL3ahht7 bFwJFr/p4bb+hQS+x0NmnDiP9ZlPbVBGRiiX/Yx0RGpOxFWIMquwJvETkqYnt5CLeW0L Pa1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101595; x=1760706395; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LJaU/5dMmUmO+f7wS8v13TQuHhb03VPHkGjmwHQjFwo=; b=Xe5V7YJj37AZEVOpZQetiEpGFuJuzjG8iSoq/LSKxDPIDgeaguII/xY5zgCMDkngKQ uDfqE1ruiq97gD+hjfmvNOEVZettfEm/gcbMvwBfkmGWGGXjwHQEs3xIQE1g+n+V+Owl GX14QN6y1G5sOWTGruoDTuM7sZIGdRecdvF+XOT5f1sb8sua0x4/pjUyStrUS2VkiDWn m8FbIF0RP+xJGiJCGAP5z8JHvaPRDHPZsxFecLe47mwcdRYPMM3ImGVESnqexICIskom 7vxg0UINPScGWIv4LQlDxrM8mmwUHUrCXZNTuXHxAF1kJCusf/J5NG0ZEsUTUCNoOtyM hOkQ== X-Gm-Message-State: AOJu0Yy8XaXqNuVkTxunnThllvQCcm6l82zMxd861LUYBKVBKWZkoxdT gdsDAM53J5ELnmx9fswSTb557EzARA7oy8lshnyOvuL3FsUjY2j4gFUeUon81KxdNS3cpBZvWYI ZG+g1 X-Gm-Gg: ASbGncsl6NaUrVHMW1FF4Nt3ED6iWodcSyHLYfThuh9bXDvWY7Qd/OMv3Y/KDtKk4Jl nQefRUcBw7YWkNuiQItdybyWd24NV0VFlFaoCN8HHfvX9J/NdsLBpyrE5EGZhoSLTaljknxq3/U gvXtXFo5FOWInvHsVXW/7UkzQ38R8jhqv63ETn3kvpC6R3nUj8bXqepFzZtuiRkVO7jNUw8CQn9 dTn3RRoD2ozRz6ZgcmZXfaFHA2/B5YZ+yyf+bGOg6AjNSfFLXq8v9GGPPl+mszNdtfw0TNdJds+ hCI/qeP4jS7FVV79jNr0UNq7cQUVpj4X7INM82A0WJE+aeJTnsXegh17awg1DwMeyms7OifGV0f P9JpGr0WeXH/scnMP8w68LAfgmDCEwY8VWTox+ROUcidatSiPvcw= X-Google-Smtp-Source: AGHT+IGMgFvnxFucIM/RSTLG/KP1L7jOILKOFXeEuT0M4RkJMPF2sqfCLmzGKBQiFjAl+BGSBLzi0g== X-Received: by 2002:a5d:5f96:0:b0:3ec:42f9:952b with SMTP id ffacd0b85a97d-42666a9e191mr8301895f8f.4.1760101595327; Fri, 10 Oct 2025 06:06:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 59/76] target/arm: Load gcs record for RET with PAuth Date: Fri, 10 Oct 2025 14:05:10 +0100 Message-ID: <20251010130527.3921602-60-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102701704154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-60-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 dfd5b178317..918d5ed1120 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 19:45:21 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=1760102747; cv=none; d=zohomail.com; s=zohoarc; b=XQfonZN1b+IjrDYXVD4I1QDNYmEypdycFVaw1muXSVc1bNWwZKrTD79uXQF7HhLwuK0pi+lv0N5ggcgbRjZkWvElVwr3AGi8ne+PzJIa/BBSWspqofY9kSgiV93kZ1xTSEd16EI8MoWBBJTLNigCFn43wp3vQjdMtVLBAoLlTK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102747; h=Content-Transfer-Encoding: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:Cc; bh=JJ1S0Z8TTCdzh+1UFNXdb7eRSo4N3PukNOUERNZzyhE=; b=YVIuKjnxx9XctT1etrMh7iZhs0uV8PKF29lF+WmoE22LBLCcfH42unktn9ruws+u4jMvOhN/ILEzp/0h6Mdz/lEpEC6oABrurG/9Y7dLTdHOUPSRzugEzmYHpJIgyINxlIjEHMVwZsk/xctPi0UaGea0LQ+sRaFSthLikA5Y1SM= 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 1760102747115260.5989393962267; Fri, 10 Oct 2025 06:25:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cqb-0007YO-7S; Fri, 10 Oct 2025 09:07: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 1v7CqY-0007Tc-4F for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:48 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpU-000419-Fw for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:45 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3ee64bc6b90so1281579f8f.0 for ; Fri, 10 Oct 2025 06:06:38 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101596; x=1760706396; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JJ1S0Z8TTCdzh+1UFNXdb7eRSo4N3PukNOUERNZzyhE=; b=fpfbgkBJ0ucrTocPwz5lkwqXrjKdKgVFfOPURf6htOlefacUT4Sqqx34lKSllraPuz 2mY+O5aCisqattViqbggSdztPKB3AX0QuZ79kWEZACib0lTj5gteGKY6S7qeXJnZ9wqd brttkoYk646ixvK4UF8UaFYWKbiDI+Nx3JKU/GunuT7Rw6eXGsjuEeFHJ6LfTl7MUoWp ahLUXjDdueN6OcTb2sbosvzz4983QTJidDrfxQGCvOhy4T3HPNfeyUG6zT1AJr3axuLK lqMLTOgN4G7I6P87Fr3druzomv+qFj5U4Wv6dEaQkpkCD9q8EXmh/yYMZwTsQtgvcMmr a0Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101596; x=1760706396; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JJ1S0Z8TTCdzh+1UFNXdb7eRSo4N3PukNOUERNZzyhE=; b=l1nB5SaZq07HBb85XIvFCvPrdWl2LV/7rsmDg1bhNpc/LaEaVoXrAGvul/f0JOecqX 1EGwKw0TrGENTaYBz/L0DsUqUoAAtW0pkR2pVeNgPW+2Aze5rRs2t6gXnTxWJ4FeUtO2 BaUhha4YuAKz1P1GTcFmxAZjf3PbpmeTaCOterHv3Bxro3HLm2G3N0wHWDbHmV9AUf69 eQ8s2ImXoKkCQOhut6CZU8qF9dm65kuGtU5IZ9NQRBk10TzhnMLJN718Q6XDNG4LLLWz zWmo0oG9/PdFXAZPWYsE84sVrk9pEFbONmoN8/i8q3IUz1nq+wS2zOoSpW+GyD8E668M v5eA== X-Gm-Message-State: AOJu0YyWhZug1xkWQOrXrWGMYBc4SKB7szeJlNkRDtQ18PtcqOpoSHdf S4B7GCLf9tulYOJTaaDtFzsVHbs7zXe6qy0btoTBN4e+nzEDfdc2ZmOjaK+LRbfyeDl2obyDDTp XIDEH X-Gm-Gg: ASbGnctXD0WCQgOwlMaTjjWLjwirsavcogOVKKDJHOYtJpFqLxS9MtUZ+0nYhXacprc 0BeCkJkkyVmpsyE6mpT9asvCQvEphquYOY5+UGVufUEFV5llnPky+ARXWiFbfQ8RqoQVoRnMl7w 6w97LZXulo6Vf7i/0zXbqriMP2s+5qNgW9N7YDRnD4hJZ6Q1stQXELiCaK+gAfaolFYYfArRkQy Nk9srwyppSFftTeXJVFW19fzSQS8Nz5UwUF4IHFExFiHqh+pS4HCKnG+ww9ugS8Jx70lUvkFRms /dCrFlNWjdPTMEXvEr0vtUKy9L3PTktONgyJWsE48/iHcS+jmSM8aZXPpaJszroG6Urv4cthBPH Bwwh76hjXEqNC1u9PSPESVspb/zGHDkzH/lrCC1x9wcIqW1/36jU= X-Google-Smtp-Source: AGHT+IHN9Pg6y1Od4T9DtcrmtyDfVXhVfGFL7ElEzh22bE0GADWKC0B57m5aXkAYi/QoLYWski6Yvg== X-Received: by 2002:a5d:5d11:0:b0:425:8502:f8c3 with SMTP id ffacd0b85a97d-42666ab95a3mr6469975f8f.1.1760101596268; Fri, 10 Oct 2025 06:06:36 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 60/76] target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL Date: Fri, 10 Oct 2025 14:05:11 +0100 Message-ID: <20251010130527.3921602-61-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102750298154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-61-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 1aa0a157b72..0077788e1e8 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 19:45:21 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=1760102462; cv=none; d=zohomail.com; s=zohoarc; b=Kj4k6rMMJyZWBWsU9YMRa4WnLpKVgivx5xN6vx+UdDQdb9sxQ9rEmpnehndD73m9H68DWjZFIO6wVl6+1itg1S4luYr1L2Xr3Vz97MMe/iP4MlGs/H0N98PPFLplUJDOP+Qsixtgmqme3Bq2eyu1J6/CpG2XJw78r5ErY+EUU7E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102462; h=Content-Transfer-Encoding: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:Cc; bh=Dz/pKGGgrfjPnlvU/HHfzUVBqngVWK7gF/6Jqhpwo/E=; b=PWFmf3bntbk7js+b9e/ArFsuXykWykrerownpNDvWzSkqA70ctTBx6AixiPluNMm0y90l45eCUCqpKzf0am8h+KgHf5c5t6eixspawj80y1Me0FqVPHeeiheLr8mxHSQTM6KsopmbK2baj4p/XGy5Yh7alMAchxzY9PM5RfH42c= 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 1760102462658275.1257671605558; Fri, 10 Oct 2025 06:21:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CqV-0007R0-QT; Fri, 10 Oct 2025 09:07:43 -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 1v7CqT-0007OJ-6j for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:41 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7CpW-00041M-6k for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:40 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3ee1221ceaaso1496158f8f.3 for ; Fri, 10 Oct 2025 06:06:38 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101597; x=1760706397; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Dz/pKGGgrfjPnlvU/HHfzUVBqngVWK7gF/6Jqhpwo/E=; b=Ooi3ZppqWRz8Cy9Fp58v+BcJg3y9QkuHlkZ//BCNdmdOgFHPvkWc5V4Hc/cVJkOdxd CxwNhtvseNI1BdqA8GbHZ+87RSSLpcBTZPlqWwizNFAZj8WNnnReeoV/EvMznDRAP3dT c/FOs/2ZRVnyghAASAapnC60PihChWAtzzhnUFyKev524XA8lXr8dWyE/1ckfFkzFdld 9xlhGNv6BCXQImH+yONBKbc2ZzjLgiqe/N8yaZ8T89jYkjdhWuVPJanUUtVM958uTTE3 c1lTyOz6yt71/Jg3kJnl/CF/H1PDsTz2RuBkiSbNvjFzBEPuhK0eF60iEBKlGZY+LUCG veZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101597; x=1760706397; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Dz/pKGGgrfjPnlvU/HHfzUVBqngVWK7gF/6Jqhpwo/E=; b=NiKjVsMR5TQhmeTnu19Zl/8HUrLms1ZH/EkE9W1gbC/DRSd2Q+rB3C2cG+X0rXMTx3 B/axsZ5v0hWp1rmXByhZyIYF/jbxnkoP2kPpGrJKRSBpqHB1H+dLfgryNZ7sc5tatbWW bR0nrgWg3EXm3ErU9FlbfyoslHlnKctIr+olFPQ5RPP4/WgUeWdTpg0vLaqbvg2ocvQv CiPDmobZB4uEbOVqjNxxxnIus0fn6QlawrVJNY3lumIFJEWc5vJYLr8RiCMiIkHsugHK EmjpFcsVTXLfp3lfVP94bXmZXGmreaYVTwCup28ai9NGSJfXYMRiXKWBKCtJwgX7iXZH tzfA== X-Gm-Message-State: AOJu0YyTZBxv49c3ful/0QNREHI5HKojoXwdcgLp91aWtzUZXRB4FieO KimEtC/C7kMK1vkVl/JWNGDkC+9KMRGm1HaH8esTVtZNCcRy31/gaHzjcvv1GwlFm02PB/LM+tR JWej2 X-Gm-Gg: ASbGncs7QoFxSR+wjGLojAlQnPnt2DhSnqPAo3x4NAL8uoVySZDTQQWRj/NoqH/aNBa h+WTKVC+b81RtWC46JrpFjy5+W4nKv3itntHKBxNwoWtbMfXAgKZkrL+JOU1/eKRG/YnBkOVYnm PqeuOXzB6cVfc1ttmvDo57But6+X6PvT1MeEF/lsfXfgmVHMyTOYzYLnyaRbqzJ+PvK3e10BI3g MbVYazDsh98hPOfdFPAHg+kJ86vZyLTOc7WDxwR48dpIxuMcftSRKkvPO9WIYYwxw4jbO0PivxH ygUc3LGWg+vyaJY+UtQRe9Fe5N1WuyHu7rrGdrWmEC6jBFDYD5sfPFz92H6ER9F2fO/KJaY6cQ1 ozO2Sl4D/ibCXQ5PZus38hmiRX2ufSBQYM3pe4CQee5r+RFMMtt56XeKw8k80fA== X-Google-Smtp-Source: AGHT+IEogQHajiYWM/FlOeCeTvWFjiBq6insM1VhFu3gfe/WDPtySWqO3TVEcEw+ddNxg0V9I9I/ZQ== X-Received: by 2002:a05:6000:250a:b0:402:a740:1edd with SMTP id ffacd0b85a97d-4266e7dfeb4mr8162530f8f.39.1760101597512; Fri, 10 Oct 2025 06:06:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 61/76] target/arm: Implement EXLOCK check during exception return Date: Fri, 10 Oct 2025 14:05:12 +0100 Message-ID: <20251010130527.3921602-62-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102464651154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-62-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 08b7db7c467..ba1d775d818 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 19:45:21 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=1760102771; cv=none; d=zohomail.com; s=zohoarc; b=oGJkWQTC8TzeK9dzAJ3fcJAwkv5IFZK9NU/M3tvyVUOHDmSuFnUxVR0ctjlM5JdqQc+YnCfUAI6m87VDNOfDqj/YjpxVDxSqDeYQjN+DJEYxmGpG2GeE3na1QKmcXFCoPeBQndmJfvq67ozzIvG62/3mmmZf6oB2gXyEvCXpTqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102771; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=ybBv9KOBzW217hlkvIBBA2/Eg2OPOW21VAjC0SdENbc=; b=foRyYca7r9B0pXmt1/1cI3SXlbUN5dg3yTlpSSzHrv4OxlM1rCXBJ5IHGZ4bqwREAVUCUN0vRJAWj37p7Yr5zFZvrpCgRtNuFhctlH2HH9OwzwvE6Y/l8pAN2RQ0ediuuiXdHu5I1bNSYxAjCduNB7AilDlnY5W4/vrPNjjxseM= 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 1760102771605778.1489380690554; Fri, 10 Oct 2025 06:26:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cqa-0007V7-K7; Fri, 10 Oct 2025 09:07: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 1v7CqZ-0007UK-4i for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:47 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7CpX-00041b-0f for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:46 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3ee15b5435bso1246512f8f.0 for ; Fri, 10 Oct 2025 06:06:40 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101598; x=1760706398; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ybBv9KOBzW217hlkvIBBA2/Eg2OPOW21VAjC0SdENbc=; b=EL7gwidMZsxM0ZDimiA/aUP82jkiUlQsrg+nQKdwtxOP3gEDuJjSC1LuQUkmiguI9a jrFcU+EG1szhIy17Mjzje5sH2Bmf9nPX7Nclgw1BYHScboHfoRD7FDBalhWbbNy4vJO/ dz001lQI45DPpRBzO8n87phCfk/x+lFtGFIEP6V7WlBTgldO6buglFZfz6ltDZPG8sc0 QlWqfb4+a6Ggfm8i4HrW3ZE0A4Xs3AE2TOlllU5K5zpO/NN6fl8uvUl83KFNdufVm3ME ZQ9sqSQHqRN1OT3Yy5FCiAFvEfQzuini3UwWpkJZU7PGO5TwJwVu9UgT+c0kk4b/S9Qm EnEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101598; x=1760706398; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ybBv9KOBzW217hlkvIBBA2/Eg2OPOW21VAjC0SdENbc=; b=YnvRKAV0wBK/cHSx4EgDCDRU5EoBJpgioeisCJswesagYOheIbZNy6APnOeXBjGrMX lNJnBQxomVezfz7I5t6K7CVA1oxQJ/oAS17cGVbpSnVi8YTG/ozbipz7JHU74BCi7Gs+ R7cNzgAYoT3FjG0z/rRuScHcYtMpWvXujL65IVx0VumPXBY96aIsfzvvmd1A1Q4prb8t /zBj/O0HOfWJbHemZXsTxfoB1e9dCwFr/wHwHmtwAXhhCI8v5gvPDiGzGZTwFmMKSkZi Wq3o0WrUR1yVE4KQro9Erjr/n8zLZYI2lhdlPGOqIZ4WPBpdUS7tWzCQOValaeyJxEYu ue8Q== X-Gm-Message-State: AOJu0Yykrnt8bxqzg+ckU+PKHkzd4o2xGdvA1lPJgoRQwNeBMBym3Uiy 9pHcQJ54vc4JugWOHGUhwUilfzwVFVj/o7zW1NPXCZgPtim4GGfXWca4LyI0I1llHzqfJ3VsPdT aPgai X-Gm-Gg: ASbGncuHoP0LXpfxiXhlNl95mL9t43VTfiRxcMUB3d+kkTVPjB7RwMPj4+28oJCplyb tOr93Ckso3+QfWzHSSsZ/yDszlYqm8cspbyW2FGej3QZVrDTYCMmAptVmJ9PTHxdygX7hxVZ66c aBdiKhQeCbuKo/VbUVvceg8dS3I8XIE+8BkWTAMmS9PIFpJJBQfKl0DkcFqEUzlJlRoxZ6z5/7H eOLaL4QeXJNTbtSPXHwMRHy12whATIk2j5GpdLh0HujkV/vGdWrXFQw77XulDIhO6SO0aQp6agJ 65F3J2QfCbuZVH39/AjY45R2rpEkE3qmmr17JgsMq94kDJ1MINV1PjJ6hGTFiGyVWrPz9zgebMz /wWYGy4cQOxTQDxNEHLgk5uBkFqiHgROSbtN2PPHB3JU3OO6L7gc= X-Google-Smtp-Source: AGHT+IGhkyWhfevfyXOtQo41Lk85uItDkEIDS/2RSwXF5m+hfJz4YeFs11yPJFrtCpiF8dZjGBtMVQ== X-Received: by 2002:a05:6000:258a:b0:425:8bc2:9c4b with SMTP id ffacd0b85a97d-42666abb51amr6165395f8f.6.1760101598428; Fri, 10 Oct 2025 06:06:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 62/76] target/arm: Enable FEAT_GCS with -cpu max Date: Fri, 10 Oct 2025 14:05:13 +0100 Message-ID: <20251010130527.3921602-63-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102773362158500 From: Richard Henderson Tested-by: Thiago Jung Bauermann Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251008215613.300150-63-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/tcg/cpu64.c | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 68d9a4e7342..4496178c48e 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) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index f024db1d29f..cc42dfdf561 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); --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760102004; cv=none; d=zohomail.com; s=zohoarc; b=OuVZmFvwcs15gS2XJDy7d2JH9exsgaqFZ3QqXb09dvNgk5yinVxWtv0p/BJZLqpQN129Z5z1GC02xku1xRtrOMdW3czu7c7m5r8Y319admpnXQCBEm3Sz9STvu1zR3++D1eZd4xU4YCH0tgJQ9R+ipw1vgnUMqfHyrlwbueNzCA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102004; h=Content-Transfer-Encoding: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:Cc; bh=ArVaRK0yxIVcRvHYCP0tvUXa/az8HnvkBAfEIopSuNc=; b=P8ZTCbUkUxHTEj5aWi4YmtE9gJEa2WuZPLBUuJyKWyjrqLzYBdXQkup/YUf7FohzvIJDWoei2YtFQ2f/A43HkcEemrCLvgGbbuSStQZggsKqdDuQ4xYTt/iDd3JnEhGJ0Y374MJbLZiqLkUQpvm9WrmWE8/h4SF+Jfjqb2Or7nE= 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 1760102004789361.1847884742781; Fri, 10 Oct 2025 06:13:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrA-0000EL-Ow; Fri, 10 Oct 2025 09:08: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 1v7Cqe-0007fE-FZ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:53 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7CpZ-00041n-Dl for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:50 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3f99ac9acc4so1729426f8f.3 for ; Fri, 10 Oct 2025 06:06:40 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101599; x=1760706399; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ArVaRK0yxIVcRvHYCP0tvUXa/az8HnvkBAfEIopSuNc=; b=zny/Vc2wmC6T0un6FXSzCWWjjS3quEdDpQ8WjsQgLt4FGZMgqpPvcVyYsSBsTL9imD zfNJ15dpG7XW/LgA/SoLZQQi4+IeDy+S2bDBHd3UI/AnqhHbDmPZRw56xL3eOQUYm7gm ZlQRFNC8x8TrN7RraG6wqgIi9pN5SnKAwBUfA+nLwfzw3PnlsNeiBAUDbSUcLwkM0n9M nRqTpPkmIVK/6upkrBVBZ/YXHvTzdRKHZMi9wTvTna3Tbf8Z7ZQuusQjND6lUdlQpQ2i 88D0Zsos4vP4ILXLsppOPlhmUwXzhcs9d2xnzXWAXECKJk/+iwiIewIG5f+QgkGdXbIG RNHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101599; x=1760706399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ArVaRK0yxIVcRvHYCP0tvUXa/az8HnvkBAfEIopSuNc=; b=AjbFXUkhSy8kwM623W5tqKydYyTyXa4jD8f/N5osoWtRkw80So0py1WQNZAyuEAMyb ZSbOEicBbZFBFtmEHAMSWJ2KaAhXx3JCcZZ6nbD/swB7BpAQWDfqMfhG3pvFIiSEWaD+ ZoUFLu+xzk3rQouEMOXzuhpn1iYsTvewnzdDsGnd4/X97GJhPQe8BmaNkl6pgkyFDG16 JVdlJvgTVFX+PN+yjJwDRjFTJ1uOtK4mB+nDpGmVct9v17B1ZeQpr6FU+nZPY6gEzxed 84kBxEadhVtI3fkxYl06HkzyGq9PKL6rVK9bLPXhxafi8cxVwNdy7OneiJPAuwUCyN6f jy4Q== X-Gm-Message-State: AOJu0YwL5slAMQmMtPpiNBQmQ2zJixCHu553VG+w5qSIJqzROaZfJdQ5 bnFmiUyxb15cphov9DaJCFAt0IR0HPJzUNuH70QvD0G4gt3sW6rCBq+cBO4WRK7f/qnbktlzRQs K/CdE X-Gm-Gg: ASbGnct6M8R6RWK0veTix3FWtDdHpBQhE+apJ1/hkAOYdjgrX5pfY4I4oPwh4uPFOD8 JdrO7UhJp7d8BsneYjMTlvI6V59OHE+qkAndEaLxA+MEteOcKYmZB2nJ7KhesjSKaTUVK7YZ8XA 8XQtWm90zs4j7zcxogXwGdeDjDuvrRHljwevFtZtF9J0b1QO5CT0sr5L7QvXhuz3QD2efvd7T4W SRzlLi6ryuRvyPO6IU7uml1NVBY0U83WmZyXNwvEXZku55+Io79P3mrQkNEpe0G8nsN3gfrTblX 9FTceenTObjC++dmh4v3ktfb6RmTM4XX1qkDw8Y3QTo0iIzQYUu+i+HK3cJtrah4q24WUl3AhvU 6Mlg48zInmmMQWGOIJJ1g89GYEYtb2MlTTozVXBecCHIfE5jhrcQpPsOGNbinhg== X-Google-Smtp-Source: AGHT+IEeOZZO2LGLYmAGmIeM6iL/OXwFfvK6504BGzfmTiGztZDOS1J03l3P38/M1K8hCH/3o0lppQ== X-Received: by 2002:a05:6000:4382:b0:3e7:5f26:f1d6 with SMTP id ffacd0b85a97d-42666ac4491mr6747231f8f.13.1760101599346; Fri, 10 Oct 2025 06:06:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 63/76] linux-user/aarch64: Implement prctls for GCS Date: Fri, 10 Oct 2025 14:05:14 +0100 Message-ID: <20251010130527.3921602-64-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760102009612158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-64-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 00000000000..e586c7e80e2 --- /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 ed75b9e4b5a..621be5727fc 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 cabb7bd6a8b..85e68eff7b3 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 d78b2029fa1..56695de680f 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 19:45:21 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=1760102289; cv=none; d=zohomail.com; s=zohoarc; b=bk0FTUGfSRvkWjVUIWA4n7LrhXOLp/lFT6wSTyv90RNuWt5W0/3uYqRwbv0qRlTTt/LPapMhrFX+gyxd1ipeaNxnVTGF/h2D2YadLDG5I0Uolo27bE7Hy5dgsWNXwq0i1dOQGh65FNuhwWe1EhEAIlz4L4aljzr5pl5cgEvJEe0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102289; h=Content-Transfer-Encoding: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:Cc; bh=SyGaerV0C5N7nCZ88ffo5AJUgGih2eXIaapWHvbWGT0=; b=XDk6IJh1CMV47S+C31ZLDc+vJELpdsznC1QdsJr4L8uTZO1JSC1CjHw1Rj/imcznM3oDdXoVDtu3A6cO37B4yNpGJKfbXwll/j7HNB6eWvlB21ETaM8ffv2QVIqAvRUV1EM794wrhShfvDqhf75awLTHqWW6JXwx4p+xTtyBzV4= 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 1760102289274491.5443601178696; Fri, 10 Oct 2025 06:18:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cr4-0008Ab-Pn; Fri, 10 Oct 2025 09:08: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 1v7Cqg-0007kN-42 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:55 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7CpZ-00042H-2k for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:53 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e430494ccso12211945e9.1 for ; Fri, 10 Oct 2025 06:06:41 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101601; x=1760706401; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SyGaerV0C5N7nCZ88ffo5AJUgGih2eXIaapWHvbWGT0=; b=mnh0R9r/1ABmaoW2OX6hH6Q2RFy47R/m5qC22ziYugIgR9rCRShoIbU/Gdo4QB+eQO vh68PPSGoJhzaWS4jxb7ZE9AWcG9YOVUe6g5kwRKFiShVnBsgDqlRAxFkZqQAg7/nVt+ omUZ9HuwV5lwLU+mHxmKUqFg0XmPyFfsBLgylyuBLtsIt+jhmCwVR/oYJvzjMldsRIdD odd2uuOW27V+ltqou6/EHYT5YnWgTutJ4MKw1sDzHKB4CAeW0ZHyrFskuB6JDhu5jFzV /t4GocEuBhnMDYQtn/HUT/X1Qy8UINlXiEiaRLNe0umnWygzflp1JK26ahKtM+v+zEYA m7pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101601; x=1760706401; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SyGaerV0C5N7nCZ88ffo5AJUgGih2eXIaapWHvbWGT0=; b=SVILS246dtSWu9um+58ZDULmAGbyzpyQOL1zMWcq6oYxzyZc0AIQwjnd9rcls34r5T O5Aj46rSjtf5wdCpC6zD6Ti6uV5xtO+MD6YWsFhy/qeUeX7rNc3ZOsZhY2XPGgMqiGc9 m2QuGI5gge0U3+r2bR4bLom5D7PsuMMUI7rqScYOykKqy3Bp9jSF/v8wcTiNxi3HvQLi ldX8wxVH+IfVvFrmRwQzHeBhfOBfTnWT+/xccgzLlA4BMPafUQm0LkwgRKFEKCU+mlcd +HB2rlZWdX8xib645+LJ1BoD5sUxKvV6D6Oy7re0p/MmdIXWIUNFNxggVf52qRDFdBLw B7rA== X-Gm-Message-State: AOJu0YwHlEPHvmHhNntW1wTT4LageeAo4hIMD2I2Fo0RRCkY7j3Y2kUu /P0xOqVzCkGbzx4iBTMYeqNar1IEORVYgriuc2rmYcmGJdzQF9oh9YfxC05AbNWHLdbnK1MSWsk fxEg5 X-Gm-Gg: ASbGncsK74ROVdvaamH3sEkxwOIejOs+9eqjojIJKtWvfqtR4u55Y4yl2cJVtdpcLtV Cpm0oJy6J33Y4Vva3wMXg6miAz9nb+UGQ3pHr9Cehe90kvE7n5kZ4t1koEtoz/UM3jHda6mAfYe K4TR2OnHp87Rr3nQvwdBx0Jc+yWuFPftxt6ftqgXSeTQx2XVL/jLOprtwEl0uZ9bzAtGqU86Ec0 UZE5q5vZJCDEX1iCU3JcZVYEJUYptW+cgoFA7yO/cIySD1KybhTy5EecqZJotx6eMurNujoIIrz 7j/HgccyxnzZ6Aof65tjAKzogvpVvhVGz/+EaqxTaPcpMpvFis1X7Rq2I3zBiTUyjdb/WMb9z6I kO9WNPDXDkEqEOCy+uli+zEJICDmFbs+x28hU3Nl0vY1wyYZleO4= X-Google-Smtp-Source: AGHT+IFIYYFzsRITfOnPu37Dg4WsOCpXFBPAxAFeTyInfX/2gJb1DKy6k+hYfRkcDgIHq9a7x/f8eg== X-Received: by 2002:a05:600c:4ed1:b0:46f:b42e:ed85 with SMTP id 5b1f17b1804b1-46fb42eedfcmr25986025e9.38.1760101600599; Fri, 10 Oct 2025 06:06:40 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 64/76] linux-user/aarch64: Allocate new gcs stack on clone Date: Fri, 10 Oct 2025 14:05:15 +0100 Message-ID: <20251010130527.3921602-65-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102290514154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Allocate the new stack early, so that error reporting need not clean up other objects. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-65-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- linux-user/syscall.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 56695de680f..dffe6c20160 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 19:45:21 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=1760102718; cv=none; d=zohomail.com; s=zohoarc; b=kEX+oyRhCYro39xkCy33U+Um8kvVRhTGkFTGWsZStPYHgrCUVePCob3YHYZ4nYcfAJnyz37UECIYhJeSE7cvOQGJX1+S95M4K7oq7QULOTFyY/twB8YiiPl06J7ePCwJzOAfFoUoYLqrxKSWTWZfab5gw/nFjSeFdl/brC2lXWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102718; h=Content-Transfer-Encoding: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:Cc; bh=vJnkoQvkT0bOTZRVSjpjdc0yr1Vy1lz33J9tYlmKZec=; b=c4g+TnoUjwaAaJuiOak7B6+SZ7/y6oFM+7NCXskdu8437ZRzOPRs/XF1EcWywldnFVCJbgAammSDKnQL0PfGH+iJBRMoxT2bi+1mxFkDn3f910BBNxFNUJDurEycxlZaIQcjRXCump8ZJcEgEC+dCWE0j4kTXPVkPTLzyVk0KBk= 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 1760102718015214.5444313016884; Fri, 10 Oct 2025 06:25:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrH-0000zy-FR; Fri, 10 Oct 2025 09:08:31 -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 1v7Cqj-0007x3-JX for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:01 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpe-00042V-9d for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:56 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e384dfde0so19504405e9.2 for ; Fri, 10 Oct 2025 06:06:46 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101602; x=1760706402; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=vJnkoQvkT0bOTZRVSjpjdc0yr1Vy1lz33J9tYlmKZec=; b=AzlYb51naBhxICFg8XtY5jdcKLWDfqxrCWLN/nUgXnR/WjEt8Ex0B+AgvyDD4VyuwB b+BndehiS+kxfU3vJL4HmiH3U+uCwskuKML+mNhYSfKxtYephdK1zugjwfmwXRwnUWcE X8X+YMCQQp/JvAmII1v15W2aKzW/CeXoUbjhcYVJpzsQQauEL0mlHTWoHxLUzejMNlW0 nalY8sFGgRma4JU7Am5peqjiQStFhWPE6Kd4Ugv2a/S5dMj+zHw3xe+JXZ9uqQ3c0Ch0 scT8YE7Yl/kGbCIqMgjw87N0x8Q7JpXxhZixfQpmupXf3W3v23+mhr/SA0crT58Evve0 4PpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101602; x=1760706402; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vJnkoQvkT0bOTZRVSjpjdc0yr1Vy1lz33J9tYlmKZec=; b=RzcYh0Wpr2Kx5UFIOzZ/yRgm0/XQiVkD3uJyDeFGfBVvn5+Z1G4G+A2fm8/KwJ1rN5 FeAdsVtt/yAy6e+U+jGzF0y6zV9VNL/BT1unUbGDF/GgwpF2AuJ1FdZcSAKMUGJi7ys2 eFV0TtpMn+sDIBj0AzN/h0ZPUC/GVeMuuL0AcCx6/OpG9hBKP2p8VpTKI9756zluqUkY CSixfAFEZfj2eKqFvuePbsaL08YexbLnjrpvlOfw8QyGNEOO+upzzJDdtotk1diKohp+ Ap/5ISTs30lxqHHP4bLfKTKaCtl8WG5jJTE9EC/SJHIa4T5xaECLo5zhfsA6Ty4HY6Rj Tpgw== X-Gm-Message-State: AOJu0YzLaujIL7FtoDIh4ZDI6BbF+F8hR5doQbKkbvt/OoTEgLOE5evq A+M3X94VFYmQiWJcAib4CZ4xbN/AkkSjfgMv5lWXgOlf6/O72x0vEVE/wxw8YOmYhVnz49Ytewc +SLyR X-Gm-Gg: ASbGncv5Onj5cNNO+ey+M5UCz6lZv1ytQ6ewPi0A6oSYuSJAhrZiLfG8BUr+Sled71l RejiI1FHGd31GgVxPlpI53/sHbzFv4jexIo2Q1O4fM/ivIJx3zxcxkwOryLQQolDuHvF5Jzqqrm onkXF4uRRa4Ia4giYmAy3MnW85SRu7saVwzf4ETtGrDpwcRNadx7TpfpGGsaBonWeGVUeLQbtJZ 7fwpIjBRe6srsTgJjJ0N4henw4hHPLfIMd+QTVNtHbdUlIW8UorgNqhbFojhdNZNCu/WHsNsUWr zvuQjwVdO37zHGyvrqqjCXFuN4QYfA5zp6yBPQGyxH4QwMgUQa6yVUFDM9aMNLMTmByC2b21toD 0hBcXE2PzsiLS/k7eUXjSsNSnFBSO+VwnxQzeoLtfN7+H6q7jPDDg5NN06kpOCQ== X-Google-Smtp-Source: AGHT+IF5rpL5ptCdc7CevTiuvcyoBSsAFt4V4szwDwj78hJtLwbgCd8TjU9eugaMx0gKjQVKEYIY+Q== X-Received: by 2002:a05:600c:870e:b0:46e:35eb:43a with SMTP id 5b1f17b1804b1-46fa9a9f16emr87696835e9.15.1760101601702; Fri, 10 Oct 2025 06:06:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 65/76] linux-user/aarch64: Release gcs stack on thread exit Date: Fri, 10 Oct 2025 14:05:16 +0100 Message-ID: <20251010130527.3921602-66-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: 1760102719896154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-66-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- linux-user/syscall.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index dffe6c20160..47a6b58cf5e 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 19:45:21 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=1760102548; cv=none; d=zohomail.com; s=zohoarc; b=PRuvJHd3sJPy4edsisJqhNOyR5dbZcwxMeEiQwRR2vc9T/TSk+nsT/08VvpNYVVf0uKdevLaCmz7ePUey1ITxMSqA48Lx/wRCNOGYVzL5q/LTJyefAqVfxKXsxz9AUZepU/0cUBQ1keJ399n5fXIMnuVZj4I+37rENt4XdobLeg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102548; h=Content-Transfer-Encoding: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:Cc; bh=YuKsIKw5s/OEqOqlZsYGM9IcgOL+/aqefHKXe601aPI=; b=JbwNOt2VW4B5FnTf8MeMEJbafvnLBgeXxSimLpeKSd9RHnp1frL4pPKz7AJszETTQ8e7OGqR2NpIYrGd5vV9kHuTXrqjYPAAIBY+I7Ih/5df28SxGJhuR8zIBbmaxQ0uXgA7GNDUn29DjdeEEum1c8p0QoIMXpc/VuJLjh3JCAc= 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 1760102548836897.1406205445068; Fri, 10 Oct 2025 06:22:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7Cr8-0008KM-0S; Fri, 10 Oct 2025 09:08: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 1v7Cqh-0007kO-70 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:58 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpc-00042m-3b for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:54 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e3cdc1a6aso15861585e9.1 for ; Fri, 10 Oct 2025 06:06:45 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101603; x=1760706403; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=YuKsIKw5s/OEqOqlZsYGM9IcgOL+/aqefHKXe601aPI=; b=iIBEJaoUZnMdhiOvnTOoPzX5huPo0CPBjOADfMqTzssVncJNP/JeXsUbJcVYx/pJVY g7QlWnTP+MswsFNdv6r+qN6q2IaDaGnE5zay0m5F2enMJpmAKYlirKkYokAMBW6zeyHz hsIIunsz/p/W/dOcn+2zdRFPxJdJVtKlciVUJKdHq9hLreyHe8lyfjRjT3LSXxFv3Ngl CGAglSnr+Hs/bWeMN0RkSK13gWMA+XZ6Rf//no3YyZi2T8+2QZvFNcmhEkSeArmaJuvM of73MAoD8hl12TiQ0xS31+iccc0IdDKfv5JyplNCbxNI58zR6zTddwyMZd0y1mKsLehG iakA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101603; x=1760706403; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YuKsIKw5s/OEqOqlZsYGM9IcgOL+/aqefHKXe601aPI=; b=Vgf7IzjolYJzl6uJAYlMhQT4jSScUaP68tUuAM9aEktMlhfzmXIhSiNIcLwe6TySXl RV/LaF331Rcu76FniWbgYpYPd7NogbjyKeGp2CHqB13lK6XA/60TCWjIkc1EZOjJ7Z/K MwHTXciCxdzSjEUpha7ryeou20tB6usuJRWK/FVwpl5v4B+8BmU53Q2dFp9lBJNTePfu 7Z8U3XmRXifhwgsLUmlsRdV3P6yBwy0h3Y5cVWnyyYmLDIJIA9kqrAH9q7wQ2mchHh/H MaV2KbKZ+hFuMAzmAKNttD+VNZ6Zy5PvW4rBlHeXt7H6Zk/jFNCeIwcElYKbgDqVe343 Xlcg== X-Gm-Message-State: AOJu0YwglnDgHxeZh8HM5baforACz6bfB02q74517WlQFL9kU/uofjIc N+EUkOH90+7p7y2a5EKFd0jr4vsmRo3xpdomSKa6/DoFBGYL3pXrozihbYcAtHa+1Nn4KZbEgAB ZGNU7 X-Gm-Gg: ASbGncvRzgGV52NaW7sOdnDEEmYMkigFhgld6Mv/VrBwS2evfJ2er7nbp+YSdLpZEzq EWTSqwrXikkdIxPEB9ZAnJLl1FIjgRjpeGqErfEmfK1lBQHgnKBEp0DZWduKma4l0QK8JyVtbJ4 HYK+8vZpUVO99hGJaoMSkzXuRhTZOpFDr05OCwbcVdSr/BFerStOvLIJfBW5Qd9yQD6Nl3Rca8D d62VSPwf3f+vyd4Z4Gk0AIgY3mIj9kuqow5tqnlECYRlUgz/bJS49oYp9gk/oYOXp9BaoVrfFck I8+SKCl7JHQXG/QEfsI8fh0EYV5IwUBQ9iJKYj5Bzwj/2TrWfswJEGilgnkCz3zFCOj4wYqsoEb b4Sr/XQ3u6ksNNMWKF733bbElOwdplzRCnpJHpMIzE99ueXM0HrZeD4tJn6sgXQ== X-Google-Smtp-Source: AGHT+IFa14QNhv/00ju2TiIC/BQ6K1KaQiXudoNkG8bo9C6JhsqDkdhB75Yx1kHFRED+8J6tqiGvXA== X-Received: by 2002:a7b:cc06:0:b0:46e:7dbf:6cc2 with SMTP id 5b1f17b1804b1-46fa296e763mr76260845e9.8.1760101603006; Fri, 10 Oct 2025 06:06:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 66/76] linux-user/aarch64: Implement map_shadow_stack syscall Date: Fri, 10 Oct 2025 14:05:17 +0100 Message-ID: <20251010130527.3921602-67-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102550030154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-67-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- linux-user/syscall.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 47a6b58cf5e..8546f48a05b 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 19:45:21 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=1760102407; cv=none; d=zohomail.com; s=zohoarc; b=L/WR7eIQzLQyze72cxv69xb3krEes/q4svr1Yji+RVfj6IqeyL0DfW3jKLFlCfvLfp07rWB12SX+aSeXgSRLidgLKcVoA0db4B4Ezpmss0HkeFNRYgKUeaDd2KLflhmBcDa3vVMBeaiqj10eiVCPPZ1lYJNhe3jI9cgf9PaCVoQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102407; h=Content-Transfer-Encoding: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:Cc; bh=TF65G3i+OSdDNp3jFlEARrikEV90DADSGLPTxX7n7ks=; b=Z/K1vwptnv/F/qUgeX9q1sNJwISAL//iTUYKz7zhlPNAvvD2lEdr+AQsfc7Ag4177ao1Pes0yiYnFExUzKlNDxgaMDDc8K6SfvRGF3C32LTFYP0U2QuSiguQf/Yi4q2sTUfRXAYqLYhUqp8EAZdbwtx0lKIJ4bFy0LuKUy7qzDo= 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 1760102406972695.0559620293565; Fri, 10 Oct 2025 06:20:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrK-0001Cg-C5; Fri, 10 Oct 2025 09:08: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 1v7Cqj-0007wf-JQ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:01 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1v7Cpe-000431-9X for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:07:56 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3f0308469a4so1246697f8f.0 for ; Fri, 10 Oct 2025 06:06:45 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101604; x=1760706404; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TF65G3i+OSdDNp3jFlEARrikEV90DADSGLPTxX7n7ks=; b=igpnoJaJOssqcfSKqpxCyVeXIIodIuuKrkluHkhnBXS770LUCfsB1+AgwcSvnqPMPP u2iDWr/+lUeIQYGT3Aqoh/pWHFOvhpCGarQLfHGRgFMvIHA0EDsvlI3pSPqdoOaZYWYc fkExgNxV1F/YMXvj6Ys1/TCDevjA8jzDVGnBbGcmti9xWJg/cLaoYpaiYCX+UPbSSYem O0oz4d9SrJ9PEYF4nTr3UrKXFdNK5HPjHl3u6kZLUKvVszjyBCVbXVAm3tAGWEYBvt0m GoT9VevDVwGeTb2bQYJ96gFtOSqRNga0sWDeEY2ZhjBeNfzQBwa8cO2hGkXa69e4Bdwi 2d+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101604; x=1760706404; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TF65G3i+OSdDNp3jFlEARrikEV90DADSGLPTxX7n7ks=; b=edv8HdbSSCB8GJfemJTUY6sjnekVaTWVPA6VeAeTA/H9yegPhblLRQQ0s7WERdt2Cc 53IISJL2p2QC7ttQyWYoIssLQvr5m/045UoE/4ajiDHmlHzpge3OcdxlrZP87nWmHP0F 3BPJSsQjM7q1aZtOGjOoh7vi/Qvg9UEzZlABG2Pwamu6nIqruR6gSVz/sEvcwh1u0TYv B8uBT8FzV6sDg5gPyOaugFzjFsDrjW/F6rbnf5efacngr5e5G5uyj2mW6kIcQoZ3McLD e7Nyw0U2m9xCicW7BrTQDjTNgI34IkFSg5hZVkaU2X7HS3sgQOp2KHSVpONMwsb/sUkl HFGQ== X-Gm-Message-State: AOJu0YxHmsNv+HfXlwoJTZRGLWkMKjMmFKDQgD9JJ1S0jJ0mGSMKv4dm Q+AcryD5HBH+81dI3nrnAJtUmQGedj7yi+ibOH9sqkWgxrGX0Zc4l6lYjIMksL1mAc2i9i3k2uc bgBOO X-Gm-Gg: ASbGncsTm8VlWHFbmPjpweaxncHBAVw8JbjlEakfvwpje3Mcr0KyGfU+BlOcEn8WiYq cA13XLtvI1DuCCf13bbG7X8vUissnWLBSncrZTr3chz6OpWLTJrOH7Hjv1U/+iX16foBO2WVTbR jjT/ev10NjbfLCr+ZledFEIKU55PaiN2Fyb4812o562Wi36Ay3hwWOkhxldXk6u0oeraH6L9Vrn RcCFm4GA1KLfBPOwt9a9tzvkgNIKO/Yev8AfdDiNDakRj3gBoHl0RJW131dTTlgWJ8ck2NN7v2j cHZ8rTKEbnE42BfJYrsC2VO92EjWeoYC5K+PapC3EFb45YutbIvOJvcsF6P2mJiATsqaVdCO1bV hnazOfkpmOaybswmW2eKo6IpFeqV/exvVXe0JakwavSGB8wsTu38fmETJFQNe9w== X-Google-Smtp-Source: AGHT+IHzc5C7YHNwfvFNe62ugdE5V3AYJtmbKEtslRO5AimcP0Uf+Tk7BAKaQ5fxZtHn3CyDlOpAkA== X-Received: by 2002:a05:6000:4313:b0:3e0:c28a:abbb with SMTP id ffacd0b85a97d-42666ac39a2mr7035373f8f.13.1760101604014; Fri, 10 Oct 2025 06:06:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 67/76] target/arm: Enable GCSPR_EL0 for read in user-mode Date: Fri, 10 Oct 2025 14:05:18 +0100 Message-ID: <20251010130527.3921602-68-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102412827158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-68-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index cbb00c3db33..11e7c10cef5 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 19:45:21 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=1760101796; cv=none; d=zohomail.com; s=zohoarc; b=W68IgIFNXGi1Xgd6HX3jY5VBjA8SjM+OOPpabaFpbe1o+Q3Kjl0nVdQXCZ/LTVrJrFQDLaLGhdANx6kUAzkZ3ebS2ox6sgrJgWFplQpULyaPf1QgfGJssGMBTtSrXLGODZCMPaI/ouqb8RVyhrImfg7Po+pLWDZMeheDG44TKeM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101796; h=Content-Transfer-Encoding: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:Cc; bh=Ynx2fDtx9E6pqKZG0s1ynkSbFV8ddwZ/T13r0+dF9Q4=; b=CKI2grqtwnpNkDS1TQDBdTme117fk02faisggSWWjERJcekIeWE5PxW8qV21cidMCqSk27w3gJd5jlYYfFAHSHxfRmRgsRV658gNCBDuMTATuDn3gIvmhGe1g+Dfmyh2DlTMUjimyGfVAT/iHo7uwNcikjpBhRdVq0iXOZIlT4o= 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 1760101796702454.6486897668775; Fri, 10 Oct 2025 06:09:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrN-0001V4-2t; Fri, 10 Oct 2025 09:08: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 1v7Cqq-00088y-37 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:08 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpg-000437-MJ for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:02 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso16073305e9.3 for ; Fri, 10 Oct 2025 06:06:49 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101605; x=1760706405; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Ynx2fDtx9E6pqKZG0s1ynkSbFV8ddwZ/T13r0+dF9Q4=; b=PuviHQeXYWY05SK/YUUwmi0I3eOuKikXT/BW1f5bLIM9s+Q197Oa1gqANjW9IsNG5s SRe+/kWQo1Z8KZgAT+VNioKTHuaD4A8PAyu8AxhFiPWLhR5tOUe9HetZ/9BguToflfjj bl9VP0IADDtGAH7Lkor41ro7st4v6zLCvDWayoftUDfPZGDwuu/o4nPponoqH7S5/oS1 hM+ZDa+dRThfkTfgj8Udn43nOU/rVw2W70uYT/RPzTrATnkc6LXGHsJWAiYjwkqXB5N7 PVLgTUDd+81aEslvLHc+wcNXvSvkxePu6w+3nBuqkeRWn6VPjVdzLdWZR9u5DC8pVxMl KwFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101605; x=1760706405; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ynx2fDtx9E6pqKZG0s1ynkSbFV8ddwZ/T13r0+dF9Q4=; b=v1Kyz/lxo17XD7ED4BPQO55edxSey/AA5mh+o5nHVAFZNn2WY96jYoJaeloKiJFm5U ATXbVubzRdZzPjjIH/a6Mb0NTFLClL+jkeD3IImKxJMJLaUry6wC1fTmv73d6Yf3CPnw 4j7pOOP0ee00kn8Dn+xuQVn4MLRwGd5oCoEUVMuee56NhmbjNKOkk+iQLGkv38p9Ul8Z 1lbm9bK+0NZOVX035iZe/q5G1D00ph5pv8+1/MFhOISS5fQSm/dmkdXPlllNhhe7g2Al 8JycgTdeaIUY3hmJthvQ1s1CdY8/apC0C+ev6pOLM07ORf+c9Gg51dVpzvQHNwCsxwHB tWgQ== X-Gm-Message-State: AOJu0YylcW4m454Do7eMTAZ2EtM24LliGcskh1jeqrUk3L1t3NrMdQkh wtmJGo4gGqLg/YUbSkNLyaqYs2Ra8uZBuEAjkWBwHfJ95i3RrVAW6b4CLIXuCLsyoNXWXntLJly 9mkBG X-Gm-Gg: ASbGncvTx6QAFaUz8V3i9Dn/cYkO1wJyT4qyupp7ktmgj9PVoanbvjRCZxbNxmxs6U2 gGvRndxEI+tL06x6ehaUtYRw09TDCNdswxxUUefQQ6X9rCMDug0sg4nqHbrIBaIG83KGEO6ANZZ RgrsC3FoCnITphQLIaXjTOWuOWDuY4o7tczad+Rq+3yb8abX68fFXKAB0jghdhvBHEmPCj99Dau WnwBkhpJ0Nakf+VnPpEg2SU7YTsj/lxUrNQEeFZLpOP2EL7tkpgpY8cu+d0ElpSs28F0i0nJ7+F 98pW5z5d+Jec7NzUcNTn3MtvtunyOF2jBDjjjGQn9iJeVKiMQzaZShAEia19qx90pVwiCuLW5OD /KQvvZ8BIM4Vb/7+2QtJoJNyNSSvbV1iAvtVfG4Iia4wrdqRCiHT2opFR2nZeSQ== X-Google-Smtp-Source: AGHT+IEKI94yAZIO4W7RoBpW12x4Qw1pD/w4XQbw3IG944Ho7vky0HIGmjb9vz/N3Dxm7xbtobPePw== X-Received: by 2002:a05:600c:a43:b0:46f:b32e:5094 with SMTP id 5b1f17b1804b1-46fb32e50fcmr46660415e9.32.1760101604983; Fri, 10 Oct 2025 06:06:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 68/76] linux-user/aarch64: Inject SIGSEGV for GCS faults Date: Fri, 10 Oct 2025 14:05:19 +0100 Message-ID: <20251010130527.3921602-69-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1760101798938158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-69-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 6f66a50bfd2..e509ac10327 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 50a4c99535d..7f66a879ea9 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 19:45:21 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=1760102814; cv=none; d=zohomail.com; s=zohoarc; b=cmtGrqjRareoDMf1fgMJcTtqgwvbbuK1NMP2bFToFLTYNk2AwbMhYAFhyrqydRKMvTMf2+XKPp0J4ALDmNcA9kXQbZFezgAZ+Y32vdDUJjGpZCkeq0VEgfBtP5AsuI7yaifJuKh1049+znuFp6+fbi5r1AaarAAXiMdvK4SGQCE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102814; h=Content-Transfer-Encoding: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:Cc; bh=j0iNpEPyOXoxR+HD7jDgER++00Zbwcp5HlXjOGIfHEU=; b=P+vE6Fq30OV9VF1ZopsvUDehRH+YKDAB5Kf9+Zhr6UEBdQpk0BW3NBiXOTyFdJNYLfaBr8orYN7qNvaP7jj5L478U1FHGw0Ljd/3HL8Ccz4VERs12YDgujejApND2nfuAAn4QMQerdjCo6UmQEW0Izyqqpny8l3tCkJkWNum7ns= 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 17601028142631017.5153888983289; Fri, 10 Oct 2025 06:26:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrP-0001Vn-PM; Fri, 10 Oct 2025 09:08: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 1v7Cqs-000898-Bt for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:08 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1v7Cpf-00043T-Rp for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:05 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3ee15b5435bso1246604f8f.0 for ; Fri, 10 Oct 2025 06:06:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101606; x=1760706406; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=j0iNpEPyOXoxR+HD7jDgER++00Zbwcp5HlXjOGIfHEU=; b=iBBjw/HTOpymW8i9dXCoiHNpdYOu9UkNHnYEejd8HDvCgRfkJfOmFZ4mEcsqVj8+Tf oAt+jDeExpcvTDdu760Lfsn02BNvbVoBjbGv8wtmvFZKy3izrfdOsmLQJW4tJoSOEFLL SKNf70Lv6UXKKuEZ0XjW6c4pl/A7qhdfeqI62Gl8ntlEJpY8H6hj1eCLi/IgLwGrZqeh hKZt5Udt3SzCRohd1qTLOXI8bvcjvNsk4/gasNexPbRUXT+dgHxFsBIg771SDlN7Xs7r hDeYkzYtEeOWV33pItrTPpyGOj/eR4uwvNTWOIZn5EfLODTbLgQGVMLjyWhY1U/n2b2d gxbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101606; x=1760706406; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j0iNpEPyOXoxR+HD7jDgER++00Zbwcp5HlXjOGIfHEU=; b=wyzLqea4v/8fksPddyoJz1APzUb7fsrgUvt4H2u0/j4mtdbbUxOXspg2OjRJjPYACX 3KtdJ+pwdw7A8ylL3JbmD4TwzM0V34tvH7QJ7KkKl/iwM8585/hH9BYOOLGAMDXOstfN qbE5EfUQ3XKWteBfheXT7w7NrGIzz78ZRCQB9SnFPDr2HfLMoRYTvQOpppnNeBtV78ld GQgo2CL5FfULvz1dwrFzXvf2FvOVqB01PQoHvCPRrGyuRmNRxLRTfZZ6qAhLRvUTOps9 J6vUWQEYICr0QB3FLsxJQLt6D0XY/4yxLSnpLiISBQWMb+eM4Ih1nCCZdkDPeN63G4Rl 3L7g== X-Gm-Message-State: AOJu0Ywo2tkRbHUdvZaCKJRxxN64ZQ/PfnZZJrscfgRqRCgPSlnoAq5+ LnqKmWzXHQfQwxNaxdj9yYodqC4+XgBF24NOZVYLmQsTURPFzCKqtYhJDvyj9caxf0gYgrVQPjW FtQIl X-Gm-Gg: ASbGnctMohOkU+qCc6q8SNQMztAzwuzPUI5aaduOa/anYIi447ZGEbtFylOf/W++hBa WD/EMqtfacI7VVuHYw5x5YsQKgBwqaNgmeJY1dNwlNs7WCuR/CRrXxU+eO35Ah7ZzJVi5HJyOv9 VD18lcwX/Hkl63/CnXvqkXvIQxtALNHEhMOADSsJt0A6BJa6Ubf3IAKSO7J3PdUiyTz8xmcai2D wikxpaJ1hYyLL7FTVUUd5OlQt22swOQbRa7Zdi0xVOEi2gZiIVXcUgmysCrvH5k2TKYTipJbrJT sc1zMd3iRGhhbnuuLu9I3s1GKSd75ZN5DCeRGWeCERpGc1j7Z1h3HfYzYF8eF60xTrntI8qjAmB Xe2WZPw3K8G+ro1vwMqnNWEL0wv5XhlmDurFSAr7fN23pSapebnM= X-Google-Smtp-Source: AGHT+IHouSz6WizVy+7+iM0oXDtlpmujPA+EG7ZiKu0LB1y3O8T9A5WHtKMRDFv78HqVYJUJyqUh9g== X-Received: by 2002:a05:6000:2305:b0:3e9:9f7f:6c36 with SMTP id ffacd0b85a97d-4266e8db5f6mr6843595f8f.54.1760101605967; Fri, 10 Oct 2025 06:06:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 69/76] linux-user/aarch64: Generate GCS signal records Date: Fri, 10 Oct 2025 14:05:20 +0100 Message-ID: <20251010130527.3921602-70-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102815276154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20251008215613.300150-70-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 ef97be3ac7b..f7edfa249e5 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 19:45:21 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=1760102605; cv=none; d=zohomail.com; s=zohoarc; b=KulA/N/DEPTEHguM1KOle9FLACVyVga7j3ztnNfIzYRgJ7sEucbZXwcXJEhDBKeb0N2M9ZUI0ayxb8oa0JpfemOXpNBkGj8C8dJTZOi9iblhVMm0moVJzZFYEJtZ2gEmrZ3aJKm1eavS6TXxiXmTgD7LFF6orVtg4wQpqMzFwJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102605; h=Content-Transfer-Encoding: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:Cc; bh=LXs34KJz9YZyMhNNvOy+mAan3oEW4KEdhxsyD9C4Yc4=; b=VO9Ury8E0LxO5rBUldWwtw3J4g4YeDYlQ8+DcPPjjNbaCsf+mLsLX0q+QFarA/uhJPHXb+yAxTED1Dm32hM/cnp2gBsnUeYp9ioNzeB/hQb1w1E8c9grPJQuKOvTCfyT7MyGNZ1bqYsAAH7FJ6FvEWeA7u4blN+bcFvkgTh1DQU= 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 1760102605710681.8111395984957; Fri, 10 Oct 2025 06:23:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrL-0001Qw-HF; Fri, 10 Oct 2025 09:08: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 1v7Cqp-00088t-8P for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:06 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1v7Cph-00043b-Kc for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:02 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3ee15b5435bso1246616f8f.0 for ; Fri, 10 Oct 2025 06:06:50 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101607; x=1760706407; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LXs34KJz9YZyMhNNvOy+mAan3oEW4KEdhxsyD9C4Yc4=; b=GwndynbkNn73bZ6tyLxKTplt2du7Da/ziN/tZ/tg5xVV8I98H4s0b8sAI4xsLr03kw /Fw1yTg8K4hN2R8uiWpgy2JrKyHWctS7ZBQUaOCTh7dOdWp2G8dkJaVaeBgZ2DTXNm1R hgZLCUvMLr9zE1r1HKhVkcabxIXPU3u0HLfTJGFSEu+4i/IqGeAp7rNkTkIO2Baa2y+l XLC029yzncTgtEa9hC4bttw1mA8tGEqU51x3ip8YftZNEhtnulpE9zLvAByksf2Gh50i tdoSeVd+YRAivkCx981Q/wXFa3HsxNus6FfoZVHShYFpyoRISo3UglmgR0nln/O2F3+B 5nJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101607; x=1760706407; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LXs34KJz9YZyMhNNvOy+mAan3oEW4KEdhxsyD9C4Yc4=; b=BzVlcoVXl9djoprjm1hII+ehLTMNCvNDPmRlbrhJFKElZoi1p8wZb15fe+v1r7W1BI c/eAbI/pMN959abDPLwhD/UZC9yKnzAPelR03v/nu76w6xPVk28CFnqXzHUux2AcY8SL ib7QZbVVZG5FyjNCbujmGUufAa3ANANMEuPMYI4IhCQmrXl4VC/bmTV+ZM1MGEUzmsaX BL7IWPiRoEptzjVxCKHqium+fVrFCNqpceri2gAGCnnjk5nY1EHJSjKWcCR0Kn8jPIfc 53xJbheKfdNHjchuJY5uhILPxe94K8MkEM8leTLc/eqG8lHYlfXTz9/x4XIDZy06DNtC kQrQ== X-Gm-Message-State: AOJu0YwlyYMdrrRl3e1jqkQCC606+aq35HQE51M7r66S/NMHfHd+2OxQ CZKdYl7CpdFCUKgayyXe2kK9liHrRO8f1tOLObNg9aD7/HDXiQ86LoJ15nhSJimmAM8b/stO593 S4Cbc X-Gm-Gg: ASbGnctN2Zzb8wA5MGLtfWRILRGv1oeUBLoxR0zo5TYVZ8G5oLXhHZCBTAuGNogWcNm iQc7zUmKgGpWmU8DzYbUTlFQSmTLxBVnnu7TKOtoz0kXDwykyHKLI99In/bjjkUqdahWHWD6HQZ mAhDYBvwX4JPxQqscn+wEEh4DVFPy7lOPlSAW7KUKh9HrFOxDcOzMdugcf/TaTcWQ8fgr/hZQq2 YzMIXs/a8lGhJJpKNc2arhFeQqWkGeeWyTjAfIn3tTuvQtKSKWMM0LeUtsHWEtyg470UthNXy8V bp+6GN1J8pDSQDn60QktbFu7skgK3VMFfqMQ5Blu2oExycSbvOMP4rVv3vd0clda0/8wuXAxLd/ Xi1E61pZNhXhWzR4ZvoJr3dlScaAsZbuU1M7LXhDLPCGN3SvGcmmV2E4tL685VA== X-Google-Smtp-Source: AGHT+IGODAukz8Akauy5PWiBgnhRNTuG0ygK0ufgpIOPcJxzjMOhFLztp5MekycWr7Ta/s3vLRE6Yw== X-Received: by 2002:a05:6000:26c9:b0:411:3c14:3aa1 with SMTP id ffacd0b85a97d-42666abb42cmr7326719f8f.3.1760101606946; Fri, 10 Oct 2025 06:06:46 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 70/76] linux-user/aarch64: Enable GCS in HWCAP Date: Fri, 10 Oct 2025 14:05:21 +0100 Message-ID: <20251010130527.3921602-71-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1760102606498154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-71-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 77d03b50e1b..3af5a377761 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 19:45:21 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=1760102688; cv=none; d=zohomail.com; s=zohoarc; b=GrkoUkU0W2sZwFlxFYwFeyzXf/R7Qj3NDa7cgucwkj8sFJvd1QMqVnnGG2cD6jXeXixO82mew+6Hsk7H6vfioAiX7HFJHbe8SqX9sLv9++TNuxMFXLrDrb7eKXgSQpJAwUTS6ndne4WNtuCMI5mvkOuW+KWpnJPC2lvX+TE4xBQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102688; h=Content-Transfer-Encoding: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:Cc; bh=3+Uyipy5WYcfFoRYRBjLlCVzYQeAzJFqsqmDid0vZ3g=; b=Ml/oO5d0GMnfcVN0j0OSf9bYo+4iHJi5Tj/VQxPKaWk99fhBuohb9JWpEGe3r4EO5kMrp/Pr8Tirdjgiq7bDllBkpe9mOXupCnfNEYG87Z3AHP20qYUR5AuJCIOE/WDG20b0xADfzwEtixkjzAhL9Alc/XEbNBEkwdEKdTSXPeY= 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 1760102688628728.3949585370792; Fri, 10 Oct 2025 06:24:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrK-0001JS-KG; Fri, 10 Oct 2025 09:08: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 1v7Cqn-00088X-OK for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:06 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cph-00043n-Ke for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:01 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso2102405f8f.1 for ; Fri, 10 Oct 2025 06:06:50 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101608; x=1760706408; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=3+Uyipy5WYcfFoRYRBjLlCVzYQeAzJFqsqmDid0vZ3g=; b=DN6E3Z/ZZw8Uj1gosFjkvifNPyWVvv1ggL4N192aSSUjufwvIBIEPZgsY7TpNn73OF MPe9rDio/7+G4+GvcIu59qzac68X4OaJfGrzkweqB/j91K7uA+hnAELc9Fsj8E24fJvW suqJ11K+wMpH2dTvpRLBrYn9reSMqDoVUPSf3ESHPbhEMyGokl+NcNdvhUYoe3Vz74Qp bhDam3iFIjUYGvJQG3UxYt9n9ZzMYOfQbsFf45Y4hOMf6EPjhnM68PY2g520RrorW+Z2 53MtbJTMhe9wAhxTuVJuG/qchbAFvDGCsw7PP3pC4HJGwkT+cJ/Ma7mGkj/GiWc4GR0N +51w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101608; x=1760706408; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3+Uyipy5WYcfFoRYRBjLlCVzYQeAzJFqsqmDid0vZ3g=; b=lnOalxtVXTwUWrcfAqLlA7NN6//snEfW6JS6LnGXjQiQ+0hgStPSyaR+qEHwYVYUsJ 3m6ZpqlYHnHUSEPlrghvmEqSSXpytg0zjSpxj/lNzzIDWK+fjZzCyHQKE0WNui3ARhvv oNdeRWvnZ2ZKTUO188XfQeLo2XWUzKWORJnBB15GUK53j0kaAnQ5iuxpI9i5EWdBKJGS tAdYmbhqHSO1/khlpwPSfxJft6rAxmrOEh8NS0HJF7HHYuuYuTdRBO/6ymcom3qJl6yf 8+VbXR13izIYRstjDljsPPY3+w080KR4Sl7AqKVXFSdOFYo1TMtijSD8roiDgbKyd+EO wLqQ== X-Gm-Message-State: AOJu0YwAh/dEe0/9pKzjuQClt5S3pHGuoNBUetilllU0G2Lo08kj6h7m h4/9aUcl4tpgjIzkgwfx0aQ6/u29wfRZqYnnsc+jY7gM97hX9QiY1jl643+i4tmf/FVydocHcUd Oqlao X-Gm-Gg: ASbGncv8gUsvjtW0eh861zPgB5fLOKJKjU0wkeAiQvxLy9LcutQ6r45Ct4ttivap5cl SrZXVj/npFqjYQWO9UIMakC4G376/meogK7Uxrgcxc4viNb9ST70iazRWICyquJ7Vot+bAjWQMX jmr1ojXo7bV+Qbj8SpQ663dVZcvU6ayVIbcu+xTocYMf+LJzqhijlEjy5cZ8iLw9ZXauf9COxcQ clQyQAB7KaaiWwWTRcxxvS70H2jQO62rQWghN4ohtV5KORxekvaGI5TSl+kb5ywyKDGZSl1Fihc zhfbe0MqvJAu4UiYi8FR9VZRx5hh0fvKhiV4kuy6oQN60iR02ZJINl0cV1K2dhlupDZuLMyMor/ z3mrxtfF9/L/7PUnR87yr2mYxyeZGJZG8Q2erztt/UML2j3rOZ0Z9M7XUrA1Wnw== X-Google-Smtp-Source: AGHT+IGdQOhAdYcUs0e1MDJZd7qHFE1wtsvVY1q0B3gvEGOwqxinBXq1Nd3arslnYORuGdupIy1Kkg== X-Received: by 2002:a05:6000:26c9:b0:425:74e1:25f7 with SMTP id ffacd0b85a97d-4266e8e6d0amr7465295f8f.62.1760101607912; Fri, 10 Oct 2025 06:06:47 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 71/76] tests/tcg/aarch64: Add gcsstr Date: Fri, 10 Oct 2025 14:05:22 +0100 Message-ID: <20251010130527.3921602-72-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1760102691572154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Add some infrastructure for testing gcs in userspace. Validate successful and trapped executions of GCSSTR. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-72-richard.henderson@linaro.org [PMM: fixed hardcoded tabs] Signed-off-by: Peter Maydell --- 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 00000000000..770cde6a85a --- /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 00000000000..b045aee9251 --- /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 1755874beed..5e1b3a33851 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 19:45:21 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=1760102319; cv=none; d=zohomail.com; s=zohoarc; b=fBsU9QgCGFQ7Z9rg+hB2h48E2uNXCM7aHMwt51ifJlvekSgOoDjV7sX/p0Gd8IXdc1TgOCy67W4URdGLvC9YiwaPJYzbMkhhgyrjqq+lEWLGIJ+CMYs0h9OrMESPLbWrV5R3f3WJZ7IpHOxvWh1+BaO2R62uWjUhwblo8V2t6sw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102319; h=Content-Transfer-Encoding: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:Cc; bh=6v6hOcOHDggmkiaDV77PZmhbEfhoJVgBwmXFKtv68nQ=; b=h4eunMDIcjtTPbqkidG8jh0dEfPStoKofY94u75tOHQ4ZWmGVrp/RE42ITUr3mKy+1GRSsfRv/QBYkDmDo5OvscY1kWyKWaeyGU08sO8IjrgWJRJa2zan/l9Jp7iyQaj9swgNG0pp229BiyjYR24GlYIYo2sPaT1MUp6g0K0ZXo= 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 1760102319839912.0898864304309; Fri, 10 Oct 2025 06:18:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrI-00015q-Ax; Fri, 10 Oct 2025 09:08: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 1v7Cqu-00089e-Ef for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:09 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1v7Cpk-000443-9Y for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:07 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3c68ac7e18aso1426261f8f.2 for ; Fri, 10 Oct 2025 06:06:50 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101609; x=1760706409; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6v6hOcOHDggmkiaDV77PZmhbEfhoJVgBwmXFKtv68nQ=; b=OH+YgjYPxrw26v1jY27VxOvUOqQ9tifb5S5+mfS46Z/iRgsLSYmabKOKrKrLrZckO6 Wfhz/XCpafHf+hawO7bzoWxz1C1qxr+9tAh/ogiC/aNPY2Ojxw0W8Ilbvk9bOV82ij9N KXiNby8Lo3cTvHML+YXOZqKdWu+eeZ8j43n4Le9B/6uJZ+lc3i/z5sv7iw6etlaU1gjx uZa4+MOodoUmy7IS6TcuQFynoSDCfMPaegAkEpUD7mNyUUjuDeLRvUrnWuckdOCQlDlj JEmggbM8FEgWVBcx4rKsUVuMcPp+2mAwNvyviM2cZJBbhWhBWuV0/OZp/u6JfYPx6RGj 0MMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101609; x=1760706409; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6v6hOcOHDggmkiaDV77PZmhbEfhoJVgBwmXFKtv68nQ=; b=ZrXWwTIz8bdA6LcaHGCMapZY/q5LdL9HsOrQ0OIIEuaPrLsFfgLqbvVM3BdARMyhS3 DPgpf+F3dhxk0BXctsjkHne3IR00ymZ0+ibINcd4Th189jUylDBq5XbBszeiwtid4iWn gaeJ1VJzE/C8TFdn0Srf4yGhhQHMKsltxxCU5KfdFDNm6h3QCCPD1KdzVCsa83iCjSWR NmMdVaFNwE/mngyPrINUmv+0nxGMCoIeU6ziQe0Rd8ftmybjSxTtN8GH3gOTIz4YkxP5 FmKvITPERgxPBlbqfDd198oHVcAbAzE86b7JYjjZ6fZTMTFAfT/gyF+DYrb6upfTjC/V uigw== X-Gm-Message-State: AOJu0YwHZmUPInDrAraK+xolMhgCroSPDwtwerj3b81HMu7TWQlxJ1Hu fx11tuZEM1J/OGLTCYwLMEL2LW5oFBdMQTekFzOMwroJ3vNC2Rn5HN2kTqXRB1qfIefgaIh7s06 XwxfX X-Gm-Gg: ASbGncsBN3NwlOBH9J/F1u4zhgjGk59cx8uqxem5w44ql7IkKi/DhSBLUY+O9XebheQ q7tPWyBJHUrQ6d9Z9Q6dcS02G3T0IFJU9WyEct4BkWHf8qQgjl4FGNzlC3DMB+GiCbn1e0DAHWr u5dexW3oCpEfPuPagPY58bM1kl6che8Bz7H5clFcubFI2CNH77DpkkuX5AJkGGeQT7hcsypDP7D LIws3NV2vegckMaieXBX94/2edaGPRbdY7BADQjqiRujzKCR9qwn3oLv1xxS6rU+Hzpj9weP5NN 5my3N1b3S9wYf5zJMoWOTX8IGgTRJkFpeLeVBW4UFZ8wlSiCi2FcpLYSf8dNzj7an6LShZN5lle 2JxZdwSVT1CPNz6BahcCi22fBfQx0pqCPvnRpgkLoHMPdvNR1pUg= X-Google-Smtp-Source: AGHT+IEdVPTQMAbnYwenkKRHs8WtHIFJzPInRcpcOQ7mqtrwCLc5uty3xPx5w+7k/HkA11zIHe+40A== X-Received: by 2002:a5d:64c3:0:b0:3e7:4197:c99d with SMTP id ffacd0b85a97d-42667363e76mr7236930f8f.15.1760101608965; Fri, 10 Oct 2025 06:06:48 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 72/76] tests/tcg/aarch64: Add gcspushm Date: Fri, 10 Oct 2025 14:05:23 +0100 Message-ID: <20251010130527.3921602-73-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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=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: 1760102321687158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Validate successful and trapped executions of GCSPUSHM, GCSPOPM. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-73-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 00000000000..c330417a2fa --- /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 5e1b3a33851..fddb7bc9cdc 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 19:45:21 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=1760101800; cv=none; d=zohomail.com; s=zohoarc; b=PFABnji/ZFcaTHBa/xCVvPZ0OvwLJPy/UjCjsu3OgtxnZlR3476ed0XKLc0SlImZUQ1UII1GYVpBEP5M7PetxboCRALJ61GEuq6JP/rLAQQx6H4+SYscj+sdT5Y1re1UVfnLk5iov++04wUzrcpLyDlVXl7thfVyeTaHc1FvehY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101800; h=Content-Transfer-Encoding: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:Cc; bh=iDU1xy3z9pv7QWtUV0PajmdrAHQUAe2qx4ObhYEQ1ZU=; b=EFcJCTdGVMGZ5CQozODGq85eosJZy2OBe3hF5WVOv2DxjVU2mAiYBBvu+DbkhXw1KZqfu9c1GVF3IeMlTnRiTSQZedU1TbFk3YtT5Ftxj4qECpwU5Vf93qj97Mnl9y9heZcqSBitptfgWEqZkub7hgs/2hFpQLMCMI0Gq2n7rHY= 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 1760101800963450.2118748745512; Fri, 10 Oct 2025 06: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 1v7CrF-0000Yt-RW; Fri, 10 Oct 2025 09:08: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 1v7Cqt-00089Z-67 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:08 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1v7Cpj-00044O-QE for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:05 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-421851bca51so1275487f8f.1 for ; Fri, 10 Oct 2025 06:06:52 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101610; x=1760706410; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iDU1xy3z9pv7QWtUV0PajmdrAHQUAe2qx4ObhYEQ1ZU=; b=Qoltn6nOozclJivXOM1B0n8DoagBQN42NNngjJW7bYgP7i4aJ70po68AXHXS8UwVMe iDaxlEkeu0fcP/i1tBYrL6582jfIKHmXokvVajnZfOlfw6Fdv638Gn6pVrDWf4zsz5Vn /DqoF7gwpLbDA98fnvEmhiFWCZqhEGPIe8hppDqlEwG/BFoBHKBF1ymClST6M67n2X25 aCl+Cp67YLF1i7iHi4RsER3uV8UIYXSINykfL7sF1kFzhafIAc3F2H9iME2L3TfsTDlH Kvv9C/8XWVBSb8LQm8+Ko+NfFWvlFM68qoW6chMbAIP1YHJUTM9aLjrSYZai6jCyMs56 wKWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101610; x=1760706410; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iDU1xy3z9pv7QWtUV0PajmdrAHQUAe2qx4ObhYEQ1ZU=; b=nW6y0wf1hjwRG91rqW1Ra2PgmcLSSWqwNaT1rD3joIovNCuAyMNWi8X0lk2cI+Qsh1 T8AZX8ucyFklOnAyhDfRAUrYRsj8QQnk8BYRYPlxYJl6VjXlG8t63GH+uViqVo5seBOm s2CuDSaTEMMnCtbizKzIKFzolUrP2ANqa1WEBbxJta0qYf5zo9W1N5Qka0cQj1b8ChT+ mPV6YOQyqqy5TZexQCySeiZaV2BWxLPy99uykbQqF7qlO0WqvlsR+VE58Sr5vRTnfmIM 6iTJedRgbn0z/hVZUTrSCS3Ptah4+wwHCuCciJk/MuDlLGlpvtU7iitEYE5bzSX3zQ20 WzVg== X-Gm-Message-State: AOJu0YwgjrFdKFBVLbff0MBFSTLKUicwj5rRsbf7/pBa8mfEH/fIpvP8 v0OcbWnYbW5ZLvRHUUMGls/AVwDc2SjWrGH0m/nXZ19ugv1oZIipLO4aMbeHaEPTFuodJddW8L6 Il+JV X-Gm-Gg: ASbGncssyKee3t84U+Z6YTe0NNiYPP+jviNUMwX0i3knxwXlfZldF6w5Y4Iht12o3Ap wJf+pwJ8mbdIOu5wqyMzad1sTElHM27w06QKrwp/+q3o4k5kkPD2voYJNHGoN25j7oZcyWrYKT5 8G8N4QjEiim9FOAMxjQOG4C2S20uAdtpxFnBcTgEpB6Y8XSMwUzzNcrPLyexm3Qx8WNjjVu0hE4 FEU+hnL5vk24BSrm4YOQM5f1Pf6POMMcwlgSO/hqhzDxSzmQDagx2J/vlpj4vNvBtWlXCgJZ+ob D6vcWhtvpUGzqCsoPHW29+w33T6XU8g/Q1v80YL0dVFZU9kNZK94RISJ51PajCJg01FuwZhrbXB P0zibi5ZTnmFTx28aK3dpvR7S7KzNB/rSDx4Ux5qbNBgt+elHx5DPkq6kcPJaJA== X-Google-Smtp-Source: AGHT+IEKFLzxAcOwXRd1KKHBYTqFvVgxrASmkZyrxr+jY21wQrXZ/JicWeU132YsP0PboPM5k7mALQ== X-Received: by 2002:a05:6000:178a:b0:3da:d015:bf84 with SMTP id ffacd0b85a97d-42666ac72e7mr7470435f8f.25.1760101609876; Fri, 10 Oct 2025 06:06:49 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 73/76] tests/tcg/aarch64: Add gcsss Date: Fri, 10 Oct 2025 14:05:24 +0100 Message-ID: <20251010130527.3921602-74-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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, 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: 1760101802320154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Validate stack switching and recursion depth. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-id: 20251008215613.300150-74-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 770cde6a85a..6f013d0f1e0 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 00000000000..9550c68e7e7 --- /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 fddb7bc9cdc..55ce34e45ee 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 From nobody Fri Nov 14 19:45:21 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=1760102772; cv=none; d=zohomail.com; s=zohoarc; b=mdAX9EDtBRodq8vpAfOJKe1DjJYNZI8KLjZHXQEMwwvaJysZ6wIuSfq9V5GTHzpZ5CXkw77rGeIar+srLHbTFsn00YJn+ZhwYdd7mF+z4gIRLkg1+2r1dniEQH6y1Bb1rQFHT0FyP6q2RBbNj9LIKwqJDiNaAtZHtTOMd1cDrY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102772; h=Content-Transfer-Encoding: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:Cc; bh=EAmIkQfE9xLbeSqqtF2jX59gL8K6xolNz4VmTIBL0lA=; b=gcvg27gjBPHeZIDWFLdAhX4QOmqrja/Zc2GYnmCm2OBZcxspYfxmo1EQx4QqqGqypd2gx3NoIn5q3/53pzywjevJO/xLDZtMSt7rcI3+bJcKyU15n0F/13HoYTRM+6WXLpKCyr1xSrGWDJwBC1VrF8mAylQDcvGKX0neEmxfEy4= 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 1760102772375386.0132244165304; Fri, 10 Oct 2025 06:26:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrH-00013F-Il; Fri, 10 Oct 2025 09:08:31 -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 1v7Cqy-0008Ac-Jl for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:14 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpm-00044d-U2 for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:11 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-46e42deffa8so18568105e9.0 for ; Fri, 10 Oct 2025 06:06:53 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101611; x=1760706411; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=EAmIkQfE9xLbeSqqtF2jX59gL8K6xolNz4VmTIBL0lA=; b=NEUtH23m2TuRR8JYaY/5zColV2YuRSA2+EhgbChlYxwLZzAwKrMIfJByx9ydrRTgek dLsaVlS+MLgiT8S72T+A5hxgcg9mE/BJiPhyqeZJsT1ffNGrF11ZglpQfZyxGn3k0tbu PLvXqgPcZVhngH4bwRPThRTTWTLE9nzonflAD0oMJJs8wRuxekEOTpEgGoN81guR8VSo Fos8jR7UyX8781U50WsfD6dXVYjSSpcOhL25d3CxmrBSeTm7uEyRKnqVFF5T3+EodsHy qBWv2qx5s4YwACH4HsH4ujq/pDQ/HLPd1B+3cZ+/O0jwhArNc/v1rHtMd0tzc08jxwrG vfPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101611; x=1760706411; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EAmIkQfE9xLbeSqqtF2jX59gL8K6xolNz4VmTIBL0lA=; b=uWJtcT1c4URp1QXYDCbpbB12CA1uwRRnuIzG886cVqRQWxC/7BsCXuMk4RGzO2y3ys HXmRYeiP9LmUt/2oCe6s+5muzlur924lxcUIKPdzUqTojAJHZbhIj3nvz11JpCqgZZG9 oHJTcF9MSfncJm7zyViHk+vxZaa9y1hNMX12fqYJ6pJKjGjciruba9ntYeOvPszVHU7+ HpQpcd6a7OCa52zblzvBhASP9u4khMfhFsaNBnDmFsChuKT9TAR/J5dTe7wPQvNT1gYp lauxN7TCyHsgL/ArERTkiFAk5JP4zQrySgBb6dEsE4t/uFnq7I7Ln1h62N3yc/b2YxI8 LhSw== X-Gm-Message-State: AOJu0YykhpIp2nd9KhDl0E+cnt8ZcmSDB9dcRScS+Rp6t9wrCMB1qkpn Hmr08VswQy+V1xw1k5NbQtIiFcH9YVzJ3MfL2WFx4NhRkENGZKi5W8r5q+0jep3sjVCjFl7Dvs3 LS2Mv X-Gm-Gg: ASbGncut2tjehKiBWaakbL00COSOxh1TmGmQh+LEaHa3DWpQtzoz1TDF/PgO6Zwew8A KlY0n0oDhFZyTR/CMKuB2DZG8XH4GvWVjwaVRLIz7Z8HKja9svAIKuGZObFJcbYg9qqZkMq+8YC Tf7apwiSyp3JR8tc1SkxGU0AkvGcr3n0aOIn3cQJ6d1wSW4oGe8jD4FSpXEDWF9EaSkYmILA+8j K5/sAR+2FjM0OXkwudAA4AVFLJrAh3rF1+lTS7NpnUrJxeVCedkIQKakwukEmQN4KDnAUugQM2Q qJO/g/HOKUGduffkbCEWxdo3hGBWCAo80Z/2h1BiVNcW6P13I+qGOtN/LvMA/z5c9KpQGNsN8zr DbtgiuC1uMJ+GfTWudXxhGCa/6SGQtzDoZdtQDU0TQ8WlQ3Rbv2/TyP5FjVMBCQ== X-Google-Smtp-Source: AGHT+IE22fBCJh/a6L7VLjwWNxtWKCD7fAylnAuU34zsxApNv0RP3hNuLjMZXbMMjM4tNwgkaNvh6A== X-Received: by 2002:a05:6000:400f:b0:425:74bb:7c4d with SMTP id ffacd0b85a97d-4266e8e68a5mr8049876f8f.61.1760101610872; Fri, 10 Oct 2025 06:06:50 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 74/76] target/arm: Add a cpreg flag to indicate no trap in NV Date: Fri, 10 Oct 2025 14:05:25 +0100 Message-ID: <20251010130527.3921602-75-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102773357158500 Content-Type: text/plain; charset="utf-8" From: Gustavo Romero Add a new flag, ARM_CP_NV_NO_TRAP, to indicate that a CP register, even though it has opc1 =3D=3D 4 or 5, does not trap when nested virtualization is enabled (FEAT_NV/FEAT_NV2). Signed-off-by: Gustavo Romero Message-id: 20251006001018.219756-2-gustavo.romero@linaro.org [PMM: tweaked comment text] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpregs.h | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 732c07506d9..763de5e051c 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -144,6 +144,11 @@ enum { * identically to the normal one, other than FGT trapping handling.) */ ARM_CP_ADD_TLBI_NXS =3D 1 << 21, + /* + * Flag: even though this sysreg has opc1 =3D=3D 4 or 5, it + * should not trap to EL2 when HCR_EL2.NV is set. + */ + ARM_CP_NV_NO_TRAP =3D 1 << 22, }; =20 /* @@ -1178,12 +1183,17 @@ static inline bool arm_cpreg_traps_in_nv(const ARMC= PRegInfo *ri) * fragile to future new sysregs, but this seems the least likely * to break. * - * In particular, note that the released sysreg XML defines that - * the FEAT_MEC sysregs and instructions do not follow this FEAT_NV - * trapping rule, so we will need to add an ARM_CP_* flag to indicate - * "register does not trap on NV" to handle those if/when we implement - * FEAT_MEC. + * In particular, note that the FEAT_MEC sysregs and instructions + * are exceptions to this trapping rule, so they are marked as + * ARM_CP_NV_NO_TRAP to indicate that they should not be trapped + * to EL2. (They are an exception because the FEAT_MEC sysregs UNDEF + * unless in Realm, and Realm is not expected to be virtualized.) */ + + if (ri->type & ARM_CP_NV_NO_TRAP) { + return false; + } + return ri->opc1 =3D=3D 4 || ri->opc1 =3D=3D 5; } =20 --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760101848; cv=none; d=zohomail.com; s=zohoarc; b=Y6ybdFoz9YCJ8RylxmTmONBk9mpGgv9CUFskijZN65lUQjItssvuaS1wZC0s/MWE0BMpkEVaZ9smKsjfNp81PIEuK0cu7ou1F2o1GOCFdVUjvnZHFSlLZEzwiznTJh3R++JInrqAYYSlXGw13ZWB1d6tREyMe2bMQqLT6+teaNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760101848; h=Content-Transfer-Encoding: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:Cc; bh=CySS8o7/PAaqrW7b+4aD5vDzSAed8+ObrtbkMoyyDPs=; b=akMujKJRmO7c2vdd22IRQcXI5OYmuWPEOKXsn1C3v89ILycQdne0WtomAwpp/RVZ4ma8FGq4LmjkeAv6fL2GMe4SLTni0A86+Mcr5R6k0GWZ1DgCaAzJwmnmn8Cglcf9cMjyJdQW83Xo9bTbWV1rCTAgJqG2uU5XyRznKA0QCeM= 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 1760101848623394.5211728809353; Fri, 10 Oct 2025 06:10:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrF-0000UD-IO; Fri, 10 Oct 2025 09:08: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 1v7Cqt-00089b-Rb for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:09 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpi-00044n-Ci for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:07 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ee15505cdeso1830064f8f.0 for ; Fri, 10 Oct 2025 06:06:53 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101612; x=1760706412; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=CySS8o7/PAaqrW7b+4aD5vDzSAed8+ObrtbkMoyyDPs=; b=v2cDMDkZ4HGAEw6lsql74QXNP9jGAFo5uCv2MkV+0RSrIpw1nLq2I+PbW8ZpR+qIs6 RyAE4ymGLVz9IzyMs9YA/l1EYGrWaCwMNVUZPCE6JXWAc8kkvw5Pc1ry6So+Knp0/xQy RaQLcLiuOMWLPtkhsYQSnGK1ntklxdixErI2WbyoDgULm3Y7Ng5NsX5EXvYuq+wy6NZB JYMN7/7GhwdpbQKv1zuZjSyg/n/j8hDK8voYPUydfK3z+GYVfyi6cmTfJCUry0x8Ou8f yEW3FoGVq6+ROUnwHZD7lLcbW5OEyl0lZt3d/7GV/x0zRSWjLsvff7F8FNWUQiYS7Ivj YMRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101612; x=1760706412; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CySS8o7/PAaqrW7b+4aD5vDzSAed8+ObrtbkMoyyDPs=; b=Ou6v0rBe+6xcNNT5nuRfFrqNfz6YvRKMDn/d40BnSX81ELfZC+CMVvYpiT5M25Hwkq oQpNC4NmC5bqyyS1NhgoB7dlKDmXsBPy8Z81B7MafGoTJEMwEWiMf/e3dpkWsoLVfA+u 1Fpq4FMUioJuHUVnv+GAWC9C/+gFDvWMVaHk0h4tW1HyFnmQxmGlIagICLxGW1L/bmpn yhwztzzZG8ZB+jpqRY94QBvPzR0qFM3BGI/JPIDk9V3RuIqlm1viILXafcgrRwe1E6Sr IvKWyPDIzy3I3+0a7oqU1NyTtvxsjmXirlmvXOjonTAYwAjd1EeXsTVr6LJJn8FEfI0o 2pJg== X-Gm-Message-State: AOJu0YxPPtBthmWIbL4PT2HLpfZgyjMkx+01w90WNCUuKnQFJRAj/UFi i+Lwhd50lwpabcZ1Q6G86yGn5S1/tqF7RxuwFBgl45rGEdTsVVTR0N1N3dDWzOB+UDe6jsZSQDh PYM37 X-Gm-Gg: ASbGncvhoxludScVnGXgJOWmePqRSXNtNkCVD670g8JodYxMY3G/LJVANwE/FZN85+K ZBISJESYN7dyj0mznDHOigbnbeJAWtjhK2T49nLHyCJe+LkZsjMqjrMFRREW7KXzGWIuCM8Nmvp CcPnNdcSRJkREAJca2p7Nt8Z96noHscLyYXvsJE24CQKL2znm+Bxj3uDLNqX2M3vna9g+2g0wmG +vnkZY9bYe34nuqFBwSfOwTXfdReFbt6hL1klce3ru5BA2wrQI1SESZ5pTXLS13zHTEugu6JBmc 8TPFJ7/KhfK9yM4Tu2m6xCtYJ+6TCCNuQgcl8+Dbu5TBPRqp03/jEHaLFI8K5k/htEeAHqsoAuj rtjrrZBwt6bmBRXC6olsGgnULJaNqp00deH+s4h/J69VNYAV6HB2OQ14hksKbUXg5BK1kRfKs X-Google-Smtp-Source: AGHT+IEWiTmTEnltvJabHymR1vRNXpWLau+zQuwY0sywAxgQzW6jZoePEssnUrA3juQ8hu2xXR/fjA== X-Received: by 2002:a5d:6a4c:0:b0:425:6fb5:2add with SMTP id ffacd0b85a97d-425829e7940mr7280489f8f.19.1760101611871; Fri, 10 Oct 2025 06:06:51 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 75/76] target/arm: Implement FEAT_MEC registers Date: Fri, 10 Oct 2025 14:05:26 +0100 Message-ID: <20251010130527.3921602-76-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760101850945154101 Content-Type: text/plain; charset="utf-8" From: Gustavo Romero Add all FEAT_MEC registers. Enable access to the registers via the SCTLR2 and TCR2 control bits. Add the two new cache management instructions, which are nops in QEMU because we do not model caches. Message-ID: <20250711140828.1714666-3-gustavo.romero@linaro.org> Reviewed-by: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Signed-off-by: Gustavo Romero Message-id: 20251006001018.219756-3-gustavo.romero@linaro.org [rth: Squash 3 patches to add all registers at once.] Signed-off-by: Richard Henderson Signed-off-by: Gustavo Romero Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++ target/arm/cpu.h | 10 ++++ target/arm/internals.h | 3 ++ target/arm/cpu.c | 3 ++ target/arm/helper.c | 108 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 129 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 0f0a112c213..37f1eca3af6 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1364,6 +1364,11 @@ static inline bool isar_feature_aa64_s2pie(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64MMFR3, S2PIE) !=3D 0; } =20 +static inline bool isar_feature_aa64_mec(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64MMFR3, MEC) !=3D 0; +} + static inline bool isar_feature_aa64_pmuv3p1(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64DFR0, PMUVER) >=3D 4 && diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 91a851dac17..1d4e13320c3 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -583,6 +583,15 @@ typedef struct CPUArchState { =20 uint64_t gcscr_el[4]; /* GCSCRE0_EL1, GCSCR_EL[123] */ uint64_t gcspr_el[4]; /* GCSPR_EL[0123] */ + + /* MEC registers */ + uint64_t mecid_p0_el2; + uint64_t mecid_a0_el2; + uint64_t mecid_p1_el2; + uint64_t mecid_a1_el2; + uint64_t mecid_rl_a_el3; + uint64_t vmecid_p_el2; + uint64_t vmecid_a_el2; } cp15; =20 struct { @@ -1728,6 +1737,7 @@ static inline void xpsr_write(CPUARMState *env, uint3= 2_t val, uint32_t mask) #define SCR_SCTLR2EN (1ULL << 44) #define SCR_PIEN (1ULL << 45) #define SCR_GPF (1ULL << 48) +#define SCR_MECEN (1ULL << 49) #define SCR_NSE (1ULL << 62) =20 /* GCSCR_ELx fields */ diff --git a/target/arm/internals.h b/target/arm/internals.h index 2a85ab762d5..f539bbe58e1 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1903,4 +1903,7 @@ void cpsr_write_from_spsr_elx(CPUARMState *env, uint3= 2_t val); /* Compare uint64_t for qsort and bsearch. */ int compare_u64(const void *a, const void *b); =20 +/* Used in FEAT_MEC to set the MECIDWidthm1 field in the MECIDR_EL2 regist= er. */ +#define MECID_WIDTH 16 + #endif diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 11e7c10cef5..3b556f1404e 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -652,6 +652,9 @@ void arm_emulate_firmware_reset(CPUState *cpustate, int= target_el) cpu_isar_feature(aa64_s2pie, cpu)) { env->cp15.scr_el3 |=3D SCR_PIEN; } + if (cpu_isar_feature(aa64_mec, cpu)) { + env->cp15.scr_el3 |=3D SCR_MECEN; + } } =20 if (target_el =3D=3D 2) { diff --git a/target/arm/helper.c b/target/arm/helper.c index 0077788e1e8..167f2909b3f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -779,6 +779,9 @@ static void scr_write(CPUARMState *env, const ARMCPRegI= nfo *ri, uint64_t value) cpu_isar_feature(aa64_s2pie, cpu)) { valid_mask |=3D SCR_PIEN; } + if (cpu_isar_feature(aa64_mec, cpu)) { + valid_mask |=3D SCR_MECEN; + } } else { valid_mask &=3D ~(SCR_RW | SCR_ST); if (cpu_isar_feature(aa32_ras, cpu)) { @@ -5088,6 +5091,96 @@ static const ARMCPRegInfo nmi_reginfo[] =3D { .resetfn =3D arm_cp_reset_ignore }, }; =20 +static CPAccessResult mecid_access(CPUARMState *env, + const ARMCPRegInfo *ri, bool isread) +{ + int el =3D arm_current_el(env); + + if (el =3D=3D 2) { + if (arm_security_space(env) !=3D ARMSS_Realm) { + return CP_ACCESS_UNDEFINED; + } + + if (!(env->cp15.scr_el3 & SCR_MECEN)) { + return CP_ACCESS_TRAP_EL3; + } + } + + return CP_ACCESS_OK; +} + +static void mecid_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + value =3D extract64(value, 0, MECID_WIDTH); + raw_write(env, ri, value); +} + +static CPAccessResult cipae_access(CPUARMState *env, const ARMCPRegInfo *r= i, + bool isread) +{ + switch (arm_security_space(env)) { + case ARMSS_Root: /* EL3 */ + case ARMSS_Realm: /* Realm EL2 */ + return CP_ACCESS_OK; + default: + return CP_ACCESS_UNDEFINED; + } +} + +static const ARMCPRegInfo mec_reginfo[] =3D { + { .name =3D "MECIDR_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 7, .crn =3D 10, .crm =3D 8, + .access =3D PL2_R, .type =3D ARM_CP_CONST | ARM_CP_NV_NO_TRAP, + .resetvalue =3D MECID_WIDTH - 1 }, + { .name =3D "MECID_P0_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 0, .crn =3D 10, .crm =3D 8, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.mecid_p0_el2) }, + { .name =3D "MECID_A0_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 1, .crn =3D 10, .crm =3D 8, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.mecid_a0_el2) }, + { .name =3D "MECID_P1_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 2, .crn =3D 10, .crm =3D 8, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.mecid_p1_el2) }, + { .name =3D "MECID_A1_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 3, .crn =3D 10, .crm =3D 8, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.mecid_a1_el2) }, + { .name =3D "MECID_RL_A_EL3", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 6, .opc2 =3D 1, .crn =3D 10, .crm =3D 10, + .access =3D PL3_RW, .accessfn =3D mecid_access, + .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.mecid_rl_a_el3) }, + { .name =3D "VMECID_P_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 0, .crn =3D 10, .crm =3D 9, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.vmecid_p_el2) }, + { .name =3D "VMECID_A_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .opc2 =3D 1, .crn =3D 10, .crm =3D 9, + .access =3D PL2_RW, .type =3D ARM_CP_NV_NO_TRAP, + .accessfn =3D mecid_access, .writefn =3D mecid_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.vmecid_a_el2) }, + { .name =3D "DC_CIPAE", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 14, .opc2 =3D 0, + .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_NV_NO_TRAP, + .accessfn =3D cipae_access }, +}; + +static const ARMCPRegInfo mec_mte_reginfo[] =3D { + { .name =3D "DC_CIGDPAE", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 1, .opc1 =3D 4, .crn =3D 7, .crm =3D 14, .opc2 =3D 7, + .access =3D PL2_W, .type =3D ARM_CP_NOP | ARM_CP_NV_NO_TRAP, + .accessfn =3D cipae_access }, +}; + #ifndef CONFIG_USER_ONLY /* * We don't know until after realize whether there's a GICv3 @@ -5930,6 +6023,9 @@ static void sctlr2_el2_write(CPUARMState *env, const = ARMCPRegInfo *ri, { uint64_t valid_mask =3D 0; =20 + if (cpu_isar_feature(aa64_mec, env_archcpu(env))) { + valid_mask |=3D SCTLR2_EMEC; + } value &=3D valid_mask; raw_write(env, ri, value); } @@ -5939,6 +6035,9 @@ static void sctlr2_el3_write(CPUARMState *env, const = ARMCPRegInfo *ri, { uint64_t valid_mask =3D 0; =20 + if (cpu_isar_feature(aa64_mec, env_archcpu(env))) { + valid_mask |=3D SCTLR2_EMEC; + } value &=3D valid_mask; raw_write(env, ri, value); } @@ -6009,6 +6108,9 @@ static void tcr2_el2_write(CPUARMState *env, const AR= MCPRegInfo *ri, if (cpu_isar_feature(aa64_s1pie, cpu)) { valid_mask |=3D TCR2_PIE; } + if (cpu_isar_feature(aa64_mec, env_archcpu(env))) { + valid_mask |=3D TCR2_AMEC0 | TCR2_AMEC1; + } value &=3D valid_mask; raw_write(env, ri, value); } @@ -7325,6 +7427,12 @@ void register_cp_regs_for_features(ARMCPU *cpu) if (cpu_isar_feature(aa64_s2pie, cpu)) { define_arm_cp_regs(cpu, s2pie_reginfo); } + if (cpu_isar_feature(aa64_mec, cpu)) { + define_arm_cp_regs(cpu, mec_reginfo); + if (cpu_isar_feature(aa64_mte, cpu)) { + define_arm_cp_regs(cpu, mec_mte_reginfo); + } + } =20 if (cpu_isar_feature(any_predinv, cpu)) { define_arm_cp_regs(cpu, predinv_reginfo); --=20 2.43.0 From nobody Fri Nov 14 19:45:21 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=1760102674; cv=none; d=zohomail.com; s=zohoarc; b=LQNohcdSLxEIxwkFRO/dCHwdXGPgZTVMrEgreOMQVtA/vOQVFq519GoMhQGV1LHUQa8Hge94mnCkQtesTbmq9zaeF+co6xOOknpkvFVGVhDnYOGd52wecC2TH/lOzUwaC8/FNx9xcCOA1EdnERJebcdH/IpEto/Nb7uw/gBGG0E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760102674; h=Content-Transfer-Encoding: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:Cc; bh=iY66G+dXvVwT2/23NgUCSTZGeIdhb8BRsuHUZ+x/2Yg=; b=MTqYQjt35Kd/tGsIi6Foa88tTixnVxpX2I6gGVRWmFMVBK3iSxpkNVvB/BmC/h0AJMsiw1LGNLiHTRi7SpUUHznsIsKz0Y9eacicmrxs6/pj7lWfTWOpO3ISZlh0ufZW+GPkpoJMBK0dktncwxyNZ/gDljTf5Ly5lcRy+SSUkWQ= 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 17601026741311021.6912508483804; Fri, 10 Oct 2025 06:24:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v7CrU-0001fT-G3; Fri, 10 Oct 2025 09:08: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 1v7Cqz-0008DB-Jn for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:14 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v7Cpm-000451-3L for qemu-devel@nongnu.org; Fri, 10 Oct 2025 09:08:11 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso2102466f8f.1 for ; Fri, 10 Oct 2025 06:06:54 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-426ce583316sm4221657f8f.20.2025.10.10.06.06.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Oct 2025 06:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1760101613; x=1760706413; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iY66G+dXvVwT2/23NgUCSTZGeIdhb8BRsuHUZ+x/2Yg=; b=r2z2PCQaoql4zIlvV7+OyWTkisBwEvShonDpE22jJo1bw5x1iR8sT65MQn9kPN39Vb 5SHQT0dMQrL9MCCn6fiG7gRyCPerH02GOD5cOaRsqi0hLUfSAseHhWSp9COH5es/B/2V CvG6jU7U3h0nbWXYXd86Bfx57JCHCC2TpCgljBzzTHOwJdiS8OTl7R587W/0XLb61T9J l2xKkTddG7dOa5wdQjAMQ8ovSDNYJqQTHpA4m9LRwwASQcdwYvf/hfFZFRUh+MjNFFQn HrMgNigBhvsDD8otPdHrTWfPMkd2wIbw3H3AbwS8eUqYE7Uk5XSmmNSFnvPRgMMVYKn5 i5Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760101613; x=1760706413; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iY66G+dXvVwT2/23NgUCSTZGeIdhb8BRsuHUZ+x/2Yg=; b=Nkg5pRqHNKPE4hubTVBj0xrdt3a3LYbL6c3crsfY3HwobjP/kbWpovlikGFSwV6K4D GNc7pAmYRXOKsZyWXmFubuh/bEoE3N4zSgVHnG1S/vy9NIeXDoPmQyZBUHmBOFX1pXu4 oQFTypz0eLAv8uGhNkjgimjkwy3wZtTY/Vkj/fD7Y2EoSB/91sJSrvuzodNsE0rDYumA vjq15FgwsggFWOVAeum5Jyxf0h9BsePv5QFNA48WC7xankDturXYJuoGd/TE1pixkfYb z9LOTz+azv9XaWhtI2YxpM9ASCjz2gEcJZshvDAYJL+edYcKxmCIciURfXJcqE83q72G SVmg== X-Gm-Message-State: AOJu0Yxx81f4xdRXlN1xlUKbiALwJraFYnEiZgb2CSk6/2GvbneCsPm1 g90A5kAp2lFhYulItaE5s3RiUmGD9zlwP4oBYQV9q6smY/MJvRRYxhQHl75fDIdWz/adDDrIjpS hiS4b X-Gm-Gg: ASbGncvVGVJe7Hx2n3K3SOoKhTCN/4QA+TX+ROXV1hqC+iQSYg8WY4MZBqtFEtinJpk nEl7f4tX5e5V891YyDo665vR2EWqClaD/KZUlii8R8ap7D2xV4IAkiBFT96+YJw6JOWIumOvT4W ZRVGRLi0dIkuxj51cLg4P85VDRwatJiZwbgngGV76oQ9uU2lLzAIs2X/iHG5+SWHDb3N87tW3WH gOF0jNZFryg0E32Qxt9ejq74BAe0daRrsNOYJj8aue3raEk2D67cPVT1n+vKUy7beilgmP2nTf8 /W/YS1UrwsoF46LpQYXU2zkFNJ9w326m+vuSO2Ur7nHyofkwkbopSFmRYhhs58A8lWn8Bw1kdJp Lvqvl+KMa+8J4FYAg/fuGAg0+TeFrEytiOMSckhHp2aRCm8X5QgHb3kxlQF/1Qw== X-Google-Smtp-Source: AGHT+IGI1fzmmj8GRvBC0NP1eU9rQm2gr4Ow4sGvkoOf7WOsrBQmtgNrXU7MS909AH7RgoJAhuj+uA== X-Received: by 2002:a05:6000:24ca:b0:3ea:15cd:ac3b with SMTP id ffacd0b85a97d-4266e7e15eemr6682087f8f.30.1760101612818; Fri, 10 Oct 2025 06:06:52 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 76/76] target/arm: Enable FEAT_MEC in -cpu max Date: Fri, 10 Oct 2025 14:05:27 +0100 Message-ID: <20251010130527.3921602-77-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251010130527.3921602-1-peter.maydell@linaro.org> References: <20251010130527.3921602-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: 1760102675402154100 Content-Type: text/plain; charset="utf-8" From: Gustavo Romero Advertise FEAT_MEC in AA64MMFR3 ID register for the Arm64 cpu max as a first step to fully support FEAT_MEC. The FEAT_MEC is an extension to FEAT_RME that implements multiple Memory Encryption Contexts (MEC) so the memory in a realm can be encrypted and accessing it from the wrong encryption context is not possible. An encryption context allow the selection of a memory encryption engine. At this point, no real memory encryption is supported, but software stacks that rely on FEAT_MEC should work properly. Reviewed-by: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Signed-off-by: Gustavo Romero Message-id: 20251006001018.219756-4-gustavo.romero@linaro.org Message-ID: <20250711140828.1714666-7-gustavo.romero@linaro.org> Signed-off-by: Richard Henderson Signed-off-by: Gustavo Romero Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 3 +++ target/arm/tcg/cpu64.c | 1 + 2 files changed, 4 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 4496178c48e..bf81da124a0 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -94,6 +94,9 @@ the following architecture extensions: - FEAT_LSE2 (Large System Extensions v2) - FEAT_LSE128 (128-bit Atomics) - FEAT_LVA (Large Virtual Address space) +- FEAT_MEC (Memory Encryption Contexts) + + * This is a register-only implementation without encryption. - FEAT_MixedEnd (Mixed-endian support) - FEAT_MixedEndEL0 (Mixed-endian support at EL0) - FEAT_MOPS (Standardization of memory operations) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index cc42dfdf561..1bffe66e81c 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1327,6 +1327,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64MMFR3); 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, MEC, 1); /* FEAT_MEC */ 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 */ --=20 2.43.0