From nobody Fri May 3 14:46:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1570027906; cv=none; d=zoho.com; s=zohoarc; b=C8JUpFaPJFokcFe+OIwpjuQZF9aRsHxvinVFlnMf/nrXqTMOoHh8BoRVBmc/SItshg9KPVlBiYDXg2YH4eoEXBaFnGh5/Y4BM/JxCZs5C31KnjdC+QGTz3b2li5KRwlPzYAz3htzzwidVsQzGm9tpYg4YR1gIjk+0yPY4nxx650= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570027906; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=EHhfHLVDFb0Ou/NSqI45n9804z/nKay+LpZFpt/Dpv0=; b=I46rKmLX+5He25fcoRiltBkHFqR+B9ODIDPY5un7xKEbV9kYhBcXr+7gzir7Iz2iRZglek96xmErxfqhT01NLjFwoqq/p7Iiqc2oJ86VX44V4YoRwbbLOQPrA/pFDXikEy0ntIgytIqBSfP/JjceKsJhLhxq6p1ILydFc0mvlww= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570027906089881.3212257255994; Wed, 2 Oct 2019 07:51:46 -0700 (PDT) Received: from localhost ([::1]:56108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iFfyj-0005Ef-0e for importer@patchew.org; Wed, 02 Oct 2019 10:51:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42352) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iFfxN-0004Oq-Pk for qemu-devel@nongnu.org; Wed, 02 Oct 2019 10:50:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iFfxM-000763-LD for qemu-devel@nongnu.org; Wed, 02 Oct 2019 10:50:21 -0400 Received: from rs224.mailgun.us ([209.61.151.224]:35944) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iFfxM-00072S-EX for qemu-devel@nongnu.org; Wed, 02 Oct 2019 10:50:20 -0400 Received: from jonathan-ThinkPad-X1-Carbon.csail.mit.edu (30-10-182.wireless.csail.mit.edu [128.30.10.182]) by mxa.mailgun.org with ESMTP id 5d94b926.7f3c59b89e90-smtp-out-n04; Wed, 02 Oct 2019 14:50:14 -0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=fintelia.io; q=dns/txt; s=pic; t=1570027819; h=Content-Transfer-Encoding: MIME-Version: Message-Id: Date: Subject: Cc: To: From: Sender; bh=EHhfHLVDFb0Ou/NSqI45n9804z/nKay+LpZFpt/Dpv0=; b=HqR67s9boOXw3RHABao3DjdXuhIE7958gwey/qfghspf/GlZfsdis2O4vU4RTJ0DBl27k8jY vsJ6x7akrwUGGlmkqQ3SFjatR/5PU1F9g1J0NzovoUv4A3cPEIjySOPK/2slOFDRimvrIXOc 2hdMHS+D//R68g8hvxGBYej2ZXJK1sKayo5Vv6Uz0Z+xLrtXNl6ktTYvSScAivOWbi+/OE/w lWIT1eRe8zJn59mpll79wdcTfs4fdZo6Je2r7wYgtetYevrl/hbYIWTjdxg+VsObYx6IZIbT oX5E4Pqp6OwV00tDPjjzb7/2XXU6hDzvLu6iv+Qcus7966acfxIcsw== X-Mailgun-Sending-Ip: 209.61.151.224 X-Mailgun-Sid: WyJlMGM5NSIsICJxZW11LWRldmVsQG5vbmdudS5vcmciLCAiOWI0ZTc2Il0= From: Jonathan Behrens To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH] target/riscv: Expose "priv" register for GDB Date: Wed, 2 Oct 2019 10:48:59 -0400 Message-Id: <20191002144859.18208-1-jonathan@fintelia.io> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.61.151.224 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Jonathan Behrens , Palmer Dabbelt , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , Bastian Koppelmann , =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This patch enables a debugger to read and write the current privilege level= via a special "priv" register. When compiled with CONFIG_USER_ONLY the register= is still visible but is hardwired to zero. Signed-off-by: Jonathan Behrens --- gdb-xml/riscv-32bit-cpu.xml | 1 + gdb-xml/riscv-64bit-cpu.xml | 1 + target/riscv/cpu.c | 2 +- target/riscv/gdbstub.c | 14 ++++++++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gdb-xml/riscv-32bit-cpu.xml b/gdb-xml/riscv-32bit-cpu.xml index 0d07aaec85..d6d76aafd8 100644 --- a/gdb-xml/riscv-32bit-cpu.xml +++ b/gdb-xml/riscv-32bit-cpu.xml @@ -44,4 +44,5 @@ + diff --git a/gdb-xml/riscv-64bit-cpu.xml b/gdb-xml/riscv-64bit-cpu.xml index b8aa424ae4..0758d1b5fe 100644 --- a/gdb-xml/riscv-64bit-cpu.xml +++ b/gdb-xml/riscv-64bit-cpu.xml @@ -44,4 +44,5 @@ + diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index f13e298a36..347989858f 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -475,7 +475,7 @@ static void riscv_cpu_class_init(ObjectClass *c, void *= data) cc->synchronize_from_tb =3D riscv_cpu_synchronize_from_tb; cc->gdb_read_register =3D riscv_cpu_gdb_read_register; cc->gdb_write_register =3D riscv_cpu_gdb_write_register; - cc->gdb_num_core_regs =3D 33; + cc->gdb_num_core_regs =3D 34; #if defined(TARGET_RISCV32) cc->gdb_core_xml_file =3D "riscv-32bit-cpu.xml"; #elif defined(TARGET_RISCV64) diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index ded140e8d8..dc8cb4d26c 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -278,6 +278,12 @@ int riscv_cpu_gdb_read_register(CPUState *cs, uint8_t = *mem_buf, int n) return gdb_get_regl(mem_buf, env->gpr[n]); } else if (n =3D=3D 32) { return gdb_get_regl(mem_buf, env->pc); + } else if (n =3D=3D 33) { +#ifdef CONFIG_USER_ONLY + return gdb_get_regl(mem_buf, 0); +#else + return gdb_get_regl(mem_buf, env->priv); +#endif } return 0; } @@ -296,6 +302,14 @@ int riscv_cpu_gdb_write_register(CPUState *cs, uint8_t= *mem_buf, int n) } else if (n =3D=3D 32) { env->pc =3D ldtul_p(mem_buf); return sizeof(target_ulong); + } else if (n =3D=3D 33) { +#ifndef CONFIG_USER_ONLY + env->priv =3D ldtul_p(mem_buf) & 0x3; + if (env->priv =3D=3D 2) { + env->priv =3D 1; + } +#endif + return sizeof(target_ulong); } return 0; } --=20 2.23.0