From nobody Sun May 5 00:30:52 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 header.i=@wdc.com; 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; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1561420142; cv=none; d=zoho.com; s=zohoarc; b=aFkPPOi5lr87finy6SHIAZQXO1tsTYuToaR2kHXNbQDDOfGmsF/G0ltISmNmTEISvvuYFq9ak307tVtsvxWM/20F9ALbuswabUhntOYnvKk1QAnLodkVpcwN2sbpEkYvM4ngkIK23CH68Qzk14oFURvsbE2DAPuRpbPm5qRAECw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561420142; h=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:ARC-Authentication-Results; bh=AUrDE0nec5oxP/luSE5HGTE54VJypyth5jOM1/nsgGk=; b=fHgDAc+RHsPqbYxsjeiK7pwNtGAwKbJBhTL7B906lfv68GajqCyGL4NJlCr0bRrWLFV+2Zlk9ZGjsfqz/I+5c2xoyexMtg8uwS6tFIYPM4Eh33J/CRXUYmw8eHFWm2fHpbLu5PRecz3XZBmEtlRmCj8T8+ai+ilk1HlgAw2GlRM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561420142205483.75883050908726; Mon, 24 Jun 2019 16:49:02 -0700 (PDT) Received: from localhost ([::1]:55516 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYhh-0003Q7-4C for importer@patchew.org; Mon, 24 Jun 2019 19:48:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51964) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYe2-0001Fh-Ry for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfYe0-0001Bs-LG for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:06 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:37536) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hfYdx-00014P-36; Mon, 24 Jun 2019 19:45:02 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Jun 2019 07:44:59 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 Jun 2019 16:44:10 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 Jun 2019 16:44:57 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1561419901; x=1592955901; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=h7zaR89WFyy7ux44fwC53qsrknXmBIMpm2oNVt0ErFQ=; b=bQjID+DvOOu0bVn9XrqIhCgSmiDLDE43F9ig2UJTaYKn1QCLUtd3YriQ VrIiWecVQVJZUfNwvRtLRQqkFcZLTlBtJMGkbW7y8QP8XeGMzdOZYIg6C pPk4lhwvjOyLZaCTfNdEYxRcwGdEqIbzK2wKAIfyOxquMzNpXfsEu0bWh cwrE+AToZhdCH2F1GuUez3f2IDiTwWYMvDM409zAt0yFmqQRVopUCGeco XcD3jvwFfZ3eVDDs3w0BED/R16NoCn+a16hjt8a4BTCcV8yS+cc/6n51Z 0jjAogoFO8xdoNzkA0UWtJPfTF225lUmG3X8HWgp+vf8er0BZb4gVy+xv w==; X-IronPort-AV: E=Sophos;i="5.63,413,1557158400"; d="scan'208";a="116313406" IronPort-SDR: 19viDF/4/A2FeWCXFAdGxuZIBWHEJGrncOGW8mb/OBoUqOLxdL+5E4tosW2c4bEz2i5DMuerTd AuAwmMVi4itnyY+FnXaAgLoSwKwaNM3Jlm9L4t76wXdTb7xZFxv36yqYqKvp0k1ml+LUsxB5ox 5tnTIq6C+v597M7WJVGwsgJv9e7vTlN/FvZz3uSh3IQXzcLfbaFmD6g67HW88zVRK9FQHQGPkv Uby3CUnE2ndFE5GBrWtdH9XPfcBUGeL8QspZJfyKm5A/fUXBCbKKjjQOGovJXREce/2XqQyjRV 4T7MtlDes22mey7r2RGQ+a53 IronPort-SDR: geLq0gwukeT+cchMeHiCDpTotmJz28JrYjg2PdDZ10ATU2nN9z+Mzu845nCKD7RQIZ3bAnMKEy Ob+cwqTOT/THmyiafcahpvyOFr7KSUA7BRi/gwqxhTv8zl9xWV0ITGtxZ8dDJ51a78zKkvHFuc LtfvpwVVBDsB28ThdivIJab/BI2wbWC2aaykKcHk7VkycXpjAE05covLpGgTjpta4K5yd4YJ6R p87njd8p5B1E4W9umvQFFrKghdzQW7s0rs/2Zm4LGbkptSFDE7NLOM7SNGKMkrDXxjhAIOP9h8 ZWg= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Mon, 24 Jun 2019 16:42:30 -0700 Message-Id: X-Mailer: git-send-email 2.22.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v2 1/4] target/riscv: Fix PMP range boundary address bug 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: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com 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" From: Dayeol Lee A wrong address is passed to `pmp_is_in_range` while checking if a memory access is within a PMP range. Since the ending address of the pmp range (i.e., pmp_state.addr[i].ea) is set to the last address in the range (i.e., pmp base + pmp size - 1), memory accesses containg the last address in the range will always fail. For example, assume that a PMP range is 4KB from 0x87654000 such that the last address within the range is 0x87654fff. 1-byte access to 0x87654fff should be considered to be fully inside the PMP range. However the access now fails and complains partial inclusion because pmp_is_in_range(env, i, addr + size) returns 0 whereas pmp_is_in_range(env, i, addr) returns 1. Signed-off-by: Dayeol Lee Reviewed-by: Alistair Francis Reviewed-by: Michael Clark Signed-off-by: Alistair Francis Reviewed-by: Palmer Dabbelt --- target/riscv/pmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index fed1c3c030..e0fe206407 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -245,7 +245,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulon= g addr, from low to high */ for (i =3D 0; i < MAX_RISCV_PMPS; i++) { s =3D pmp_is_in_range(env, i, addr); - e =3D pmp_is_in_range(env, i, addr + size); + e =3D pmp_is_in_range(env, i, addr + size - 1); =20 /* partially inside */ if ((s + e) =3D=3D 1) { --=20 2.22.0 From nobody Sun May 5 00:30:52 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 header.i=@wdc.com; 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; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1561420146; cv=none; d=zoho.com; s=zohoarc; b=RgEHGtKjisTA56roMBubge1/07g3Do3unc5cQ2JOKUOGILLT5DIu4SbyEQneXjPl036hscjyw+hClQeIcl1MjpIiSi8mI9z5U8CUw7VKIWt5DdYU5CmPegQBA36wqUgrqHWjNq0BUPhGvLpBY6yWPk7a5hYzrvavMNCRGU+ypqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561420146; h=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:ARC-Authentication-Results; bh=uojut3ymIETGQknaL41aXzNz4ZS6SOMzTNIgvBDnC/U=; b=cyGi36MS2uT7NIK7B1bBX/9RR2k2+r+YMu5mizznZ2p6HhMxHYDi9OmwAkhSG3EBOfwFL471WaIjASrRV507BPPLHXFoDMQLW8pfZP1iJ3XF68h2MJ5SxaWWQx7jsmuMMU/uDykHB4pDzLran4LH2bza4o66hgyeLLDFgTd+JP4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561420146549944.5183268915071; Mon, 24 Jun 2019 16:49:06 -0700 (PDT) Received: from localhost ([::1]:55520 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYho-0003WD-DA for importer@patchew.org; Mon, 24 Jun 2019 19:49:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52001) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYe6-0001IF-46 for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfYe2-0001Ex-Pt for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:08 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:37538) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hfYe0-00017w-SI; Mon, 24 Jun 2019 19:45:05 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Jun 2019 07:45:02 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 Jun 2019 16:44:13 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 Jun 2019 16:45:00 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1561419905; x=1592955905; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AkXk3+/Cx/HeTEYsri6aN7yfdtd7KRSDpwA15hzxvzw=; b=mlFqS3CDUouz/rEUtQGr3w0dvWV06PLfDvvXxtOpZPm3IhOagBnIs9yA ALsup9b/yLF7lTnTwmQU3UnylV8rTZQ7U1xvIa0R8XHuHbyoR/LyMGHXy SMn3DfYDfMisjlMbHCjgSxH8hOunvNwfNn1vxoX1B3L1iyRsL758AMKqx KaGz0bDyfFguX/s9LQE28V2LNlwjVKqWHuDsuIFKwlIuHs1NuJobYIz6a og21oyVy7w7RHpGPfVyOXbgIeH17np1uTMbTv4t2JD0XBB8S0j+VqudFJ XTAjLfpnWvsPl9enoNUkgPgqS4uaeWzlBRt2FI38M3FA83rN/1L6/zWkO A==; X-IronPort-AV: E=Sophos;i="5.63,413,1557158400"; d="scan'208";a="116313411" IronPort-SDR: 0y0wQQH5gyYVxRNWHt6ZlWBoBuqJS6jtO7ci5VtCLVSeD6zRZ2gmtKhiT9B9RYOm8VJdx2OL48 383qOLOXPwWZ2iK5+aBJmsucrIUvCHbenaquxNeyX3KoaAsRJG1/bTWR1arJQhd2AuJmwmoXb9 TROjq+SYnqOQFwP9GJQjKcvhYo3reEdA2EumR6stpoOPfW0h+w67/0MwgNAbIRs/ecTpeDjLJ0 MuRw92z2bGBYWFZ4rawgwc1uPmh3jA5qeU0HrMl44VWqL/chBfmw6eRZUCSuINV+byPri3oI14 67VSCgW/xg3lDGnVfwO5SWqk IronPort-SDR: AD0BVeFmwznA93/zaNrXve0uAS9zI9s19hAEDZ4TBNC0TRTZXkfzKm2rzP1e6404bIwU/3pOXX cwW2MH2uR9jvUEQDXInrtdgtyaCex7L30V+zG2RgVvNi0R8OcMXvhT/GMcE0btkv75zpwuabnr g9NGO54xNlU5pPugc8i6Y+KxnWBjSPGC8z383UBk8PSbq5cNwc3Q1dAhzLBYN/OVsorHRhyy4c gk7K1+VBm7gOBZfVny1VzJxCvozcOOTpb2OyVzIv9VNEM4BEOlf4K5QvxBFYUtnH8cbGUhHkgG BsE= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Mon, 24 Jun 2019 16:42:33 -0700 Message-Id: <7c76d6a9fb6f47db7d0363fbb94bcfe9b6eebcc5.1561419713.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v2 2/4] disas/riscv: Disassemble reserved compressed encodings as illegal 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: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com 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" From: Michael Clark Due to the design of the disassembler, the immediate is not known during decoding of the opcode; so to handle compressed encodings with reserved immediate values (non-zero), we need to add an additional check during decompression to match reserved encodings with zero immediates and translate them into the illegal instruction. The following compressed opcodes have reserved encodings with zero immediates: c.addi4spn, c.addi, c.lui, c.addi16sp, c.srli, c.srai, c.andi and c.slli Signed-off-by: Michael Clark Signed-off-by: Alistair Francis Reviewed-by: Palmer Dabbelt --- disas/riscv.c | 51 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 59a9b0437a..3ab4586f0a 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -504,14 +504,19 @@ typedef struct { const rvc_constraint *constraints; } rv_comp_data; =20 +enum { + rvcd_imm_nz =3D 0x1 +}; + typedef struct { const char * const name; const rv_codec codec; const char * const format; const rv_comp_data *pseudo; - const int decomp_rv32; - const int decomp_rv64; - const int decomp_rv128; + const short decomp_rv32; + const short decomp_rv64; + const short decomp_rv128; + const short decomp_data; } rv_opcode_data; =20 /* register names */ @@ -1011,7 +1016,7 @@ const rv_opcode_data opcode_data[] =3D { { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, - { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi= , rv_op_addi, rv_op_addi }, + { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi= , rv_op_addi, rv_op_addi, rvcd_imm_nz }, { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, rv_= op_fld, 0 }, { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_= lw, rv_op_lw }, { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, = 0 }, @@ -1019,14 +1024,14 @@ const rv_opcode_data opcode_data[] =3D { { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op= _sw, rv_op_sw }, { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0,= 0 }, { "c.nop", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_addi, rv_op_addi= , rv_op_addi }, - { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_ad= di, rv_op_addi }, + { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_ad= di, rv_op_addi, rvcd_imm_nz }, { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal, 0, 0 }, { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_a= ddi, rv_op_addi }, - { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi,= rv_op_addi, rv_op_addi }, - { "c.lui", rv_codec_ci_lui, rv_fmt_rd_imm, NULL, rv_op_lui, rv_op_lui,= rv_op_lui }, - { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, rv_o= p_srli, rv_op_srli }, - { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, rv_o= p_srai, rv_op_srai }, - { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, rv_o= p_andi, rv_op_andi }, + { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi,= rv_op_addi, rv_op_addi, rvcd_imm_nz }, + { "c.lui", rv_codec_ci_lui, rv_fmt_rd_imm, NULL, rv_op_lui, rv_op_lui,= rv_op_lui, rvcd_imm_nz }, + { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, rv_o= p_srli, rv_op_srli, rvcd_imm_nz }, + { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, rv_o= p_srai, rv_op_srai, rvcd_imm_nz }, + { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, rv_o= p_andi, rv_op_andi, rvcd_imm_nz }, { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub,= rv_op_sub }, { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor, rv_op_xor,= rv_op_xor }, { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or, rv_op_or, rv= _op_or }, @@ -1036,7 +1041,7 @@ const rv_opcode_data opcode_data[] =3D { { "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal, rv_op_jal, rv= _op_jal }, { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq, rv_op= _beq, rv_op_beq }, { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne, rv_op= _bne, rv_op_bne }, - { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, rv_o= p_slli, rv_op_slli }, + { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, rv_o= p_slli, rv_op_slli, rvcd_imm_nz }, { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld,= rv_op_fld, rv_op_fld }, { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv= _op_lw, rv_op_lw }, { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw,= 0, 0 }, @@ -2795,8 +2800,12 @@ static void decode_inst_decompress_rv32(rv_decode *d= ec) { int decomp_op =3D opcode_data[dec->op].decomp_rv32; if (decomp_op !=3D rv_op_illegal) { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; + if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) && dec->imm = =3D=3D 0) { + dec->op =3D rv_op_illegal; + } else { + dec->op =3D decomp_op; + dec->codec =3D opcode_data[decomp_op].codec; + } } } =20 @@ -2804,8 +2813,12 @@ static void decode_inst_decompress_rv64(rv_decode *d= ec) { int decomp_op =3D opcode_data[dec->op].decomp_rv64; if (decomp_op !=3D rv_op_illegal) { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; + if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) && dec->imm = =3D=3D 0) { + dec->op =3D rv_op_illegal; + } else { + dec->op =3D decomp_op; + dec->codec =3D opcode_data[decomp_op].codec; + } } } =20 @@ -2813,8 +2826,12 @@ static void decode_inst_decompress_rv128(rv_decode *= dec) { int decomp_op =3D opcode_data[dec->op].decomp_rv128; if (decomp_op !=3D rv_op_illegal) { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; + if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) && dec->imm = =3D=3D 0) { + dec->op =3D rv_op_illegal; + } else { + dec->op =3D decomp_op; + dec->codec =3D opcode_data[decomp_op].codec; + } } } =20 --=20 2.22.0 From nobody Sun May 5 00:30:52 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 header.i=@wdc.com; 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; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1561420144; cv=none; d=zoho.com; s=zohoarc; b=Umjj3OkJedkUnKkk82rff/IlTnkF6LgQm4JQzXPU8bDQbF9dgH76m72prOoatAQy621jA2AX20ZWSkSdanbAcSQWYfac9NP4NzoPSyiDLyW+DBo9S4KPWhV4Bag/k9Q3sePfR5T87YoM9u7HS2KfyqitvZwQXMpZ8Vab5RvKVps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561420144; h=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:ARC-Authentication-Results; bh=VFaByf0ij3tOGVUE6g7i0PGvJJII3g1myiCoFq3LpKg=; b=Y2NfUBzooIQjlh8Bo39sq2tmY0ZLcOQg+0SrL8xU8MTw/LYxibPBkBNlp6YucOOPeRekMmwuSdPp6o93QbxDOh7xReYlzNabS6ceAM0sdyuXnI/KFnB9WdSRIGmB/XDYzI56FEJNxVFXZApTyl6WdBOlIOUgUkHTX+J0s9q5xYU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561420144606755.8328704094257; Mon, 24 Jun 2019 16:49:04 -0700 (PDT) Received: from localhost ([::1]:55518 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYhn-0003VU-M3 for importer@patchew.org; Mon, 24 Jun 2019 19:48:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52006) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYe6-0001IR-Ft for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfYe4-0001JQ-QC for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:10 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:22357) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hfYe2-0001Bo-Nz; Mon, 24 Jun 2019 19:45:07 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 Jun 2019 07:47:48 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 Jun 2019 16:44:22 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 Jun 2019 16:45:04 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1561420071; x=1592956071; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1+PXwSnajGbLkrAQCAISjt8r6tt/L6oI4MTJ0K1AHBU=; b=hpfjG/HeOgoxfxeartF1LR35dQE9ZC5YJdrvU+OdyZ4e01tnM/iueLof Xz8USsW7nd3kR1xQxB/dfVIATRnr/ibxVgKrC5x5SbWz8UHeXrlN/cFD3 9wfldm3HRp0TI7xDHwhGBfZj8dXGKXDSV7cuFnvK8wDLh5h6Sxo+RMno7 Mk6kY1NZg94Q3dySNkPTEWhZo5zyc3HeUAewzp/whYZ5sjB3jIuWlfL4p KeEVE0fsMXMAwdKPm9QcWhhJV7hlFkNvyzlzGvBzaVuFrxcxIS2z2n+EU zvzHXzmZXTpka1R4knWv5HQJebahz7MEqnJoVTDTHb6zOohJWyGX3ffcD Q==; X-IronPort-AV: E=Sophos;i="5.63,413,1557158400"; d="scan'208";a="211216774" IronPort-SDR: c2oU/GJnLLcfv2lRqTrn2Qkgk6lM5F4QbuDlY9MRQNC55Og8+NqJvFhjcoMLFB38yGxmuI7zkn s1LG+9VhJLCMwgQKzaMAx8smed6bk3rwwTTKxXx7bGrS0LT/gFl59PTbT55D9jmXzQPiTwFPna lQ8B0ADwgQBryisEONJPyGZXh/olfrNUzaDVIqbZ2WHpFstDWU1H6347MJx3A5U4vABREcCFzE 407c4WUnl2mIn5mBU7I/GUT2O9JqTiRB1Y6/tO38hsfWdhc5lHv8qKL8lUCbXHK9eZh8yp5Js/ 0XaV5bzLx3dye0DKwrnkP1LR IronPort-SDR: ZHUzUF+NMsOPvBSI7CA7Xv32OH0/8uhx6LRmZ4NpyInTwUJkvao0JNs3jtMUZ8yqT9t+H+AtGV VkAo3ZZJMdbTaZXJCGWFtt7ALTTJKzB1qqYsznMeWgMDgOk2yAuw+RxDby1hyP6guNFn3km/BV bWqw+bjbLa5U0hzMMVndk0vPKKaNdLYzU9ryhM9XwlbnS6M1C6q231CAFeAv2LTa1GUvkmUYWU crUCi6ow/uulL1hSlBihqsnH/wRkhjPWTOJ4ZZwQNOXmcD++e0VwBUPEHVO4aSPSvKFe3EZebM Ssw= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Mon, 24 Jun 2019 16:42:35 -0700 Message-Id: X-Mailer: git-send-email 2.22.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [PATCH v2 3/4] disas/riscv: Fix `rdinstreth` constraint 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: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com 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" From: Michael Clark The constraint for `rdinstreth` was comparing the csr number to 0xc80, which is `cycleh` instead. Fix this. Signed-off-by: Wladimir J. van der Laan Signed-off-by: Michael Clark Signed-off-by: Alistair Francis Reviewed-by: Palmer Dabbelt --- disas/riscv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 3ab4586f0a..bdcc70a68e 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -614,7 +614,7 @@ static const rvc_constraint rvcc_rdtime[] =3D { rvc_rs1= _eq_x0, rvc_csr_eq_0xc01, r static const rvc_constraint rvcc_rdinstret[] =3D { rvc_rs1_eq_x0, rvc_csr_= eq_0xc02, rvc_end }; static const rvc_constraint rvcc_rdcycleh[] =3D { rvc_rs1_eq_x0, rvc_csr_e= q_0xc80, rvc_end }; static const rvc_constraint rvcc_rdtimeh[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0xc81, rvc_end }; -static const rvc_constraint rvcc_rdinstreth[] =3D { rvc_rs1_eq_x0, rvc_csr= _eq_0xc80, rvc_end }; +static const rvc_constraint rvcc_rdinstreth[] =3D { rvc_rs1_eq_x0, rvc_csr= _eq_0xc82, rvc_end }; static const rvc_constraint rvcc_frcsr[] =3D { rvc_rs1_eq_x0, rvc_csr_eq_0= x003, rvc_end }; static const rvc_constraint rvcc_frrm[] =3D { rvc_rs1_eq_x0, rvc_csr_eq_0x= 002, rvc_end }; static const rvc_constraint rvcc_frflags[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0x001, rvc_end }; @@ -1031,7 +1031,7 @@ const rv_opcode_data opcode_data[] =3D { { "c.lui", rv_codec_ci_lui, rv_fmt_rd_imm, NULL, rv_op_lui, rv_op_lui,= rv_op_lui, rvcd_imm_nz }, { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, rv_o= p_srli, rv_op_srli, rvcd_imm_nz }, { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, rv_o= p_srai, rv_op_srai, rvcd_imm_nz }, - { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, rv_o= p_andi, rv_op_andi, rvcd_imm_nz }, + { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, rv_o= p_andi, rv_op_andi }, { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub,= rv_op_sub }, { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor, rv_op_xor,= rv_op_xor }, { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or, rv_op_or, rv= _op_or }, --=20 2.22.0 From nobody Sun May 5 00:30:52 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 header.i=@wdc.com; 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; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1561420248; cv=none; d=zoho.com; s=zohoarc; b=VPO532wbq2oRbZrmTZbS5Gep4EXWo0N50mgm1QASX4tuyXffkuujSs+xviMaFjRR4JzuusnphIGNicoWic1m/EjkoQWiIu8AuGQGd4H6mP+Gr8iI+oONDTpfmZFM7S0knbZ50HB7IEj5h9svSFUMgapRZyifPnS+M4AeMshFudQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561420248; h=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:ARC-Authentication-Results; bh=wwA6JVYEHojfAWpWbncR2O0giBcV+Lh3wsuucT61P4A=; b=HIghnR4O4onOjVvjghCjXNoZM0uV8NoEJSqA6yvHdVE/GjdEm5En03+wm8tmwNNHGqZ+QJVkOK+m6A6pwHQy4qcKpdqhdnZboOpejeTdy/W8qv5Qzf+1UeqGSg2YOM9nPTikfe02540+CJFTxaVXUdr2aLQ+Vbpuk5I63MZ3kIk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561420248192485.7537890117494; Mon, 24 Jun 2019 16:50:48 -0700 (PDT) Received: from localhost ([::1]:55562 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYjV-0006L0-3i for importer@patchew.org; Mon, 24 Jun 2019 19:50:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52034) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfYe8-0001Ky-2O for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfYe6-0001Nv-EU for qemu-devel@nongnu.org; Mon, 24 Jun 2019 19:45:11 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:22363) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hfYe5-0001FV-EN; Mon, 24 Jun 2019 19:45:09 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 Jun 2019 07:47:51 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 Jun 2019 16:44:24 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 Jun 2019 16:45:06 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1561420075; x=1592956075; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=b+EHrskRbgiYN4wK+XpeJIoohi/4XorSgGeJtVGGG7g=; b=ME6ezsvKIqizIX3Z+ON5il/vREhxfS3HVd3rVvNAIR/P0dxkXjAn7qq6 kB5Lu02o7ylPjoJBaitek1nqhJ7k3fBaP8FRfFi/pS4plSbktYhAbFBCG mRVP2MhI8LTNBrIzSnxrrQIn/1KczJLJDc9PYUFcbf6ZNkGFczl7ushTS ojqoxu1Qyiv5SzP3qWKoTezTNjJEbYs63AXjBUykTdmc78WX/+dTl/Ew8 j16kfPExKHuoZBV0/m/N8TOhG1G27j9hLARDjLGNJY6RpLxfaVdS7sjoK Beo2umzZS5tU00NV/tCxRv34IeCB7KnvIRH9YyTGgWh54wKOQGTVbPwTF g==; X-IronPort-AV: E=Sophos;i="5.63,413,1557158400"; d="scan'208";a="211216781" IronPort-SDR: 5UOn+JMLSqZtamn3rY2jCrKOrGJkQLVztlbVcQSu8b1z/cVuAOlVHMypk+AKO6dEFvacdNehCD s+OeDr6Mjwh+toG6TmgtEzJ425qQtkhKyQ3pzG/4tR1zm+84dlovtXY0ERzG/5uWWeMdAFh3ko bS8pmUWwIZ99Lxt3raiKFw28aZXDZnG4xBEXxLJib4YTkjlbMp50qZwxpAUK7Aqy9QoF/UbFzm na0zyRBKaGE91j08+EBdkn9nXBw6zI3nXDJP33lyinGI11PmUtvo3IiQPKzYKGfxmjTW7aig/B 2aV3hKN/xqKyjkKIXuVcJCp7 IronPort-SDR: i5q57TWw4ofEtAL0b8zvgBb4DuY7EP8djwGUNWo7yUCRTWCdW86t1aDgb7v7olL/Xhu1bnFSFt rVMHjcSfn4WsBvwjUrvG7Rwmus/5E5lpQPCN0zyOgF6X5q3IvCCLcNOh0XiumW6Ojdc2ebusTR Wf6UYzOOrmurdhbmwucvrC+eqgzIrn5MfBb64DQ1NtEMuSLFdSws2itJsdlJnPn86SUhet1Bsg aIRVDZRUkIQMO8SpzWItKBtIqnr3xmLNkmV24kUQnA3qwVtfUf0+dNrUv1A+uFButwQaqqASoY Ulc= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Mon, 24 Jun 2019 16:42:38 -0700 Message-Id: X-Mailer: git-send-email 2.22.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [PATCH v2 4/4] target/riscv: Implement riscv_cpu_unassigned_access 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: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com 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" From: Michael Clark This patch adds support for the riscv_cpu_unassigned_access call and will raise a load or store access fault. Signed-off-by: Michael Clark [Changes by AF: - Squash two patches and rewrite commit message - Set baddr to the access address ] Signed-off-by: Alistair Francis Reviewed-by: Palmer Dabbelt --- target/riscv/cpu.c | 1 + target/riscv/cpu.h | 2 ++ target/riscv/cpu_helper.c | 16 ++++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 6f2b644220..f656714d59 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -416,6 +416,7 @@ static void riscv_cpu_class_init(ObjectClass *c, void *= data) cc->gdb_stop_before_watchpoint =3D true; cc->disas_set_info =3D riscv_cpu_disas_set_info; #ifndef CONFIG_USER_ONLY + cc->do_unassigned_access =3D riscv_cpu_unassigned_access; cc->do_unaligned_access =3D riscv_cpu_do_unaligned_access; cc->get_phys_page_debug =3D riscv_cpu_get_phys_page_debug; #endif diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6c5de37b25..dc31b16dcb 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -248,6 +248,8 @@ void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr= addr, bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, MMUAccessType access_type, int mmu_idx, bool probe, uintptr_t retaddr); +void riscv_cpu_unassigned_access(CPUState *cpu, hwaddr addr, bool is_write, + bool is_exec, int unused, unsigned size); char *riscv_isa_string(RISCVCPU *cpu); void riscv_cpu_list(void); =20 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 8b6754b917..0bbfb7f48b 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -375,6 +375,22 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vad= dr addr) return phys_addr; } =20 +void riscv_cpu_unassigned_access(CPUState *cs, hwaddr addr, bool is_write, + bool is_exec, int unused, unsigned size) +{ + RISCVCPU *cpu =3D RISCV_CPU(cs); + CPURISCVState *env =3D &cpu->env; + + if (is_write) { + cs->exception_index =3D RISCV_EXCP_STORE_AMO_ACCESS_FAULT; + } else { + cs->exception_index =3D RISCV_EXCP_LOAD_ACCESS_FAULT; + } + + env->badaddr =3D addr; + riscv_raise_exception(&cpu->env, cs->exception_index, GETPC()); +} + void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr addr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) --=20 2.22.0