From nobody Mon Feb 9 11:45:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=quarantine dis=none) header.from=opensource.wdc.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640015480007516.2300420108882; Mon, 20 Dec 2021 07:51:20 -0800 (PST) Received: from localhost ([::1]:51128 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzKwY-00085S-UK for importer@patchew.org; Mon, 20 Dec 2021 10:51:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUK-0006sT-BD for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:38 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:22091) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUI-0002OG-T2 for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:36 -0500 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Dec 2021 14:49:32 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:23:50 -0800 Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:49:34 -0800 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4JHVZ50B5Gz1Rwnv for ; Sun, 19 Dec 2021 22:49:33 -0800 (PST) Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Iqjmzg_8Z1tg for ; Sun, 19 Dec 2021 22:49:32 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.68]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4JHVYz4ZF8z1Rwvd; Sun, 19 Dec 2021 22:49:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1639982973; x=1671518973; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=szLf4+H6loGSUBXV3yvtyEKTqnWeINnnQTOWKG5HXYo=; b=qj90ywKlvBb/EPforXhXvfbhAO2Z1YSm1Ul9oazvGVcWKzV77GLxEPnZ uy7+cY+o77BPijjtL/bA2wLjwKjzXS8LXZA8meXchdbiE0jGnfFvJb1in 3sqsCj1ADlJpQwLhvE2S0BuRci0e9ytf56q+kOTk36CcYXKRZy7+sJCV3 1ajEXu3YHyI6Q47e3ckpiHLQ3xolnAFATll3TMOEgBFReOnRTo04+ywrw 3lVw2i4/bM+n/KSrfGlzJrasgkBwzr3xuYHT+6Xqc32a39pG+4541uhO/ cg0VdgEeLUIz+4Hx+/9r8EFHFjgPA/Ar7Fuw/JLiNhLAlLhXPlvlQZGiv Q==; X-IronPort-AV: E=Sophos;i="5.88,219,1635177600"; d="scan'208";a="188654143" IronPort-SDR: WH1QJJX6k65QBSMSsnEfqgpleOQUt4PhkWVJLFnveq4bCofOQBbTxlb5DOT1bfU/ARmz6RsnBM b3xiXRtOCJXNAiknKUODUGoqK8/fkg9XHcW72IkutHLXON5snFkDCwg89KNSFfNdl7jLXcO2n5 Yz1pgTsSJ90wrmfpahmI5G1gS5UMnEG8N7SWN3l+HcRw5QL9Ge4K4hJBamdAmkrecvYrjkaBet +u33S6/TJHCoywkSjer0HPWlXlJ82hbL0qYxyRSQnH7EhS9/mwAd9QkO/CCh8FjxO+MdHXDpYk I95yKrIaIBjlwD04Vm+VT3cD IronPort-SDR: Cxzh7+ayH1q6by59RugRsNV9cc8uRrhLNtf7KpOUxAlu+nneePOYuiR5tjtdQTtf2YhzxF5VOB ck5bmLBCNd+Po/jQ6drCmRS7mkB7CkgGDzmBZxyGp0amGYDZ+RYKxzKNcXFYyVpWlLnXRfJinr cN31jpaf9FMYPo6SuLvTi3Fyc1D21jLBKbg/Dz7hDXSqpFU/4oryne5OW/Endgs/JfPWfgbMtA t7soIIYtzabavrof8ZQswV4lKg3dFR57RzGBRtvBpfc2Wf9L2VYPj6480clOxKJCFpq48PZjuw cgw= WDCIronportException: Internal Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:subject:to :from; s=dkim; t=1639982972; x=1642574973; bh=szLf4+H6loGSUBXV3y vtyEKTqnWeINnnQTOWKG5HXYo=; b=HJb09PaCbU4usWT/QXoHNJMBoStNM4ZybS uuGovr+zIuT3dgmKhuu3iINpqYPPIlAq4by5WsOdbedPZbpbwEsdiUChIX+q8xT5 hc8zcjmlJAHESX48385mN603zB4J4EXcatUJT0AURv07FF3PfQ1uqyaee+PJbhr2 S1CxWpfPrsiZSz4uHoHFxYF7tKjKN1xqQID/ofsl1e0pEgt/ZPtYHSz6THo5zUO6 fe+VOtcEKDrkRMVbA1rtBbDOS/YeR4oYmDhXt+cALZE7lO1rJC8IF9t+OkauB8wI D8+zlcnrmPks8ZXZe6R72xsAWmmsp+/sfW877z0tGypUhb85ACGw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com From: Alistair Francis To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Alistair Francis , Palmer Dabbelt , bmeng.cn@gmail.com, alistair23@gmail.com, Bin Meng , Richard Henderson Subject: [PATCH v4 1/3] target/riscv: Set the opcode in DisasContext Date: Mon, 20 Dec 2021 16:49:14 +1000 Message-Id: <20211220064916.107241-2-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> References: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=9816edf2f=alistair.francis@opensource.wdc.com; helo=esa5.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1640015481160100001 Content-Type: text/plain; charset="utf-8" From: Alistair Francis Signed-off-by: Alistair Francis Reviewed-by: Richard Henderson Reviewed-by: Bin Meng --- target/riscv/translate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 1d57bc97b5..24251bc8cc 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -586,6 +586,7 @@ static void decode_opc(CPURISCVState *env, DisasContext= *ctx, uint16_t opcode) if (!has_ext(ctx, RVC)) { gen_exception_illegal(ctx); } else { + ctx->opcode =3D opcode; ctx->pc_succ_insn =3D ctx->base.pc_next + 2; if (!decode_insn16(ctx, opcode)) { gen_exception_illegal(ctx); @@ -596,6 +597,7 @@ static void decode_opc(CPURISCVState *env, DisasContext= *ctx, uint16_t opcode) opcode32 =3D deposit32(opcode32, 16, 16, translator_lduw(env, &ctx->base, ctx->base.pc_next + 2)); + ctx->opcode =3D opcode32; ctx->pc_succ_insn =3D ctx->base.pc_next + 4; if (!decode_insn32(ctx, opcode32)) { gen_exception_illegal(ctx); --=20 2.31.1 From nobody Mon Feb 9 11:45:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=quarantine dis=none) header.from=opensource.wdc.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1639983851562369.6303949789973; Sun, 19 Dec 2021 23:04:11 -0800 (PST) Received: from localhost ([::1]:32920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzCiQ-0006K5-JS for importer@patchew.org; Mon, 20 Dec 2021 02:04:10 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUR-0006xk-NV for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:43 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:22102) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUP-0002Oh-O9 for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:43 -0500 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Dec 2021 14:49:37 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:23:55 -0800 Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:49:39 -0800 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4JHVZ96cv6z1RvTh for ; Sun, 19 Dec 2021 22:49:37 -0800 (PST) Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id GTjPgXBM6gIM for ; Sun, 19 Dec 2021 22:49:37 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.68]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4JHVZ51zRfz1RtVG; Sun, 19 Dec 2021 22:49:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1639982980; x=1671518980; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=F+7bfdjesS0s3LHB18SglbSGmQHmIYhCVWoJ8rzL6PQ=; b=JCK2hhkfrnyTW9D/5SBjtTlnABGhvmDO5nkcb2kwYFsUCcg2COp0ZugD nFZC87eMykhfbTRD0plez/ySvVibcHm8BrRwaKL2XVvto0kak+4UL9lnU nbdGH5CyAkH2wjJwqR7KVktZPNqcpjA6eslNokb2QsYfNV7JhvpE/OTW3 Qde8MCSYF2Paes8Ornte4aHpHVC4S8C8a891Jz/voQO15Eav6S0rC1jio w+/Av4bW5+qFl4d1ie3aBa0Zr1a1zkfHz4B65JcrVa4Z2Z2ba482MUQKk 0JcSD1OHI7KAtdE4L+u4J3TNbHGVdI7biXkYQq0tErsTBG5/fQWsXJMIX w==; X-IronPort-AV: E=Sophos;i="5.88,219,1635177600"; d="scan'208";a="188654149" IronPort-SDR: 7L0+tgKBuh9WcSiwmDMvhZscjxgzrRrVs0i5b+vy4vstjb2X+WU0wgPYriJQkrG9G5iWn7zvVR yC2pRGKAXUg98G/H5g66/IuIdHdSiHSc8oGU0NddDWeyViCBhYl6c/XCCoWG/wy2t6sKAKQacP ioziWUqm1OydMWl86ZRSsEogMzfTFV7BqXkiIDzgRNv1EjO9w3DZUiompjnmNQIwaXU4SgBi70 HkXZGgT85s1jqnAEjqbPP+m27PQZe/fAzfK4EsgrEz6sLzZf8elQ3819bQAO3s4qP4Dadf7Q3N WMF4G5CQtisudfLJ09v6x9hg IronPort-SDR: 5+Rs6GAfH4Gdv/jAppZYAdmMjaoYnRB5cxQiY0pXRdexyPXwfVDMyPXDuWJO4g9vfa72SUmIg4 YbLkPxReQS3y+2BxrwOYVideNxBG08+Qr1ngIq5vWPkAdu8nChQFyvgWlmAOvzax/V/zskLfjI yDeRXPyZrNK/tRpHpic0GNWlETSlYKUnARdWsc2WaOb14XDRXS9AX0jK2nmga8vIPsBi+3k3g6 M+HTMD8EBNZDRnec+AbhXNJsmbuRkZ1BlgTEu0qJ9McVXAsMUDGbwBbEVfJ5jgsKtOQ472zy/I gBU= WDCIronportException: Internal Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:subject:to :from; s=dkim; t=1639982977; x=1642574978; bh=F+7bfdjesS0s3LHB18 SglbSGmQHmIYhCVWoJ8rzL6PQ=; b=pR8DmTHiyZyrwF/xycGiYP2dSsXpLCeMeW +6GdTAIqnYVXxf/hikwz9V1Y7WUNhjCHOPCUWuyEyEGclLPIwwnSvH90r00O33dy VQ6Ehy0jBQAaYjqBb/MI6Eb84oAQCOBnQzB/k1a5PW3stJBx2m67Olee9lYLDpQw WdRq7f1cPvB1JCKnowKVLG9y6M5tWD5gyZGcoP2vtC37+StecbsncdKjPySoC93O nE0qWe2rHKjjdCW/osaA6/0M98JN2Qmvk2yHiXjEfI1hVao6O/3JzrG1pp3xS6mF Km6LWveDFCnkAL2GbALvE8bUjggPIyfIAyuViBsBv+S4xjudjt7g== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com From: Alistair Francis To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Alistair Francis , Palmer Dabbelt , bmeng.cn@gmail.com, alistair23@gmail.com, Bin Meng Subject: [PATCH v4 2/3] target/riscv: Fixup setting GVA Date: Mon, 20 Dec 2021 16:49:15 +1000 Message-Id: <20211220064916.107241-3-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> References: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=9816edf2f=alistair.francis@opensource.wdc.com; helo=esa5.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1639983852381100001 Content-Type: text/plain; charset="utf-8" From: Alistair Francis In preperation for adding support for the illegal instruction address let's fixup the Hypervisor extension setting GVA logic and improve the variable names. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Reviewed-by: Richard Henderson --- target/riscv/cpu_helper.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 9eeed38c7e..9e1f5ee177 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -967,6 +967,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) =20 RISCVCPU *cpu =3D RISCV_CPU(cs); CPURISCVState *env =3D &cpu->env; + bool write_gva =3D false; uint64_t s; =20 /* cs->exception is 32-bits wide unlike mcause which is XLEN-bits wide @@ -975,7 +976,6 @@ void riscv_cpu_do_interrupt(CPUState *cs) bool async =3D !!(cs->exception_index & RISCV_EXCP_INT_FLAG); target_ulong cause =3D cs->exception_index & RISCV_EXCP_INT_MASK; target_ulong deleg =3D async ? env->mideleg : env->medeleg; - bool write_tval =3D false; target_ulong tval =3D 0; target_ulong htval =3D 0; target_ulong mtval2 =3D 0; @@ -1004,7 +1004,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) case RISCV_EXCP_INST_PAGE_FAULT: case RISCV_EXCP_LOAD_PAGE_FAULT: case RISCV_EXCP_STORE_PAGE_FAULT: - write_tval =3D true; + write_gva =3D true; tval =3D env->badaddr; break; default: @@ -1041,18 +1041,6 @@ void riscv_cpu_do_interrupt(CPUState *cs) if (riscv_has_ext(env, RVH)) { target_ulong hdeleg =3D async ? env->hideleg : env->hedeleg; =20 - if (env->two_stage_lookup && write_tval) { - /* - * If we are writing a guest virtual address to stval, set - * this to 1. If we are trapping to VS we will set this to= 0 - * later. - */ - env->hstatus =3D set_field(env->hstatus, HSTATUS_GVA, 1); - } else { - /* For other HS-mode traps, we set this to 0. */ - env->hstatus =3D set_field(env->hstatus, HSTATUS_GVA, 0); - } - if (riscv_cpu_virt_enabled(env) && ((hdeleg >> cause) & 1)) { /* Trap to VS mode */ /* @@ -1063,7 +1051,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) cause =3D=3D IRQ_VS_EXT) { cause =3D cause - 1; } - env->hstatus =3D set_field(env->hstatus, HSTATUS_GVA, 0); + write_gva =3D false; } else if (riscv_cpu_virt_enabled(env)) { /* Trap into HS mode, from virt */ riscv_cpu_swap_hypervisor_regs(env); @@ -1072,6 +1060,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, riscv_cpu_virt_enabled(env)); =20 + htval =3D env->guest_phys_fault_addr; =20 riscv_cpu_set_virt_enabled(env, 0); @@ -1079,7 +1068,9 @@ void riscv_cpu_do_interrupt(CPUState *cs) /* Trap into HS mode */ env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, fals= e); htval =3D env->guest_phys_fault_addr; + write_gva =3D false; } + env->hstatus =3D set_field(env->hstatus, HSTATUS_GVA, write_gv= a); } =20 s =3D env->mstatus; --=20 2.31.1 From nobody Mon Feb 9 11:45:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=quarantine dis=none) header.from=opensource.wdc.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164001625729940.006423694110026; Mon, 20 Dec 2021 08:04:17 -0800 (PST) Received: from localhost ([::1]:47154 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzL96-0008Ow-Fb for importer@patchew.org; Mon, 20 Dec 2021 11:04:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUU-00071K-8c for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:46 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:30645) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzCUS-0002Ox-G2 for qemu-devel@nongnu.org; Mon, 20 Dec 2021 01:49:46 -0500 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Dec 2021 14:49:42 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:24:00 -0800 Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2021 22:49:44 -0800 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4JHVZG4t2dz1RvTh for ; Sun, 19 Dec 2021 22:49:42 -0800 (PST) Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 5Balkr0bmGS9 for ; Sun, 19 Dec 2021 22:49:42 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.68]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4JHVZB1QFKz1RtVG; Sun, 19 Dec 2021 22:49:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1639982984; x=1671518984; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NwpHVZ34H5xvnsBDSFpMYg4ASzoasBi2diS1mv6DgpI=; b=S4H0Bccdqpj4MutsdCAYIFyIs1nThkQ8O0xAJmJ88BIkcy1+E6lIVheT pNvHBB7nT3y5opg7F5EWwlil57VVG32/vlC2xGHcr/NQqYeStLvaRIQ7n P06yf1MiaKZhqNBhCG8jd/+KYIT655V9b9f9q/kRa2FWPEU5cr4EV0Qx7 LL+O8DuLrfjuyhEHmXvWdUxAKBK773/jOsNdaxr28BfzHZqvo7hUOo14I tC71em0r+A3ihPpBJfbEgAwUYm5Ioy/OFyggpdNgMEa9/SdittNOJbcz0 uvSDEX0uvdnFkxNrB1jRA4CFGCQd3rWpBKzPW2tRZ4sSgd62rXJvAFxOe w==; X-IronPort-AV: E=Sophos;i="5.88,219,1635177600"; d="scan'208";a="193458406" IronPort-SDR: cTqpMZn9sjNOXLvnl8i9yfLG0BA3Oxq/pJXySpncNz5/rb8FAPq869pOxLrQYi2uKrqJYNzsDF vk9/RdhudOTEIn6gb4flFvxF3mGwa0rZE5wSNkLuQTg4gxZEV+MOXE9vX68/f4k9yoKoQzqFBp tSZlRSmK/sPuMWrxyv6rtmtDqNAF9x26BHCZHFbK2gM9pSjWkjxthH8c0F7Lt+2Znjevz+Gk0v L93xUEkoaOjtvSGRWIe77Guz1z9ZzN0cpkPP+e8ajMKePZkh998Yvzo+8NIp2PiWCtSjiZV5kp al5ctgnrqj3je19vuxnY5pKY IronPort-SDR: aajGmhwShTfueerpNLjxOOC5dFMTRtWCSGA9FrlLlJrHU9l5nWa2A/ciDcqYl8k/UjPF9DNmfA /87sbduZ9UX1RsVQOMaFj1QPLaJtJepXYvHyLlrX5A2h8venKkt+uyV8EOx833PmnLWwVk+4uv WF0R+05KJppmC7PcHZJWle79vF0nSIjoxUjGSQFuKgVCRw+thx7C+2ro/8XEEzhYo3VAwPw0eC 0WbrcMZJ3szILS4UXupyA/bL2ncfVAKy/SFK+Vv7yJ+3TfdDRzuM/baSKj1983A6A9DovSL1+v 2vs= WDCIronportException: Internal Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:subject:to :from; s=dkim; t=1639982982; x=1642574983; bh=NwpHVZ34H5xvnsBDSF pMYg4ASzoasBi2diS1mv6DgpI=; b=oldIyxlefZWLkPgW44cJKMbxJL0FORNTx1 74+M5Lj/C4364zedijvK1HmbCGnMMueuYZuxgbBLPL6sRSw+UUbdYrSbYzRPGkAr GAcRE+cK34AzmryWTQE6IZeHZ8GfKRZXa7Jbxqhob9juJBMLy/l5AYRGb7XPICiC 555vWtXVdyH/hAlgBrOz5NoBFu7THaY9eN73UkH4XVW2jfFXknWAJWYQ3KIC9ndv 9fszeeNy+VZahlEhL3W2Pt8ouNZoebnWXEDYy8GvY7hRVyqr6i+D5b74sTagMDsd ZB/4LK9q5sO8MnNr62Si37QwrKrLQTFf27W/QBCRQD6uUL9NGqgw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com From: Alistair Francis To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: Alistair Francis , Palmer Dabbelt , bmeng.cn@gmail.com, alistair23@gmail.com, Bin Meng Subject: [PATCH v4 3/3] target/riscv: Implement the stval/mtval illegal instruction Date: Mon, 20 Dec 2021 16:49:16 +1000 Message-Id: <20211220064916.107241-4-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> References: <20211220064916.107241-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=9816edf2f=alistair.francis@opensource.wdc.com; helo=esa3.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1640016260594000001 Content-Type: text/plain; charset="utf-8" From: Alistair Francis The stval and mtval registers can optionally contain the faulting instruction on an illegal instruction exception. This patch adds support for setting the stval and mtval registers. The RISC-V spec states that "The stval register can optionally also be used to return the faulting instruction bits on an illegal instruction exception...". In this case we are always writing the value on an illegal instruction. This doesn't match all CPUs (some CPUs won't write the data), but in QEMU let's just populate the value on illegal instructions. This won't break any guest software, but will provide more information to guests. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Reviewed-by: Richard Henderson --- target/riscv/cpu.h | 2 ++ target/riscv/cpu_helper.c | 3 +++ target/riscv/translate.c | 3 +++ 3 files changed, 8 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 0760c0af93..3a163b57ed 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -127,6 +127,8 @@ struct CPURISCVState { target_ulong frm; =20 target_ulong badaddr; + uint32_t bins; + target_ulong guest_phys_fault_addr; =20 target_ulong priv_ver; diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 9e1f5ee177..f76ba834e6 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1007,6 +1007,9 @@ void riscv_cpu_do_interrupt(CPUState *cs) write_gva =3D true; tval =3D env->badaddr; break; + case RISCV_EXCP_ILLEGAL_INST: + tval =3D env->bins; + break; default: break; } diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 24251bc8cc..921ca06bf9 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -167,6 +167,9 @@ static void generate_exception_mtval(DisasContext *ctx,= int excp) =20 static void gen_exception_illegal(DisasContext *ctx) { + tcg_gen_st_i32(tcg_constant_i32(ctx->opcode), cpu_env, + offsetof(CPURISCVState, bins)); + generate_exception(ctx, RISCV_EXCP_ILLEGAL_INST); } =20 --=20 2.31.1