From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id +dPTKJeZVmrlawgAWB0awg (envelope-from ) for ; Tue, 14 Jul 2026 16:18:31 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A27E91E09E; Tue, 14 Jul 2026 16:18:31 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 450E41E09B for ; Tue, 14 Jul 2026 16:18:29 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BCAC44BA23D2 for ; Tue, 14 Jul 2026 20:18:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BCAC44BA23D2 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::1]) by sourceware.org (Postfix) with ESMTPS id 7636A4BA23CE for ; Tue, 14 Jul 2026 20:16:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7636A4BA23CE Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7636A4BA23CE Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::1 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1784060209; cv=pass; b=MejgEnpRDfS2+CwYA3CcZSrqvTspNjJBKkLur9lNH711jjYLCfzE7Ah9VRuDzoCNp8Pz2uepg4KSgy2SQWWathwO6AeDJU1rpArNHKX4CN9RKNrohfZWNgRYLJ4l+6IODdrMokqn8A9X4G81l/nfWid9KNadwp2yyXNuKWdf3Co= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1784060209; c=relaxed/simple; bh=M5E7wAh/OrMHf3MSo4aJQejjwH2HzPAOIqzNGo9QOwM=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=F39isFRx2oEStBlCuZAqcbnhKic/+sP59vkQbkHd2of3zF1YnVFU9NomGu1SpUkMPwIDtxuKoJ55ihOFUnyiMiC/bEs80f1+F8+IS56QfFOiR/ti3RSomJ7KBtP10WsGmERyhf4JFkzhsQk5qhk5F56qIxO46ROqNyO5tIRWu5w= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=dWmCNZxf DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7636A4BA23CE ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=eGMSKSV4DNWbR6aYl+iW5Px6NfrlubnLakTezFFOvNQh4+VD/u27+aHIkLDQa2Kwy2wq0p4cG/hblNbcoeyiQmB2x5c5Lq8vl16UivrYvHMUo2kyv2LHSEqcDn8YzTgX46Z4OJaA+x4IVCiV9yfjcwbyYY8O7W7d/hfvI5VKuriHOeADxAbKxBogj4Rd0yyT/BIcIaMIEfCiR2NXKNtGSVwqsYDuLhz6E53R+tBQnvKmSmSTduZ3Ufqwfp+7JKMKQVIND86YKx+JTkBfXZZj222yVyrGE73lTsSluNuqDQ294Xljf+KBIdv1kny6YkP6mtgoM7YHJPNUxeY+eI+rEA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WWOGzM5fOxoEeb69tFtYiiUfNzSTHsimvIBNqLaYsxc=; b=iTpp9f9iuWF3Z7pSCJGsGEY9CzQHOk6npgHiOqJeOJpAsE4DdUNkG0kTMJ6up6ea1wai7CZ15OPCRUJLPzoXom2rAZlAZBPvuAiKXQuUsMuesgRMKCqRGRyc9R+/L4sYs+vx1VRcnc0p+UgtvBpUzjEhgqe4VYSorwBfMRzkrcDETOiz+jZHj5aCWLDlqtqT15ckUcXEMtYWJr1UM5c1Jfd6Artt8QJrcO1LiKWoo/HhOi3Ca35Gi4IH4ET26QexNUqnCKr2ut8j6Ke+aP/gfFlrNj/ZyC/Z48+OyYGQrKIZEpaigAIdWTSnWqtDtks2zwgxtgstrYVwDisiWfnedg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WWOGzM5fOxoEeb69tFtYiiUfNzSTHsimvIBNqLaYsxc=; b=dWmCNZxf67yYQw0YOvCTXYKBBvlygEJ/UjA9+8t13z1W8wvVZp9Oq/7ayibf0b6Q0dGqAlbiOWA2PK77oCH8o7Ny+0Nw4k8hSflEANU0z8P3+pjDpyKMm4apjjLcUC0AfuHUPQRlUoqgywk1VEoI6zjsqi1dr7Hh1biV82jIOD8= Received: from AS4P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::17) by AS8PR08MB6103.eurprd08.prod.outlook.com (2603:10a6:20b:296::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.9; Tue, 14 Jul 2026 20:16:41 +0000 Received: from AMS1EPF00000045.eurprd04.prod.outlook.com (2603:10a6:20b:5db:cafe::95) by AS4P189CA0030.outlook.office365.com (2603:10a6:20b:5db::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.11 via Frontend Transport; Tue, 14 Jul 2026 20:16:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF00000045.mail.protection.outlook.com (10.167.16.42) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Tue, 14 Jul 2026 20:16:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hpOtlXa9MoxSd3GkqrIVmQCvlpczDMpuObGVF46NHJbB18VvjNFU1dQXlI9A/+mRv2K9HTHj2hr+aezhRr1Ae2U0qRkf7j4fx8fE2+QoDtlHSOzgjU9n8M+1TTgnCLnfYsKbdn6M6I0lhbhDTrhv0czSO2JOgEDKJxam4VsDpDy68k6k3IJB5f62WbLEcwu7lCE7eqLzf/EicIc61NX3UUvgZzecx5SI01ujGa9iNK5N3PKoaPnzvuQrABarGB+CiaCjH5w1rsxkpU5fTFg9sA3z+/HWOXFrDqzjscwsoqlGnk7855wdrOCXFkX+uuFJ5b4Nuh75iw7220IovWiH/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WWOGzM5fOxoEeb69tFtYiiUfNzSTHsimvIBNqLaYsxc=; b=AKLvhcP28rNRjU4V1Hu5hzPCkbheLhWL1rKHtKD8Nx5cO8VSAkpjMhIlBG5BncZAYcPoJ1o2ZueaM7O1p8+n319rRyFVqUMVyYuuwVAOm0qr0kydAgi1cItuSJZmzVhH6xAwC+njyIv73gMoFel7t4F3FE8NfqAk3dtZDckQvkQ0/DbmtQGeUrwnz6G52U7GXF2/Foqp/lZ4JHbAjcIO6jbrjPDgKeylPh5V3vgHt1kyuIUFL8VFV6LT1AFQoVVL8IwgqguWUYjx4pSBH4N62SLF8Hzh5yFETXgpeyqKn+hviVTI+GDuLg2qODj5xrCI3inhUzh5Ilj9o05A9DjB5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WWOGzM5fOxoEeb69tFtYiiUfNzSTHsimvIBNqLaYsxc=; b=dWmCNZxf67yYQw0YOvCTXYKBBvlygEJ/UjA9+8t13z1W8wvVZp9Oq/7ayibf0b6Q0dGqAlbiOWA2PK77oCH8o7Ny+0Nw4k8hSflEANU0z8P3+pjDpyKMm4apjjLcUC0AfuHUPQRlUoqgywk1VEoI6zjsqi1dr7Hh1biV82jIOD8= Received: from PR1P264CA0062.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2ca::17) by DB9PR08MB9514.eurprd08.prod.outlook.com (2603:10a6:10:452::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.19; Tue, 14 Jul 2026 20:15:36 +0000 Received: from AM4PEPF00025F99.EURPRD83.prod.outlook.com (2603:10a6:102:2ca:cafe::39) by PR1P264CA0062.outlook.office365.com (2603:10a6:102:2ca::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Tue, 14 Jul 2026 20:15:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by AM4PEPF00025F99.mail.protection.outlook.com (10.167.16.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.3 via Frontend Transport; Tue, 14 Jul 2026 20:15:35 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX04.Arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 14 Jul 2026 20:15:32 +0000 Received: from ip-10-249-56-67.eu-west-1.compute.internal (10.249.56.67) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 14 Jul 2026 20:15:32 +0000 From: To: CC: , , , , , , Srinath Parvathaneni Subject: [PATCH v3 1/5] [PATCH 1/5] gdb/aarch64: Add POR_EL0 register support for FEAT_S1POE Date: Tue, 14 Jul 2026 20:15:26 +0000 Message-ID: <20260714201530.78374-2-srinath.parvathaneni@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260714201530.78374-1-srinath.parvathaneni@arm.com> References: <20260714201530.78374-1-srinath.parvathaneni@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM4PEPF00025F99:EE_|DB9PR08MB9514:EE_|AMS1EPF00000045:EE_|AS8PR08MB6103:EE_ X-MS-Office365-Filtering-Correlation-Id: 20792af7-3254-466d-1218-08dee1e4d12c x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|23010399003|36860700016|1800799024|82310400026|3023799007|22082099003|18002099003|56012099006|11063799006|5023799004|13003099007; X-Microsoft-Antispam-Message-Info-Original: QtWoW/uTtCT7wOsaUgGBBDcjCYYf7TrIeTl/Rig+P78VQPCHe6gxxwyRhJ5y92YwcNhPFXvfHcMb5/L8nGY8I1WJ+AxAB4qvOD1bBnxYy0Yc5ffKcAQkX1rYgcDKaTYXEBqtqVg8hBEtbFkXKG8OtOqDMZmqU/Y4lHsMilyHCA8Kl0K/K+E8YBsYL9igJo0Y+LvtECCSAjMZFpuU02fb5Pz7vy+C64IvciFBPND6iQzVwN2T0FUH83sozGOtvo83ABHvyX46Ll15ltvAtN7SW9X7NDnf6GkKYQ1qqP5Q6BeFey7JqQwPVb2zB6PSmmlHsh6CvhW1kbH62kE98LKkizkayT10RAc07awbO9uXpIAibwyf4SENcpHYEmqb37WPfoU7k1Q3xQ/waY0yEN89XXiml6fCez7WoiOQN3hx1V+pUIxfzpxI0sbwVvqw7knHg1wnC431TQfuDI6U36W4B8FAcqktJIsQQmEtVsoI+jSopc9F1UZWifDinHjDoAQ8PDdJWt7AeT5d3U+pFGkRPbHbs3KFmICOViSntsW1gkDcPt7/9X6Pz4JcBJj1G5Ym//i7DXpzXxT/a1zZkHW/6/wgyl038xpNTEzAnE+0mzInwNQP32v81hX6ohaCnvSds24ba7Fr8FrJBOfS37UNY79gHmG2fjLjuUjjWA/a2czDA8OQx0Lel30BuyLJpks3FtcRXubgqDtXwVX++XGVcw== X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(23010399003)(36860700016)(1800799024)(82310400026)(3023799007)(22082099003)(18002099003)(56012099006)(11063799006)(5023799004)(13003099007); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: U/klx7L1q4s3N4KYKuiDM7HJ4tOzRXiz0osvKJVGyXCVCQg1Anhdp32TVyD3SvZiIEYvWMb5fENbowSZ5s1neV5cYjuLQHmdXj2bB3akpZOobSOpkOlF4j+roQLTwLeeiLM2ozUWS+OMSRsAjw8cbcRc55KGufl4z3JrAf6ZGV4N7bJKLmUfqbgAe7KlQLIKI9um6H/x5Aua1iQ61NYVWBWxf9Z/Q21fCuvFErAEaCsZMDmn/BhYJt42HIXYPnHEQYnO0p8qIijvEkc57SNAKM34ZDEq0nP4Z2/CBX33CYBKGsPrJiMr+HYc4bYLzKsLxPkx+fQG5Fhd7RAuzuS6lA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9514 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000045.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5b94e79e-06e4-452a-2d7a-08dee1e4aa3c X-Microsoft-Antispam: BCL:0; ARA:13230040|14060799003|82310400026|36860700016|1800799024|376014|35042699022|23010399003|3023799007|18002099003|56012099006|11063799006|5023799004|22082099003|13003099007; X-Microsoft-Antispam-Message-Info: A1to6SRveM7ofCKILOmxqa192tpMaenyh4lEgrIS4ceSykBABRZqNeXM33bylRN38fX+NEoqVX5X0aoXExgwK0oxwgpWJ1/sXt92fHbk7Quks9OC6Pp6qJ982u8O/sCw5QlP2u72fFM0GHYy1bU5ASUtTt8A3bDXpS1vIwANuOwoO1t8QLrbJhHrw3245kKv+SzmJ4PQIbrlj8VvbYkYB+UZJu/CH6Hzktj857P9XbVSmk5EzFbK2kOo7xkmzuxK6nx+UxkrV5Yz4jEuaRkFwOWi8EXWA01QFOffYf9fE9rg+AVFCHYk0dvqguqEToyYIm8fjFTGmzKo/mBFZLrOhCiazr2X2gQK7q02aGps6DNz5nzmlnb3Tr7+LI25n8o6q0naA8CzU1AgOYI/POO7WAQ3vrApvJNSCAX+Q1ebARQfPnrF4tCm1Y6JX5rp8cII/L1aUzbOam78PLyTwjh8dcPAhHTMSw6wD1ug+RzLRTsNnG2R0jrPJLh+XtwQgfC0j1B9OTBC0Rl2/cmNIHgqd1QvkkEY3w5Q7v8eaz3rbSm/9SLiXC46ApZmwY34Piw/otSL9qnV//czfwShqogLCiD6HCP0FaYVp3LGAc27bc1fPGR3pfaPjINF0U9tDt/PW77e2RCSjm/mWmgY+e4MzEVIGKTQzGoGAyH++HQE0KhnEgoRaD3Ti2x8H8XsbZ3iwOtYoz3xM7wqUG+xiNhwDQ== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(14060799003)(82310400026)(36860700016)(1800799024)(376014)(35042699022)(23010399003)(3023799007)(18002099003)(56012099006)(11063799006)(5023799004)(22082099003)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xa+3iI8Xdk7V/uODVGVOFIpzyAwzDzoMWM/wo7xgQx16SMCsEJuVziLz7PWXbkB1loNXfhIf/R4wuw8OYMttVAVoEaAU4o7ZnkwjvSHibNWUkxImZ1jj8Lk4wY0/u0SlMTfNYeyJPKE5P1DDPgbw558wRO0i5HdqRfZXBpRMayEMTQ73GF8yG+CEeenpZ4p+LEhii+T4J5jN3vPuGlK6qvfqgFJlhbTICUljAGMWpd7BYEhPlmA3JDGVTO9kdMx8nlwQwVa2Ap1HGS+tD8XkjEqNFGe4KIMiKt6BRuIhVSGjYKOl2g++RMYDSGTr5VIrLouF26MaOHJ9hRE9LiscVaP1NPZ9cYdWETku+3IP+LBBtwEcmFRX3WGJws3j3IQ+LxeosICHGP8shtgBSXsyTeyX47Hs1z13zIbl/5Mpl+mtU3lOXCHF/u3JqIOjD7Ne X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2026 20:16:41.0354 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 20792af7-3254-466d-1218-08dee1e4d12c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF00000045.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6103 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org From: Srinath Parvathaneni Add support for the FEAT_S1POE POR_EL0 register on AArch64. This patch adds POR_EL0 to the AArch64 register set and reads/writes it using the NT_ARM_POE ptrace regset. With this change, POR_EL0 is available through: * info registers * info registers por_el0 * p $por_el0 * p/x $por_el0 * set $por_el0 = Example: (gdb) info register por_el0 por_el0 0x7 [ P15=--- P14=--- P13=--- P12=--- P11=--- P10=--- P9=--- P8=--- P7=--- P6=--- P5=--- P4=--- P3=--- P2=--- P1=--- P0=rwx ] (gdb) set $por_el0=0xffffffff77777777 (gdb) info register por_el0 por_el0 0xffffffff77777777 [ P15=??? P14=??? P13=??? P12=??? P11=??? P10=??? P9=??? P8=??? P7=rwx P6=rwx P5=rwx P4=rwx P3=rwx P2=rwx P1=rwx P0=rwx ] (gdb) p $por_el0 $1 = [ P15=??? P14=??? P13=??? P12=??? P11=??? P10=??? P9=??? P8=??? P7=rwx P6=rwx P5=rwx P4=rwx P3=rwx P2=rwx P1=rwx P0=rwx ] (gdb) p/x $por_el0 $2 = 0xffffffff77777777 (gdb) set $por_el0=0x57 (gdb) info register por_el0 por_el0 0x57 [ P15=--- P14=--- P13=--- P12=--- P11=--- P10=--- P9=--- P8=--- P7=--- P6=--- P5=--- P4=--- P3=--- P2=--- P1=rw- P0=rwx ] (gdb) set $por_el0=0xf7f7f7f7f7f7f7f7 (gdb) info register por_el0 por_el0 0xf7f7f7f7f7f7f7f7 [ P15=??? P14=rwx P13=??? P12=rwx P11=??? P10=rwx P9=??? P8=rwx P7=??? P6=rwx P5=??? P4=rwx P3=??? P2=rwx P1=??? P0=rwx ] (gdb) --- gdb/Makefile.in | 2 ++ gdb/aarch64-linux-nat.c | 64 +++++++++++++++++++++++++++++++++ gdb/aarch64-tdep.c | 23 ++++++++++++ gdb/aarch64-tdep.h | 10 ++++++ gdb/arch/aarch64-poe-linux.h | 29 +++++++++++++++ gdb/arch/aarch64.c | 4 +++ gdb/arch/aarch64.h | 8 ++++- gdb/features/Makefile | 1 + gdb/features/aarch64-poe.c | 68 ++++++++++++++++++++++++++++++++++++ gdb/features/aarch64-poe.xml | 47 +++++++++++++++++++++++++ gdb/nat/aarch64-poe-linux.h | 29 +++++++++++++++ 11 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 gdb/arch/aarch64-poe-linux.h create mode 100644 gdb/features/aarch64-poe.c create mode 100644 gdb/features/aarch64-poe.xml create mode 100644 gdb/nat/aarch64-poe-linux.h diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 57f384170ab..3dc9cd07dcb 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1292,6 +1292,7 @@ HFILES_NO_SRCDIR = \ arch/aarch32.h \ arch/aarch64-fpmr-linux.h \ arch/aarch64-gcs-linux.h \ + arch/aarch64-poe-linux.h \ arch/aarch64.h \ arch/aarch64-insn.h \ arch/aarch64-mte.h \ @@ -1540,6 +1541,7 @@ HFILES_NO_SRCDIR = \ namespace.h \ nat/aarch64-fpmr-linux.h \ nat/aarch64-gcs-linux.h \ + nat/aarch64-poe-linux.h \ nat/aarch64-hw-point.h \ nat/aarch64-linux.h \ nat/aarch64-linux-hw-point.h \ diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c index 52ace4aab41..8e29c42908c 100644 --- a/gdb/aarch64-linux-nat.c +++ b/gdb/aarch64-linux-nat.c @@ -34,6 +34,7 @@ #include "arch/arm.h" #include "nat/aarch64-fpmr-linux.h" #include "nat/aarch64-gcs-linux.h" +#include "nat/aarch64-poe-linux.h" #include "nat/aarch64-linux.h" #include "nat/aarch64-linux-hw-point.h" #include "nat/aarch64-mte-linux-ptrace.h" @@ -602,6 +603,54 @@ store_gcsregs_to_thread (regcache *regcache) perror_with_name (_("Unable to store GCS registers")); } +/* Fill GDB's register array with the POE register value from the current + thread. */ + +static void +fetch_poeregs_from_thread (regcache *regcache) +{ + aarch64_gdbarch_tdep *tdep + = gdbarch_tdep (regcache->arch ()); + + gdb_assert (tdep->has_poe ()); + + uint64_t user_poe; + iovec iovec; + + iovec.iov_base = &user_poe; + iovec.iov_len = sizeof (user_poe); + + int tid = get_ptrace_pid (regcache->ptid ()); + if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_POE, &iovec) != 0) + perror_with_name (_("Unable to fetch POE register")); + + regcache->raw_supply (tdep->poe_regnum, &user_poe); +} + +/* Store the NT_ARM_POE register contents from GDB's REGCACHE to the + thread associated with REGCACHE. */ + +static void +store_poeregs_to_thread (struct regcache *regcache) +{ + aarch64_gdbarch_tdep *tdep + = gdbarch_tdep (regcache->arch ()); + + gdb_assert (tdep->has_poe ()); + + int tid = regcache->ptid ().lwp (); + + iovec iovec; + uint64_t user_poe; + iovec.iov_base = &user_poe; + iovec.iov_len = sizeof (user_poe); + + regcache->raw_collect (tdep->poe_regnum, &user_poe); + + if (ptrace (PTRACE_SETREGSET, tid, NT_ARM_POE, &iovec) != 0) + perror_with_name (_("Unable to store POE register")); +} + /* Fill GDB's REGCACHE with the FPMR register set content from the thread associated with REGCACHE. */ @@ -683,6 +732,9 @@ aarch64_fetch_registers (struct regcache *regcache, int regno) if (tdep->has_gcs_linux ()) fetch_gcsregs_from_thread (regcache); + if (tdep->has_poe ()) + fetch_poeregs_from_thread (regcache); + if (tdep->has_fpmr ()) fetch_fpmr_from_thread (regcache); } @@ -722,6 +774,9 @@ aarch64_fetch_registers (struct regcache *regcache, int regno) && (regno == tdep->gcs_reg_base || regno == tdep->gcs_linux_reg_base || regno == tdep->gcs_linux_reg_base + 1)) fetch_gcsregs_from_thread (regcache); + /* POE register? */ + else if (tdep->has_poe () && (regno == tdep->poe_regnum)) + fetch_poeregs_from_thread (regcache); /* FPMR? */ else if (tdep->has_fpmr () && (regno == tdep->fpmr_regnum)) fetch_fpmr_from_thread (regcache); @@ -802,6 +857,9 @@ aarch64_store_registers (struct regcache *regcache, int regno) if (tdep->has_fpmr ()) store_fpmr_to_thread (regcache); + + if (tdep->has_poe ()) + store_poeregs_to_thread (regcache); } /* General purpose register? */ else if (regno < AARCH64_V0_REGNUM) @@ -836,6 +894,9 @@ aarch64_store_registers (struct regcache *regcache, int regno) /* FPMR? */ else if (tdep->has_fpmr () && regno == tdep->fpmr_regnum) store_fpmr_to_thread (regcache); + /* POE register? */ + else if (tdep->has_poe () && regno == tdep->poe_regnum) + store_poeregs_to_thread (regcache); /* PAuth registers are read-only. */ } @@ -1024,6 +1085,9 @@ aarch64_linux_nat_target::read_description () /* Check for FPMR. */ features.fpmr = hwcap2 & HWCAP2_FPMR; + /* Check for POE support. */ + features.poe = hwcap2 & HWCAP2_POE; + return aarch64_read_description (features); } diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index a84da1fd59e..2e86d6e0452 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -164,6 +164,11 @@ static const char *const aarch64_gcs_register_names[] = { "gcspr" }; +static const char *const aarch64_poe_register_names[] = { + /* Permission Overlay Extension Register. */ + "por_el0" +}; + static const char *const aarch64_gcs_linux_register_names[] = { /* Field in struct user_gcs. */ "gcs_features_enabled", @@ -4136,6 +4141,10 @@ aarch64_features_from_target_desc (const struct target_desc *tdesc) features.fpmr = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.fpmr") != nullptr); + /* Check for POE feature. */ + features.poe = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.poe") + != nullptr); + return features; } @@ -4556,6 +4565,19 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) fpmr_regnum, "fpmr"); } + int poe_regnum = -1; + const struct tdesc_feature *feature_poe + = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.poe"); + if (feature_poe != nullptr) + { + poe_regnum = num_regs; + for (i = 0; i < ARRAY_SIZE (aarch64_poe_register_names); i++) + valid_p &= tdesc_numbered_register (feature_poe, tdesc_data.get (), + poe_regnum + i, + aarch64_poe_register_names[i]); + num_regs++; + } + int first_sme_regnum = -1; int first_sme2_regnum = -1; int first_sme_pseudo_regnum = -1; @@ -4756,6 +4778,7 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep->gcs_reg_base = first_gcs_regnum; tdep->gcs_linux_reg_base = first_gcs_linux_regnum; tdep->fpmr_regnum = fpmr_regnum; + tdep->poe_regnum = poe_regnum; /* Set the SME register set details. The pseudo-registers will be adjusted later. */ diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h index dff05a08f84..3c5d10beee5 100644 --- a/gdb/aarch64-tdep.h +++ b/gdb/aarch64-tdep.h @@ -208,6 +208,16 @@ struct aarch64_gdbarch_tdep : gdbarch_tdep_base return gcs_linux_reg_base != -1; } + /* POE register. This is -1 if no POE feature is available. */ + int poe_regnum = -1; + + /* Returns true if the target supports the POE feature. */ + bool + has_poe () const + { + return poe_regnum != -1; + } + /* First FPMR register. This is -1 if FPMR is not supported. */ int fpmr_regnum = -1; diff --git a/gdb/arch/aarch64-poe-linux.h b/gdb/arch/aarch64-poe-linux.h new file mode 100644 index 00000000000..8623fa43b54 --- /dev/null +++ b/gdb/arch/aarch64-poe-linux.h @@ -0,0 +1,29 @@ +/* Common Linux target-dependent definitions for AArch64 POE + + Copyright (C) 2026 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef GDB_ARCH_AARCH64_POE_LINUX_H +#define GDB_ARCH_AARCH64_POE_LINUX_H + +/* Feature check for Permission Overlay Extension. */ +#define AARCH64_HWCAP2_POE (1ULL << 63) + +/* Data or instruction abort caused by Protection Key Violation. */ +#define AARCH64_SEGV_PKUERR 4 + +#endif /* GDB_ARCH_AARCH64_POE_LINUX_H. */ diff --git a/gdb/arch/aarch64.c b/gdb/arch/aarch64.c index 2401a325b7b..a567938d06d 100644 --- a/gdb/arch/aarch64.c +++ b/gdb/arch/aarch64.c @@ -28,6 +28,7 @@ #include "../features/aarch64-sme2.c" #include "../features/aarch64-tls.c" #include "../features/aarch64-gcs.c" +#include "../features/aarch64-poe.c" #include "../features/aarch64-gcs-linux.c" /* See arch/aarch64.h. */ @@ -77,6 +78,9 @@ aarch64_create_target_description (const aarch64_features &features) if (features.fpmr) regnum = create_feature_aarch64_fpmr (tdesc.get (), regnum); + if (features.poe) + regnum = create_feature_aarch64_poe (tdesc.get (), regnum); + return tdesc; } diff --git a/gdb/arch/aarch64.h b/gdb/arch/aarch64.h index cf7318cbe74..ba90d55c3bb 100644 --- a/gdb/arch/aarch64.h +++ b/gdb/arch/aarch64.h @@ -35,6 +35,8 @@ struct aarch64_features bool pauth = false; bool mte = false; bool fpmr = false; + /* Whether the Permission Overlay Extension (FEAT_S1POE) is supported. */ + bool poe = false; /* A positive TLS value indicates the number of TLS registers available. */ uint8_t tls = 0; @@ -70,7 +72,8 @@ inline bool operator==(const aarch64_features &lhs, const aarch64_features &rhs) && lhs.sme2 == rhs.sme2 && lhs.gcs == rhs.gcs && lhs.gcs_linux == rhs.gcs_linux - && lhs.fpmr == rhs.fpmr; + && lhs.fpmr == rhs.fpmr + && lhs.poe == rhs.poe; } namespace std @@ -103,6 +106,9 @@ namespace std /* FPMR feature. */ h = h << 1 | features.fpmr; + + /* POE feature. */ + h = h << 1 | features.poe; return h; } }; diff --git a/gdb/features/Makefile b/gdb/features/Makefile index 161a7453d66..cc77e5bb652 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -207,6 +207,7 @@ FEATURE_XMLFILES = aarch64-core.xml \ aarch64-pauth.xml \ aarch64-mte.xml \ aarch64-gcs.xml \ + aarch64-poe.xml \ aarch64-gcs-linux.xml \ arc/v1-core.xml \ arc/v1-aux.xml \ diff --git a/gdb/features/aarch64-poe.c b/gdb/features/aarch64-poe.c new file mode 100644 index 00000000000..4bd795e9fe6 --- /dev/null +++ b/gdb/features/aarch64-poe.c @@ -0,0 +1,68 @@ +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: + Original: aarch64-poe.xml */ + +#include "gdbsupport/tdesc.h" + +static int +create_feature_aarch64_poe (struct target_desc *result, long regnum) +{ + struct tdesc_feature *feature; + + feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.poe"); + tdesc_type_with_fields *type_with_fields; + type_with_fields = tdesc_create_enum (feature, "por_el0_fmt", 4); + tdesc_add_enum_value (type_with_fields, 0, "---"); + tdesc_add_enum_value (type_with_fields, 1, "r--"); + tdesc_add_enum_value (type_with_fields, 2, "--x"); + tdesc_add_enum_value (type_with_fields, 3, "r-x"); + tdesc_add_enum_value (type_with_fields, 4, "-w-"); + tdesc_add_enum_value (type_with_fields, 5, "rw-"); + tdesc_add_enum_value (type_with_fields, 6, "-wx"); + tdesc_add_enum_value (type_with_fields, 7, "rwx"); + tdesc_add_enum_value (type_with_fields, 8, "???"); + tdesc_add_enum_value (type_with_fields, 9, "???"); + tdesc_add_enum_value (type_with_fields, 10, "???"); + tdesc_add_enum_value (type_with_fields, 11, "???"); + tdesc_add_enum_value (type_with_fields, 12, "???"); + tdesc_add_enum_value (type_with_fields, 13, "???"); + tdesc_add_enum_value (type_with_fields, 14, "???"); + tdesc_add_enum_value (type_with_fields, 15, "???"); + + type_with_fields = tdesc_create_flags (feature, "por_el0_flags", 8); + tdesc_type *field_type; + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P15", 60, 63, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P14", 56, 59, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P13", 52, 55, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P12", 48, 51, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P11", 44, 47, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P10", 40, 43, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P9", 36, 39, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P8", 32, 35, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P7", 28, 31, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P6", 24, 27, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P5", 20, 23, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P4", 16, 19, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P3", 12, 15, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P2", 8, 11, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P1", 4, 7, field_type); + field_type = tdesc_named_type (feature, "por_el0_fmt"); + tdesc_add_typed_bitfield (type_with_fields, "P0", 0, 3, field_type); + + tdesc_create_reg (feature, "por_el0", regnum++, 1, "system", 64, "por_el0_flags"); + return regnum; +} diff --git a/gdb/features/aarch64-poe.xml b/gdb/features/aarch64-poe.xml new file mode 100644 index 00000000000..58fc4f80d5c --- /dev/null +++ b/gdb/features/aarch64-poe.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gdb/nat/aarch64-poe-linux.h b/gdb/nat/aarch64-poe-linux.h new file mode 100644 index 00000000000..f3d0256da3f --- /dev/null +++ b/gdb/nat/aarch64-poe-linux.h @@ -0,0 +1,29 @@ +/* Common native Linux definitions for AArch64 Permission Overlay Extension. + + Copyright (C) 2026 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include +#ifndef GDB_NAT_AARCH64_POE_LINUX_H +#define GDB_NAT_AARCH64_POE_LINUX_H + +/* Feature check for Permission Overlay Extension. */ +#ifndef HWCAP2_POE +#define HWCAP2_POE (1ULL << 63) +#endif /* HWCAP2_POE. */ + +#endif /* GDB_NAT_AARCH64_POE_LINUX_H. */ -- 2.43.0