From nobody Tue May 7 23:31:45 2024 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=siemens.com); dmarc=pass(p=none dis=none) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1641312977; cv=pass; d=zohomail.com; s=zohoarc; b=N5CueD/CEnGNh+PfPbuq5qQKg5Ry9sUD15A7Di1T6jozW/0JaZR8t2lCdiUZMgyYlps602mZBEoWqaGl1TsJYqLw3A0kxQZ1UE7e/RHxPph3zX0hZsJWQFh5r0BueQzMzM3nWH1uKwQb+SggB1+UNzh4ta8fA1Is6dUeWlN2uZE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641312977; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lWSbHdU2G8ZgRKu8Cq/hLVyhJ4yYWZIULxS75T1KIuQ=; b=OwVWQ204GYWheNAvFC4B/4WyaR6drsViyO8cuoFXDdy4AEnCegls8Hgr63H1oYwqj1Cm9vLWe7Wo3dia8KvRtF83PR6t9zWDx0s8XQ7IKc/6UsEDzALpRLYNh/18m/huPqALeNybVKRO9lOVMou3o5leqyLznU5nmZ0BA41dQk8= 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=siemens.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 1641312977105514.0954073858582; Tue, 4 Jan 2022 08:16:17 -0800 (PST) Received: from localhost ([::1]:36516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4mTv-0000zV-GC for importer@patchew.org; Tue, 04 Jan 2022 11:16:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4mR1-0007qH-3W for qemu-devel@nongnu.org; Tue, 04 Jan 2022 11:13:15 -0500 Received: from mail-eopbgr30074.outbound.protection.outlook.com ([40.107.3.74]:39566 helo=EUR03-AM5-obe.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 1n4mQy-0000vV-2I for qemu-devel@nongnu.org; Tue, 04 Jan 2022 11:13:14 -0500 Received: from AM6PR08CA0014.eurprd08.prod.outlook.com (2603:10a6:20b:b2::26) by AS8PR10MB4679.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:332::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Tue, 4 Jan 2022 15:52:06 +0000 Received: from VE1EUR01FT014.eop-EUR01.prod.protection.outlook.com (2603:10a6:20b:b2:cafe::af) by AM6PR08CA0014.outlook.office365.com (2603:10a6:20b:b2::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:06 +0000 Received: from hybrid.siemens.com (194.138.21.71) by VE1EUR01FT014.mail.protection.outlook.com (10.152.2.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:05 +0000 Received: from DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) by DEMCHDC9SKA.ad011.siemens.net (194.138.21.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:04 +0100 Received: from fedora.vmnet8.md1wgtfc (139.21.146.182) by DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:03 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NyIlEtITQcxSUl4M20xUvUgxxr1xijCG/dR0lrPIkyiX3t9HIEKjBWQ/STFU5hfcrLa8gUTzB5bIzhx1Pa/I5FaiMBP+fNOhd7BTbFgKzpNsd/NuFpTViYJUB37CkO8ATkkjFEqQdRhP4u4waRuKhBJLyiDQyUpwPn8Vhdqewb7FIIBk4r3bhsJ6jQfwNY81EFLFaDL5iYevfq1Z9/rFEYpkrE5TGdTlMbaUdll11ATQDJRqZ2VwKCVMnGk7jhXSKiccr6wAN67kXC/pmYXlsg1i3CNbuj9Za18cT6MxbhzLPjg2cX76xHxSfXS+uHm5sne40vh0n+nIBm1xEgGYUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=lWSbHdU2G8ZgRKu8Cq/hLVyhJ4yYWZIULxS75T1KIuQ=; b=Xca2hgCDDP47hKdXKsl3vh9UYYd1yPS2E0guCpNxA6uvWCuE7qsNTiGpVNET0/m0uRsBL5gk3hrE1nZT6xOpaJ1o5Qkg+NVoepbLd5K+8n28tYnZ08qIiYY8yuAEdbOavqnC7DGFkVvrzWbTHljzyLKgY4dBERW28oOHczY4kzd/7fit9DThu4QEtngF9JmGfMjaJmmrQPH18frNRfCphJEHyhpE+47zL4jVtcMhg8BjrADPb+DdVvrYR9hUJfB9obdeHhHBzdayIJH46tOWUuGl69V/s3RphUXhNyFCIQHld2AgQC+qdos2srtIh2lksb0DX5XWkk0xsh1H9Gw2xA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.71) smtp.rcpttodomain=nongnu.org smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lWSbHdU2G8ZgRKu8Cq/hLVyhJ4yYWZIULxS75T1KIuQ=; b=oXtGL/dr4TIyARaNCdsX30cNRnfrCpvsj7zZW+neSG/N4uR235VIpmdWAPSx76G/NQIe/GU5D4Sl2EOGMC5PBTnT0a3IGnI/khw1FvSVuGPYiUDefKspTNNwDguFov1cCEwlVanU55s5ruQCS3Gfdh32pYVsewlVYo92WdM4WFHZL+u/41sOUQrNrsOqPDJwPJcXvGfKLvHAx+2rC7ljBG0jiXsS1mkdHcC5X2Syp/2BHa5ZVHgZwYFXPF2A2Yo8dQCWIWq5oflPrlRbBdZMclM5BYyadEdfO94OavGVZTsNyqNGSGaXO/htLyz5xOLoEY5hw11wQq+eHUv+RzKeBA== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.71) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; 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 (protection.outlook.com: domain of siemens.com designates 194.138.21.71 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.71; helo=hybrid.siemens.com; From: Konrad Schwarz To: Subject: [PATCH v2 1/5] RISC-V: larger and more consistent register set for 'info registers' Date: Tue, 4 Jan 2022 16:51:16 +0100 Message-ID: <85d02ac883c7cf40fbd54e8747783937e0370eaa.1641309725.git.konrad.schwarz@siemens.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: <00a79b65-288f-f17c-abe4-fcfd3f7971fd@oth-regensburg.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [139.21.146.182] X-ClientProxiedBy: DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) To DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ffb9bafb-fbaa-40fa-6bec-08d9cf9a27f7 X-MS-TrafficTypeDiagnostic: AS8PR10MB4679:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /tnZe/P3xmQe2ceV4L23lqQsIraE5ApJznYDKY695HUnVtPES4EongaPVKVeUx+MIPMM0Hv82BX/DpgicAG54jSskqpe5Mu1/pVFVYKhz6imzIvqMdgu7Og7Yt3g0xd7HXoNCqytDc+9Q+6gJGYTC1Y+wE2Wn+uqqVU8PKRREZ2SZZ1P59KO9VfrZFxTcjGVMapNoRTSrIcGro7saSGsMXbZuOQ/vM5QOh2qApirINsXKjoLIHN4yDf0kPsv+tN+hpFrpIqMzlJPOqEtvcY4+xHkVfpeNx2hTfVu9KPDKeP/9OfIAAc6x0EQqY8G45bUdCk2acnJypVKUbkvq6xkkpLiY7oKkJun6mzfYKqkm1w9QC95YFgp3nIdw9gPcv069AOWk0TBeBlbUfqhiafCUuSVtRFFW2Bzin5ZcG45zF7h+hJ0KwGQWh2howcmX8zvxTOuYYNizKDGnVPUXuGj1a3qy8N9mXRqfOx6ntjHoObnxCVWcAFnH7gnRoEzB5p1fwjETKARfAHCrPnhDNW3iknPO/lKiNyZPiVvQjyUuBpc3VdLb6evbuL87otUEYBIUO7VIvxpLQIY0A4+L/X06wGfD0gd4/2NlJcQZIpBwCckYkLx8B3gcHlGllb4F2qbePoUVzvIne2ftFDjwRoNhn16RpZe/YmdWCuI2hkWiv4vyfiV5KmGUY/A8MLsayF1qs79tp7hQswtw8S/6WkVqiolk9l9E8bAGFywk5FjbIvsZzxzJNlubjbIoM1nELG/4eo+btHyIRhpMM3aiyOguZQcaz6rv88n2hZhmUFlZVDW0vXvRbtBhvwmVxKz9Lxv X-Forefront-Antispam-Report: CIP:194.138.21.71; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:hybrid.siemens.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(4636009)(36840700001)(40470700002)(46966006)(6666004)(36860700001)(316002)(16526019)(36756003)(83380400001)(5660300002)(508600001)(356005)(44832011)(8676002)(8936002)(2616005)(2906002)(26005)(54906003)(47076005)(186003)(70206006)(86362001)(40460700001)(82310400004)(6916009)(336012)(956004)(70586007)(81166007)(4326008)(82960400001)(2004002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 15:52:05.1450 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ffb9bafb-fbaa-40fa-6bec-08d9cf9a27f7 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a; Ip=[194.138.21.71]; Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT014.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB4679 Received-SPF: pass client-ip=40.107.3.74; envelope-from=konrad.schwarz@siemens.com; helo=EUR03-AM5-obe.outbound.protection.outlook.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 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: , Cc: Konrad Schwarz , Alistair Francis , Bin Meng , Palmer Dabbelt , Ralf Ramsauer Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @siemens.com) X-ZM-MESSAGEID: 1641312978335100001 Content-Type: text/plain; charset="utf-8" Display more CSRs in the 'info registers' command and group them according to function. The number of CSRs in RISC-V is so large to make it impractical for all CSRs to be displayed by 'info registers'. The code uses conditional compilation directives around register groups; advanced users can enable/disable register groups as required. Signed-off-by: Konrad Schwarz --- target/riscv/cpu.c | 327 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 303 insertions(+), 24 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index f812998123..eb9518fc16 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -3,6 +3,7 @@ * * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu * Copyright (c) 2017-2018 SiFive, Inc. + * Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -244,40 +245,318 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE = *f, int flags) #ifndef CONFIG_USER_ONLY { static const int dump_csrs[] =3D { + +# if 0 + CSR_USTATUS, + CSR_UIE, + CSR_UTVEC, + +/* User Trap Handling */ + CSR_USCRATCH, + CSR_UEPC, + CSR_UCAUSE, + CSR_UTVAL, + CSR_UIP, +# endif + +/* User Floating-Point CSRs */ + CSR_FFLAGS, + CSR_FRM, + CSR_FCSR, + +/* User Vector CSRs */ + CSR_VSTART, + CSR_VXSAT, + CSR_VXRM, + CSR_VL, + CSR_VTYPE, + +# if 0 +/* User Timers and Counters */ + CSR_CYCLE, + CSR_TIME, + CSR_INSTRET, + CSR_HPMCOUNTER3, + CSR_HPMCOUNTER4, + CSR_HPMCOUNTER5, + CSR_HPMCOUNTER6, + CSR_HPMCOUNTER7, + CSR_HPMCOUNTER8, + CSR_HPMCOUNTER9, + CSR_HPMCOUNTER10, + CSR_HPMCOUNTER11, + CSR_HPMCOUNTER12, + CSR_HPMCOUNTER13, + CSR_HPMCOUNTER14, + CSR_HPMCOUNTER15, + CSR_HPMCOUNTER16, + CSR_HPMCOUNTER17, + CSR_HPMCOUNTER18, + CSR_HPMCOUNTER19, + CSR_HPMCOUNTER20, + CSR_HPMCOUNTER21, + CSR_HPMCOUNTER22, + CSR_HPMCOUNTER23, + CSR_HPMCOUNTER24, + CSR_HPMCOUNTER25, + CSR_HPMCOUNTER26, + CSR_HPMCOUNTER27, + CSR_HPMCOUNTER28, + CSR_HPMCOUNTER29, + CSR_HPMCOUNTER30, + CSR_HPMCOUNTER31, + CSR_CYCLEH, + CSR_TIMEH, + CSR_INSTRETH, + CSR_HPMCOUNTER3H, + CSR_HPMCOUNTER4H, + CSR_HPMCOUNTER5H, + CSR_HPMCOUNTER6H, + CSR_HPMCOUNTER7H, + CSR_HPMCOUNTER8H, + CSR_HPMCOUNTER9H, + CSR_HPMCOUNTER10H, + CSR_HPMCOUNTER11H, + CSR_HPMCOUNTER12H, + CSR_HPMCOUNTER13H, + CSR_HPMCOUNTER14H, + CSR_HPMCOUNTER15H, + CSR_HPMCOUNTER16H, + CSR_HPMCOUNTER17H, + CSR_HPMCOUNTER18H, + CSR_HPMCOUNTER19H, + CSR_HPMCOUNTER20H, + CSR_HPMCOUNTER21H, + CSR_HPMCOUNTER22H, + CSR_HPMCOUNTER23H, + CSR_HPMCOUNTER24H, + CSR_HPMCOUNTER25H, + CSR_HPMCOUNTER26H, + CSR_HPMCOUNTER27H, + CSR_HPMCOUNTER28H, + CSR_HPMCOUNTER29H, + CSR_HPMCOUNTER30H, + CSR_HPMCOUNTER31H, +# endif + +# if 0 +/* Machine Timers and Counters */ + CSR_MCYCLE, + CSR_MINSTRET, + CSR_MCYCLEH, + CSR_MINSTRETH, +# endif + +/* Machine Information Registers */ + CSR_MVENDORID, + CSR_MARCHID, + CSR_MIMPID, CSR_MHARTID, + +/* Machine Trap Setup */ CSR_MSTATUS, - CSR_MSTATUSH, - CSR_HSTATUS, - CSR_VSSTATUS, - CSR_MIP, - CSR_MIE, - CSR_MIDELEG, - CSR_HIDELEG, + CSR_MISA, CSR_MEDELEG, - CSR_HEDELEG, + CSR_MIDELEG, + CSR_MIE, CSR_MTVEC, - CSR_STVEC, - CSR_VSTVEC, + CSR_MCOUNTEREN, + +# if defined TARGET_RISCV32 +/* 32-bit only */ + CSR_MSTATUSH, +# endif + +/* Machine Trap Handling */ + CSR_MSCRATCH, CSR_MEPC, - CSR_SEPC, - CSR_VSEPC, CSR_MCAUSE, - CSR_SCAUSE, - CSR_VSCAUSE, CSR_MTVAL, + CSR_MIP, + +/* Supervisor Trap Setup */ + CSR_SSTATUS, + CSR_SEDELEG, + CSR_SIDELEG, + CSR_SIE, + CSR_STVEC, + CSR_SCOUNTEREN, + +/* Supervisor Trap Handling */ + CSR_SSCRATCH, + CSR_SEPC, + CSR_SCAUSE, CSR_STVAL, + CSR_SIP, + +/* Supervisor Protection and Translation */ + CSR_SPTBR, + CSR_SATP, + +/* Hpervisor CSRs */ + CSR_HSTATUS, + CSR_HEDELEG, + CSR_HIDELEG, + CSR_HIE, + CSR_HCOUNTEREN, + CSR_HGEIE, CSR_HTVAL, + CSR_HVIP, + CSR_HIP, + CSR_HTINST, + CSR_HGEIP, + CSR_HGATP, + CSR_HTIMEDELTA, + CSR_HTIMEDELTAH, + +/* Virtual CSRs */ + CSR_VSSTATUS, + CSR_VSIE, + CSR_VSTVEC, + CSR_VSSCRATCH, + CSR_VSEPC, + CSR_VSCAUSE, + CSR_VSTVAL, + CSR_VSIP, + CSR_VSATP, + + CSR_MTINST, CSR_MTVAL2, - CSR_MSCRATCH, - CSR_SSCRATCH, - CSR_SATP, - CSR_MMTE, - CSR_UPMBASE, - CSR_UPMMASK, - CSR_SPMBASE, - CSR_SPMMASK, - CSR_MPMBASE, - CSR_MPMMASK, + +# if 0 +/* Enhanced Physical Memory Protection (ePMP) */ + CSR_MSECCFG, + CSR_MSECCFGH, +# endif +# if 0 +/* Physical Memory Protection */ + CSR_PMPCFG0, + CSR_PMPCFG1, + CSR_PMPCFG2, + CSR_PMPCFG3, + CSR_PMPADDR0, + CSR_PMPADDR1, + CSR_PMPADDR2, + CSR_PMPADDR3, + CSR_PMPADDR4, + CSR_PMPADDR5, + CSR_PMPADDR6, + CSR_PMPADDR7, + CSR_PMPADDR8, + CSR_PMPADDR9, + CSR_PMPADDR10, + CSR_PMPADDR11, + CSR_PMPADDR12, + CSR_PMPADDR13, + CSR_PMPADDR14, + CSR_PMPADDR15, +# endif + +# if 0 +/* Debug/Trace Registers (shared with Debug Mode) */ + CSR_TSELECT, + CSR_TDATA1, + CSR_TDATA2, + CSR_TDATA3, +# endif + +# if 0 +/* Debug Mode Registers */ + CSR_DCSR, + CSR_DPC, + CSR_DSCRATCH, +# endif + +# if 0 +/* Performance Counters */ + CSR_MHPMCOUNTER3, + CSR_MHPMCOUNTER4, + CSR_MHPMCOUNTER5, + CSR_MHPMCOUNTER6, + CSR_MHPMCOUNTER7, + CSR_MHPMCOUNTER8, + CSR_MHPMCOUNTER9, + CSR_MHPMCOUNTER10, + CSR_MHPMCOUNTER11, + CSR_MHPMCOUNTER12, + CSR_MHPMCOUNTER13, + CSR_MHPMCOUNTER14, + CSR_MHPMCOUNTER15, + CSR_MHPMCOUNTER16, + CSR_MHPMCOUNTER17, + CSR_MHPMCOUNTER18, + CSR_MHPMCOUNTER19, + CSR_MHPMCOUNTER20, + CSR_MHPMCOUNTER21, + CSR_MHPMCOUNTER22, + CSR_MHPMCOUNTER23, + CSR_MHPMCOUNTER24, + CSR_MHPMCOUNTER25, + CSR_MHPMCOUNTER26, + CSR_MHPMCOUNTER27, + CSR_MHPMCOUNTER28, + CSR_MHPMCOUNTER29, + CSR_MHPMCOUNTER30, + CSR_MHPMCOUNTER31, + CSR_MHPMEVENT3, + CSR_MHPMEVENT4, + CSR_MHPMEVENT5, + CSR_MHPMEVENT6, + CSR_MHPMEVENT7, + CSR_MHPMEVENT8, + CSR_MHPMEVENT9, + CSR_MHPMEVENT10, + CSR_MHPMEVENT11, + CSR_MHPMEVENT12, + CSR_MHPMEVENT13, + CSR_MHPMEVENT14, + CSR_MHPMEVENT15, + CSR_MHPMEVENT16, + CSR_MHPMEVENT17, + CSR_MHPMEVENT18, + CSR_MHPMEVENT19, + CSR_MHPMEVENT20, + CSR_MHPMEVENT21, + CSR_MHPMEVENT22, + CSR_MHPMEVENT23, + CSR_MHPMEVENT24, + CSR_MHPMEVENT25, + CSR_MHPMEVENT26, + CSR_MHPMEVENT27, + CSR_MHPMEVENT28, + CSR_MHPMEVENT29, + CSR_MHPMEVENT30, + CSR_MHPMEVENT31, + CSR_MHPMCOUNTER3H, + CSR_MHPMCOUNTER4H, + CSR_MHPMCOUNTER5H, + CSR_MHPMCOUNTER6H, + CSR_MHPMCOUNTER7H, + CSR_MHPMCOUNTER8H, + CSR_MHPMCOUNTER9H, + CSR_MHPMCOUNTER10H, + CSR_MHPMCOUNTER11H, + CSR_MHPMCOUNTER12H, + CSR_MHPMCOUNTER13H, + CSR_MHPMCOUNTER14H, + CSR_MHPMCOUNTER15H, + CSR_MHPMCOUNTER16H, + CSR_MHPMCOUNTER17H, + CSR_MHPMCOUNTER18H, + CSR_MHPMCOUNTER19H, + CSR_MHPMCOUNTER20H, + CSR_MHPMCOUNTER21H, + CSR_MHPMCOUNTER22H, + CSR_MHPMCOUNTER23H, + CSR_MHPMCOUNTER24H, + CSR_MHPMCOUNTER25H, + CSR_MHPMCOUNTER26H, + CSR_MHPMCOUNTER27H, + CSR_MHPMCOUNTER28H, + CSR_MHPMCOUNTER29H, + CSR_MHPMCOUNTER30H, + CSR_MHPMCOUNTER31H, +# endif }; =20 for (int i =3D 0; i < ARRAY_SIZE(dump_csrs); ++i) { --=20 Konrad Schwarz From nobody Tue May 7 23:31:45 2024 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=siemens.com); dmarc=pass(p=none dis=none) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1641311675; cv=pass; d=zohomail.com; s=zohoarc; b=JuhXJTzLhnPz7XjxXeEc/0k1mIZNXqKMoyIM/YyDz+xk5u+w6aTHc1TAwVCmRO3r7aL134S/Y51Xq2JteQF4RUUZU4tWl6v8pYonn0KzsQscfykd4JePpBHB74HtZL2fh7eJhtO08K/JVRknAldVPG6A6ZwrFJ4rPYlGqPjc6vI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641311675; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=z/F+axUkGKsSpFKrbytsw2KSDueXeNUrMqfDjLqz8Ng=; b=Ss3t9Xpf7cIevv+x/mKoKkKcouEeDIrh61NiAWjg/H8zd+nFtkwicsyGm3I/UFWayhS34L7CnarupfbNrm6UCDOIx48BjGeU/rq0v78kV6Rc/RwdKRhu4gHOys1DWy/YK/FXq+DybUae9timU4NRglpHsfKB5U+BhuwKZbPJOZE= 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=siemens.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 16413116759011018.7297753601109; Tue, 4 Jan 2022 07:54:35 -0800 (PST) Received: from localhost ([::1]:39852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4m8w-0008F3-CW for importer@patchew.org; Tue, 04 Jan 2022 10:54:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36910) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4m6f-0006Ao-3k for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:14 -0500 Received: from mail-db8eur05on2051.outbound.protection.outlook.com ([40.107.20.51]:9953 helo=EUR05-DB8-obe.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 1n4m6c-00038D-GO for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:12 -0500 Received: from OL1P279CA0032.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:13::19) by AM6PR10MB2807.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:aa::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Tue, 4 Jan 2022 15:52:06 +0000 Received: from HE1EUR01FT039.eop-EUR01.prod.protection.outlook.com (2603:10a6:e10:13:cafe::a3) by OL1P279CA0032.outlook.office365.com (2603:10a6:e10:13::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:06 +0000 Received: from hybrid.siemens.com (194.138.21.70) by HE1EUR01FT039.mail.protection.outlook.com (10.152.0.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:05 +0000 Received: from DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) by DEMCHDC9SJA.ad011.siemens.net (194.138.21.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:05 +0100 Received: from fedora.vmnet8.md1wgtfc (139.21.146.182) by DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:04 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nA4Jhfj+aszXEgsG6G8kBp0f2Sk7PMVeWVsd+YcgQofPi/7GOKng3dLN2//Qa94EbtKzj/8BMJ9QBB41AA2rkfLunL8yusgscN02bae2/Q3LDoIv1jpPmmiq6WPra+uUyZ1TqmSg74ZF16asu00bXup+GyAgUoda4IHOaZHUOmARpwgwu8iz7hoHopZh5rY6xTFK1zUIWf4Wc9MhvSZw9Ldb3qrGQpnf08rLhJ33mplrFvVefTw+gqCxDLCYbxbhdFTjzJUhMvB6Xr+OKjGboDYXvsWuSxcrzB30RhddMt2J1NSP2gm+5885mIrIjYRr0zXSmT9xRDB3A+AXJFHN6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=z/F+axUkGKsSpFKrbytsw2KSDueXeNUrMqfDjLqz8Ng=; b=Ae6P8dFY5vlQtwCWBklRFfuStKYxmJzreYnjm1yJUv6Z2k7sSXhCgfIMad95HKnIFcr0C9Zsyps1ZpHwSf5/UPzJaog3LnB6TCn9/8Gbq4wye6+UKBoNu4jDR/zTi+xavdCMwpinluNWFCKWloBKAOfqOrIrrpsD9vcO4awlC0sOSd0xtHYYwOjdQlxZSpdxggEZrw3KswDmAEm0Q5qj8LR1cDRU6xnQDwpHkz8qg3U7TdXN8r4WZw+CVkf504Pj21B1HMBksabdMxNRjbdyvoq6FwZRhXkwQQzmrRGryzYQs+iuRZF5/1YuyhlEAeCdbxnIc8LTlF3sP2YzBF0ayA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.70) smtp.rcpttodomain=nongnu.org smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z/F+axUkGKsSpFKrbytsw2KSDueXeNUrMqfDjLqz8Ng=; b=reHKgV56KiljAh54xiesIUJSsdhwUnPhvLTxynixcsC6OM1wx4fChhFG3U2VbGqX6+I78PrRs3XepmrK1k27Fpn5geO3kZ39O4KON1t6CrlfsL8NhJmMnhVQGER6WHP5ezxY6pnd/793YW51EzjJkbQB9+AOGVByOIM3JreURwtLUEl8O3RVN1ml3CdR29kf1R4ny90MBuOV+RPeVHIgcpDRxPuMC8Yzc+C6VdcXd0ED0rU/UmOxg4jn7gHRJVrEnD1TRG5hWdJjtHz7/QJr19JbGx1/4PZYAM3/G7C/YOJ2sNWjSugA+E6TOMrUV1Xnhl8VT1duLhBolo4REZwt/g== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.70) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; 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 (protection.outlook.com: domain of siemens.com designates 194.138.21.70 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.70; helo=hybrid.siemens.com; From: Konrad Schwarz To: Subject: [PATCH v2 2/5] RISC-V: monitor's print register functionality Date: Tue, 4 Jan 2022 16:51:17 +0100 Message-ID: <21df652bd597a70406cdd59fdf50c5c65b30a572.1641309725.git.konrad.schwarz@siemens.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: <00a79b65-288f-f17c-abe4-fcfd3f7971fd@oth-regensburg.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [139.21.146.182] X-ClientProxiedBy: DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) To DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6bda77b8-0bc7-431f-ca01-08d9cf9a285e X-MS-TrafficTypeDiagnostic: AM6PR10MB2807:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qdJdw9nGJmhiDj2ntI/GohWimUfWmm7mckWYvjustntA7fUfN51/AQvF1Q92tjzvyxzKdveIUP/wEgo8GOabwbXMMfkbcTTAFCSOQ/ESo9MlTh9w5hkgmVcaj/MUktkrLrsCOY9kisL8zlSUdmp0a8dYV60O9GLnDELzYFLCSAG0blsl9ACg0kcspCeky9JISDAEtFxz04raD4XIbAECxE9ZK/8eim4i/KBGdENEUvHgZESnwIRsXOHntaXZ5Q6TbkP6F4LdpNpnKGOmKC49C/PLjkcq2+FkV3I0SCNCjqE/dN97E1LGw+OWzGuy3LrGBuVGO2BAilF5iQiFShtq4nMfZmVq8ffhLbqAzWg3ivXA8plWjfhH15HvSJI1HrSmvRmG38W8prBrS8Yw2tDhnal7FdtQ6/pQGoOYLuGbk+DnvebZYjScwJQI4bAVmHvm51kD7VII1CRoBNcOvebfMDVv71+3zAWockCE/2llDOulkwzZhiovye/31Oi80UlJsVvKCCv/L/mJhtAoAGr0TSMDggX9QhHecDBo9cXgNMcCy8v/gqGXLcR64FMhYTkWq2buXjAxrH94zyuXjCD1QDb7rjHWAywUZAfYWG7OSsrPUqhO/pHLWejb0Y+6/qd2VA5QVP7jFiWHd0xVbT0BkhUwC47Tamjr0jQjsu9RGtcJAW5KrdQYVaHAEt8gaIctzwTlCTWfexcFFdrhLu5FJNYk8ocmWFDjiMDo7pkUL7PMLJmu+unM26Oqedb6kk9nz4+rXXLzqmtlZIpHgVBgSg== X-Forefront-Antispam-Report: CIP:194.138.21.70; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:hybrid.siemens.com; PTR:hybrid.siemens.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(40470700002)(70206006)(26005)(6916009)(6666004)(82960400001)(316002)(44832011)(508600001)(47076005)(4326008)(16526019)(54906003)(36756003)(70586007)(40460700001)(956004)(2616005)(36860700001)(186003)(8936002)(8676002)(86362001)(5660300002)(82310400004)(7596003)(7636003)(2906002)(356005)(336012); DIR:OUT; SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 15:52:05.8068 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6bda77b8-0bc7-431f-ca01-08d9cf9a285e X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a; Ip=[194.138.21.70]; Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: HE1EUR01FT039.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR10MB2807 Received-SPF: pass client-ip=40.107.20.51; envelope-from=konrad.schwarz@siemens.com; helo=EUR05-DB8-obe.outbound.protection.outlook.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Konrad Schwarz , Alistair Francis , Bin Meng , Palmer Dabbelt , Ralf Ramsauer Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @siemens.com) X-ZM-MESSAGEID: 1641311677562100001 Content-Type: text/plain; charset="utf-8" Enable the print (p) command to display both general-purpose and Contral and Status (CSR) registers. General purpose registers can be named using the xN form or their ABI names (zero, ra, sp, a0, s1, t2). Signed-off-by: Konrad Schwarz --- target/riscv/monitor.c | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/target/riscv/monitor.c b/target/riscv/monitor.c index 7efb4b62c1..3f74ea9934 100644 --- a/target/riscv/monitor.c +++ b/target/riscv/monitor.c @@ -2,6 +2,7 @@ * QEMU monitor for RISC-V * * Copyright (c) 2019 Bin Meng + * Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com * * RISC-V specific monitor commands implementation * @@ -234,3 +235,71 @@ void hmp_info_mem(Monitor *mon, const QDict *qdict) =20 mem_info_svxx(mon, env); } + +static const MonitorDef monitor_defs[] =3D { +# define MONITORDEF_RISCV_GPR(NO, ALIAS)\ + { "x" #NO #ALIAS, offsetof(CPURISCVState, gpr[NO]) }, + + MONITORDEF_RISCV_GPR(0, |zero) + MONITORDEF_RISCV_GPR(1, |ra) + MONITORDEF_RISCV_GPR(2, |sp) + MONITORDEF_RISCV_GPR(3, |gp) + MONITORDEF_RISCV_GPR(4, |tp) + MONITORDEF_RISCV_GPR(5, |t0) + MONITORDEF_RISCV_GPR(6, |t1) + MONITORDEF_RISCV_GPR(7, |t2) + MONITORDEF_RISCV_GPR(8, |s0|fp) + MONITORDEF_RISCV_GPR(9, |s1) + MONITORDEF_RISCV_GPR(10, |a0) + MONITORDEF_RISCV_GPR(11, |a1) + MONITORDEF_RISCV_GPR(12, |a2) + MONITORDEF_RISCV_GPR(13, |a3) + MONITORDEF_RISCV_GPR(14, |a4) + MONITORDEF_RISCV_GPR(15, |a5) + MONITORDEF_RISCV_GPR(16, |a6) + MONITORDEF_RISCV_GPR(17, |a7) + MONITORDEF_RISCV_GPR(18, |s2) + MONITORDEF_RISCV_GPR(19, |s3) + MONITORDEF_RISCV_GPR(20, |s4) + MONITORDEF_RISCV_GPR(21, |s5) + MONITORDEF_RISCV_GPR(22, |s6) + MONITORDEF_RISCV_GPR(23, |s7) + MONITORDEF_RISCV_GPR(24, |s8) + MONITORDEF_RISCV_GPR(25, |s9) + MONITORDEF_RISCV_GPR(26, |s10) + MONITORDEF_RISCV_GPR(27, |s11) + MONITORDEF_RISCV_GPR(28, |t3) + MONITORDEF_RISCV_GPR(29, |t4) + MONITORDEF_RISCV_GPR(30, |t5) + MONITORDEF_RISCV_GPR(31, |t6) + + { }, +}; + +const MonitorDef *target_monitor_defs(void) +{ + return monitor_defs; +} + +int target_get_monitor_def(CPUState *cs, const char *name, uint64_t *pval) +{ + + target_ulong ret_value; + CPURISCVState *const env =3D &RISCV_CPU (cs)->env; + riscv_csr_operations *op; + for (op =3D csr_ops; 1[&csr_ops] > op; ++op) { + if (!op->name) { + continue; + } + if (!strcmp(name, op->name)) { + if (RISCV_EXCP_NONE !=3D riscv_csrrw_debug(env, op - csr_ops, + &ret_value, + 0 /* new_value */, + 0 /* write_mask */)) + return -1; + *pval =3D ret_value; + return 0; + } + } + return -1; +} --=20 Konrad Schwarz From nobody Tue May 7 23:31:45 2024 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=siemens.com); dmarc=pass(p=none dis=none) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1641311745; cv=pass; d=zohomail.com; s=zohoarc; b=DYgzX2/bzeGo6x03Gn2U94e21iVJXFJeI0VkTUgw75rvqqRSEo0CtdeIgAqN2I5T3g7l/1xqaM7RaLOYH7h7DKMq92W0Cf2JhGhhqLFvTYJhn6tefqZKqmOfOFSpf78Pifh0DgA8Fk+7i/CMFCHizexqw7rWuVAj4ha8qlWuXqU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641311745; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3KNOULwchf5XJ3vlMv7PRJ1C5S7XryXS+hZ2nqy7BDI=; b=G3AO41Xe7iMs1FEns5aZDh/XtEMA6hdOBwzVJojUUb9A1f051LVtSVQ24bGH55+9YjD8ex2yHDQra2K1SfSAxJDviCMUJkkLl5z50tyA3bbByybgcnvR7wLm4cElUQPDmQIy+9xUGZW58pzntcwYjhYtppW08lQjJYn1emFTA6w= 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=siemens.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 164131174537141.34476702008283; Tue, 4 Jan 2022 07:55:45 -0800 (PST) Received: from localhost ([::1]:41568 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4mA4-0000zq-CJ for importer@patchew.org; Tue, 04 Jan 2022 10:55:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36954) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4m6n-0006CH-Q5 for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:24 -0500 Received: from mail-eopbgr60058.outbound.protection.outlook.com ([40.107.6.58]:50727 helo=EUR04-DB3-obe.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 1n4m6l-00038u-6T for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:21 -0500 Received: from OL1P279CA0066.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:15::17) by PR3PR10MB3931.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:40::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Tue, 4 Jan 2022 15:52:15 +0000 Received: from HE1EUR01FT014.eop-EUR01.prod.protection.outlook.com (2603:10a6:e10:15:cafe::22) by OL1P279CA0066.outlook.office365.com (2603:10a6:e10:15::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:15 +0000 Received: from hybrid.siemens.com (194.138.21.73) by HE1EUR01FT014.mail.protection.outlook.com (10.152.0.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:14 +0000 Received: from DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) by DEMCHDC9SNA.ad011.siemens.net (194.138.21.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:14 +0100 Received: from fedora.vmnet8.md1wgtfc (139.21.146.182) by DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:13 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WrYe5HG8EleX0+RLXb8pI9p5UeqMFilMO2gla587U1lsiV4BrntFhFRf74pvf4BtPGtW3ZS4bnqLLGe/PleSmLA7f5tDBgXDTB8B4WQUvD+RUmdGV8PNipzdXAHdgr+8ygN/RU5jPfQWt5SGBrIvnl8ll603IpbH5a3LsbTji6MUQxwdDYxR6T63ICq8be+A/wHzR3gE9E6PUUkrAGL1ZY88Zr924i1acVhkUkurRm6s2FOl84ViDQuSmlkvZA7GOEyY+aVsxAnkSMOc/H1IfvzFQTBAK0aC3HvpC/a1AcUxcOyG6q50mJt5uhMVD0/cxGmb9/4WIKkJZN29fb6fww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=3KNOULwchf5XJ3vlMv7PRJ1C5S7XryXS+hZ2nqy7BDI=; b=KJdLjlB79c+eeETy4XWYhYqSvIlBWauJoE0Spk5Y0HOT5cvJEh09A1ibcV5QSfQSIiBH6WG0p7AySLLTQ2KjsSia8E2wacPrvmwJr+w6A0FX8keiR2yzsPj7SksfQ2fEgfROvwddmA17xNPYIV7ELKBK/Fr36NSdWHxYoP/3pekj39mZi1Rq4PUu2xhx/8GlckYbi3RMaG0TOcAjfDuPLaekWI5hEogVr4KPD8MuA5h9Fj5okrznXaZKJ/UAZU+++XNgNybJuIyVkI/HOy7oBRvuQYo586DM5HUOPF8J+yrZs+lhgnZE4nS8+TzD3rtN3vzUT1FeC6gBH16gDHsMfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.73) smtp.rcpttodomain=nongnu.org smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3KNOULwchf5XJ3vlMv7PRJ1C5S7XryXS+hZ2nqy7BDI=; b=XLVsFj3hoaQ/Xgt+vwcjauBnZy1VXN2SIPGlNDM9x2HzOC+X8xFCuUgoGbQaoBb8KI6e1dvjOtCr/xl9XVP56g3NXoCziyhOvNNI8zF2zKuS7RcdWU8WM722i4rOZI0ZHFN/EIzk7dz7TKS2nfSRNt4ubSMg2EuggFK3LOt9dZKgYBqWB0PVmdD1rKO92jZpTFPp8IHyn3EQssKzcyQE5g9502dBu/Ieb1rM4k4dxsVbDi0klY94F2Vm/qpyW3L1C+opWD6b3KTKOHErVNjU7L8EArbnEq7JliZE+6rxHVxFBAdg4jNYx/G3N/6rjic4Du5PpoUU18qkfw9mSB7qkQ== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.73) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; 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 (protection.outlook.com: domain of siemens.com designates 194.138.21.73 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.73; helo=hybrid.siemens.com; From: Konrad Schwarz To: Subject: [PATCH v2 3/5] RISC-V: 'info gmem' to show hypervisor guest -> physical address translations Date: Tue, 4 Jan 2022 16:51:18 +0100 Message-ID: <03cb38fdfab89a6725fa0c7cadad2055d6be48a4.1641309725.git.konrad.schwarz@siemens.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: <00a79b65-288f-f17c-abe4-fcfd3f7971fd@oth-regensburg.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [139.21.146.182] X-ClientProxiedBy: DEMCHDC89YA.ad011.siemens.net (139.25.226.104) To DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 29be6bb6-ad1a-4b32-a797-08d9cf9a2dd3 X-MS-TrafficTypeDiagnostic: PR3PR10MB3931:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:238; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: foajSkUc/1IVvoVkyYnq0vq2s6nDq+pVSnhgxs9UqSvqNlLXgZno5qyswZqptFEjyc8y/x0MGOQwOjbyflQKQtohDu3Dk299LJQplJVmWa9bpXu+RP6WjiL48VjeV1cZmb/tK4QpxPwq8ZKZKUCKDOlEYTRObR9yp+Ks0oy9pDgT+Bf6nWBpGLPmoLapIfqU9Y9SwoQ9WeZ5uHugvIAdj+s6zX++Hf/+RR9WyvSdff+oG6/0yjguxjWZijDn3MGQiSy8b0XPmC0XKET1TkGfC0SpGsBsetmvnHNGJ/TkKhaqWIOxIjw3+0F1n/n+HkT7L8GkUXeCB2eMJhvT2sm/4DlvGxFLy/Cvl2UX+1UO0IgFp3QHEq4YqK2yIltlp1c6GcDgzyf49utIO9AF1DoE0h/+cneIFHutEuBesqLrawYWiVpfjU0kIqj9hTliqKNC6TlY6j1qDV17VF1/d1XVBZOxn/hrpZK4AlkdOD3K+ELtRMgRCw8QjitmucY6ffoWkI5aatOIRh+2QB8cu9Z6dI5893Pvcg2VMWCeFUTGLsiNbAv+4HFvrKZ0KVhiO95uDARoNWOHpWNos7fuLDysU81rpfAaSfvjL1htvvmOaKfRdQ7PS1UM5SX70+NibK8Iw5L9mDUXM5A+1xITrXSp5hfGE3zbZgiu2egceNivfgvOukbmoobx8NVNcN4wSpmfNWqP8eg/ecGurRkTeI5N+PxEbmc70WaSnEDP2nhrPOgob8XngoZQkovnWBi03KoCm8Ccxaz+LhETWfR+aF6oHPnKCfB1Q5l5J6KG2EIzNJw= X-Forefront-Antispam-Report: CIP:194.138.21.73; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:hybrid.siemens.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(40470700002)(81166007)(83380400001)(316002)(4326008)(508600001)(16526019)(70206006)(44832011)(82960400001)(47076005)(36860700001)(40460700001)(186003)(86362001)(5660300002)(26005)(70586007)(8676002)(54906003)(2906002)(356005)(336012)(82310400004)(6916009)(36756003)(956004)(8936002)(2616005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 15:52:14.9613 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 29be6bb6-ad1a-4b32-a797-08d9cf9a2dd3 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a; Ip=[194.138.21.73]; Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: HE1EUR01FT014.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR10MB3931 Received-SPF: pass client-ip=40.107.6.58; envelope-from=konrad.schwarz@siemens.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Konrad Schwarz , Alistair Francis , Bin Meng , Palmer Dabbelt , Ralf Ramsauer Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @siemens.com) X-ZM-MESSAGEID: 1641311747379100001 Content-Type: text/plain; charset="utf-8" This is analog to the existing 'info mem' command and is implemented using the same machinery. Signed-off-by: Konrad Schwarz --- hmp-commands-info.hx | 16 +++++ include/monitor/hmp-target.h | 2 + target/riscv/monitor.c | 135 +++++++++++++++++++++++++---------- 3 files changed, 117 insertions(+), 36 deletions(-) diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 407a1da800..fa519f0129 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -237,6 +237,22 @@ SRST Show the active virtual memory mappings. ERST =20 +#if defined TARGET_RISCV + { + .name =3D "gmem", + .args_type =3D "", + .params =3D "", + .help =3D "show the hypervisor guest's physical address" + " translation", + .cmd =3D hmp_info_gmem, + }, +#endif + +SRST + ``info gmem`` + Show the hypervisor guest's physical address translation. +ERST + { .name =3D "mtree", .args_type =3D "flatview:-f,dispatch_tree:-d,owner:-o,disabled:-D= ", diff --git a/include/monitor/hmp-target.h b/include/monitor/hmp-target.h index ffdc15a34b..9f2dd976f6 100644 --- a/include/monitor/hmp-target.h +++ b/include/monitor/hmp-target.h @@ -2,6 +2,7 @@ * QEMU monitor * * Copyright (c) 2003-2004 Fabrice Bellard + * Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -45,6 +46,7 @@ CPUArchState *mon_get_cpu_env(Monitor *mon); CPUState *mon_get_cpu(Monitor *mon); =20 void hmp_info_mem(Monitor *mon, const QDict *qdict); +void hmp_info_gmem(Monitor *mon, const QDict *qdict); void hmp_info_tlb(Monitor *mon, const QDict *qdict); void hmp_mce(Monitor *mon, const QDict *qdict); void hmp_info_local_apic(Monitor *mon, const QDict *qdict); diff --git a/target/riscv/monitor.c b/target/riscv/monitor.c index 3f74ea9934..ad58bdf9ca 100644 --- a/target/riscv/monitor.c +++ b/target/riscv/monitor.c @@ -25,16 +25,6 @@ #include "monitor/monitor.h" #include "monitor/hmp-target.h" =20 -#ifdef TARGET_RISCV64 -#define PTE_HEADER_FIELDS "vaddr paddr "\ - "size attr\n" -#define PTE_HEADER_DELIMITER "---------------- ---------------- "\ - "---------------- -------\n" -#else -#define PTE_HEADER_FIELDS "vaddr paddr size attr\n" -#define PTE_HEADER_DELIMITER "-------- ---------------- -------- ------= -\n" -#endif - /* Perform linear address sign extension */ static target_ulong addr_canonical(int va_bits, target_ulong addr) { @@ -47,10 +37,34 @@ static target_ulong addr_canonical(int va_bits, target_= ulong addr) return addr; } =20 -static void print_pte_header(Monitor *mon) +static void print_pte_header(Monitor *mon, + char const vaddr_char, char const paddr_char) { - monitor_printf(mon, PTE_HEADER_FIELDS); - monitor_printf(mon, PTE_HEADER_DELIMITER); + +# define VIRTUAL_WIDTH\ + ((int) ((sizeof "ff" - sizeof "") * sizeof(target_ulong))) +# define PHYSICAL_WIDTH\ + ((int) ((sizeof "ff" - sizeof "") * sizeof(hwaddr))) +# define ATTRIBUTE_WIDTH ((int) (sizeof "rwxugad" - sizeof "")) + +# define VIRTUAL_COLUMN_WIDTH (1 + VIRTUAL_WIDTH) +# define PHYSICAL_COLUMN_WIDTH (1 + PHYSICAL_WIDTH) + + static char const dashes[PHYSICAL_WIDTH] =3D "----------------"; + + monitor_printf(mon, + "%c%-*s%c%-*s%-*s%-*s\n" + "%-*.*s%-*.*s%-*.*s%-*.*s\n", + + vaddr_char, VIRTUAL_COLUMN_WIDTH - 1, "addr", + paddr_char, PHYSICAL_COLUMN_WIDTH - 1, "addr", + VIRTUAL_COLUMN_WIDTH, "size", + ATTRIBUTE_WIDTH, "attr", + + VIRTUAL_COLUMN_WIDTH, VIRTUAL_WIDTH, dashes, + PHYSICAL_COLUMN_WIDTH, PHYSICAL_WIDTH, dashes, + VIRTUAL_COLUMN_WIDTH, VIRTUAL_WIDTH, dashes, + ATTRIBUTE_WIDTH, ATTRIBUTE_WIDTH, dashes); } =20 static void print_pte(Monitor *mon, int va_bits, target_ulong vaddr, @@ -65,21 +79,36 @@ static void print_pte(Monitor *mon, int va_bits, target= _ulong vaddr, return; } =20 - monitor_printf(mon, TARGET_FMT_lx " " TARGET_FMT_plx " " TARGET_FMT_lx - " %c%c%c%c%c%c%c\n", - addr_canonical(va_bits, vaddr), - paddr, size, - attr & PTE_R ? 'r' : '-', - attr & PTE_W ? 'w' : '-', - attr & PTE_X ? 'x' : '-', - attr & PTE_U ? 'u' : '-', - attr & PTE_G ? 'g' : '-', - attr & PTE_A ? 'a' : '-', - attr & PTE_D ? 'd' : '-'); +# if 4 =3D=3D TARGET_LONG_SIZE +# define TARGET_xFMT PRIx32 +# elif 8 =3D=3D TARGET_LONG_SIZE +# define TARGET_xFMT PRIx64 +# else +# error TARGET_LONG_SIZE not handled +# endif + + /* note: RISC-V physical addresses are actually xlen + 2 bits long + OTHO, QEMU wil probably never support addresses longer than 64 bits */ + monitor_printf(mon, + "%-*.*" TARGET_xFMT + "%-*.*" PRIx64 + "%-*.*" TARGET_xFMT + "%c%c%c%c%c%c%c\n", + VIRTUAL_COLUMN_WIDTH, VIRTUAL_WIDTH, addr_canonical(va_bits, v= addr), + PHYSICAL_COLUMN_WIDTH, PHYSICAL_WIDTH, paddr, + VIRTUAL_COLUMN_WIDTH, VIRTUAL_WIDTH, size, + attr & PTE_R ? 'r' : '-', + attr & PTE_W ? 'w' : '-', + attr & PTE_X ? 'x' : '-', + attr & PTE_U ? 'u' : '-', + attr & PTE_G ? 'g' : '-', + attr & PTE_A ? 'a' : '-', + attr & PTE_D ? 'd' : '-'); } =20 static void walk_pte(Monitor *mon, hwaddr base, target_ulong start, int level, int ptidxbits, int ptesize, int va_bits, + int guest, target_ulong *vbase, hwaddr *pbase, hwaddr *last_padd= r, target_ulong *last_size, int *last_attr) { @@ -89,7 +118,7 @@ static void walk_pte(Monitor *mon, hwaddr base, target_u= long start, target_ulong pte; int ptshift; int attr; - int idx; + int idx, idx_end; =20 if (level < 0) { return; @@ -98,7 +127,8 @@ static void walk_pte(Monitor *mon, hwaddr base, target_u= long start, ptshift =3D level * ptidxbits; pgsize =3D 1UL << (PGSHIFT + ptshift); =20 - for (idx =3D 0; idx < (1UL << ptidxbits); idx++) { + for (idx =3D 0, idx_end =3D 1 << (ptidxbits + (guest ? 2 : 0)); + idx_end > idx; idx++) { pte_addr =3D base + idx * ptesize; cpu_physical_memory_read(pte_addr, &pte, ptesize); =20 @@ -131,7 +161,9 @@ static void walk_pte(Monitor *mon, hwaddr base, target_= ulong start, } else { /* pointer to the next level of the page table */ walk_pte(mon, paddr, start, level - 1, ptidxbits, ptesize, - va_bits, vbase, pbase, last_paddr, + va_bits, + 0 /* guest */, + vbase, pbase, last_paddr, last_size, last_attr); } } @@ -141,7 +173,9 @@ static void walk_pte(Monitor *mon, hwaddr base, target_= ulong start, =20 } =20 -static void mem_info_svxx(Monitor *mon, CPUArchState *env) +static void mem_info_svxx(Monitor *mon, CPUArchState *env, + target_ulong const atp, + int guest, char const vaddr_char, char const paddr_char) { int levels, ptidxbits, ptesize, vm, va_bits; hwaddr base; @@ -152,11 +186,11 @@ static void mem_info_svxx(Monitor *mon, CPUArchState = *env) int last_attr; =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - base =3D (hwaddr)get_field(env->satp, SATP32_PPN) << PGSHIFT; - vm =3D get_field(env->satp, SATP32_MODE); + base =3D (hwaddr)get_field(atp, SATP32_PPN) << PGSHIFT; + vm =3D get_field(atp, SATP32_MODE); } else { - base =3D (hwaddr)get_field(env->satp, SATP64_PPN) << PGSHIFT; - vm =3D get_field(env->satp, SATP64_MODE); + base =3D (hwaddr)get_field(atp, SATP64_PPN) << PGSHIFT; + vm =3D get_field(atp, SATP64_MODE); } =20 switch (vm) { @@ -189,7 +223,7 @@ static void mem_info_svxx(Monitor *mon, CPUArchState *e= nv) va_bits =3D PGSHIFT + levels * ptidxbits; =20 /* print header */ - print_pte_header(mon); + print_pte_header(mon, vaddr_char, paddr_char); =20 vbase =3D -1; pbase =3D -1; @@ -199,6 +233,7 @@ static void mem_info_svxx(Monitor *mon, CPUArchState *e= nv) =20 /* walk page tables, starting from address 0 */ walk_pte(mon, base, 0, levels - 1, ptidxbits, ptesize, va_bits, + guest, &vbase, &pbase, &last_paddr, &last_size, &last_attr); =20 /* don't forget the last one */ @@ -209,6 +244,7 @@ static void mem_info_svxx(Monitor *mon, CPUArchState *e= nv) void hmp_info_mem(Monitor *mon, const QDict *qdict) { CPUArchState *env; + target_ulong atp; =20 env =3D mon_get_cpu_env(mon); if (!env) { @@ -221,19 +257,46 @@ void hmp_info_mem(Monitor *mon, const QDict *qdict) return; } =20 + atp =3D env->satp; if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - if (!(env->satp & SATP32_MODE)) { + if (!(atp & SATP32_MODE)) { monitor_printf(mon, "No translation or protection\n"); return; } } else { - if (!(env->satp & SATP64_MODE)) { + if (!(atp & SATP64_MODE)) { monitor_printf(mon, "No translation or protection\n"); return; } } =20 - mem_info_svxx(mon, env); + mem_info_svxx(mon, env, atp, 0, 'v', 'p'); +} + +void hmp_info_gmem(Monitor *mon, const QDict *qdict) +{ + CPUArchState *env; + target_ulong atp; + + env =3D mon_get_cpu_env(mon); + if (!env) { + monitor_printf(mon, "No CPU available\n"); + return; + } + + if (!riscv_has_ext(env, RVH)) { + monitor_printf(mon, "hypervisor extension not available\n"); + return; + } + + atp =3D env->hgatp; + if (!((MXL_RV32 =3D=3D riscv_cpu_mxl(env) ? SATP32_MODE : SATP64_MODE) + & atp)) { + monitor_printf(mon, "No translation or protection\n"); + return; + } + + mem_info_svxx(mon, env, atp, 1, 'g', 'p'); } =20 static const MonitorDef monitor_defs[] =3D { --=20 Konrad Schwarz From nobody Tue May 7 23:31:45 2024 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=siemens.com); dmarc=pass(p=none dis=none) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1641311820; cv=pass; d=zohomail.com; s=zohoarc; b=OlLxvWKDLh2Zxw4L8iTSxb9w06fywfeApVSx86vv1vUB1wgI0dzlSMBn3U6SURE8dpdPlJnbJPB6iCIDRuvN7d6AryAH625lPs47Us7B/aeRB+hn6v5RdvAUyzR9R1Z1xPDSWjq+ShnoqDEe7xKS+r6VkTDH6NzEdi9UdEJFKpo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641311820; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hI930n6woMvr2M81Oqb5AkI35+Ub0sGry4uN7X105Z8=; b=WMg4wY5BBhpI3u/TKM99MNol9kI9tIqL3RWKDxcVBXFMKXK32r1yow8e9yo4FOF/wgFE4pQw+SgqpF0ZUPDKrs2fphDZURc/XAR01XrFjciScHR5EWpGxthvNo2cug/ltyHk5qzBoZmEjROD4oaAkDrkoBPt0JVIg00p9kXUGIE= 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=siemens.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 1641311820214857.768797964144; Tue, 4 Jan 2022 07:57:00 -0800 (PST) Received: from localhost ([::1]:45208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4mBG-0003bI-RZ for importer@patchew.org; Tue, 04 Jan 2022 10:56:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4m6q-0006DG-Bt for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:24 -0500 Received: from mail-eopbgr10043.outbound.protection.outlook.com ([40.107.1.43]:5954 helo=EUR02-HE1-obe.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 1n4m6m-000399-Ln for qemu-devel@nongnu.org; Tue, 04 Jan 2022 10:52:24 -0500 Received: from AM6P193CA0089.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:88::30) by VI1PR10MB2478.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:8a::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Tue, 4 Jan 2022 15:52:16 +0000 Received: from VE1EUR01FT062.eop-EUR01.prod.protection.outlook.com (2603:10a6:209:88:cafe::88) by AM6P193CA0089.outlook.office365.com (2603:10a6:209:88::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:16 +0000 Received: from hybrid.siemens.com (194.138.21.72) by VE1EUR01FT062.mail.protection.outlook.com (10.152.3.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:15 +0000 Received: from DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) by DEMCHDC9SMA.ad011.siemens.net (194.138.21.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:15 +0100 Received: from fedora.vmnet8.md1wgtfc (139.21.146.182) by DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:14 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UPrWi61RRrQz+499MjsMx3kNqh4VgK/TnohP7GjcWQeW70rNgu/AwDU4Y4MA8uJ5KMnk8CwJSJM0o3LOAuHVthjoYjIoRk9bfGAlkrNic5FIz1nSvFY6orWApIn7A6fvTi7qVi99mloULvoxgo1bQrreG5AzDnFNZtxgPIExsmHUmqFQ19ZUcWonCBcBFFOXarfNnPHOJXWMOQGRBeOuOz8VWjqCSb1wYbRo7gFKO9HjgHMQMD+vnF7aJNqg3Dn8CEU+xpjtLt91DhSEzAId9/8UOwxp8HGgW+Uwq6CODD0hNZW+qcDTkWWN4Ub9agMzHXWvIyzMhEAcXGf0qZiHMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=hI930n6woMvr2M81Oqb5AkI35+Ub0sGry4uN7X105Z8=; b=JSigu6Z2tZUoAOuyLdJMN6TJPuOGSNCnOAw7Unp4t/Ha74DUwA3iyzHFRhF+kb03VltQtniTWCjkTtlwlBFa8fu/6OyldLqKkgesw7oCLPuFfxzqPMwjEbOgfe3+yN9rGyLIbSgjg1gBYGB2O9iiFbZQmj0zxIBzASXnTmYnx2R50YMZLjM9s/Iol1WVR0sdHkDM0kP4fmc+DmqVyungXMyiwJZk1w+Opv1hbuD5xJLYPjGhocxHqjeb9nCIOkAtzS7F50H6GNJD03r+gdaYxy+QOn8LqFR7bTTHnbbMP9gvXysjwxX/8Ak4igjkhl4j+FJijNhks4beKoWPQEjVJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.72) smtp.rcpttodomain=nongnu.org smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hI930n6woMvr2M81Oqb5AkI35+Ub0sGry4uN7X105Z8=; b=ZXm4Y33pMQ5fD5FwzyyHSzMxZNrSBlUls/0d7D0l129s8m2KRklTmGWpUdd133qWQuoVqip+Q1iFiF7SR+z+CHx6W9lxovOIGhgvf5jFMtq48ek3adGp3WunQXZO9QARUXj55fdfKG1JobMkxl0OeRlcuLYzR/NImPpiNtc0caFga0jNXBoQ0IBl10JOIunOYRvR3WQYsDr+7c1usiMU0AcsoOUdrC6bYWSTcZVThPM54Nk39kuqqMck56mb1pKhdGQT+osbRR1Qj4DfDOWJagut3p4uVPsbiv5YJ97jFCbPJYasDI2PRHWbePVx0nLN60qH2NjJS4g5d7iLYyGOhg== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.72) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; 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 (protection.outlook.com: domain of siemens.com designates 194.138.21.72 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.72; helo=hybrid.siemens.com; From: Konrad Schwarz To: Subject: [PATCH v2 4/5] RISC-V: Typed CSRs in gdbserver Date: Tue, 4 Jan 2022 16:51:19 +0100 Message-ID: <79194a3cf9e3bd1df41401eeee901055b8702c7b.1641309725.git.konrad.schwarz@siemens.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: <00a79b65-288f-f17c-abe4-fcfd3f7971fd@oth-regensburg.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [139.21.146.182] X-ClientProxiedBy: DEMCHDC89YA.ad011.siemens.net (139.25.226.104) To DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 113eae3a-6291-4f22-537d-08d9cf9a2e44 X-MS-TrafficTypeDiagnostic: VI1PR10MB2478:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qYxL+oiBkekerPuZQrrqH76UYiaWKPRnIfoWE5Ur1Ff+QVjP0dvwY3p4Fwecq/agpmJEp4O17YVt8zszOyiO1Clht1vkWuwC1it+678kZb31vdL6UZ2doEaPMAHxdSpOTO9XiurZX57TJsIdLaHxpiQmo9oJPxjfoq9YHDWrB5B6iZaxmdtgOfhO5ihZ5JlVFdh03yO8CfZ4pxtenZV0dR9NQZEjdIIA3E4odO3f+svE8ldQSlhzNOHELsZDfKyiponwrIcuia5FSTwAmd5aNkdwm768qaFvzOTsGJNho7fpStCXv1COn/Xq1c7COQ0hKJIpO7Au2x72UG4bOCZQ8JdWDqAeaTtBi3OhkXYI0AQH9qVgINCvbtE6wkFb1r9vss9dlJPAs759AU7cHPn3ytysZfxMjZcVPcMSLcKyd1FJ7xeEM+s76c5Gfs+W6DBsLY/A+mDdlwWD8oo4wxKvd7cc6diQxMEKyCqZ6sGy5mi6TJ5PTSXJvkyEkG9q6mUMqWbAONzCoMuEMbZczCuu+29S8FLwZsa5X70yjsRETLnRzwpILGrrz9FqNdttvdjwORIMi5gwNhzzZVB8h5HuRVWi8lJIhEWsjFy6uuru64xhrCdFBub/M8rYMokadhRK5UCzl7UQytMaqYvUvPPC6BQn1YWSzBblJEIGroI/Ce5cu0PNZJzmj09UXi1Y9jvGeqoJir7d8RdhMd+KIjRhi37su5DzlcIcnNFzz2tnffCpHZL1lsTkWJA/FbOgakASd2Du8jX98jUpwzuZXbpHOV9eRYveiuO1J83Ebz0vB+1lI57OSWzpxmRA29hfCTws X-Forefront-Antispam-Report: CIP:194.138.21.72; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:hybrid.siemens.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(4636009)(40470700002)(46966006)(36840700001)(508600001)(83380400001)(81166007)(30864003)(2906002)(47076005)(82960400001)(82310400004)(2616005)(54906003)(8936002)(956004)(5660300002)(316002)(6916009)(4326008)(40460700001)(16526019)(44832011)(26005)(356005)(186003)(8676002)(336012)(86362001)(70586007)(70206006)(36860700001)(36756003)(2004002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 15:52:15.7254 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 113eae3a-6291-4f22-537d-08d9cf9a2e44 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a; Ip=[194.138.21.72]; Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT062.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR10MB2478 Received-SPF: pass client-ip=40.107.1.43; envelope-from=konrad.schwarz@siemens.com; helo=EUR02-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Konrad Schwarz , Alistair Francis , Bin Meng , Palmer Dabbelt , Ralf Ramsauer Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @siemens.com) X-ZM-MESSAGEID: 1641311821728100001 Content-Type: text/plain; charset="utf-8" GDB target descriptions support typed registers; such that `info register X' displays not only the hex value of register `X', but also the individual bitfields the register comprises (if any), using textual labels if possible. This patch includes type information for GDB for a large subset of the RISC-V Control and Status Registers (CSRs). Signed-off-by: Konrad Schwarz --- target/riscv/csr.c | 2 + target/riscv/csr32-op-gdbserver.h | 109 ++++++++++ target/riscv/csr64-op-gdbserver.h | 76 +++++++ target/riscv/gdb_csr_type_group.c | 16 ++ target/riscv/gdb_csr_type_group.h | 3 + target/riscv/gdb_csr_types.c | 333 ++++++++++++++++++++++++++++++ target/riscv/gdb_csr_types.h | 3 + target/riscv/gdbstub.c | 26 ++- target/riscv/meson.build | 4 +- 9 files changed, 566 insertions(+), 6 deletions(-) create mode 100644 target/riscv/csr32-op-gdbserver.h create mode 100644 target/riscv/csr64-op-gdbserver.h create mode 100644 target/riscv/gdb_csr_type_group.c create mode 100644 target/riscv/gdb_csr_type_group.h create mode 100644 target/riscv/gdb_csr_types.c create mode 100644 target/riscv/gdb_csr_types.h diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 9f41954894..557b4afe0e 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -3,6 +3,7 @@ * * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu * Copyright (c) 2017-2018 SiFive, Inc. + * Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -2094,5 +2095,6 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] =3D { [CSR_MHPMCOUNTER29H] =3D { "mhpmcounter29h", any32, read_zero }, [CSR_MHPMCOUNTER30H] =3D { "mhpmcounter30h", any32, read_zero }, [CSR_MHPMCOUNTER31H] =3D { "mhpmcounter31h", any32, read_zero }, + #endif /* !CONFIG_USER_ONLY */ }; diff --git a/target/riscv/csr32-op-gdbserver.h b/target/riscv/csr32-op-gdbs= erver.h new file mode 100644 index 0000000000..e8ec527f23 --- /dev/null +++ b/target/riscv/csr32-op-gdbserver.h @@ -0,0 +1,109 @@ +/* Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com */ + + [CSR_USTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "user" }, + [CSR_UIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "user" }, + [CSR_UTVEC] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_USCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "user" }, + [CSR_UEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_UCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "user" }, + [CSR_UTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "user" }, + [CSR_UIP] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_CYCLE] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_TIME] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_INSTRET] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER3] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER4] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER5] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER6] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER7] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER8] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER9] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER10] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER11] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER12] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER13] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER14] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER15] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER16] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER17] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER18] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER19] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER20] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER21] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER22] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER23] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER24] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER25] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER26] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER27] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER28] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER29] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER30] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER31] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_CYCLEH] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_TIMEH] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_INSTRETH] { .gdb_type =3D "uint32", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER3H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER4H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER5H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER6H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER7H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER8H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER9H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER10H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER11H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER12H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER13H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER14H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER15H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER16H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER17H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER18H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER19H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER20H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER21H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER22H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER23H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER24H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER25H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER26H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER27H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER28H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER29H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER30H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER31H] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_SSTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "supervis= or" }, + [CSR_SEDELEG] { .gdb_type =3D "uint32", .gdb_group =3D "supervisor" }, + [CSR_SIDELEG] { .gdb_type =3D "sie-fields", .gdb_group =3D "supervisor" = }, + [CSR_SIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "supervisor" }, + [CSR_STVEC] { .gdb_type =3D "stvec-fields", .gdb_group =3D "supervisor" = }, + [CSR_SCOUNTEREN] { .gdb_type =3D "scounteren-fields", .gdb_group =3D "su= pervisor" }, + [CSR_SSCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "supervisor" }, + [CSR_SEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "supervisor" }, + [CSR_SCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "supervisor= " }, + [CSR_STVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "supervisor" }, + [CSR_SIP] { .gdb_type =3D "sip-fields", .gdb_group =3D "supervisor" }, + [CSR_SATP] { .gdb_type =3D "satp-fields", .gdb_group =3D "supervisor" }, + [CSR_HSTATUS] { .gdb_type =3D "hstatus-fields", .gdb_group =3D "hypervis= or" }, + [CSR_HEDELEG] { .gdb_type =3D "hedeleg-fields", .gdb_group =3D "hypervis= or" }, + [CSR_HIDELEG] { .gdb_type =3D "hie-fields", .gdb_group =3D "hypervisor" = }, + [CSR_HIE] { .gdb_type =3D "hie-fields", .gdb_group =3D "hypervisor" }, + [CSR_HCOUNTEREN] { .gdb_type =3D "int", .gdb_group =3D "hypervisor" }, + [CSR_HGEIE] { .gdb_type =3D "uint32", .gdb_group =3D "hypervisor" }, + [CSR_HGEIP] { .gdb_type =3D "uint32", .gdb_group =3D "hypervisor" }, + [CSR_HTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "hypervisor" }, + [CSR_HIP] { .gdb_type =3D "hip-fields", .gdb_group =3D "hypervisor" }, + [CSR_HVIP] { .gdb_type =3D "hvip-fields", .gdb_group =3D "hypervisor" }, + [CSR_HGATP] { .gdb_type =3D "hgatp-fields", .gdb_group =3D "hypervisor" = }, + [CSR_HTIMEDELTA] { .gdb_type =3D "int", .gdb_group =3D "hypervisor" }, + [CSR_HTIMEDELTAH] { .gdb_type =3D "int", .gdb_group =3D "hypervisor" }, + [CSR_HTINST] { .gdb_type =3D "uint32", .gdb_group =3D "hypervisor" }, + [CSR_VSSTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "virtual= -supervisor" }, + [CSR_VSIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSTVEC] { .gdb_type =3D "stvec-fields", .gdb_group =3D "virtual-sup= ervisor" }, + [CSR_VSSCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "virtual-supe= rvisor" }, + [CSR_VSEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "virtual-supervis= or" }, + [CSR_VSCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "virtual-s= upervisor" }, + [CSR_VSTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSIP] { .gdb_type =3D "sip-fields", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSATP] { .gdb_type =3D "satp-fields", .gdb_group =3D "virtual-super= visor" }, diff --git a/target/riscv/csr64-op-gdbserver.h b/target/riscv/csr64-op-gdbs= erver.h new file mode 100644 index 0000000000..fc4bc62d9e --- /dev/null +++ b/target/riscv/csr64-op-gdbserver.h @@ -0,0 +1,76 @@ +/* Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com */ + + [CSR_USTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "user" }, + [CSR_UIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "user" }, + [CSR_UTVEC] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_USCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "user" }, + [CSR_UEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_UCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "user" }, + [CSR_UTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "user" }, + [CSR_UIP] { .gdb_type =3D "code_ptr", .gdb_group =3D "user" }, + [CSR_CYCLE] { .gdb_type =3D "uint64", .gdb_group =3D "user" }, + [CSR_TIME] { .gdb_type =3D "uint64", .gdb_group =3D "user" }, + [CSR_INSTRET] { .gdb_type =3D "uint64", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER3] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER4] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER5] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER6] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER7] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER8] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER9] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER10] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER11] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER12] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER13] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER14] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER15] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER16] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER17] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER18] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER19] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER20] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER21] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER22] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER23] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER24] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER25] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER26] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER27] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER28] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER29] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER30] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_HPMCOUNTER31] { .gdb_type =3D "int", .gdb_group =3D "user" }, + [CSR_SSTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "supervis= or" }, + [CSR_SEDELEG] { .gdb_type =3D "uint64", .gdb_group =3D "supervisor" }, + [CSR_SIDELEG] { .gdb_type =3D "sie-fields", .gdb_group =3D "supervisor" = }, + [CSR_SIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "supervisor" }, + [CSR_STVEC] { .gdb_type =3D "stvec-fields", .gdb_group =3D "supervisor" = }, + [CSR_SCOUNTEREN] { .gdb_type =3D "scounteren-fields", .gdb_group =3D "su= pervisor" }, + [CSR_SSCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "supervisor" }, + [CSR_SEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "supervisor" }, + [CSR_SCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "supervisor= " }, + [CSR_STVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "supervisor" }, + [CSR_SIP] { .gdb_type =3D "sip-fields", .gdb_group =3D "supervisor" }, + [CSR_SATP] { .gdb_type =3D "satp-fields", .gdb_group =3D "supervisor" }, + [CSR_HSTATUS] { .gdb_type =3D "hstatus-fields", .gdb_group =3D "hypervis= or" }, + [CSR_HEDELEG] { .gdb_type =3D "hedeleg-fields", .gdb_group =3D "hypervis= or" }, + [CSR_HIDELEG] { .gdb_type =3D "hie-fields", .gdb_group =3D "hypervisor" = }, + [CSR_HIE] { .gdb_type =3D "hie-fields", .gdb_group =3D "hypervisor" }, + [CSR_HCOUNTEREN] { .gdb_type =3D "int", .gdb_group =3D "hypervisor" }, + [CSR_HGEIE] { .gdb_type =3D "uint64", .gdb_group =3D "hypervisor" }, + [CSR_HGEIP] { .gdb_type =3D "uint64", .gdb_group =3D "hypervisor" }, + [CSR_HTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "hypervisor" }, + [CSR_HIP] { .gdb_type =3D "hip-fields", .gdb_group =3D "hypervisor" }, + [CSR_HVIP] { .gdb_type =3D "hvip-fields", .gdb_group =3D "hypervisor" }, + [CSR_HGATP] { .gdb_type =3D "hgatp-fields", .gdb_group =3D "hypervisor" = }, + [CSR_HTIMEDELTA] { .gdb_type =3D "int", .gdb_group =3D "hypervisor" }, + [CSR_HTINST] { .gdb_type =3D "uint64", .gdb_group =3D "hypervisor" }, + [CSR_VSSTATUS] { .gdb_type =3D "sstatus-fields", .gdb_group =3D "virtual= -supervisor" }, + [CSR_VSIE] { .gdb_type =3D "sie-fields", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSTVEC] { .gdb_type =3D "stvec-fields", .gdb_group =3D "virtual-sup= ervisor" }, + [CSR_VSSCRATCH] { .gdb_type =3D "data_ptr", .gdb_group =3D "virtual-supe= rvisor" }, + [CSR_VSEPC] { .gdb_type =3D "code_ptr", .gdb_group =3D "virtual-supervis= or" }, + [CSR_VSCAUSE] { .gdb_type =3D "scause-fields", .gdb_group =3D "virtual-s= upervisor" }, + [CSR_VSTVAL] { .gdb_type =3D "data_ptr", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSIP] { .gdb_type =3D "sip-fields", .gdb_group =3D "virtual-supervi= sor" }, + [CSR_VSATP] { .gdb_type =3D "satp-fields", .gdb_group =3D "virtual-super= visor" }, diff --git a/target/riscv/gdb_csr_type_group.c b/target/riscv/gdb_csr_type_= group.c new file mode 100644 index 0000000000..af394de302 --- /dev/null +++ b/target/riscv/gdb_csr_type_group.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Siemens AG */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "gdb_csr_type_group.h" + +struct riscv_gdb_csr_tg const riscv_gdb_csr_type_group[] =3D { + +#if !defined(CONFIG_USER_ONLY) +# ifdef TARGET_RISCV64 +# include "csr64-op-gdbserver.h" +# elif defined TARGET_RISCV64 +# include "csr32-op-gdbserver.h" +# endif +#endif /* !CONFIG_USER_ONLY */ + +}; diff --git a/target/riscv/gdb_csr_type_group.h b/target/riscv/gdb_csr_type_= group.h new file mode 100644 index 0000000000..e044913bd7 --- /dev/null +++ b/target/riscv/gdb_csr_type_group.h @@ -0,0 +1,3 @@ +extern struct riscv_gdb_csr_tg { + char const *gdb_type, *gdb_group; +} const riscv_gdb_csr_type_group[CSR_TABLE_SIZE]; diff --git a/target/riscv/gdb_csr_types.c b/target/riscv/gdb_csr_types.c new file mode 100644 index 0000000000..48b1db2b88 --- /dev/null +++ b/target/riscv/gdb_csr_types.c @@ -0,0 +1,333 @@ +/* Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com */ + +#include "qemu/osdep.h" +#include "gdb_csr_types.h" +#define STR(X) #X + +char const riscv_gdb_csr_types[] =3D +#ifdef TARGET_RISCV32 + STR( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) +#elif defined TARGET_RISCV64 + STR( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) +# endif +; diff --git a/target/riscv/gdb_csr_types.h b/target/riscv/gdb_csr_types.h new file mode 100644 index 0000000000..e55c978ac8 --- /dev/null +++ b/target/riscv/gdb_csr_types.h @@ -0,0 +1,3 @@ +/* Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com */ + +extern char const riscv_gdb_csr_types[]; diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index 23429179e2..9c3f68eeaf 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -2,6 +2,7 @@ * RISC-V GDB Server Stub * * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu + * Copyright (c) 2021 Siemens AG, konrad.schwarz@siemens.com * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -155,6 +156,9 @@ static int riscv_gdb_set_virtual(CPURISCVState *cs, uin= t8_t *mem_buf, int n) return 0; } =20 +#include "gdb_csr_types.h" +#include "gdb_csr_type_group.h" + static int riscv_gen_dynamic_csr_xml(CPUState *cs, int base_reg) { RISCVCPU *cpu =3D RISCV_CPU(cs); @@ -163,21 +167,33 @@ static int riscv_gen_dynamic_csr_xml(CPUState *cs, in= t base_reg) riscv_csr_predicate_fn predicate; int bitsize =3D 16 << env->misa_mxl_max; int i; + riscv_csr_operations *csr_op; + struct riscv_gdb_csr_tg const *csr_tg; =20 g_string_printf(s, ""); g_string_append_printf(s, ""); g_string_append_printf(s, ""= ); =20 - for (i =3D 0; i < CSR_TABLE_SIZE; i++) { - predicate =3D csr_ops[i].predicate; + g_string_append(s, riscv_gdb_csr_types); + + for (i =3D 0, csr_op =3D csr_ops, csr_tg =3D riscv_gdb_csr_type_group; + i < CSR_TABLE_SIZE; ++csr_op, ++csr_tg, ++i) { + predicate =3D csr_op->predicate; if (predicate && (predicate(env, i) =3D=3D RISCV_EXCP_NONE)) { - if (csr_ops[i].name) { - g_string_append_printf(s, "name) { + g_string_append_printf(s, "na= me); } else { g_string_append_printf(s, "", base_reg + i); + g_string_append_printf(s, " regnum=3D\"%d\"", base_reg + i); + if (csr_tg->gdb_type) { + g_string_append_printf(s, " type=3D\"%s\"", csr_tg->gdb_ty= pe); + } + if (csr_tg->gdb_group) { + g_string_append_printf(s, " group=3D\"%s\"", csr_tg->gdb_g= roup); + } + g_string_append(s, " />\n"); } } =20 diff --git a/target/riscv/meson.build b/target/riscv/meson.build index d5e0bc93ea..e1945e54c4 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -25,7 +25,9 @@ riscv_softmmu_ss.add(files( 'arch_dump.c', 'pmp.c', 'monitor.c', - 'machine.c' + 'machine.c', + 'gdb_csr_types.c', + 'gdb_csr_type_group.c' )) =20 target_arch +=3D {'riscv': riscv_ss} --=20 Konrad Schwarz From nobody Tue May 7 23:31:45 2024 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=siemens.com); dmarc=pass(p=none dis=none) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1641312555; cv=pass; d=zohomail.com; s=zohoarc; b=GsVEd5AmWeb6cxW5fV6LuyyZPM6kdUysTXCtBHdCMZ14u3nPKhPengajkx3cUmlBulPnwWeCr8kuM1myV8gvxiMGL9Qwpy1rLbcfsTBXH/ltzFMXhCN9kgWE/0YWXZf5qBD62apxbtBZ/i0jQPCxVaFGsCGdhmqOFocbDclNIVU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641312555; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=F+sJVZQGTBS+NDCnc3db/SEFgyKJFzn5uyewG9hMDiY=; b=JW9bdgV19avkI+Q+AcoIl8ZtvLhANmPUn/uaglqB0Sot+cXTajEsRr8xdq12E/rRzpJ1U3KKD9N04HWR5IOJiKlpEFTN16UBWb3eGq3GJlEZCwaOjpHMKMiBG2xwEQ3u635fghcRXfvZiO5IqnRD4k36eh6VFKfpV/dGylTvHAE= 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=siemens.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 164131255521977.18199287637549; Tue, 4 Jan 2022 08:09:15 -0800 (PST) Received: from localhost ([::1]:56850 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4mN7-0003o2-NF for importer@patchew.org; Tue, 04 Jan 2022 11:09:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40700) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4mLO-0002P3-HV for qemu-devel@nongnu.org; Tue, 04 Jan 2022 11:07:26 -0500 Received: from [2a01:111:f400:7e1b::622] (port=19969 helo=EUR05-AM6-obe.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 1n4mLF-0007WD-6e for qemu-devel@nongnu.org; Tue, 04 Jan 2022 11:07:25 -0500 Received: from AS8PR04CA0138.eurprd04.prod.outlook.com (2603:10a6:20b:127::23) by PR3PR10MB4112.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:af::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Tue, 4 Jan 2022 15:52:16 +0000 Received: from VE1EUR01FT054.eop-EUR01.prod.protection.outlook.com (2603:10a6:20b:127:cafe::82) by AS8PR04CA0138.outlook.office365.com (2603:10a6:20b:127::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:16 +0000 Received: from hybrid.siemens.com (194.138.21.71) by VE1EUR01FT054.mail.protection.outlook.com (10.152.2.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4844.14 via Frontend Transport; Tue, 4 Jan 2022 15:52:15 +0000 Received: from DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) by DEMCHDC9SKA.ad011.siemens.net (194.138.21.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:15 +0100 Received: from fedora.vmnet8.md1wgtfc (139.21.146.182) by DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 4 Jan 2022 16:52:14 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NLVlfMLYVpcQ3sGYg0ydtkTu+otgxjKzvjliRXHysSwQWWXcyP9Z7r4JXonbcBW0Ou4bXZuRCNe6fDadVA0KkeQYZcpSBDJv8ZCFFsmoXwgg0qTQd5oAUIft3JtOIbLvkhoeXDH5Q0DeQNHBxCTvoc0EpPKMkZg7WqXGSrjiuV+1jV0jyDDban6nDuuGFuW7JmPkCF5KECIbIcAO94EhAkKrotDaaWj9JPpQP6colwH0ktpOcfYhHtk+hMa/qF574+OOeAxRevkDLy9OssJPc15pyS3td7juMMrLyF3rOJbVrkkwk/7FtkX0rb6GmhjnmAhWnD9k1LXMn9x7Po7TQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=F+sJVZQGTBS+NDCnc3db/SEFgyKJFzn5uyewG9hMDiY=; b=Goeic7OQ3HWlfE/urumqkemfktWyl45STSUoH4TFRRjTI2eBl0R8QOnZsUglA1DqgQadiI0sC0gl33ewz/pRHv10rQaP6hT3PMU3VRypJpm3VycpABfoBhgw28hNMSDergrTat4gOFsWuOfDQfNJnjKAZkuQctcl2SwPI2IheCuwG12mtyRc7I0bMaZThIkdEjgWNGsnooTHthEN8LWpuOiwPzoj9S8Y9cHWn6J++MseacsppsfJBYk6J5/Lx7rZous6oo3RpfNG/Dl7fDAnM0cO2UmWRwdL4pvz1Ol0Aonj95jTdZk7c9dADSs2aB1vxHWKsRcesAXOFLuNC2GElg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.71) smtp.rcpttodomain=nongnu.org smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F+sJVZQGTBS+NDCnc3db/SEFgyKJFzn5uyewG9hMDiY=; b=yZKk1ltt1OTuCiUXeGJnmw2xVXFPtlPsT0+h8nKQ8XgImwSv8GJL9cWpV8oCh6tZ6Jhrc38JzOgoy2Oi4ZqYMCO09MQlkMp7XO/dl0C1YLQ3d0d49XqGM6CaPxUvwwUwRCVmKOmGoHsv1v/GXxNiqa2IhYxzNUi5G3aXmPDBvcBNPAnx67OuBVH6VmkD2nywv82D+ep52prDSNhE94oFG0TF6C/v4Kj74ciHjLi1Cb74LbtwOZnoU4wHVqb/XkLl3raUStxwE4gNUzNJ4JYvhDtzOnHcj+/othLESWdiX01rG4IgfQ26sKKVqe4eyvFvwkSfx8vzc2HlHBwu4vaogA== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.71) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; 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 (protection.outlook.com: domain of siemens.com designates 194.138.21.71 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.71; helo=hybrid.siemens.com; From: Konrad Schwarz To: Subject: [PATCH v2 5/5] RISC-V: Add `v' (virtualization mode) bit to the `priv' virtual debug register Date: Tue, 4 Jan 2022 16:51:20 +0100 Message-ID: X-Mailer: git-send-email 2.25.4 In-Reply-To: References: <00a79b65-288f-f17c-abe4-fcfd3f7971fd@oth-regensburg.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [139.21.146.182] X-ClientProxiedBy: DEMCHDC89YA.ad011.siemens.net (139.25.226.104) To DEMCHDC8A1A.ad011.siemens.net (139.25.226.107) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7b34c809-2f19-434c-a89e-08d9cf9a2e63 X-MS-TrafficTypeDiagnostic: PR3PR10MB4112:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1pwFWNarnzTzlAm8Lx57rW14iRD60J9NF4pE+3dbjUg6QDWC+90CNZaEJ3fu9CBvNhwDXt7pQ6TSL3GFOIwkjA45GCx+ltl0qxzvbYzkhUA57mj8V3DYF5sf76VLgt2b9eTmI3wz25PG2IkPI81jvtjfsLhbpZ0Bu+QijP/cbQUoSoDYcrNAWc7W0WWhOMY+y1nJMxiWAqy4k/MiYjalWjdymyc6hDBm8zk8ozzONFfFgIZQsdoY2rVEkUpMNAgHEJejH49A2jYbPmkWTM5mk2fQD9QArmC/FffhyX+rF0XdCgQ5awLqCblqHJpYTcqnYDa3CKngfBvFgKGj38BscGyHUONreZsyl6pbfu1S6DW9JvjJ6haTzftSvs5jDd37/Q8JfKxBq47AVBVli1e8jhqRXD+AJ3+9zfSfQAmi9kOAjR8GstMw86fxCZ1F5AHJ9sJP0NuMYubO+NIaShDl1TgcYTIPRwDrwuvsd5ZUWv1TIb7og8mQ+IiCITWvio1MsQ95+CGD6ttcP3/c3lpoZz4/lL+TpSNRaGoGpKMUuTuRg51vjoxG/NNuk1sNahxMObxVWPX0aDy2NbBpjbyY9tDkQ7j+wK8ZGVmkmD8F1o8HAMOx5S80ohlLDJmhp40C2AjXQC7h4UdE4snZEkhmo4QOHnTQPBZPevo1mSOCt4+v9pT8lHkFy/wBYPpdEcvYfjjKq7QRkcTaPHxUH2WfLFY7QCA5bsPRQz/6ihKDzw0/ofcj0Acrwp/mhIntvWzz6Diu+8bxk8iW4FucdM+ADIjRjV2rM5ZqjjikTlJOdz3ydlIO8kRWLXckpjFWTCdSkS3M3cpG0zE/RsQP4unEwQ== X-Forefront-Antispam-Report: CIP:194.138.21.71; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:hybrid.siemens.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(4636009)(40470700002)(36840700001)(46966006)(44832011)(36756003)(16526019)(956004)(186003)(26005)(2616005)(54906003)(6666004)(47076005)(70206006)(356005)(4326008)(36860700001)(82310400004)(86362001)(508600001)(8936002)(81166007)(8676002)(70586007)(5660300002)(2906002)(6916009)(316002)(40460700001)(83380400001)(82960400001)(336012)(81973001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 15:52:15.9363 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7b34c809-2f19-434c-a89e-08d9cf9a2e63 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a; Ip=[194.138.21.71]; Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT054.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR10MB4112 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:111:f400:7e1b::622 (failed) Received-SPF: pass client-ip=2a01:111:f400:7e1b::622; envelope-from=konrad.schwarz@siemens.com; helo=EUR05-AM6-obe.outbound.protection.outlook.com X-Spam_score_int: 6 X-Spam_score: 0.6 X-Spam_bar: / X-Spam_report: (0.6 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RDNS_NONE=0.793, SPF_HELO_PASS=-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: , Cc: Konrad Schwarz , Alistair Francis , Bin Meng , Palmer Dabbelt , Ralf Ramsauer Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @siemens.com) X-ZM-MESSAGEID: 1641312556794100001 Content-Type: text/plain; charset="utf-8" The RISC-V Debug Support specification suggests debuggers provide "virtual debug registers" to show state not directly visible in the ISA, and defines one such register, `priv', which encodes the processor's current operating mode in the two least significant bits. GDB represents virtual debug registers in the `org.gnu.gdb.riscv.virtual' feature of RISC-V target descriptions. This patch adds the `v' (hypervisor virtualization mode) bit to `priv' as specified by section 4.9.1 of version 1.0 of the RISC-V Debug Support specification. Signed-off-by: Konrad Schwarz --- gdb-xml/riscv-32bit-virtual.xml | 30 ++++++++++++++++++++++++++++-- gdb-xml/riscv-64bit-virtual.xml | 30 ++++++++++++++++++++++++++++-- target/riscv/gdbstub.c | 5 ++++- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/gdb-xml/riscv-32bit-virtual.xml b/gdb-xml/riscv-32bit-virtual.= xml index 905f1c555d..7dad42cd67 100644 --- a/gdb-xml/riscv-32bit-virtual.xml +++ b/gdb-xml/riscv-32bit-virtual.xml @@ -5,7 +5,33 @@ are permitted in any medium without royalty provided the copyright notice and this notice are preserved. --> =20 + + - - + + + + + + + + + + + + + + + + + + + diff --git a/gdb-xml/riscv-64bit-virtual.xml b/gdb-xml/riscv-64bit-virtual.= xml index 62d86c237b..02c234670d 100644 --- a/gdb-xml/riscv-64bit-virtual.xml +++ b/gdb-xml/riscv-64bit-virtual.xml @@ -5,7 +5,33 @@ are permitted in any medium without royalty provided the copyright notice and this notice are preserved. --> =20 + + - - + + + + + + + + + + + + + + + + + + + diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index 9c3f68eeaf..b3fa9f864e 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -136,7 +136,10 @@ static int riscv_gdb_get_virtual(CPURISCVState *cs, GB= yteArray *buf, int n) #ifdef CONFIG_USER_ONLY return gdb_get_regl(buf, 0); #else - return gdb_get_regl(buf, cs->priv); + RISCVCPU *const cpu =3D RISCV_CPU(cs); + CPURISCVState *const env =3D &cpu->env; + return gdb_get_regl(buf, riscv_cpu_virt_enabled(env) << 2 | cs->pr= iv); + /* per RISCV Debug Spec 1.0, 4.9.1 */ #endif } return 0; --=20 Konrad Schwarz