From nobody Wed Nov 5 05:26:59 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1532559981215895.8678420529849; Wed, 25 Jul 2018 16:06:21 -0700 (PDT) Received: from localhost ([::1]:56616 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fiSrG-0003w7-Ua for importer@patchew.org; Wed, 25 Jul 2018 19:06:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56655) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fiSpM-0002KX-Ma for qemu-devel@nongnu.org; Wed, 25 Jul 2018 19:04:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fiSpJ-0004V0-Mw for qemu-devel@nongnu.org; Wed, 25 Jul 2018 19:04:16 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:11468) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1fiSpJ-0004TS-8r for qemu-devel@nongnu.org; Wed, 25 Jul 2018 19:04:13 -0400 Received: from mail-sn1nam01lp0116.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.116]) by ob1.hgst.iphmx.com with ESMTP; 26 Jul 2018 07:04:12 +0800 Received: from risc6-mainframe.int.fusionio.com (199.255.44.171) by BN6PR04MB0386.namprd04.prod.outlook.com (2603:10b6:404:91::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.16; Wed, 25 Jul 2018 23:04:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1532559854; x=1564095854; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=dh0KBTpzjaRw14T0uZd+bwzLd4fEH2A/JuRp7aUEqCo=; b=iXxf29yDJwAnRyEwVcI9UzODmF9YW2tbppT4yIzsFzf1e1SQxFMIZhDE hl1hYkK6141wIU1Bovf6mdV7f0BYeyJyNfAJvIeA4zUx+yc+SPSKW5Dn5 zxLjhK607uJ+EXAvypXca/F/kF9xCZv4/Fp50S2ZJTyVAq39wrdA6S6qB qrZc2r5NpkiS4MCm3xBsXYFRyzg4srrdCATzSCbhU6aE0iD1/5Eka83bU zyQIFLomRigHMVIn2jHEkcsUR+v9r86IvMvSKPfXdTfHd0eh8X8qpPUya ud3p/CMP2DoQ11RqH0jmCsPMMEtu852VWWp5JQZ0U+KvZ7+3c9akdf7jb Q==; X-IronPort-AV: E=Sophos;i="5.51,402,1526313600"; d="scan'208";a="85808025" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8PzHPdZurnei9oNy90nE+1ZUA3cg5XIUnXQh/JyZtgU=; b=azMQntCSZntDBx6ZPYFwLLTLRr65E+S8Kt+tjxVisSpS99bwBYPDAuRHOwn6LNF0z3vkztHbl0cUPGG1+3NMsY7yKrImxwfPU6+esc4WKmUbP4LLVldQeCBral8oSPYerChpYBkoqFBPiMgXQxjW6b3tut+A9WSAAoAjpOwJlyI= From: Alistair Francis To: qemu-devel@nongnu.org, mjc@sifive.com Date: Wed, 25 Jul 2018 16:04:00 -0700 Message-Id: <1df1097f91c1d8e1817200ac1feefb5407ccb842.1532559484.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [199.255.44.171] X-ClientProxiedBy: CO2PR04CA0002.namprd04.prod.outlook.com (2603:10b6:102:1::12) To BN6PR04MB0386.namprd04.prod.outlook.com (2603:10b6:404:91::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 128dc4c9-edf5-4f23-d02e-08d5f282ee5f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600073)(711020)(4618075)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0386; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 3:rOhswfCAziN/UkDeC+1ujEFNKpw7lG9yJnMrDpDV+JcCfWKwPd7TmY7SBqnlFy2UlNlutf4vrJsz2sP52wfZuMlS38LrTF/ZlQXj/6+AK411r4C7IgGHbX0asDSFb3OTacDpG/fpnzCKLxjncPOmdXQ4HPuvefu9COPLd7BagulLxtMlZvU3BlEJ33HjwmmN2o1zRcN1lde3jbm1NME+2U0Q3Mbyyt1o6n1DWbx/kWjKEcXYciAOLRfAl4eSvzN4; 25:3Bm2pdgjRXMX9XtC8O9ecsT+C1x3zUCG0faxkIZK2NlwZDzbyqTVy11EzBPb5p/mYF1ncNDUM6HAthWfV6eVj0D3bnWdVweG3kj7xygsW+xJvUFDza3AFU2cJ53typFp5wpsnGOwJMsgFkyi++OtXfjRLSOh2eTLa8dl6eTGbWDCmW1WpYFlhaUatZ4UJYvvuM4HOU+Cmc0Q1L3MXuh14JipemVY+zZu3e2vbSDWJOuOxspgqT3jsBxlzPOx4as6k6LL1DSrD5VwLQsDqoEyImstFLptVpkYxFKEl7OcAHZYDEM1lqV6ftphAfczuUXZ9PACFQP+POljNkc2ogkczA==; 31:AzMtxJjjXhVesQGcp/z33X4XYZvoSkMUJxQDhaHR7wIdzkL+B+rwzirQ4RUQg6hPGN9npEIyp/+g3/7BswwRcl4ELJCEH1bR2uGq8BUHrKNclqja1BN+Po3eVX/0e4OFVMLSxqEifNM2eYGfeYyao7+yeHOLL0pzHWCiNk5MjX8T2F98vIWx112Y+O/qIdXgkn3kfTDc8JausqzGe7ItF4LTR+AlQvUNCD3rkq3webE= X-MS-TrafficTypeDiagnostic: BN6PR04MB0386: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 20:SkNsRTt6kHgjqegP49HAylAwP7GSiNhLhFhdFliNlHCQQDCx6ToyIvk2B/OLpIkQvZDA/MBtmsqqop4w+5a7CpaHZUTu0H7NOOGQszLiM7+z8WgyKpfbgCt9D9/0xYLoBMg5H6aH4B52d9hByaMoL2GyuHLELUH4YRhfN86cwLly5Za4bQT8bWnoMe/oehX2VgPysoVN4p2ysixhnYJq/7f2V5T1ojAqzukaO8gUI12P66Qa2I5/WaILP/a5LUVM16TVXfJV0ncQ02KgsOgs+vErXVbzVJsqNqRkdS7qfFd6V6KBIH2FTPyHiD+pf+p3OaQOs1v4LV3KTa+LOCiEZo3cZDGxiaZUzCVSiiDTr6FFok8qRKoW86NiQjcJtG/iuVfRE+GEqdkJRLW368z+LepcVOHVCei/3MEx4CKrKSdqr85CccPUjyyADjTyUrqGQfj1NHSx2N2ZJukhlwHJMBOUhQRzAxI9ydr3NZqLLssxkdiOhyktg1fzNTxR7jyv; 4:DsAmf0SDJSIjAsRSOHjl8Oc1j5vjw/L3JGqhHOl+wGgPYDRmQ1CRCmKCGLfJ/FUiuTQeZkmvvmsSN5iQyZ9NB/gTcRb61oyKMqVN227YiIMpWTIr+dWfNq12v4ESF4aw0szdEY96qDnxNnhq2S7n0niWFSiMa1zYEHYH74FQc+EDSrgg0G4uiAJBZ+ml3vlrFV4+kXok9vsmLSlMDM/c1zgqXukmoTvWcl+EgR/5qSCsOKwzOyHV9fC76LIhxi8bkKMiKUOjN4fFDkgICwgbSQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR04MB0386; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0386; X-Forefront-PRVS: 0744CFB5E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(136003)(39860400002)(366004)(346002)(376002)(396003)(199004)(189003)(106356001)(5660300001)(47776003)(6486002)(105586002)(16586007)(316002)(50226002)(66066001)(6666003)(86362001)(50466002)(48376002)(36756003)(478600001)(25786009)(11346002)(6512007)(68736007)(72206003)(446003)(4326008)(52116002)(7736002)(2906002)(44832011)(956004)(476003)(118296001)(2616005)(305945005)(53936002)(81166006)(81156014)(39060400002)(6506007)(486006)(76176011)(186003)(8936002)(16526019)(51416003)(386003)(6116002)(3846002)(8676002)(97736004)(26005); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0386; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0386; 23:v+iU4j4eXF0V4YS7I9ZDerTZTTKY0U1cCIgKhplPu?= =?us-ascii?Q?R6YV3fGwhbYpKkVqPUh22lXUoghMsf3gjD+VAwPAom/vFktptZHFLhs6rury?= =?us-ascii?Q?29Zwb8AjQjHMB35i9o6N2mGXLO72o5bHoTp9hYytEvvoPZJuoO/ryOOEjLQl?= =?us-ascii?Q?DZQlNoxSTRcpzyxtQFzwIpCD7Mf6Vs9iphPbC4zQm7z3tXMCx7jcaOLmngLW?= =?us-ascii?Q?IE1l0pyuNYh/+mGClDbXiXCau+w1JfGX7a1jrMOQG4W6OhiPQZGbDwdcfJuB?= =?us-ascii?Q?YqEsXrK5GBErTWZZ+ba/Ig18YQZr8aU3UXS9ptXq6cr4pc641qql2Sert3wu?= =?us-ascii?Q?XT4WiHytITE2lhPhK8uhPIMkIWmH3VqCMiFLkZzKi7NAXT1u9fiyKdTM4T3n?= =?us-ascii?Q?J4+4v54BJpzA8Zp1l5xlb3O/6e7+CJ0dKlfdqOIQaDGb6zpJFx0ZXywlYr7a?= =?us-ascii?Q?6U5gp7VL4Undl2WoZN3t08vUY9a/XcNt1p01KWqOAJ+WnItkX/ZHZyTTEIt7?= =?us-ascii?Q?Tf30yuCpEt3Kd+qAyDzIRDaKZUO/4fG+9M1OCKOvBy+t0ykcuvSNYpVMVErY?= =?us-ascii?Q?NIbyEEAnM100DfVJM+jvomEwbqFGmxGRDpX0yRkM5tEHue0B9Cuil+GXChs+?= =?us-ascii?Q?o5gnDwPsxlAdVp55aZ2a8aoiHjQeX4LeI6uY2znDboFjhoIKyarQejuk2wgK?= =?us-ascii?Q?vFmcHHlCq0E1haSAaEZb75VIWg/2BYOzkn9sCkzMekzys3OvJzN2dfSh/PrU?= =?us-ascii?Q?0Eaifyb7i8VQ//blT+mG44TyAgUW6+UJsIZXjafb0AjvZrpNl+kfJNxsCV7G?= =?us-ascii?Q?a6qqBCybp7OxuHENZ4KJ+At+v2hyiwRi8jIgBKVkfNmBtb1t1zOI+1WIJKbv?= =?us-ascii?Q?Kw7N9El4DZ9EzGqpNGoVmPL/Wq7VdxtHo6P3U/fURkZ9skbhNSukzJbcIEFp?= =?us-ascii?Q?FoynvA5eleRsQ2R6/7dfV7YIyMJ1KYzCJX1HwACrBvcY74thbJAhJGeWr1F1?= =?us-ascii?Q?uUHVkSm8i/jEcE+l36xSbzV1jQIL8xZZdjuYFYkzBmg9driAEPYOKQKSLcuQ?= =?us-ascii?Q?HKFNjyQaUExLz6dvTmRM0fZN1BM7Z1ibhHrKNrv38aBV+YEGRt2dxPWNSjwg?= =?us-ascii?Q?lQf8YYvUTSu/XgQPIMBpfTFkBf9O2y6YUswAPh/ijLYDEzttBaA0E2Oy4CQz?= =?us-ascii?Q?x++3+dJBLuz/EiGrkz93kRF3EsskbzYhpovGDSnquig0x/GP8kRET1ysHKmu?= =?us-ascii?Q?MmlGfTTpeF0ZAnwVWc=3D?= X-Microsoft-Antispam-Message-Info: LN77Q9H4+KgAPYYw5wTnvKye+uHlerfAFcHwYv0z0uppa/s1z9ej6gXDuzcCG7KvkauMAL2eQAcqS5zm3qGazKnzw4W9EiE4BpGX+VLtvw7nV+jQlcKK5UwFyZK35sScyyBhXj+JfV25ED7Q0hhVHe8OJ19a4qcvv1VzYx4aywAPZkfYuiYQwCKwa+h74iVA2VUE+ahpWHkPEh8nHsgL9ezvo8PDvnbjzL42+tyTv5X2ZDArWZV70M5MsRJURA4VMqZ131NvnBJZw1jSMRfLpx5iZEMDv42bqzCKKSCS2aXlC1DagineqSX+M0HszpdMUY5T43VZKcPrn6wWmOw8UdThzblbFVlRjjcOzGVurj0= X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 6:4Lki7b7ON8Etj8VgnluTOhR+xgBEICQtgY+pNzLAsyQxd9IMEOjiK8N0VGRff9a1FDSXET9/4V/0qRmWiJ/+LmttXD7AEQ09kXQk8CYyFextTvvzDrO3SMRaKx15Qij5xsamGCw8WLzSeTg03bEan48n7BbMN8IUbxRWC77c8Q66HCTUzRwTngIJyKQ/4I3+ll2cT2eSQD6W4ky/bnOxDmc++ulnJKVFIdSisx129PYAxcWvYIEIBHQSVrm0bF45L/ARm7cMhvcjZOQR0689NegmDhI+OApvG+vux/LfAe56AiZDaMDAie0boGXSRP7wzgKTf2abny0HWSAHy9snpWGP2AJBcYIFPL7l8Y0Us+60wtro6BGJe3dQ4trVyeLzq05Y/Ls+k0SY86Vkk4ETktRHrJxaAy5iwdE2aNLNfuPuO52ylrfaEV2E3s98jIadNWuft/F1Spo5iZb9QcV2YQ==; 5:O+4rqaca+2Y6eBriJEBC3fAAGbiqyaArYYVQyJT8yAn74Kbqs1iG6ZwMOKYwC0N+Zzpcp5IGNaf8FvWSH1FafQEBwVKNIFy2ZbxXn0pwlPN3wKVzZHLNIm2+wa5TMrK74gNtqZjlJYAWfgrLGtV8R5BTe+n9TxDd+R1bemphv40=; 7:wJo9Zi+pAeoTJ9RVJQT98vsPHdSUo+pX6faOx68+I+ZdpJEZCGPwSnWwkcMUQ1rx5PfXvTj/Dg6NiSZfXpMeZy/cQyQGnCDh1iMrLi5XHSGsKHVdEDFAZx0XfUOt9MVBhp6HKp9D9BW7ShKOfqzc1fHGFjUwLO74n6MShXAGPzhy32ZlIXcSjqnYhChs31notXPwmViYPsyB8SXRy/21+ZBSRmX+Wpx9bgVtemc/j4xfYgFD3Ov+IGnOagWXjlQK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 20:q6G5y45l8KRcZKOgUK26o0hj2G1DKLiMBykaigG2JbUU8ALbfl9H7zt4Svn6K0YfUSYNcHb4/oBYM64tTfdChvxXmFVIOYGwOttV3rO4CAn8HzMBF42qi/qi3HJqj+PKdhYVBvAL4bKK8jSaqVsR2gc83WgcRzxuJqjP8/kjOrk= X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2018 23:04:09.5938 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 128dc4c9-edf5-4f23-d02e-08d5f282ee5f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0386 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 2/4] target/riscv: Implement the mtval illegal instruction X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The mtval register can optionally contain the faulting instruction on an illegal instruction exception. This patch adds support for setting the mtval register based on the CPU feature. Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 +++- target/riscv/helper.c | 13 +++++++++++-- target/riscv/translate.c | 12 ++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 0243f73129..1bc46aa952 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -85,7 +85,8 @@ is currently no bit in misa to indicate whether an MMU exists or not so a cpu features bitfield is required */ enum { - RISCV_FEATURE_MMU + RISCV_FEATURE_MMU, + RISCV_FEATURE_MTVAL_INST }; =20 #define USER_VERSION_2_02_0 0x00020200 @@ -113,6 +114,7 @@ struct CPURISCVState { target_ulong frm; =20 target_ulong badaddr; + target_ulong bins; =20 target_ulong user_ver; target_ulong priv_ver; diff --git a/target/riscv/helper.c b/target/riscv/helper.c index b4a3f80872..bd78bcff28 100644 --- a/target/riscv/helper.c +++ b/target/riscv/helper.c @@ -491,9 +491,18 @@ void riscv_cpu_do_interrupt(CPUState *cs) ": badaddr 0x" TARGET_FMT_lx, env->mhartid, env->badad= dr); } env->mtval =3D env->badaddr; + } else if (cs->exception_index & RISCV_EXCP_ILLEGAL_INST) { + if (riscv_feature(env, RISCV_FEATURE_MTVAL_INST)) { + /* The mtval register can optionally also be used to + * return the faulting instruction bits on an illegal + * instruction exception. + */ + env->mtval =3D env->bins; + } else { + env->mtval =3D 0; + } } else { - /* otherwise we must clear mbadaddr/mtval - * todo: support populating mtval on illegal instructions */ + /* Otherwise we must clear mbadaddr/mtval */ env->mtval =3D 0; } =20 diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 0b6be74f2d..1fe8b9c982 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -102,6 +102,15 @@ static void gen_exception_debug(void) =20 static void gen_exception_illegal(DisasContext *ctx) { +#if defined(TARGET_RISCV64) + TCGv_i64 helper_tmp =3D tcg_const_i64(ctx->opcode); + tcg_gen_st_tl(helper_tmp, cpu_env, offsetof(CPURISCVState, bins)); + tcg_temp_free_i64(helper_tmp); +#else + TCGv_i32 helper_tmp =3D tcg_const_i32(ctx->opcode); + tcg_gen_st_tl(helper_tmp, cpu_env, offsetof(CPURISCVState, bins)); + tcg_temp_free_i32(helper_tmp); +#endif generate_exception(ctx, RISCV_EXCP_ILLEGAL_INST); } =20 @@ -1287,6 +1296,9 @@ static void gen_system(CPURISCVState *env, DisasConte= xt *ctx, uint32_t opc, tcg_gen_movi_tl(rs1_pass, rs1); tcg_gen_movi_tl(csr_store, csr); /* copy into temp reg to feed to help= er */ =20 + /* Store the opcode code incase we need it for mtval/stval. */ + env->bins =3D ctx->opcode; + #ifndef CONFIG_USER_ONLY /* Extract funct7 value and check whether it matches SFENCE.VMA */ if ((opc =3D=3D OPC_RISC_ECALL) && ((csr >> 5) =3D=3D 9)) { --=20 2.17.1