From nobody Wed Mar 5 02:36:56 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; arc=pass (i=1 dmarc=pass fromdomain=provenrun.com); dmarc=pass(p=none dis=none) header.from=provenrun.com ARC-Seal: i=2; a=rsa-sha256; t=1740994768; cv=pass; d=zohomail.com; s=zohoarc; b=h/++NfLQhPRIJDy12tVLct0/K/+wcAe5lHB1jqV1KxsnJwywjGMbttDkqDN2f84a+lKYjGo2P6nYReAaY4K7uJ+d7HiDx+PGOdJX7pfDpTq/boIKXSecj3AzEqWXGq23SDDa/EtzCHML8JdmF3X3AGFurTuzXtx49DW4h4wyfOU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740994768; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=64A9Fn7HdqowCJ3QpFBhwP4Doh34P44tu8H/rIAPdco=; b=N9QPvGSIeyuAkFWOQeijf84r09JUxsCj57s4ADm/c3YMBiHOmp7uGL743TRwZDnVJjbAiNdIIpDemZbDy3mlIvBB1WiaPH83rB2W/ln8CHtTyVjt9K14P4838yWsCgRuId8M5mdRxfn8GGAD6bhwPufNnycp2XqdcbnRfpj2/dk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=provenrun.com); 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 1740994768456875.9245127816523; Mon, 3 Mar 2025 01:39:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tp2Fr-0002ee-89; Mon, 03 Mar 2025 04:38:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tp2EZ-0001sl-4s; Mon, 03 Mar 2025 04:37:11 -0500 Received: from mail-francecentralazlp170100000.outbound.protection.outlook.com ([2a01:111:f403:c20a::] helo=PA5P264CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tp2EX-00007q-El; Mon, 03 Mar 2025 04:37:10 -0500 Received: from PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1f2::18) by MR0P264MB5530.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:4e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.28; Mon, 3 Mar 2025 09:37:02 +0000 Received: from PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM ([fe80::ef1:e8a1:244f:3ca7]) by PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM ([fe80::ef1:e8a1:244f:3ca7%5]) with mapi id 15.20.8489.028; Mon, 3 Mar 2025 09:37:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X1HrK0EoU5y/N0Zz8q7E/6orfzI2iJPdC2lMv2ugRXy7JJRWCbG9v2cUdJDL2rZeh84YNGswMJtiigLh3h4RILGLv+uxEPbFrCcLBAxPDraYtncqiO4RqKilekQcGeO5xw4jtcSx5AwrwjckMuvir9dL3OQN+QTe5frQicVCftNFPZELkP0DnGN64b9QuiZhkK0gDDLfvW2Vo1NcIov55/qG0wfIga2PWM8SVnb5up5A0byx5rGW7NXVa4X1MIcjXTy5hj/qlppSxmV8DGv+msnfAHGTmL4Mxkirns8xE+8TajrC2So7k63x+HWFFg5OP+o75vXkoPXuX2AUkHjcYg== 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=64A9Fn7HdqowCJ3QpFBhwP4Doh34P44tu8H/rIAPdco=; b=jj42ckkojNumtl5rMYjZVuhnH4Vd3NteuBGv/J5ABlXr0461suaH5AbxXfA91mqZ1h1M2+agjvEAzEoEFeAEsxdJAjYdIH2YEB2JjPPpWQuKZAaaLgwyR2fXUNZAe6WBIAXEjGZQI8RVIO9BKA5rnParTvMBJMWqgkE2b1NkktMPg6Yssao7fcw1c+M5HExUcMSM3M2V03Zs2xFfMtf5Xsehz5+u+xWaAgwPgr+OjYABRP6X/ih3udaXmCaZcc3yLEr2zfF8nQIrkQsnyagUwJAqXN4oyUo1ex9/v9mIW99l2uBQHZj9OhUKEHyE8V0sy0veoIR/XvgZxWt1m13f3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=provenrun.com; dmarc=pass action=none header.from=provenrun.com; dkim=pass header.d=provenrun.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=provenrun.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=64A9Fn7HdqowCJ3QpFBhwP4Doh34P44tu8H/rIAPdco=; b=dGH1Xaj+Bx4m74ismzgX8s3vVBz22WxPNXRfmIuV7xkn86dk41vIdi4ARxPrT9gpGfawyf8Q3YWz9f586FIKJ3jIHO9bSaCfm9VG4ij2udIVTWK1RWYKpoSsIKJnMyUparG02ISSp8CAk9KQSms/DAEEiBA6P6WnqxN3MSXh+Br5sFUFpv4MwILHmRJ3yp32lflqA0yTGP0w9nqL8f0+nu3n8cxkGE2PokFAtVciLXD2KEd9jkVP4kDpJ18KseU/Bt3VHw5a+ZRY5VwaZ1OD3Q2aTAeThs9pxRyukiLhmJiHJ9uuE91380C9I4gxPKdJwSTd/2JAZ67GvvYjMCAxhw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=provenrun.com; From: Florian Lugou To: qemu-devel@nongnu.org Cc: Florian Lugou , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org Subject: [PATCH v2 1/2] target/riscv: Add scontext CSR handling Date: Mon, 3 Mar 2025 10:31:54 +0100 Message-ID: <20250303093155.35585-2-florian.lugou@provenrun.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250303093155.35585-1-florian.lugou@provenrun.com> References: <20250303093155.35585-1-florian.lugou@provenrun.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0158.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36c::14) To PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1f2::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAZP264MB2990:EE_|MR0P264MB5530:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f142c59-84fd-4bd3-fe85-08dd5a36f3a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UEQp406lJfbQW8UetuKg6suXRvdf/YWTJsCDS3wWY7Va6F3h0PW3174Ke41d?= =?us-ascii?Q?xXK8k/8+TXzXxhWwX26hRtr+w4sfK72w1sahGVs9V803lfpiZj0tPqSt6z5z?= =?us-ascii?Q?0cjJSBWjGi7f3/GC4Zm0qY3KNy4TltWYYxz7GdYSF/uh2Se80wrf0DYDUv68?= =?us-ascii?Q?wQ02WXHxIciCHH4QTt03gG0k0oelkmy8pJs0bHA7qmB7AjW3cvciYzIYgCrD?= =?us-ascii?Q?Q9HAa2sjQJwLM7ZEOL0vSpQJ0aHKk+iokqZJw5f/7Wq1WpVCFmCFqimYk0/g?= =?us-ascii?Q?qtTbExLA/PXm7VU154w6F7Yu4fVCN98AzoY05PwMqJcsJHx+BQ1g8A8UDrwf?= =?us-ascii?Q?RFMYOJsFH1iQuR37g9AnPftJxQkcCu/f0DhmaZe9HKyLRRmyP4TdsKbVahVQ?= =?us-ascii?Q?7kBQy0ri4d3N+mP2xjyQmBzZf8BEsQfHwwAuP0Q6sLSg5+nRogYyUn3XThVt?= =?us-ascii?Q?fdihml2TunBYQVvKgHRDwt66NZOUXyH/XgRO8WDsc6oTyea+UMVLBK8Gdruf?= =?us-ascii?Q?ensFbYIryoRYD1NzI9iKssI4lbxUhOlVOjfH/xNlCWXLZSSrR4SYcDd9L42O?= =?us-ascii?Q?7/JjDpGFdSYoW9rCX4GzQohs69SaGMqmXds44KVkCug3DEi4ya7ZTA19CoWt?= =?us-ascii?Q?KB2pudTmdsrUXmP7pLCikMis+EBtzBudOAXF2IokDzdkWQ7GYa/LM2X54cq9?= =?us-ascii?Q?+xvCP+M1tlVCfWYBOnVPhynaEWfsnLSbSaICfyaVSIGvURoHebP+rScoYSGM?= =?us-ascii?Q?thPdEHjRCoIIN83s14f1ZRaY6BDSuVmq8pMbrbEKJcyBKO1gYnk2sXYkn7of?= =?us-ascii?Q?QhMemCBRceL9A20bzEOzojU+dZLDrY8+b/vedwUycAT0rJhq9siVjSbYbd1s?= =?us-ascii?Q?kIVUhcStU7iwOTjtt+uc+qKeP4MouSNP8G9MFeQizD/o2cCWZXPaWzsLuZtO?= =?us-ascii?Q?jbybbTZIk3a3snGoq3638+7TbGfu0v/uD0HHN3UN87h3dhk3B1rw+6BWx9a7?= =?us-ascii?Q?zHKi/bEsFE/liQPXV962fZ0mXYpjITdVpHKAGvhEgZZBCfGzmldwPGnKRoyS?= =?us-ascii?Q?/Ydzg2HzBDCGhYskDWUwcLYUcEW4Dsjgd2KxNFecYOIgzp/jIM/SZ/7yuAXo?= =?us-ascii?Q?xy1NKREbfldLVN9P/EBEwJ1PTnT9NvagxRyUjyr0LL9i77ogyBcwajDa4um2?= =?us-ascii?Q?ijFZKIBChvzeLpp/o/NOWo24uMz72cl79M71fCStZ8nYvWuBUlLQp40OKAcB?= =?us-ascii?Q?ekg7F0kWeNPiFRYUFeL3dNA74r4aU4V5vKC+kSLkoAFbbLWFEsTtODIyBWpC?= =?us-ascii?Q?OriNzkiDHU8XvxmQGzuJggh7G419egm3YUCP0N5PMOa3nqbbR0uAVXAJT1Qo?= =?us-ascii?Q?istdKxkpall9vWwhMX5pfHmUf3xj?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(376014)(10070799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zuF00wexNmXUqUto0Tl4Oq5tn9I/bWFADeAmd1HxA4fKNyRljEUL4AOrzB7O?= =?us-ascii?Q?eFtRfQMfHb697ovY3QwOkOzErHdyJR4tZ2QX4tJdq+2U+z90WlxmhhPKZVml?= =?us-ascii?Q?LFre3LOLgzErv7gcbA8kanreIVBLEPI1gX2qAI2M+f/3Yw32CWLEVlhiI/Wh?= =?us-ascii?Q?IESm0ZcRd3R/ixaUBqvtitnYZ9Sp0kzCXee+ji84sqWI2iDk5hyVcNg0RdsW?= =?us-ascii?Q?sss6X7CyxybMPckmI8sQaP9xDp7L/FNYTHK9np/exU7jDUu+V5birQCtn8Uj?= =?us-ascii?Q?nIr50ft25Jn/4tBrn3mDhWxnw53TSwVA2nX9+VncH4dnkiWwotakYGpyB7jr?= =?us-ascii?Q?Pxu5v56sRIq3qlWXjVm9J2nY9MDNUsHElR3uxAO65LOs15d4Ur0mK1pfD/F3?= =?us-ascii?Q?XtCWVCATmi9sQ1wxkuoZZHKbzf4c+JKO5jsgFz/x4V89H2qehPcOr4BIRrY6?= =?us-ascii?Q?VtyOYFI9xx4P7Kuy9pRi2zbIewPxxsEBP6862dqSxb9Ttrxuo/u6KqDYdkHP?= =?us-ascii?Q?tdJKcVgbv0Wy/ZG8sUQX1x5Wl1mXvYRnsVRBZXoYizy3Y+kHSOgItWZp04Q+?= =?us-ascii?Q?ClNA8s7nkVfCBPH2PfxSRbsHo9yxK7lNHIt/TGQ6gnWX1d0A89FSqssmNmH8?= =?us-ascii?Q?HjU0eXU5BSHZ31vsrP5bys4CjWAHhnYn71qnlnrPrebWq5JJiJRn/iAR9EoD?= =?us-ascii?Q?TDF1v5taYXTGVOKYi4EmhxpklFPJjD6RFCw3LxIJHY3/ITL7sElTHszjTD08?= =?us-ascii?Q?oX4S4sYJeZM5h3KDFnK9fG/nFRSwOALYSW1/LIf2elNrXZmNnwpHzUXXygmt?= =?us-ascii?Q?vc5Yl3kLOOa2yTP/a8SOBfG6uDuzLGTyqSYY9hl93i+b+rVMsD0I8BeLuMqt?= =?us-ascii?Q?UL1hXoFJsXAO6h+uvN0dotvXTyycxHwKww+l7cKB7GRrIU2SEg73mEUk3tzx?= =?us-ascii?Q?yGPRgmmBsEmX4hNWpNIGoakL2uyWopdi/m3AAsqheNwSYR1QeVCKx0lio22z?= =?us-ascii?Q?XiUF2I1x5D52Wac5qQHzexNf14x6xsYG8wEfMStMn5M3uj0Jw167ZekFCCx5?= =?us-ascii?Q?bAid/Po76I6qK7CweqA5g5UkWN2F6uHv4EON5setrDAlVKr4Y07xIs6thhu6?= =?us-ascii?Q?9NwxScKb+gAyMXQLgsK+peyQkRClUMch6U/rMYFLUP5wdVsL1+CDC46ZWaWw?= =?us-ascii?Q?+olW0UnNcsOe5K5jCKdt9vOC+TqY5tEg0CDhNLrb7BjGG8RshgZ48Mn8DQM9?= =?us-ascii?Q?ViIGbkZLUVCiblJVagAdfV28oAx4qZzHsFCmp7eo4+qMGyi7mEqeSxqFGJRc?= =?us-ascii?Q?wrZLXH59I6gUqiGRx9ePLH22n+RlUnPbZoICf5OE8HUU/bHyFyLzRHbJeSK+?= =?us-ascii?Q?Se7PlPCph9hBzBPbfXs5PbqEQvPXgLfD1Ke82aY7P/TOcEqv4AINnGeAZOkx?= =?us-ascii?Q?F6SZRejTt6IJrc23bc945KsTeI5CV09kx220rkuKgUPNBaf4B/ubQFiyEO2z?= =?us-ascii?Q?nXrV+sQ/X9eOqvgjUzhILzS/cyfPVX42SXnlAnU/e7bXVl+Y631FnjzVIfTb?= =?us-ascii?Q?vPbbhG8SXtP+X493XFjYF2d4xJTrpXhMgeM6EEpgXIXN37YPuoST6HZ3l5Fz?= =?us-ascii?Q?zFQ8QZYaPA8/PnvlUUd6kZtEiY+V10x+R0nGoIadyJrbz0AJ/7atg5pDGe3O?= =?us-ascii?Q?khnyBw=3D=3D?= X-OriginatorOrg: provenrun.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f142c59-84fd-4bd3-fe85-08dd5a36f3a6 X-MS-Exchange-CrossTenant-AuthSource: PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2025 09:37:02.0119 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: ff654c30-3eb4-4445-b89f-a54a92b1f03d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NJk+qi1GVeJaYoPSuHx6RjbIqbIubQJshqpZfPgQg2PCcq4XlKlwYiTtP+6rGUlTR72VOoVxeOpYSmbBxHmYm1oxZEpL5Jj22e2lAnCnF9c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR0P264MB5530 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=2a01:111:f403:c20a::; envelope-from=florian.lugou@provenrun.com; helo=PA5P264CU001.outbound.protection.outlook.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_PASS=-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 @provenrun.com) X-ZM-MESSAGEID: 1740994771535019100 Content-Type: text/plain; charset="utf-8" scontext size is 16 bits on RV32 and 32 bits on RV64, as recommended by version 1.0 2025-02-21 of the debug specification. When the Smstateen extension is implemented, accessibility to the scontext CSR is controlled by bit 57 of the [mh]stateen0 CSRs. Signed-off-by: Florian Lugou --- target/riscv/cpu.h | 1 + target/riscv/cpu_bits.h | 5 +++++ target/riscv/csr.c | 36 ++++++++++++++++++++++++++++++++++++ target/riscv/debug.c | 1 + 4 files changed, 43 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 616c3bdc1c..102e8285a6 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -440,6 +440,7 @@ struct CPUArchState { target_ulong tdata2[RV_MAX_TRIGGERS]; target_ulong tdata3[RV_MAX_TRIGGERS]; target_ulong mcontext; + target_ulong scontext; struct CPUBreakpoint *cpu_breakpoint[RV_MAX_TRIGGERS]; struct CPUWatchpoint *cpu_watchpoint[RV_MAX_TRIGGERS]; QEMUTimer *itrigger_timer[RV_MAX_TRIGGERS]; diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index a30317c617..e8997f3153 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -258,6 +258,9 @@ /* VS-Level Control transfer records CSRs */ #define CSR_VSCTRCTL 0x24e =20 +/* Supervisor-Level Sdtrig CSRs (debug) */ +#define CSR_SCONTEXT 0x5a8 + /* Hpervisor CSRs */ #define CSR_HSTATUS 0x600 #define CSR_HEDELEG 0x602 @@ -1103,4 +1106,6 @@ typedef enum CTRType { #define MCONTEXT64 0x0000000000001FFFULL #define MCONTEXT32_HCONTEXT 0x0000007F #define MCONTEXT64_HCONTEXT 0x0000000000003FFFULL +#define SCONTEXT32 0x0000FFFF +#define SCONTEXT64 0x00000000FFFFFFFFULL #endif diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 0ebcca4597..37b38f24a6 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -3393,6 +3393,10 @@ static RISCVException write_mstateen0(CPURISCVState = *env, int csrno, wr_mask |=3D SMSTATEEN0_P1P13; } =20 + if (riscv_cpu_cfg(env)->debug) { + wr_mask |=3D SMSTATEEN0_HSCONTXT; + } + if (riscv_cpu_cfg(env)->ext_smaia || riscv_cpu_cfg(env)->ext_smcsrind)= { wr_mask |=3D SMSTATEEN0_SVSLCT; } @@ -5321,6 +5325,35 @@ static RISCVException write_mcontext(CPURISCVState *= env, int csrno, return RISCV_EXCP_NONE; } =20 +static RISCVException read_scontext(CPURISCVState *env, int csrno, + target_ulong *val) +{ + RISCVException ret =3D smstateen_acc_ok(env, 0, SMSTATEEN0_HSCONTXT); + if (ret !=3D RISCV_EXCP_NONE) { + return ret; + } + + *val =3D env->scontext; + return RISCV_EXCP_NONE; +} + +static RISCVException write_scontext(CPURISCVState *env, int csrno, + target_ulong val) +{ + bool rv32 =3D riscv_cpu_mxl(env) =3D=3D MXL_RV32 ? true : false; + + RISCVException ret =3D smstateen_acc_ok(env, 0, SMSTATEEN0_HSCONTXT); + if (ret !=3D RISCV_EXCP_NONE) { + return ret; + } + + /* Spec suggest 16-bit for RV32 and 34-bit for RV64 */ + target_ulong mask =3D rv32 ? SCONTEXT32 : SCONTEXT64; + + env->scontext =3D val & mask; + return RISCV_EXCP_NONE; +} + static RISCVException read_mnscratch(CPURISCVState *env, int csrno, target_ulong *val) { @@ -5973,6 +6006,9 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] =3D { [CSR_SIEH] =3D { "sieh", aia_smode32, NULL, NULL, rmw_sieh }, [CSR_SIPH] =3D { "siph", aia_smode32, NULL, NULL, rmw_siph }, =20 + /* Supervisor-Level Sdtrig CSRs (debug) */ + [CSR_SCONTEXT] =3D { "scontext", debug, read_scontext, write_scontex= t }, + [CSR_HSTATUS] =3D { "hstatus", hmode, read_hstatus, write_hs= tatus, .min_priv_ver =3D PRIV_VERSION_1_12_0 = }, [CSR_HEDELEG] =3D { "hedeleg", hmode, read_hedeleg, write_he= deleg, diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 9db4048523..072593ab12 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -1088,4 +1088,5 @@ void riscv_trigger_reset_hold(CPURISCVState *env) } =20 env->mcontext =3D 0; + env->scontext =3D 0; } --=20 2.43.0 From nobody Wed Mar 5 02:36:56 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; arc=pass (i=1 dmarc=pass fromdomain=provenrun.com); dmarc=pass(p=none dis=none) header.from=provenrun.com ARC-Seal: i=2; a=rsa-sha256; t=1740994654; cv=pass; d=zohomail.com; s=zohoarc; b=X4WW/M5FdzlmDDTeTpc3K2cwlga5GS2VikLJMt+i7Y2qJe5+qygB87ONZZtnretgphygpJbhK0lxTO4T7uZhJaR+v9s3o6UVqgli/A7N/AAakRkKgoAaKZp4vmAGUgS3RTZwJv/IexTeGCUTNTgtH9YMZbxexN8BPiR1dGidqBY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740994654; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xjZ4Kpy7JjL4nveskTvqweRdIFgR1d024El4qftx8Lk=; b=gzYjtlXD4NQ4W48HvJIR1pH4sKO/gwz2fw9KOq/uXwWMgHhvsN1RZWnlqeBK6J1wzsetVUeL08z+GbGXgW6wQR+Xv49iDDGmudgA2ziFBiGlSr5v1QnfbcfMm+pHGtKm2M2NRbVQfYSOyLht6hMebeOO+CBycvWkboORDGhjYq4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=provenrun.com); 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 1740994653921149.89382125194618; Mon, 3 Mar 2025 01:37:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tp2Ec-0001tr-Uu; Mon, 03 Mar 2025 04:37:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tp2Eb-0001tI-Ji; Mon, 03 Mar 2025 04:37:13 -0500 Received: from mail-francecentralazlp170100000.outbound.protection.outlook.com ([2a01:111:f403:c20a::] helo=PA5P264CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tp2EZ-00007q-Qr; Mon, 03 Mar 2025 04:37:13 -0500 Received: from PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1f2::18) by MR0P264MB5530.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:4e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.28; Mon, 3 Mar 2025 09:37:04 +0000 Received: from PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM ([fe80::ef1:e8a1:244f:3ca7]) by PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM ([fe80::ef1:e8a1:244f:3ca7%5]) with mapi id 15.20.8489.028; Mon, 3 Mar 2025 09:37:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tp+aR8gB63CQF2HzH0vEhcK7pW7ioA06dfakCLRbn8ygT7rsRHsng7IfpeswsebzyIoNsVAMvuu6wFVs6wbePmKQL8H4X9YE4i9/5ZacR4GYxC9OMOtKkABQXARGdNVq9KIjbdConYzLfielg54X+g3lNGrP3SX+JxkUVfXP7BMq0hpq+SDXZsyXoyPRYZ5wTqxzOsgjSghj2yFvzfTfdSoCZXeLZNs273RcPzeV1QYbQ64wQpy6iEOkU/g68FhpKEsUqvG+y5hL5Qpfg94dlDGdn9EGmQ3g+8y/pjs4IQCAMQGKgVX6um7KvddM0NSOldmv4Vs+Ia0TxpCZELC9wA== 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=xjZ4Kpy7JjL4nveskTvqweRdIFgR1d024El4qftx8Lk=; b=uKGrGDdCwrdv9Mzgp/nmrRQDwWmuwhOBFH2+ecLfglgVUt2c6s9ye01XhYq0RREmNaXDyvNLqfyIzl4Edl1+eEE0ftA4MceYeJh8z7Pbp2HnStB7qKYbE81+gQ4hGiovot/3pKUio7FsE678UQLW5rYqgqikhZ+kNyqJkuoz0R6EFRbBs6fuj3JXsrM4Lyx/R4JAsohk57/yR9fjoUTjeuOo8B65Npv69HwMT0S48K+fsV3tWPufStzE1xirFQiX13XJJrpZ2pq9jwN6GCrtz1mDpqZT1MCBTnI9YK+RmxRLrkSOwb62NxAd9nqlmgwLeh3+MGr7oD4fcPR96vFQKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=provenrun.com; dmarc=pass action=none header.from=provenrun.com; dkim=pass header.d=provenrun.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=provenrun.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xjZ4Kpy7JjL4nveskTvqweRdIFgR1d024El4qftx8Lk=; b=upjd6EUZcO3o2ZA7R7T5Jed1fVwna7YzjNIzI6dCtqR4zhzZjPUztPJ8Xbgq+xsZlCw213wFF7RwxyN6gbnoHLDcnmZtuBevNftmzo35ccr04fdTKvCvwawoG1Yo/a7wQS526ZF9RR62Qt8AAKXjkCvmxuxHZDuDxcnavgrjyM7Xz5moeL6vULP7Z8YevPWbWv3OzsHko5GuI7uXvpyDmOUpSQWFyh/zFAxU7M4/Vhb+0qCeCDNzfy8lLXH0zSTt27Gk7MSU76xLJ3MP4iKWMX8MSkOOQmNkNW7JIe7IUPkpwLOras0e7Zd2PHISG+gurSzOgowlapUm0tJ1+x3ZaQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=provenrun.com; From: Florian Lugou To: qemu-devel@nongnu.org Cc: Florian Lugou , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org Subject: [PATCH v2 2/2] target/riscv: Support matching scontext in Sdtrig's textra CSRs Date: Mon, 3 Mar 2025 10:31:55 +0100 Message-ID: <20250303093155.35585-3-florian.lugou@provenrun.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250303093155.35585-1-florian.lugou@provenrun.com> References: <20250303093155.35585-1-florian.lugou@provenrun.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0158.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36c::14) To PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1f2::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAZP264MB2990:EE_|MR0P264MB5530:EE_ X-MS-Office365-Filtering-Correlation-Id: bb379a60-308b-48c0-166d-08dd5a36f52b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SRZuoVR6TddCWdMGrexkEsytSKBMLVf1DzNVtU0NmqyIugNC3i35B+XqWS12?= =?us-ascii?Q?2oQzGduqlHqCDCD5SCmEAd53FSpM2VRbK/1luamCqBYKZ2t032tTHPfGFlKJ?= =?us-ascii?Q?qnngIAVqQ75R964K1EQMWwYEyLesmtLIZKlLke45iiwqUbdfUbtICz2uZRA+?= =?us-ascii?Q?f+yBw9kZ8tqFn95D8EViCuM/oDtqLNN0Fmuc6RijMIBBY6dlzjYFTRJYkuzU?= =?us-ascii?Q?kV/8v1R7XgUSMKTwmyHa1yAR3wh4mvSX/psHs+rAlQUNgYx1TEN/rXtZB9gF?= =?us-ascii?Q?Ae9cLAUQCyPCMq9j9ZFu5JO4Cdnrev/1g3o6YDtkyQBM46GO8hAK2ar5PcLi?= =?us-ascii?Q?GdO6FlM9RqQUEbWhe+JgywzdTB+IkjjMUPVqE9IxmQmrFBzoCGrV/oTauNn0?= =?us-ascii?Q?fuEvw3DonNl1gyihZKGu7E5y+/8Zl0iAnTmxIs4FUVi75g5/w5/iJUIq4Onm?= =?us-ascii?Q?46mHGArXkrvROaVeAbw8VnHDFy5RmeNMdpYEOnLbKeKzixI/u8dKBVT0W9ss?= =?us-ascii?Q?9YjvTuK7/0IVcocdUzkibD75HPqF9MwMdl9TVwhcrt/jWBrtNXcxSioNr6do?= =?us-ascii?Q?W6Xa5zuYaVSn+Hj37ilu4ZMqQ+si/06x7MA5+dmk8TnF4FI3w1DP70FoEKg9?= =?us-ascii?Q?SPiXIOGsi/GRoCzAuUdjqiRhO67vyuWImd3SiSSYn/f0g3AvUT73IoYZufy/?= =?us-ascii?Q?lNbyutxxAjKKhDvXbzo6A232IDI4GuuW/MfSoBknFTs7qqTpay8UavXhTdFo?= =?us-ascii?Q?Ro+FEo6v06Hs1+xxJIjakqk9wtuH/1B+57kZOPRqMSNSBHmnmqCs4f8VO4yb?= =?us-ascii?Q?fsdHUEY9uBG731mmi9ge01dbj9ErO9wNVlj55MPPDfq12Z6sEQUopBA2n/st?= =?us-ascii?Q?+qd5Pf9SBG58+Hf3qoY0PnK75EyuS21DPCIho+Qd8WdqoWY7busxya6bPkit?= =?us-ascii?Q?Sc5t7JPCJxj77WOYgtnh9ZP+ZWCbJjJfDopRcF9hw7wiAkUZfr45wI+ryNPq?= =?us-ascii?Q?EwIyecu+eFnN90AiZUkRN42RYnZPXMajcJy/bIwT7A4MPRxLxHhhYqum3eRW?= =?us-ascii?Q?WwOpl96bQ4Rc6hEyZpVVRsaG8J5O4+gKyLsfh2madPbMvoN7XSr581trnzRG?= =?us-ascii?Q?3lhFUKWfgie2FCcOXbJgWyI8KipIkUKCpvUD/7MvU3ae9FUqqU+/iCOvER5k?= =?us-ascii?Q?9GvLYmYONCP4YHQ30c3CMkBmM7i9whKUn5dC6+zQDaooPoEepVXfXnXVpXdn?= =?us-ascii?Q?1JdbFVHH7QzBK8d6a8cDBfTqsucLhNMRFWEJqGIJgXMw0y7leJ0uitfrIZHA?= =?us-ascii?Q?ey2c4mg3/jNBN2SX/8pNmozGmmDmHbVhRjZDPkSHWuhhiYB1YBpAK3wV3AAW?= =?us-ascii?Q?EkXxhT6BFuj8/ExVwxSROwN92CCl?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(376014)(10070799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Sp/Vn4FvZAlYyuex8klhew/6eKVw74KTko4X69qLBvl5nLlMeuVvg3psisBj?= =?us-ascii?Q?LCdXDITqnuhzmhbUj9cAzDlTtVeIheMl1M/OKYgNyBrh7XQLpkNRnCC0kWXj?= =?us-ascii?Q?DaBn7R+ST6LfFHjTuwhUD9M7KPOg3s0FBNQ+zImbb3JXhJNS2feEl1AmfcSR?= =?us-ascii?Q?/yqVhbWwzc1V2jKiqZ0D/2O28/KkOU+whPU0owP1pWymHV11PkShA10ni9tE?= =?us-ascii?Q?V2lEOXgkpXBrv9WEgmmykigorHlOUvN3xdG/TTjfKzamC5VgBNWAbqaTS3X4?= =?us-ascii?Q?ydW6JLLAWqyN+PdWPjwvnXTVYUeh3IKxFo2VowMgHAEoQ+u/HaV+zHasWpVA?= =?us-ascii?Q?M4jPYgU/nSy2Pf8sgDx7/tgNNzW8GSdNOVh1OQ+9VyuSp8n3L5zxVDh8AxVS?= =?us-ascii?Q?+PfiG5BWlnZSkz4R/4gUSnU3JYWrCnXt6Yz0UEBFZpI6mqLmvFmEgjgWM5vy?= =?us-ascii?Q?xheGUJf+2jD0o4XqWdnkxQYa69TDDh0rmjdH2yig8ODruBvoYKWz4BWxYUkO?= =?us-ascii?Q?S68/OwZgYre6u5BHn920dEakn47O3M1p/CHcCplx8SQvF2OUPPuE7FX3M4rg?= =?us-ascii?Q?eHywImgfQoEfKbmntJ0jqguR/W0PNv07IUjU+/EOqKiAJqyBjUhhFx46rMg/?= =?us-ascii?Q?F0Lbqmhve/iP1seur6XN/00yk4i93FzFNzdZeOorEjilHY5CD+F2WtF68cjg?= =?us-ascii?Q?E41eHT+iutu0qwSmpqk/ppivNPLydBWzOdXWaEDHJyoXC5A2Yl2j8dGfLWQD?= =?us-ascii?Q?2vKlWMm0P9MtpOUPPGSicdEX61ONq+WuXk4gim2wtxrhP8MomoqZR6VOo0Pc?= =?us-ascii?Q?lf9qQFhUyDC0EMUC73iNwAndlEQlI/N4yUs7Pm280Q/AHgkec/v709RI0ayn?= =?us-ascii?Q?heULyjEVQzGDlt2l2q6dA8ayPgJBiJPKgrbxM3BpkiTA34jPUwtZKFzrWmy9?= =?us-ascii?Q?TDSw67GehmlFGoPYu/BS7WbHoDzmu0r+6Urr9dYfpNuEOMcGCNjroLkYTVEw?= =?us-ascii?Q?eG0kdHezF6r9qIZUTO9N+nj9Xlgy/5XlfFkuwRGGw6tjZvlbmupeEx/hvA9/?= =?us-ascii?Q?OGpM5ERMWbFvL4LoI730wKYwFMi2pYqd2XfElSHNdbg1lEbl3UEUq5heRNPn?= =?us-ascii?Q?jdEoAGApVfMcWCUUkje5pahCukJdYF9+GJElDzAiefU45i8ij4wC2XNBPv6I?= =?us-ascii?Q?GAVwhLAo0VZCwmioK71RZbSACSHGwfk7n11DWDiblONaETXrlywTUTrs9y8i?= =?us-ascii?Q?RwfOBK1oroSpLbxXXA/gi+uLGmnMIBdA0M54w2oVK//1/b5zCIcyPsyABsN3?= =?us-ascii?Q?NqtLa+SrSnbgO3ofpU/NBvepFH1+3LZqYqErtOPo3tPFbbEgjJGVKPC8ii+l?= =?us-ascii?Q?Xo8uiPQ0n5DZHg2HrGYba7+KXMo3v1nnJw0Nzd5Q8iJTS4IO54r3j1EMyi9y?= =?us-ascii?Q?N4cO1nj3ZQ8fP6Nv47C/UM30p7gvLEnJ63h7EFnqs9r8Qpo/L8qbF+3pT61a?= =?us-ascii?Q?ho28y/J40cZb4zpN29K7IgW/pOis4bKWoaDUJXJhy9C4oq1/NytL8v9qlul3?= =?us-ascii?Q?Ug/yHsgiPTRJc6/5JhCNLfC7E2iC4G1jAMHcGvMNbfd0h0XDSaziZA1VQ/ac?= =?us-ascii?Q?NSGWdHbhgUiw5vQ5oUsye4kDmzUdrqcStM/00yvogZNQ5T0mamVkR5mwLiS+?= =?us-ascii?Q?lpgJ2Q=3D=3D?= X-OriginatorOrg: provenrun.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb379a60-308b-48c0-166d-08dd5a36f52b X-MS-Exchange-CrossTenant-AuthSource: PAZP264MB2990.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2025 09:37:04.6078 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: ff654c30-3eb4-4445-b89f-a54a92b1f03d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qrSe1KSG8tLnXvu2LgADqiY2GFjEysbXQ2rTC7NGr3tJvR/x0kvEba5+aq/MuFJumqvl1lgMcc7TuixQ1UVNYNEMv4k8r7b4K4w/K9EFknY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR0P264MB5530 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=2a01:111:f403:c20a::; envelope-from=florian.lugou@provenrun.com; helo=PA5P264CU001.outbound.protection.outlook.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_PASS=-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 @provenrun.com) X-ZM-MESSAGEID: 1740994655373019100 Content-Type: text/plain; charset="utf-8" Support setting textra32.sselect or textra64.sselect to 1 (scontext). The trigger will only match if the content of scontext matches the value in svalue, after it is masked as configured in sbytemask. Signed-off-by: Florian Lugou --- target/riscv/debug.c | 75 +++++++++++++++++++++++++++++++------------- target/riscv/debug.h | 3 ++ 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index 072593ab12..a64dadf6d6 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -219,8 +219,8 @@ static inline void warn_always_zero_bit(target_ulong va= l, target_ulong mask, =20 static target_ulong textra_validate(CPURISCVState *env, target_ulong tdata= 3) { - target_ulong mhvalue, mhselect; - target_ulong mhselect_new; + target_ulong mhvalue, mhselect, sbytemask, svalue, sselect; + target_ulong mhselect_new, sselect_new; target_ulong textra; const uint32_t mhselect_no_rvh[8] =3D { 0, 0, 0, 0, 4, 4, 4, 4 }; =20 @@ -228,25 +228,17 @@ static target_ulong textra_validate(CPURISCVState *en= v, target_ulong tdata3) case MXL_RV32: mhvalue =3D get_field(tdata3, TEXTRA32_MHVALUE); mhselect =3D get_field(tdata3, TEXTRA32_MHSELECT); - /* Validate unimplemented (always zero) bits */ - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA32_SBYTEMASK, - "sbytemask"); - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA32_SVALUE, - "svalue"); - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA32_SSELECT, - "sselect"); + sbytemask =3D get_field(tdata3, TEXTRA32_SBYTEMASK); + svalue =3D get_field(tdata3, TEXTRA32_SVALUE); + sselect =3D get_field(tdata3, TEXTRA32_SSELECT); break; case MXL_RV64: case MXL_RV128: mhvalue =3D get_field(tdata3, TEXTRA64_MHVALUE); mhselect =3D get_field(tdata3, TEXTRA64_MHSELECT); - /* Validate unimplemented (always zero) bits */ - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA64_SBYTEMASK, - "sbytemask"); - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA64_SVALUE, - "svalue"); - warn_always_zero_bit(tdata3, (target_ulong)TEXTRA64_SSELECT, - "sselect"); + sbytemask =3D get_field(tdata3, TEXTRA64_SBYTEMASK); + svalue =3D get_field(tdata3, TEXTRA64_SVALUE); + sselect =3D get_field(tdata3, TEXTRA64_SSELECT); break; default: g_assert_not_reached(); @@ -258,17 +250,34 @@ static target_ulong textra_validate(CPURISCVState *en= v, target_ulong tdata3) qemu_log_mask(LOG_UNIMP, "mhselect only supports 0 or 4 for now\n"= ); } =20 + /* Validate sselect. */ + switch (sselect) { + case SSELECT_IGNORE: + case SSELECT_SCONTEXT: + sselect_new =3D sselect; + break; + default: + sselect_new =3D 0; + qemu_log_mask(LOG_UNIMP, "sselect only supports 0 or 1 for now\n"); + } + /* Write legal values into textra */ textra =3D 0; switch (riscv_cpu_mxl(env)) { case MXL_RV32: - textra =3D set_field(textra, TEXTRA32_MHVALUE, mhvalue); - textra =3D set_field(textra, TEXTRA32_MHSELECT, mhselect_new); + textra =3D set_field(textra, TEXTRA32_MHVALUE, mhvalue); + textra =3D set_field(textra, TEXTRA32_MHSELECT, mhselect_new); + textra =3D set_field(textra, TEXTRA32_SBYTEMASK, sbytemask); + textra =3D set_field(textra, TEXTRA32_SVALUE, svalue); + textra =3D set_field(textra, TEXTRA32_SSELECT, sselect_new); break; case MXL_RV64: case MXL_RV128: - textra =3D set_field(textra, TEXTRA64_MHVALUE, mhvalue); - textra =3D set_field(textra, TEXTRA64_MHSELECT, mhselect_new); + textra =3D set_field(textra, TEXTRA64_MHVALUE, mhvalue); + textra =3D set_field(textra, TEXTRA64_MHSELECT, mhselect_new); + textra =3D set_field(textra, TEXTRA64_SBYTEMASK, sbytemask); + textra =3D set_field(textra, TEXTRA64_SVALUE, svalue); + textra =3D set_field(textra, TEXTRA64_SSELECT, sselect_new); break; default: g_assert_not_reached(); @@ -368,7 +377,7 @@ static bool trigger_textra_match(CPURISCVState *env, tr= igger_type_t type, int trigger_index) { target_ulong textra =3D env->tdata3[trigger_index]; - target_ulong mhvalue, mhselect; + target_ulong mhvalue, mhselect, sbytemask, svalue, sselect; =20 if (type < TRIGGER_TYPE_AD_MATCH || type > TRIGGER_TYPE_AD_MATCH6) { /* textra checking is only applicable when type is 2, 3, 4, 5, or = 6 */ @@ -379,11 +388,17 @@ static bool trigger_textra_match(CPURISCVState *env, = trigger_type_t type, case MXL_RV32: mhvalue =3D get_field(textra, TEXTRA32_MHVALUE); mhselect =3D get_field(textra, TEXTRA32_MHSELECT); + sbytemask =3D get_field(textra, TEXTRA32_SBYTEMASK); + svalue =3D get_field(textra, TEXTRA32_SVALUE); + sselect =3D get_field(textra, TEXTRA32_SSELECT); break; case MXL_RV64: case MXL_RV128: mhvalue =3D get_field(textra, TEXTRA64_MHVALUE); mhselect =3D get_field(textra, TEXTRA64_MHSELECT); + sbytemask =3D get_field(textra, TEXTRA64_SBYTEMASK); + svalue =3D get_field(textra, TEXTRA64_SVALUE); + sselect =3D get_field(textra, TEXTRA64_SSELECT); break; default: g_assert_not_reached(); @@ -403,6 +418,24 @@ static bool trigger_textra_match(CPURISCVState *env, t= rigger_type_t type, break; } =20 + target_ulong svalue_mask =3D ((sbytemask & 1) * 0xFF) | + ((sbytemask & 2) * 0x7F80) | ((sbytemask & 4) * 0x3FC000) | + ((sbytemask & 8) * 0x1FE00000); + + /* Check svalue and sselect. */ + switch (sselect) { + case SSELECT_IGNORE: + break; + case SSELECT_SCONTEXT: + /* Match if the low bits of scontext equal svalue. */ + if ((svalue & svalue_mask) !=3D (env->scontext & svalue_mask)) { + return false; + } + break; + default: + break; + } + return true; } =20 diff --git a/target/riscv/debug.h b/target/riscv/debug.h index f76b8f944a..16b66441ca 100644 --- a/target/riscv/debug.h +++ b/target/riscv/debug.h @@ -134,6 +134,9 @@ enum { #define MHSELECT_IGNORE 0 #define MHSELECT_MCONTEXT 4 =20 +#define SSELECT_IGNORE 0 +#define SSELECT_SCONTEXT 1 + bool tdata_available(CPURISCVState *env, int tdata_index); =20 target_ulong tselect_csr_read(CPURISCVState *env); --=20 2.43.0