From patchwork Fri Jan 21 05:57:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719299 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E0C71C433F5 for ; Fri, 21 Jan 2022 06:09:42 +0000 (UTC) Received: from localhost ([::1]:60766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAn7F-00021M-JM for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:09:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49344) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwr-0006jA-Lc for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:58:58 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwh-00040G-Ti for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:58:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744727; x=1674280727; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uTUeuDOPS8TLMYomzQ7t+tG/Y8qjZkpTXIbQk5JIizA=; b=OQ4okP01rm94bt1jZKn1enq6vzIiL6nVJzw6SgsfbP1l5WnAxotoeISi c8J3JesxuBl3y98EcS+LsqtqN8g1XTtJSbXeSOSBpZtVrw/qc1v13LC07 YZ/puyyCvU/ErUGRpKlN6AmKzbi/7joXm2mhAuTZpDulIWrO7Sz/TgFwB ueUSXgEEDKHDvnqu3Pqqb+Xpn4GY2X6hd1aokbUE1olqF1bilMwFpMUrN 8Uo4KR+w70X1qZTUoMsV1aTPC93tzMSUyKkAkV43cjlRD9crLO83wDgRP 8T9GaeLVxTqJm5XagW+zFystIsTLRecM3R7zrzODaGnztpoY7cuJgKnrI A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976469" 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; 21 Jan 2022 13:58:46 +0800 IronPort-SDR: GZKZEXCV5k7ZI48RrevjLJUB7nZGV6qTVkV6XD6ArSRXmdkcVzyqm5IXsnyPhHHGfDLjhMiE+s XjXL//fDKyfBTrEiYL3qiHQGbZuyL3AgvD3WljPsFNKD5CR6EFTRlrDzDEz10AoId+tk6/Vg2g NpPWYOjJbw5oauGzPNm4CBoCDX+4UAxXzUdAsrw0w3xWqpYyGfmrjTv2IBf82rqe8tWic8vDjp CNINm0ETOYaM2T7baiV381G/1Be9P5WnHIHFk9BtLEBuimJitbdLUGSEqKvrSfthZhXPA9zuxq jr+b+bW63QbofV4EocKaqwDv Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:30:57 -0800 IronPort-SDR: Cmm7MVb8lk2z5iEwnZlTpEs0ZfjsJh7edax8PyYcivlW0YF3DvvFdNzZWnTSQ0C7c/0yIWZXay 4OTy6s+xrBIQLAUUO/o+bVURSGkZC+5cyyqB/Ri0Iw/embrMcRnGlxQm5ll6jUeONXIFAr/SzX aAgjhCIWJ5suWxusO8ktUkE8C2TZYclqsHGKs2Sai4OlL0OY4iDkSdNcHObGnFI8lUkNeOoPbm fR/DIckUczTLSF8iaG8opsHbJKXhGAR0Uo6OZJufIg0toqb9SU0SNiX/4Q/g0R7P+H570MNUh9 234= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:58:46 -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 4Jg7wj62CWz1Rwrw for ; Thu, 20 Jan 2022 21:58:45 -0800 (PST) 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:content-type :mime-version:references:in-reply-to:x-mailer:message-id:date :subject:to:from; s=dkim; t=1642744725; x=1645336726; bh=uTUeuDO PS8TLMYomzQ7t+tG/Y8qjZkpTXIbQk5JIizA=; b=O1YdTcQJbktg2TcL5XD+pjf lhGkfdtFPX+gOZThLDVbP2xzfUq5+OZljUpUBYO/m02JvNHHMvaJzGHDXzFdZprh 2IXl867O/zD2b1aA4zvvaJD/Go9BEEFBrnQSl7IUpaLfgr7tiROmnGai+f84Tvph +ZmeKy1PxuJ9LjP27Soj7CKJvdfqYfYzyTVz0m9Y/FzdX3K2ReprT6NeWjgWYIWf u6/IKB/VPGSSpnqhhr6hcZtXUMR3sA59UW7wbeZCvWqHJAgrXJIF4KwebHffQ8jp gvKrjmYM4TM0auHOBnBP10ChqNuYhXSz5S9P0qssKlgsWaKcGYv/q4Kk2wN+HXw= = X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 2EVTQpzFCNmt for ; Thu, 20 Jan 2022 21:58:45 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7wc50psz1RvlN; Thu, 20 Jan 2022 21:58:40 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Wilfred Mallawa , Bin Meng , Alistair Francis , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 01/61] hw: timer: ibex_timer: Fixup reading w/o register Date: Fri, 21 Jan 2022 15:57:30 +1000 Message-Id: <20220121055830.3164408-2-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Wilfred Mallawa This change fixes a bug where a write only register is read. As per https://docs.opentitan.org/hw/ip/rv_timer/doc/#register-table the 'INTR_TEST0' register is write only. Signed-off-by: Wilfred Mallawa Reviewed-by: Bin Meng Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daudé Message-id: 20220110051606.4031241-1-alistair.francis@opensource.wdc.com Signed-off-by: Alistair Francis --- include/hw/timer/ibex_timer.h | 1 - hw/timer/ibex_timer.c | 14 +++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/include/hw/timer/ibex_timer.h b/include/hw/timer/ibex_timer.h index b6f69b38ee..1a0a28d5fa 100644 --- a/include/hw/timer/ibex_timer.h +++ b/include/hw/timer/ibex_timer.h @@ -43,7 +43,6 @@ struct IbexTimerState { uint32_t timer_compare_upper0; uint32_t timer_intr_enable; uint32_t timer_intr_state; - uint32_t timer_intr_test; uint32_t timebase_freq; diff --git a/hw/timer/ibex_timer.c b/hw/timer/ibex_timer.c index 66e1f8e48c..826c38b653 100644 --- a/hw/timer/ibex_timer.c +++ b/hw/timer/ibex_timer.c @@ -130,7 +130,6 @@ static void ibex_timer_reset(DeviceState *dev) s->timer_compare_upper0 = 0xFFFFFFFF; s->timer_intr_enable = 0x00000000; s->timer_intr_state = 0x00000000; - s->timer_intr_test = 0x00000000; ibex_timer_update_irqs(s); } @@ -168,7 +167,8 @@ static uint64_t ibex_timer_read(void *opaque, hwaddr addr, retvalue = s->timer_intr_state; break; case R_INTR_TEST: - retvalue = s->timer_intr_test; + qemu_log_mask(LOG_GUEST_ERROR, + "Attempted to read INTR_TEST, a write only register"); break; default: qemu_log_mask(LOG_GUEST_ERROR, @@ -215,10 +215,7 @@ static void ibex_timer_write(void *opaque, hwaddr addr, s->timer_intr_state &= ~val; break; case R_INTR_TEST: - s->timer_intr_test = val; - if (s->timer_intr_enable & - s->timer_intr_test & - R_INTR_ENABLE_IE_0_MASK) { + if (s->timer_intr_enable & val & R_INTR_ENABLE_IE_0_MASK) { s->timer_intr_state |= R_INTR_STATE_IS_0_MASK; qemu_set_irq(s->irq, true); } @@ -247,8 +244,8 @@ static int ibex_timer_post_load(void *opaque, int version_id) static const VMStateDescription vmstate_ibex_timer = { .name = TYPE_IBEX_TIMER, - .version_id = 1, - .minimum_version_id = 1, + .version_id = 2, + .minimum_version_id = 2, .post_load = ibex_timer_post_load, .fields = (VMStateField[]) { VMSTATE_UINT32(timer_ctrl, IbexTimerState), @@ -257,7 +254,6 @@ static const VMStateDescription vmstate_ibex_timer = { VMSTATE_UINT32(timer_compare_upper0, IbexTimerState), VMSTATE_UINT32(timer_intr_enable, IbexTimerState), VMSTATE_UINT32(timer_intr_state, IbexTimerState), - VMSTATE_UINT32(timer_intr_test, IbexTimerState), VMSTATE_END_OF_LIST() } }; From patchwork Fri Jan 21 05:57:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719308 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2DA2FC433EF for ; Fri, 21 Jan 2022 06:17:10 +0000 (UTC) Received: from localhost ([::1]:41248 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnES-0008CH-Sf for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:17:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49388) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwt-0006jd-H4 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:00 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8932) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwr-00040f-D7 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:58:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744737; x=1674280737; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VSEfC94CnyqVn6RWb0ohP1Qs3rgCObOrp5haBp0K+tE=; b=Fk8C5+xjV3XwoOxdr0tI4FoaXn+3pORMXQG9l0qtk5emyGdMTa2yL8yO KPbzYG2WvqW/ClIgPl1LiPpjvpv5kDyYzmJVODYY5/KB5aMHOexKobE82 SXDXLnpUBMINQTYC8EZWNMIfh78YlFfRMzrQjzONxS5a6BW1Cn52yaRKW W0K0GxN/tYveZaKqb15hraFhQ29MDV3Pwct/nWEMAU44aEbSyv/2cKTur zLay4A9WMo1P5Rikyk0eFwe3nf/Paw0VU78wuMUVP1FWsP5+o+eHtJwHp gHKzScGQ8FhTQS5tn0X4xXyMs4bnC+OGNkYKEhTcJ8PwFqa1Wg3GMHE74 g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976471" 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; 21 Jan 2022 13:58:50 +0800 IronPort-SDR: RY5oXF6kzdd7Y9qERhsVUQXbbkLPZBLr1F4wbKwkeFaw6x/NiaptlHi7yJIPKIi7oslAE3WJ27 jPIet3NKdKLE12fZbCbj9+GWHrAYTx3hgTxrfn7sQea+3VqfzAfAuZ2hsO8Z6MyN/pr2e2wYoQ l2eRF3W0EBh8r8Yr9u0MDh+Z74Tjaeeli/12g3t7D7CLOpvk9AJR59HtosU1oaiy9jyi/g6hg1 iBmQiAOpMK+gSa0JlG0reRp3oX9gSqstQjpObCgQgnDLvgVU8QkcwsA/payqgA2WhEcP6PLZLz gXFa2/upO+hlXaC6SS7UtdnW Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:01 -0800 IronPort-SDR: 9TV1vSJ6IMBDABdSiBXOEg1ZHSeb4IioTVSPnDZ6W1VKfiZmGUWfjYCXhWJg6AoBynLl3i3Es7 02JHpjzvqmHMtKP5heCmMUBpRHzSxRAsSn+LbagrdlWbIKhKkCuRUE3RpuX4p78pGpe+Q40Rrf LzdmqNtM+HTR2HMxpK/gV3DKyjfrpg4iqBZIaaEDrZ3X7thafHY6++vdJ81yp3YKX/B2JYqDrp tLQOM8udvuYCv4WH/tV72vzkvxCt5PdT0TIyAT/Hzt3jrDYhuZKtJNjYxo9115purY5MsRRTq8 +sM= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:58:50 -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 4Jg7wn6v0mz1Rwrw for ; Thu, 20 Jan 2022 21:58:49 -0800 (PST) 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=1642744729; x=1645336730; bh=VSEfC94CnyqVn6RWb0 ohP1Qs3rgCObOrp5haBp0K+tE=; b=l6/kj2rYeEg8Zb4RkeCjRZHI9GiEpm0Lin OSJzCVLnlUYC7zPS+5YaCVP9eSmbDokMI6HdtU6zob+LwkekeS/iJ7ACX1IXEO6x oTulDfRuHFvXK1tigKZMAM20/CPgdmKX4SjeMFB3+Jidkx2P1YBOD0bQUDZqjgmO nb0nbFx3fTSNU7AifEueEFIBZWrkjiLZOy2+PnXLb2d578fjEZ2WpCe2fOg6piW2 77GXIADBk1CLA10Penr0EEOhrfREc4pPNA4D+FWm2B/0gErBSjWjT8fHSKzBeMxd JTyQBjBCKxoQvg8sSJjI9GComn7zWa/n1ei9ZyjDyYNyE0rAvHxg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 vY46-oguMOVc for ; Thu, 20 Jan 2022 21:58:49 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7wk0xLSz1RvlN; Thu, 20 Jan 2022 21:58:45 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Wilfred Mallawa , Alistair Francis , Bin Meng Subject: [PULL 02/61] riscv: opentitan: fixup plic stride len Date: Fri, 21 Jan 2022 15:57:31 +1000 Message-Id: <20220121055830.3164408-3-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Wilfred Mallawa The following change was made to rectify incorrectly set stride length on the PLIC [1]. Where it should be 32bit and not 24bit (0x18). This was discovered whilst attempting to fix a bug where a timer_interrupt was not serviced on TockOS-OpenTitan. [1] https://docs.opentitan.org/hw/top_earlgrey/ip_autogen/rv_plic/doc/ Signed-off-by: Wilfred Mallawa Reviewed-by: Alistair Francis Tested-by: Alistair Francis Reviewed-by: Bin Meng Message-id: 20220111071025.4169189-1-alistair.francis@opensource.wdc.com Signed-off-by: Alistair Francis --- hw/riscv/opentitan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c index 0856c347e8..aec7cfa33f 100644 --- a/hw/riscv/opentitan.c +++ b/hw/riscv/opentitan.c @@ -160,7 +160,7 @@ static void lowrisc_ibex_soc_realize(DeviceState *dev_soc, Error **errp) qdev_prop_set_uint32(DEVICE(&s->plic), "priority-base", 0x00); qdev_prop_set_uint32(DEVICE(&s->plic), "pending-base", 0x1000); qdev_prop_set_uint32(DEVICE(&s->plic), "enable-base", 0x2000); - qdev_prop_set_uint32(DEVICE(&s->plic), "enable-stride", 0x18); + qdev_prop_set_uint32(DEVICE(&s->plic), "enable-stride", 32); qdev_prop_set_uint32(DEVICE(&s->plic), "context-base", 0x200000); qdev_prop_set_uint32(DEVICE(&s->plic), "context-stride", 8); qdev_prop_set_uint32(DEVICE(&s->plic), "aperture-size", memmap[IBEX_DEV_PLIC].size); From patchwork Fri Jan 21 05:57:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719301 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E40B0C4332F for ; Fri, 21 Jan 2022 06:09:42 +0000 (UTC) Received: from localhost ([::1]:60778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAn7F-00021e-TI for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:09:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwu-0006jr-Ls for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:00 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8939) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwr-00040j-JB for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744737; x=1674280737; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hU2WmKQQeLgEXMyHGtbPPfKh2Fq7t2kR6q9L6sZTy4s=; b=c99f6YGdojmVy+aB2DYkHr2FCYFEAwn3F2EIIfEOiFl04jGePdx3zRB3 gwjLtXi3B/qXgXqOm/lirSt0ydGgRoXvpFnEyGZSct64m+AwQo/E5sRZb srDdzcIoJ1TpuIRAVpxRCNz2mLE198fByq957XUbjAGDuummCodJ/Mze0 C4N3xWTF5/fA3KijY8XdObgySlyLv1HwtNC7aRLaxFdbjr64zroSt5doB 0NHRGi/pWWTwztUYrAGsGy5f6noh4/3gCN3Ew13iv7G0fyGwwdO8Yrxtd 38l5GwrYnihG4ElpPMwzAeeBAgx9QV+bX4Owd3x06JNsv7LjKGNhUUG0B A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976476" 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; 21 Jan 2022 13:58:54 +0800 IronPort-SDR: gwUvqUz9aMq3H1RqgzB61waVBQbND0jiANFT6gNpPTxUzrUwJD89PrS1QPVgLmvl4krkY8m4nZ 4Yd4+ffcMi5IGeHrAyPbOS87k4iIO8a9bPKC1JGYJbI1UtBHU6LHE4b9wi6K3rS6pDY0zJ2e6L O7qvl/MjnMXODcd+jEOcUgJ0awNr5v4HQ8pqVtkYp4dW0DupOLIR48c29qZMBNi5+ndyRV3B+e 35A3DzYUVwe02AtiFAcCrE2awisFsbx5ymuicw3bEfjTY4JACrdnC+0kUcTUxmW0tHnUZbPPFK xLedxYnaaJknCNvMc/6GZLIa Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:05 -0800 IronPort-SDR: UNJCt9YEyxQOyY7UMxx7BukH3zv73uh1Zq76onh5LjvVneNnqUvejAlJbllgUg6sfu1Lw5oybM rfU0LqGIEulFuFz6PKACHS8JdE+gc/xjNL/3VIFpFfOWXDhURyI2FtBGb7xXBtmeu/jc8PrjC2 rnd1pFdaTPP5CUsp9mFynhzxVORqsSFch8IRUvz3cxRdAWwiIM4DAR0WPI3Nt80KEtfv5qQDev YDJ5RCi28O8g6kJmXXOw7niDKdLA0+psyueIfzvcaAeEReiHXZEhNNvQbJqpPuI+i0ktMnyWfO xtE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:58:54 -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 4Jg7wt0PVYz1SVnx for ; Thu, 20 Jan 2022 21:58:54 -0800 (PST) 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=1642744733; x=1645336734; bh=hU2WmKQQeLgEXMyHGt bPPfKh2Fq7t2kR6q9L6sZTy4s=; b=Ng6xAUyinqD26DPvFxPJK80SvJcWF1r1Cq +5W/NpMNaKRg3FGZWTy9P+aXD8559Le8jjmqhilgXjTjZd3y4Pn7ivumQKic9Ygl vTQqg9fVjo1w72XxP3rckSyo3gX7cpM0WS1VR8BIKLE8B2+mu/ReF8JaXJY0bbRB SXttp/+xno7MOaWkbtpArDlwKEwz6hjb91d2kVbMTti6jYM1AtNs6GjKfm/qjKjD +1gdEHGuVXa9xTr34bQ+3rQTrW2MvSmDi0YW8OTWFgawDpkB0goqmy8GIqOdLFzM /i8SPJg03eXyd/mIH2BomuGLZL5LzCsNSNpb/miTfqJUqVB+fUsg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 gvCqbm1yB9AA for ; Thu, 20 Jan 2022 21:58:53 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7wp1jJbz1RvlN; Thu, 20 Jan 2022 21:58:49 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Wilfred Mallawa , Alistair Francis , Bin Meng Subject: [PULL 03/61] hw: timer: ibex_timer: update/add reg address Date: Fri, 21 Jan 2022 15:57:32 +1000 Message-Id: <20220121055830.3164408-4-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Wilfred Mallawa The following changes: 1. Fixes the incorrectly set CTRL register address. As per [1] https://docs.opentitan.org/hw/ip/rv_timer/doc/#register-table The CTRL register is @ 0x04. This was found when attempting to fixup a bug where a timer_interrupt was not serviced on TockOS-OpenTitan. 2. Adds ALERT_TEST register as documented on [1], adding repective switch cases to error handle and later implement functionality. Signed-off-by: Wilfred Mallawa Reviewed-by: Alistair Francis Tested-by: Alistair Francis Reviewed-by: Bin Meng Message-id: 20220111071025.4169189-2-alistair.francis@opensource.wdc.com Signed-off-by: Alistair Francis --- hw/timer/ibex_timer.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/timer/ibex_timer.c b/hw/timer/ibex_timer.c index 826c38b653..8c2ca364da 100644 --- a/hw/timer/ibex_timer.c +++ b/hw/timer/ibex_timer.c @@ -34,7 +34,9 @@ #include "target/riscv/cpu.h" #include "migration/vmstate.h" -REG32(CTRL, 0x00) +REG32(ALERT_TEST, 0x00) + FIELD(ALERT_TEST, FATAL_FAULT, 0, 1) +REG32(CTRL, 0x04) FIELD(CTRL, ACTIVE, 0, 1) REG32(CFG0, 0x100) FIELD(CFG0, PRESCALE, 0, 12) @@ -142,6 +144,10 @@ static uint64_t ibex_timer_read(void *opaque, hwaddr addr, uint64_t retvalue = 0; switch (addr >> 2) { + case R_ALERT_TEST: + qemu_log_mask(LOG_GUEST_ERROR, + "Attempted to read ALERT_TEST, a write only register"); + break; case R_CTRL: retvalue = s->timer_ctrl; break; @@ -186,6 +192,9 @@ static void ibex_timer_write(void *opaque, hwaddr addr, uint32_t val = val64; switch (addr >> 2) { + case R_ALERT_TEST: + qemu_log_mask(LOG_UNIMP, "Alert triggering not supported"); + break; case R_CTRL: s->timer_ctrl = val; break; From patchwork Fri Jan 21 05:57:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719315 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0D95CC433F5 for ; Fri, 21 Jan 2022 06:25:01 +0000 (UTC) Received: from localhost ([::1]:49734 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnM5-0005ke-0r for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:25:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49416) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwv-0006kd-Tj for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:02 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwt-00040G-Iq for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744739; x=1674280739; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mUZADo7Tq+txiFZaUQBMhOkhN7lV9jX262x4v3R58k8=; b=nkIytf+moN7wLs3XaLsBA+vk/Uh7/oodpGSg4GOmWtiGPaDXlE5H9ues Cq/nO4p+gtj6Vh6stEBCfWNYakdtCTvig9T2ewS685QIaWaMmqRZnlCEE mMtdFdKFUvsKeSZz8/uSukqxiB4JI/mDJOwqLIi9m0iaF0fecoQLEnaeV 87k3NksXzkE6uK9DWTSHKEOcY/eTZhHWDBIauqTf3T4VScAWidA8vb0cS WpUe4FSLBJZK31KpuRvAPKZzhXmsyHIyTDPfi7k7z/fokBaXSVSkfhIKX 2suYt3TRfgqc7Lk0oI3IUGHhqITgyWBAJmSahM+N8J+PuixIf603Nh/+e Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976481" 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; 21 Jan 2022 13:58:58 +0800 IronPort-SDR: mMT7qDEUNbAIfBpwoYjsfVEALfcJ75F6SJ6fcwESQqgKLoTibnQ+DJZlCbUGvDt0cewPsASeqW h/z4gR6Vwnndol0T1sQWnX2iUWteFFyNzv3kR7KSE9nYyo9VaLM7CqbMyt1ejwLjRLfWP2UnwS GEVsf+xzEqkUZahUybKprMnGjOADPcOgUOKptMtLSG9wyiPpw7X4lrkWPhUhRtxMs8XeM8x2Pg C/rb9igpnrENzW3XLCv8j+g1ALmRNGyEkoSMcep8gKO1BU+PfsjPgDrf8I6EaAUpvGCvYisU+s FXKsGVyw8Me+kHo2+jsgnMdH Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:10 -0800 IronPort-SDR: hewRf4mOJQDkqWNp6xXXu1mTZzbRwPTR/YgDeZZIj+ZGNTiku+YWbXs7FubcFfkxJqTz+wSqtn aI6TDTP8XND1Ad2C9G/6srrQUU9QVEzNEj/Uu+5WoHL0kNCr8NCTcz9aUl4y/eb5tshX62ZI96 Pa0ox4texa4hTKNITj7O4NIL5ELFroKDF+LVl7M2kecWqwUQ+j+q96S5oAHcKGqD2fVVyNEPf4 p+Ug1XGr9bse/kqPlohrRBNomeh+kfKBdvFQ8i1u0yeL0eAeOt3bu5aqdCVQwlBj/uar7Cgm1T +RA= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:58:58 -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 4Jg7wy4STGz1Rwrw for ; Thu, 20 Jan 2022 21:58:58 -0800 (PST) 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=1642744738; x=1645336739; bh=mUZADo7Tq+txiFZaUQ BMhOkhN7lV9jX262x4v3R58k8=; b=mCYqhOMOIWDK6mgGv+NQjeWCyy2N2pl+Hf yLa/wIXvwOowy8pTtKjUcFHx7qTdMe3WAAltPA7GDDnZcAShjcSU22AgIGRiUhvd iMcy5gAEzrRxbJTeRvWM953VIThuZFdtEOwuVbE0npxYzlFtGoTuIoX38/UKhguG 7O9Jfa57iWOW1C/cmsTtFQ6bHcwZqDbqiRkfOOP5WVOO/YCEp4bP8y/jIZQxjLN4 dxETBqQTml/I8ifzKjXBKSyPitYJBQJm7kwNVXhs3BVQdv4NJfw7qjpj8hvHJji1 FMWBbPr5jPsNgy5AAx/diK54lnV1m6l5GwfgPsBnAzxSuPJrn3YQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 LMOhEptB4E3K for ; Thu, 20 Jan 2022 21:58:58 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7wt33Z8z1RvlN; Thu, 20 Jan 2022 21:58:53 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 04/61] update-linux-headers: Add asm-riscv/kvm.h Date: Fri, 21 Jan 2022 15:57:33 +1000 Message-Id: <20220121055830.3164408-5-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Add asm-riscv/kvm.h for RISC-V KVM. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Acked-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-2-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- linux-headers/asm-riscv/kvm.h | 128 ++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 linux-headers/asm-riscv/kvm.h diff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h new file mode 100644 index 0000000000..f808ad1ce5 --- /dev/null +++ b/linux-headers/asm-riscv/kvm.h @@ -0,0 +1,128 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Copyright (C) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel + */ + +#ifndef __LINUX_KVM_RISCV_H +#define __LINUX_KVM_RISCV_H + +#ifndef __ASSEMBLY__ + +#include +#include + +#define __KVM_HAVE_READONLY_MEM + +#define KVM_COALESCED_MMIO_PAGE_OFFSET 1 + +#define KVM_INTERRUPT_SET -1U +#define KVM_INTERRUPT_UNSET -2U + +/* for KVM_GET_REGS and KVM_SET_REGS */ +struct kvm_regs { +}; + +/* for KVM_GET_FPU and KVM_SET_FPU */ +struct kvm_fpu { +}; + +/* KVM Debug exit structure */ +struct kvm_debug_exit_arch { +}; + +/* for KVM_SET_GUEST_DEBUG */ +struct kvm_guest_debug_arch { +}; + +/* definition of registers in kvm_run */ +struct kvm_sync_regs { +}; + +/* for KVM_GET_SREGS and KVM_SET_SREGS */ +struct kvm_sregs { +}; + +/* CONFIG registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */ +struct kvm_riscv_config { + unsigned long isa; +}; + +/* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */ +struct kvm_riscv_core { + struct user_regs_struct regs; + unsigned long mode; +}; + +/* Possible privilege modes for kvm_riscv_core */ +#define KVM_RISCV_MODE_S 1 +#define KVM_RISCV_MODE_U 0 + +/* CSR registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */ +struct kvm_riscv_csr { + unsigned long sstatus; + unsigned long sie; + unsigned long stvec; + unsigned long sscratch; + unsigned long sepc; + unsigned long scause; + unsigned long stval; + unsigned long sip; + unsigned long satp; + unsigned long scounteren; +}; + +/* TIMER registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */ +struct kvm_riscv_timer { + __u64 frequency; + __u64 time; + __u64 compare; + __u64 state; +}; + +/* Possible states for kvm_riscv_timer */ +#define KVM_RISCV_TIMER_STATE_OFF 0 +#define KVM_RISCV_TIMER_STATE_ON 1 + +#define KVM_REG_SIZE(id) \ + (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT)) + +/* If you need to interpret the index values, here is the key: */ +#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000 +#define KVM_REG_RISCV_TYPE_SHIFT 24 + +/* Config registers are mapped as type 1 */ +#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_CONFIG_REG(name) \ + (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long)) + +/* Core registers are mapped as type 2 */ +#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_CORE_REG(name) \ + (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long)) + +/* Control and status registers are mapped as type 3 */ +#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_CSR_REG(name) \ + (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long)) + +/* Timer registers are mapped as type 4 */ +#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_TIMER_REG(name) \ + (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64)) + +/* F extension registers are mapped as type 5 */ +#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_FP_F_REG(name) \ + (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32)) + +/* D extension registers are mapped as type 6 */ +#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_FP_D_REG(name) \ + (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64)) + +#endif + +#endif /* __LINUX_KVM_RISCV_H */ From patchwork Fri Jan 21 05:57:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719307 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EC58CC433EF for ; Fri, 21 Jan 2022 06:17:01 +0000 (UTC) Received: from localhost ([::1]:41220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnEK-0008Ad-HR for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:17:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49444) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmx1-0006lf-6j for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:08 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmwx-00040G-Su for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744743; x=1674280743; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7Mxt6+niEf4WETwk+6PeKYyIx+2d82BH7pLHtt/UjZo=; b=NWs9pkBURmJUJBQW7qzrKpxKRki6MF00E0MCXHpPYAcRSrbqyEdjTi+d cTljY/26vbMSqwMSgmTCDrIaumDyIuUB5Gsmzaxht2cyAomRbzVO8EoR8 5HLyQGB5kqtkkFQcLDqt/xn/p+VpDSmPra5jOeup8mB1+7TyqQ95kW/3E Z1BFF3E9IHO3pwqWio3V6bML38v3f1xE2PPFE9jLxcUPq7cLQ6CndI038 olH/6bFBLb66FPQ3sZeh5JzPoH2LL8SNtWvBH1TjuYQlARDzXinINybIR u73BAcdM1b3eFQ4wbLBERTKIFrKq9aQEt/ZZKoqDcXmEXciTGSiiZ8IzJ A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976483" 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; 21 Jan 2022 13:59:03 +0800 IronPort-SDR: mc2qenAfoWXZhlO6ebbdm7CciJfmRFzoN2j+uhckHy3CK44lzhvTP5b5G2PzEU2dh1B3MolTlv +7uCiRqv3oxAS7WL3nL7ZYagSSYhozrVENmeH0kL7ZAZgyiVTpV7jw5HfpLbkrkzraMOMJBc/P ifyig3jCD+E0MaaseXhWAnES18O+8fhOZlYzBCfxCKFGV4VQm0g6jN7siPZmsoRFJPQ48Ya7X9 qbeECYOqq8VHPtXr28Z6nUl07/vQuLZ7jkPTbxokImExec5qs/w+vQC00j4w5DSdjv1M8g5vuo +MZTbGurZ8w8IA9Qwq3jbZUh Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:14 -0800 IronPort-SDR: JqOiKzYElYwFiqKpAliCVXnq4HYs9iF3US2z/WkMUyqfeShE3lJAaY+KdsJsIwIYyILvJ0jBKQ X5mG5DcHP3KfweYWeIkpJOtXgAF/8WsJaEh/F6OXvVpX0/kXrj3AzbpmpOuaTlcBQSZHDbjLBR /OCZME9Y8RpOLiRiq72g5HaVtQcujyAg+OkKPrI4qmq6aLYOlCshDEtAoyvr+Z4XoFxTAz94AG TIZv+5+zejhxkumVILE/tFXHlr93+wqiYA1K3nd8m5H5jyYyeEFy56gKDrR6FZUuINfSHP4Ldf yqs= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:03 -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 4Jg7x307Gyz1Rwrw for ; Thu, 20 Jan 2022 21:59:03 -0800 (PST) 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=1642744742; x=1645336743; bh=7Mxt6+niEf4WETwk+6 PeKYyIx+2d82BH7pLHtt/UjZo=; b=LnADJjg51fPAB21yv1MLag2a1Qo4rFzJBU 8DgWEead9aTFoaxW1tZxLrw3nvAfujov9EutmhwLSiddzpAaoC38jB6s/VmR5A7c vV2AUNS7KUHI5jbYAxNQOGs9Gc/IkjG20t1MwrOV3IuJKDi7lGS6rxz2WGd4zSdC g39spttSO3kMgLCNrTYcT966pNvnWR1CD2/173uB+G23Qc2v1/TESB+pbR1V1A4y u+2oLQD1DJacajvaxsb1pCHQCDjNTLohWQJ1ijAcH1vrcj67g0ZVOcztSBMLUj3J hlqev4PxTHm3WwYg4B4SkIYQ+vAnQMtObf++SK9zxs3YpRKdRjSg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 3MtilVlM2kqY for ; Thu, 20 Jan 2022 21:59:02 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7wy6PyXz1RvlN; Thu, 20 Jan 2022 21:58:58 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 05/61] target/riscv: Add target/riscv/kvm.c to place the public kvm interface Date: Fri, 21 Jan 2022 15:57:34 +1000 Message-Id: <20220121055830.3164408-6-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Add target/riscv/kvm.c to place kvm_arch_* function needed by kvm/kvm-all.c. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-3-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm.c | 133 +++++++++++++++++++++++++++++++++++++++ target/riscv/meson.build | 1 + 2 files changed, 134 insertions(+) create mode 100644 target/riscv/kvm.c diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c new file mode 100644 index 0000000000..687dd4b621 --- /dev/null +++ b/target/riscv/kvm.c @@ -0,0 +1,133 @@ +/* + * RISC-V implementation of KVM hooks + * + * Copyright (c) 2020 Huawei Technologies Co., Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#include "qemu/osdep.h" +#include + +#include + +#include "qemu-common.h" +#include "qemu/timer.h" +#include "qemu/error-report.h" +#include "qemu/main-loop.h" +#include "sysemu/sysemu.h" +#include "sysemu/kvm.h" +#include "sysemu/kvm_int.h" +#include "cpu.h" +#include "trace.h" +#include "hw/pci/pci.h" +#include "exec/memattrs.h" +#include "exec/address-spaces.h" +#include "hw/boards.h" +#include "hw/irq.h" +#include "qemu/log.h" +#include "hw/loader.h" + +const KVMCapabilityInfo kvm_arch_required_capabilities[] = { + KVM_CAP_LAST_INFO +}; + +int kvm_arch_get_registers(CPUState *cs) +{ + return 0; +} + +int kvm_arch_put_registers(CPUState *cs, int level) +{ + return 0; +} + +int kvm_arch_release_virq_post(int virq) +{ + return 0; +} + +int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, + uint64_t address, uint32_t data, PCIDevice *dev) +{ + return 0; +} + +int kvm_arch_destroy_vcpu(CPUState *cs) +{ + return 0; +} + +unsigned long kvm_arch_vcpu_id(CPUState *cpu) +{ + return cpu->cpu_index; +} + +void kvm_arch_init_irq_routing(KVMState *s) +{ +} + +int kvm_arch_init_vcpu(CPUState *cs) +{ + return 0; +} + +int kvm_arch_msi_data_to_gsi(uint32_t data) +{ + abort(); +} + +int kvm_arch_add_msi_route_post(struct kvm_irq_routing_entry *route, + int vector, PCIDevice *dev) +{ + return 0; +} + +int kvm_arch_init(MachineState *ms, KVMState *s) +{ + return 0; +} + +int kvm_arch_irqchip_create(KVMState *s) +{ + return 0; +} + +int kvm_arch_process_async_events(CPUState *cs) +{ + return 0; +} + +void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run) +{ +} + +MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run) +{ + return MEMTXATTRS_UNSPECIFIED; +} + +bool kvm_arch_stop_on_emulation_error(CPUState *cs) +{ + return true; +} + +int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) +{ + return 0; +} + +bool kvm_arch_cpu_check_are_resettable(void) +{ + return true; +} diff --git a/target/riscv/meson.build b/target/riscv/meson.build index a32158da93..95340b44aa 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -20,6 +20,7 @@ riscv_ss.add(files( 'translate.c', 'm128_helper.c' )) +riscv_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c')) riscv_softmmu_ss = ss.source_set() riscv_softmmu_ss.add(files( From patchwork Fri Jan 21 05:57:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719309 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9657BC433EF for ; Fri, 21 Jan 2022 06:17:13 +0000 (UTC) Received: from localhost ([::1]:41354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnEU-0008Ge-Mk for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:17:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49472) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmx6-0006ml-Ht for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:15 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmx2-00040G-1g for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744748; x=1674280748; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pIeG3ufrkiPsI31qkW5RFpYT7Trsq1rH9/UfpLv99dw=; b=bd1ZxrUXDh6vCbvmaZ3tWAwO+3gV4nHDOMj/1Hch2PJjvI7VCjehOaLZ rxx3WDIVnnkRk1OJ6azpD1rr9vrHxmy6IieaU3iayPIJbygVEt3zEFDs7 a/jZ85Hk1Q0oyXVOLdfNLp+R92sSyR3/9FC3bs0zXR0tUMYxOv8++LZKq 2owtkCQrocaGps84t9PeWChwXz2NvwoCn7fMGuUhxQM+I9bKNdRghHhNQ NrSwvXXDyqz6dZDyjVD9SUj2T/oMPsENlW++S6kUnFKxk1TwBZhcvllHk m/V4aDlTyWQ5xT66/JtaLmyh0NTDRPrppVqoAvMUAS7DU1EKu/L4PMNnQ g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976486" 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; 21 Jan 2022 13:59:07 +0800 IronPort-SDR: atU/imKWKeh1r76EL+nn9I3KYLdKMrgmXHg5fwk0VbN73vMGXyxQzd7zTPbDRQ2byMXPil6TWl UMPC97yhqTOUAIzzhmaNRGnRZTSq7tUfSE+R/P3mQpFYyFqm0QxOPvFgZ2Vn/IEzDpYISFCzSr DQ52rMMz6EQepBr1vC4MhWteQ3DFIkCaHjtd7pYPqmPA0xdU5qqIU7stGo+KQqWW47tokPS23n eUlgZI6GnYFfCHE0TNyYAvZ0KTU15fK6K0jw/EzmuzeiKU9wQ0bCI23/LzUa2405pZptZ2vq8I bTMsp2C3Ai9QYhW3DP9TgvbF Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:18 -0800 IronPort-SDR: 1E/eKJtisgVP1tTxAZMF1e0h27IpkSskYHidLxt3hdrNeBy21HiVkGj1fLMpfSvo+D62fsjMX5 Fs9CKcNT7NcE7OV4kFaYyvw+QZKdGL0UgTLWKdjfKMsI+l9Kln2ohPNOpJU+/tci5l+qFylPG4 6gUOmk35oS8b3RiDXeKknJlwilx2TMoTEWClHSdC2k+53vsf5x4UtPQ13sqXl5bhgikMdMSlxi vQXb+V+TC5bMRp0gPFdxx9ot0SryIORYgqSWW/AuW8OOi4bp4kYHBOiG92Lu5GnBO20+4jNCL5 G0g= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:07 -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 4Jg7x7112Jz1SVnx for ; Thu, 20 Jan 2022 21:59:07 -0800 (PST) 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=1642744746; x=1645336747; bh=pIeG3ufrkiPsI31qkW 5RFpYT7Trsq1rH9/UfpLv99dw=; b=V1yW5tNv8uHwO3397FzCufFm+H17KTEcTv UvBqW+9BrJpWhaJTEEG0WJZRaqH0XXTDiECI53Ggji+EkPSse6Pw9wgu4DL3DtGF o3GJkvH4W1KhnarjhqsdyQZ6Fi6WPAx9nLm9Qn41MnXVkpxXUeepObXPaFsb83Hz tX78uOIvtCfKEshW4ZS+BzpZvkoXhjFlI45BC/+Zo9eUAqv4HmqluA54qySl2k3m W6fv8hTXK8NZwQDezm17i5l4gvZwQ+A6gfdrtxpiCfAo+RxwfYhlxE2mDNb8p8wM 1PhsVIijtnx6wmJ0Q6dibkMU6RF5EvDZOnSjPISfARt5lCMMz80w== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 yg8blW3onqFH for ; Thu, 20 Jan 2022 21:59:06 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7x319drz1SVp2; Thu, 20 Jan 2022 21:59:02 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 06/61] target/riscv: Implement function kvm_arch_init_vcpu Date: Fri, 21 Jan 2022 15:57:35 +1000 Message-Id: <20220121055830.3164408-7-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Get isa info from kvm while kvm init. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-4-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 687dd4b621..9e66b4a97f 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -38,6 +38,24 @@ #include "qemu/log.h" #include "hw/loader.h" +static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, + uint64_t idx) +{ + uint64_t id = KVM_REG_RISCV | type | idx; + + switch (riscv_cpu_mxl(env)) { + case MXL_RV32: + id |= KVM_REG_SIZE_U32; + break; + case MXL_RV64: + id |= KVM_REG_SIZE_U64; + break; + default: + g_assert_not_reached(); + } + return id; +} + const KVMCapabilityInfo kvm_arch_required_capabilities[] = { KVM_CAP_LAST_INFO }; @@ -79,7 +97,21 @@ void kvm_arch_init_irq_routing(KVMState *s) int kvm_arch_init_vcpu(CPUState *cs) { - return 0; + int ret = 0; + target_ulong isa; + RISCVCPU *cpu = RISCV_CPU(cs); + CPURISCVState *env = &cpu->env; + uint64_t id; + + id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, + KVM_REG_RISCV_CONFIG_REG(isa)); + ret = kvm_get_one_reg(cs, id, &isa); + if (ret) { + return ret; + } + env->misa_ext = isa; + + return ret; } int kvm_arch_msi_data_to_gsi(uint32_t data) From patchwork Fri Jan 21 05:57:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719316 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D3180C433EF for ; Fri, 21 Jan 2022 06:25:01 +0000 (UTC) Received: from localhost ([::1]:49796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnM4-0005mq-Gl for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:25:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49544) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxO-0006nn-9g for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:39 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxA-00040G-2f for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744756; x=1674280756; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wdupn2UY8EgzlJsRELG+w0FJCCDOY4Vi5+ZQ17CXibY=; b=WFGg1EJ/oIevnh+ECmpVTmIi07YBJLlZGn20VE3p41xDXl/4q73NldUj lzwUg1h9iiI3YveTva0COht6yqDkBMQGb3IhEHPawPW0cFS+5PxanPDrR 6iwBRU43UZ/j7moPixNcFZBNDf/fC65hZHEAb8CRoVfsfZoMCpdVOtkVH L0Oi3v1peX7bt8ZP7W7qdlsOGNFGCYSHAAsfgWaSKTDK//rJnme1tMU1L R8UzZX45kl3j02JCoOBcLUiA9Z/QJyvBW5N4i9lk3gkrQlqQcAowq1MDa ZnDex6yT26BAPql2eTLA+x/5qyD3pCG6oBnoPO+FmIgWL/6DDfzELEIET w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976491" 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; 21 Jan 2022 13:59:11 +0800 IronPort-SDR: wtwXJD4LVkYaCRiMVVG9Ul5ToJCGtZ2NvWxUVWZa3IGyACJAk8/SKNOoDVdv8ZdkT8FUHnpG3P /gQXbBz+tJFO+aUs+oapZT5bJCqRgq1lQAXY/Eg2sy52tA5qpWmBYwWb073x2A0zrSq+Rgw/JO X7/eEXLDS6Szdadb43Ye5l7QrcnaHtslwDoyM4w7YpxzdjyrJubF7nM/X08WBC14B5zNI8JdfJ /R/wGaisYKH0u4c1JM8jumyI2xXFmAzVLnyRLW8VSFirIdBm2Qup2tsoM4NX/Y8HcXLQstySCi aRM6z6f6pxW6el7jlHP93ZEc Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:23 -0800 IronPort-SDR: SdrPbb02EZ23Ho4a6EvQdVLMz/SkSWWFlMKcetBaAYRDtUerCQTZLMZTrssHQ4y9m9W2cR3aYY jvN9g6KA8poKwQ21uT8kB6dWHcs1DuJZY1eMUESNllU694iOQQuawoahhYoIEYqpJHYZWPI8Tw Q4LjLyiSg5qQOJi5LVoNEWND5mcy5XApiIqkDkmfRpIZ8i4mJxcYBwaWmhUay9+5VG4evk++/b /Zz9Z3FDb8InZcmGdQV4gEsvLLxiE301HZDCXKPjPWQMsss02jXqFk71ZT0gmoaifM4H64wJy3 cLk= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:11 -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 4Jg7xC4wsjz1SHwl for ; Thu, 20 Jan 2022 21:59:11 -0800 (PST) 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=1642744751; x=1645336752; bh=wdupn2UY8EgzlJsREL G+w0FJCCDOY4Vi5+ZQ17CXibY=; b=Bs7aIxIuKqXiFcABx/1KXVKDdgyzgVQM+7 Qrw7GeZUCKrl5D9xNJY5AKMJFDNpGTlOO9indnH+6ZLikvswq2pv0BqbJv1kC54L wxjoAWiXhOPoywh4jBmN4kbCFO1fKTEzszK7mjJQQKjaKNXZ5YUhtxBRY7IWhgQG 1Qdl+V+Qdr9ygtM9o4r3Va5kgC7tkCjx3rDCTFfSnN4EBK/E1B95cLDJ8BXtYasn DU47KG7BoHhhhgVYuypZn/BJasOQ9VrIeWjDy/cxxneLnNggazq+XQyPU88Ihhxw 9mrcJgNiPh1DTj3HFk33PJgT9iw08l2fXf2gB8YjAYoJ2e0TTACQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 JtR_eMaxr3Kl for ; Thu, 20 Jan 2022 21:59:11 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7x742WYz1RvlN; Thu, 20 Jan 2022 21:59:07 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 07/61] target/riscv: Implement kvm_arch_get_registers Date: Fri, 21 Jan 2022 15:57:36 +1000 Message-Id: <20220121055830.3164408-8-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Get GPR CSR and FP registers from kvm by KVM_GET_ONE_REG ioctl. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-5-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm.c | 112 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 9e66b4a97f..039af22125 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -56,13 +56,123 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, return id; } +#define RISCV_CORE_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CORE, \ + KVM_REG_RISCV_CORE_REG(name)) + +#define RISCV_CSR_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CSR, \ + KVM_REG_RISCV_CSR_REG(name)) + +#define RISCV_FP_F_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_F, idx) + +#define RISCV_FP_D_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_D, idx) + +#define KVM_RISCV_GET_CSR(cs, env, csr, reg) \ + do { \ + int ret = kvm_get_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + if (ret) { \ + return ret; \ + } \ + } while (0) + +static int kvm_riscv_get_regs_core(CPUState *cs) +{ + int ret = 0; + int i; + target_ulong reg; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + ret = kvm_get_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + if (ret) { + return ret; + } + env->pc = reg; + + for (i = 1; i < 32; i++) { + uint64_t id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CORE, i); + ret = kvm_get_one_reg(cs, id, ®); + if (ret) { + return ret; + } + env->gpr[i] = reg; + } + + return ret; +} + +static int kvm_riscv_get_regs_csr(CPUState *cs) +{ + int ret = 0; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + KVM_RISCV_GET_CSR(cs, env, sstatus, env->mstatus); + KVM_RISCV_GET_CSR(cs, env, sie, env->mie); + KVM_RISCV_GET_CSR(cs, env, stvec, env->stvec); + KVM_RISCV_GET_CSR(cs, env, sscratch, env->sscratch); + KVM_RISCV_GET_CSR(cs, env, sepc, env->sepc); + KVM_RISCV_GET_CSR(cs, env, scause, env->scause); + KVM_RISCV_GET_CSR(cs, env, stval, env->stval); + KVM_RISCV_GET_CSR(cs, env, sip, env->mip); + KVM_RISCV_GET_CSR(cs, env, satp, env->satp); + return ret; +} + +static int kvm_riscv_get_regs_fp(CPUState *cs) +{ + int ret = 0; + int i; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + if (riscv_has_ext(env, RVD)) { + uint64_t reg; + for (i = 0; i < 32; i++) { + ret = kvm_get_one_reg(cs, RISCV_FP_D_REG(env, i), ®); + if (ret) { + return ret; + } + env->fpr[i] = reg; + } + return ret; + } + + if (riscv_has_ext(env, RVF)) { + uint32_t reg; + for (i = 0; i < 32; i++) { + ret = kvm_get_one_reg(cs, RISCV_FP_F_REG(env, i), ®); + if (ret) { + return ret; + } + env->fpr[i] = reg; + } + return ret; + } + + return ret; +} + const KVMCapabilityInfo kvm_arch_required_capabilities[] = { KVM_CAP_LAST_INFO }; int kvm_arch_get_registers(CPUState *cs) { - return 0; + int ret = 0; + + ret = kvm_riscv_get_regs_core(cs); + if (ret) { + return ret; + } + + ret = kvm_riscv_get_regs_csr(cs); + if (ret) { + return ret; + } + + ret = kvm_riscv_get_regs_fp(cs); + if (ret) { + return ret; + } + + return ret; } int kvm_arch_put_registers(CPUState *cs, int level) From patchwork Fri Jan 21 05:57:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719321 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C3EF8C433EF for ; Fri, 21 Jan 2022 06:30:10 +0000 (UTC) Received: from localhost ([::1]:58734 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnR3-0003Sg-D1 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:30:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxe-0006oG-MH for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:52 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxN-00043A-2o for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744769; x=1674280769; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9gZO4YvdilfsXFQSKide3tjQj1hsYNpUbjfbwwMxrO0=; b=md5nLnJXigIdTFBvBb0iD5fSQOaTZoci19LoRKFM7u05sHpIAYYsWomz vNgUj/IUeIsuYm6AEKKLrQtSNKPs9Yfnc0g5mbje2vzoC9OZv6wVg7vVw sVxWEaHWuZI9rdLmdeJgIHVveIB56w4uopnXsgVl1V2yybQYOZvR61+rv hhJM1IhP5LA9WY/HxjYUP4eiOfUX+de8Shg6Qb42A+OjUWxInobxpzsHS ol52qwHESxcCPjNLflPXnM4UkiNrUyKAyQYKEGnaR3LwU4HwFUGlfLUCf 36VAi+ZSZ+z/YbqyxKZAYIO1gZvsRfzQC3FrlhpXR1gWIS5FjPWbgD8ge w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976504" 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; 21 Jan 2022 13:59:16 +0800 IronPort-SDR: HAOqPIk5VJIHew46mNbHMQ0CYZAFAMAZ+CxR+wFKEkiqHTXGnb+KYFULNkmQE+xBr8xByeOVbo vIiSYoPAO2ZBg27b3DmDmJtnI66Q9YyhyGslI/3IQg26mBWNyEKgaDDir+Kscrjv8IiQ7EVJIa /XneZQXrMo61RMzJi9iG8vxlqHzMpqt1LD7AE8E1K2jxFaWRcpIWSTfO+cCsZqQmRs3egrHmIA ZwBpcEKJK84PCmg80xe6kE/x6g5vVyc75Fj9g/NRT8OMg7cN9MXgCsstCLIlzVXMy8u2IkUmAk 6Cmoe/23eEpQycpBwP1PpEgI Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:27 -0800 IronPort-SDR: 52B5KDBU9pwGJCW0iqLVcoT0whsqLOuxBU5cDx3/Fp7BsOycaN7lORr5KQRP6GzpdyZ31uz7Ts xvMp4oXJnIAwVMXD8phihZ8RTyvLRS9Evxm0+Ibb2DxlW2h7DG9VBr9J4wMjplCCPpbbtE3v+Y RmqOzl7xFDD6l33DujyXfJo2WL8U9ViDyGmWoLwxh4UkVZzrr2tXyXKPOqf8FWQU62e7nAdMTW ypYvqM+aszNMpZVvXEQuQkZMvbQ+k/q44jpq2SS7jBv0U8AirTQ5LIKyvHAa4plFhKRWsHczWD scw= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:16 -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 4Jg7xJ35lVz1SHwl for ; Thu, 20 Jan 2022 21:59:16 -0800 (PST) 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=1642744755; x=1645336756; bh=9gZO4YvdilfsXFQSKi de3tjQj1hsYNpUbjfbwwMxrO0=; b=VDu4HLRfueXTwcnyk5h16+g/Afn/GKLSSG K+E7+Q8E7dagdIXpD9n3H/mFJI+rzX1e4lP7P96HTBT944JicMhjqB4h8Sjn1EbG mDODCrKe5U5RNuyK2nEcTqF3B7LpnUYfWWK5j3hHQU8wNM+3d8qKoYpFxKNxLkPK NCcGeLD72QEIE09FA2dr9FJMCoy1/ml68K2m14ZBwr+YqgCVrzfECnFp5dJfCjxd IQmReTvijrWku9HzdzBMyP0u+4EZGTMXKBeps2MhRAK1zuxCE1R2GroXdj84DBTD jgP1wRi7PklzeTUN4m0DgaF55wj+Htf4WxS5tMavhmOPZ+u+Tx4Q== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 HAKhx5U-d3_8 for ; Thu, 20 Jan 2022 21:59:15 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xD0RCCz1RvlN; Thu, 20 Jan 2022 21:59:11 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 08/61] target/riscv: Implement kvm_arch_put_registers Date: Fri, 21 Jan 2022 15:57:37 +1000 Message-Id: <20220121055830.3164408-9-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Put GPR CSR and FP registers to kvm by KVM_SET_ONE_REG ioctl Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-6-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm.c | 104 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 039af22125..dbaff53bf2 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -74,6 +74,14 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, } \ } while (0) +#define KVM_RISCV_SET_CSR(cs, env, csr, reg) \ + do { \ + int ret = kvm_set_one_reg(cs, RISCV_CSR_REG(env, csr), ®); \ + if (ret) { \ + return ret; \ + } \ + } while (0) + static int kvm_riscv_get_regs_core(CPUState *cs) { int ret = 0; @@ -99,6 +107,31 @@ static int kvm_riscv_get_regs_core(CPUState *cs) return ret; } +static int kvm_riscv_put_regs_core(CPUState *cs) +{ + int ret = 0; + int i; + target_ulong reg; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + reg = env->pc; + ret = kvm_set_one_reg(cs, RISCV_CORE_REG(env, regs.pc), ®); + if (ret) { + return ret; + } + + for (i = 1; i < 32; i++) { + uint64_t id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CORE, i); + reg = env->gpr[i]; + ret = kvm_set_one_reg(cs, id, ®); + if (ret) { + return ret; + } + } + + return ret; +} + static int kvm_riscv_get_regs_csr(CPUState *cs) { int ret = 0; @@ -116,6 +149,24 @@ static int kvm_riscv_get_regs_csr(CPUState *cs) return ret; } +static int kvm_riscv_put_regs_csr(CPUState *cs) +{ + int ret = 0; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + KVM_RISCV_SET_CSR(cs, env, sstatus, env->mstatus); + KVM_RISCV_SET_CSR(cs, env, sie, env->mie); + KVM_RISCV_SET_CSR(cs, env, stvec, env->stvec); + KVM_RISCV_SET_CSR(cs, env, sscratch, env->sscratch); + KVM_RISCV_SET_CSR(cs, env, sepc, env->sepc); + KVM_RISCV_SET_CSR(cs, env, scause, env->scause); + KVM_RISCV_SET_CSR(cs, env, stval, env->stval); + KVM_RISCV_SET_CSR(cs, env, sip, env->mip); + KVM_RISCV_SET_CSR(cs, env, satp, env->satp); + + return ret; +} + static int kvm_riscv_get_regs_fp(CPUState *cs) { int ret = 0; @@ -149,6 +200,40 @@ static int kvm_riscv_get_regs_fp(CPUState *cs) return ret; } +static int kvm_riscv_put_regs_fp(CPUState *cs) +{ + int ret = 0; + int i; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + if (riscv_has_ext(env, RVD)) { + uint64_t reg; + for (i = 0; i < 32; i++) { + reg = env->fpr[i]; + ret = kvm_set_one_reg(cs, RISCV_FP_D_REG(env, i), ®); + if (ret) { + return ret; + } + } + return ret; + } + + if (riscv_has_ext(env, RVF)) { + uint32_t reg; + for (i = 0; i < 32; i++) { + reg = env->fpr[i]; + ret = kvm_set_one_reg(cs, RISCV_FP_F_REG(env, i), ®); + if (ret) { + return ret; + } + } + return ret; + } + + return ret; +} + + const KVMCapabilityInfo kvm_arch_required_capabilities[] = { KVM_CAP_LAST_INFO }; @@ -177,7 +262,24 @@ int kvm_arch_get_registers(CPUState *cs) int kvm_arch_put_registers(CPUState *cs, int level) { - return 0; + int ret = 0; + + ret = kvm_riscv_put_regs_core(cs); + if (ret) { + return ret; + } + + ret = kvm_riscv_put_regs_csr(cs); + if (ret) { + return ret; + } + + ret = kvm_riscv_put_regs_fp(cs); + if (ret) { + return ret; + } + + return ret; } int kvm_arch_release_virq_post(int virq) From patchwork Fri Jan 21 05:57:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719311 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4A7F3C433F5 for ; Fri, 21 Jan 2022 06:20:31 +0000 (UTC) Received: from localhost ([::1]:44060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnHi-0001l1-2c for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:20:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49554) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxO-0006np-JV for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:39 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxI-00043z-Af for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744764; x=1674280764; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NlFV1/sewIf+VX0ZUdCuYSEhXNMpAL4yWWoqK3JLJ3g=; b=cPcpxNnc+c1hv/oLpzhgw/Bn4HF16nTeFewJlFB0VSf/evbyctYUCspa jMD1RQN7/J9zO1fx6yJviqlccsNVLmc+I8IFKI6D9TFmH6bHi8RlU70WP SVWcoXjiKEY7v8pEaXljQOfIioIvskReY1DHH7AoE3J34uPMUt7vRgQ2e VWA3MYKzWYy3D+nSN2gukgBavYJ3powLuxpL+AsLMgtGretYnsE8vSX6m DdOAaa8zQttjxTK71Ni1T+RegeaTk34MKFIvqjmvhohfOdqCcPiSO6m8y wi5eTUsAPnAYL1liharJ2WWeOQ3iXZPAFtfjf28V0UkmUXP9n886Iep6S w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976516" 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; 21 Jan 2022 13:59:22 +0800 IronPort-SDR: RT9j5KlhSS5gfTkkZjhEgpKa6iwIXhdmCx5IdyP+eGKSM0g3THkpan+z0wtxzZbmZfgq0j7lbZ 366JJHHATAWCAfp2DETeVBSxFiCNUitaiqRzRqrmp3CVmtCj6ME6f73MsV+0LsVBgYADaELnqP vIHYgGYp+kyiRxGwZ4pDgbZpS693wRMrpCjAZ72Oq3HLp7yUbQszQtz6vCdlrOqFP9OroHfmYW 6PqjF3/vzsJkTyep+rXfGSKPcDcYejDI3LT4eHRS37am3915ssCpcY/b5ihxBSWMrnIInlBBLk HG6JSLSPgURHyPyOhVeXuGqS Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:33 -0800 IronPort-SDR: y8Urova611gN/xnfx+moZJas0mBgQEnu8PDvo1qL6K4cZYqlh0XQQNGcXBq7iAAFaJHv1qphc+ NTbRkHOIgf/ACAgCxKUL2f687LXjWY/lioWxneXXXfzqeHyn6xJHXC4ITb+WfYh6L3h1ionYo/ cRg9LC8oelrwwUMTdPBD2H7dBzIMwtnZbWPnYAvyDqsRw3eSjMZs5kAnnJeS23q0+ZUDFYaTND 70J9LNFHmeO2EeozCYU8U772AXtbCilt9UCIyk8jFb3OGS8M7hteFFhJzMkFfdUxuxXAQN2raY 408= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:22 -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 4Jg7xQ3m9lz1SHwl for ; Thu, 20 Jan 2022 21:59:22 -0800 (PST) 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=1642744761; x=1645336762; bh=NlFV1/sewIf+VX0ZUd CuYSEhXNMpAL4yWWoqK3JLJ3g=; b=MYlGFa6h5iri/Dy8bN7NZdkAGYe6QLP0xM qy+b8OVVbV6v/4RWKzL7gQW+YB0aNbt0qxgE17XtE68z2/DxnyxHxO0X2a0XTLt7 sLJQGuR/mCLNhDhO3RAhJwnJhR8UV7CaZ1mSfgpTAfUr+jG0mLh1/RH4uvaQmuJn 5Pa6OmwveLnJW0CGpZ3NXOJpBQLcuWUj9Q2hXSUiY7IMsU+ZMhiBLFfjm9Xv6EgE yi9Itw4zrfZ6CCrYjpc2VTHPhV3YJJcDRBINAuvq7lfhoRCxITrI6RlFstM9kr52 MTrsfMQwQhIfpVvGGOaYS7QEavtAqW/Y1HEBtqSfIgDHC8c2zECQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 BlsRKMlxF9kO for ; Thu, 20 Jan 2022 21:59:21 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xJ6FHfz1RvlN; Thu, 20 Jan 2022 21:59:16 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 09/61] target/riscv: Support start kernel directly by KVM Date: Fri, 21 Jan 2022 15:57:38 +1000 Message-Id: <20220121055830.3164408-10-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Get kernel and fdt start address in virt.c, and pass them to KVM when cpu reset. Add kvm_riscv.h to place riscv specific interface. In addition, PLIC is created without M-mode PLIC contexts when KVM is enabled. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-7-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- include/hw/riscv/boot.h | 1 + target/riscv/cpu.h | 3 ++ target/riscv/kvm_riscv.h | 24 ++++++++++++ hw/intc/sifive_plic.c | 20 +++++++--- hw/riscv/boot.c | 16 +++++++- hw/riscv/virt.c | 83 ++++++++++++++++++++++++++++------------ target/riscv/cpu.c | 8 ++++ target/riscv/kvm-stub.c | 25 ++++++++++++ target/riscv/kvm.c | 14 +++++++ target/riscv/meson.build | 2 +- 10 files changed, 164 insertions(+), 32 deletions(-) create mode 100644 target/riscv/kvm_riscv.h create mode 100644 target/riscv/kvm-stub.c diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h index baff11dd8a..5834c234aa 100644 --- a/include/hw/riscv/boot.h +++ b/include/hw/riscv/boot.h @@ -58,5 +58,6 @@ void riscv_rom_copy_firmware_info(MachineState *machine, hwaddr rom_base, hwaddr rom_size, uint32_t reset_vec_size, uint64_t kernel_entry); +void riscv_setup_direct_kernel(hwaddr kernel_addr, hwaddr fdt_addr); #endif /* RISCV_BOOT_H */ diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 4d63086765..8fa6fdcd77 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -269,6 +269,9 @@ struct CPURISCVState { /* Fields from here on are preserved across CPU reset. */ QEMUTimer *timer; /* Internal timer */ + + hwaddr kernel_addr; + hwaddr fdt_addr; }; OBJECT_DECLARE_TYPE(RISCVCPU, RISCVCPUClass, diff --git a/target/riscv/kvm_riscv.h b/target/riscv/kvm_riscv.h new file mode 100644 index 0000000000..f38c82bf59 --- /dev/null +++ b/target/riscv/kvm_riscv.h @@ -0,0 +1,24 @@ +/* + * QEMU KVM support -- RISC-V specific functions. + * + * Copyright (c) 2020 Huawei Technologies Co., Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef QEMU_KVM_RISCV_H +#define QEMU_KVM_RISCV_H + +void kvm_riscv_reset_vcpu(RISCVCPU *cpu); + +#endif diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index 746c0f0343..eebbcf33d4 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -30,6 +30,7 @@ #include "target/riscv/cpu.h" #include "migration/vmstate.h" #include "hw/irq.h" +#include "sysemu/kvm.h" static bool addr_between(uint32_t addr, uint32_t base, uint32_t num) { @@ -430,7 +431,8 @@ DeviceState *sifive_plic_create(hwaddr addr, char *hart_config, uint32_t context_stride, uint32_t aperture_size) { DeviceState *dev = qdev_new(TYPE_SIFIVE_PLIC); - int i; + int i, j = 0; + SiFivePLICState *plic; assert(enable_stride == (enable_stride & -enable_stride)); assert(context_stride == (context_stride & -context_stride)); @@ -448,13 +450,21 @@ DeviceState *sifive_plic_create(hwaddr addr, char *hart_config, sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); + plic = SIFIVE_PLIC(dev); for (i = 0; i < num_harts; i++) { CPUState *cpu = qemu_get_cpu(hartid_base + i); - qdev_connect_gpio_out(dev, i, - qdev_get_gpio_in(DEVICE(cpu), IRQ_S_EXT)); - qdev_connect_gpio_out(dev, num_harts + i, - qdev_get_gpio_in(DEVICE(cpu), IRQ_M_EXT)); + if (plic->addr_config[j].mode == PLICMode_M) { + j++; + qdev_connect_gpio_out(dev, num_harts + i, + qdev_get_gpio_in(DEVICE(cpu), IRQ_M_EXT)); + } + + if (plic->addr_config[j].mode == PLICMode_S) { + j++; + qdev_connect_gpio_out(dev, i, + qdev_get_gpio_in(DEVICE(cpu), IRQ_S_EXT)); + } } return dev; diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index f67264374e..cae74fcbcd 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -30,6 +30,7 @@ #include "elf.h" #include "sysemu/device_tree.h" #include "sysemu/qtest.h" +#include "sysemu/kvm.h" #include @@ -51,7 +52,9 @@ char *riscv_plic_hart_config_string(int hart_count) CPUState *cs = qemu_get_cpu(i); CPURISCVState *env = &RISCV_CPU(cs)->env; - if (riscv_has_ext(env, RVS)) { + if (kvm_enabled()) { + vals[i] = "S"; + } else if (riscv_has_ext(env, RVS)) { vals[i] = "MS"; } else { vals[i] = "M"; @@ -324,3 +327,14 @@ void riscv_setup_rom_reset_vec(MachineState *machine, RISCVHartArrayState *harts return; } + +void riscv_setup_direct_kernel(hwaddr kernel_addr, hwaddr fdt_addr) +{ + CPUState *cs; + + for (cs = first_cpu; cs; cs = CPU_NEXT(cs)) { + RISCVCPU *riscv_cpu = RISCV_CPU(cs); + riscv_cpu->env.kernel_addr = kernel_addr; + riscv_cpu->env.fdt_addr = fdt_addr; + } +} diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 3af074148e..2643c8bc37 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -38,6 +38,7 @@ #include "chardev/char.h" #include "sysemu/device_tree.h" #include "sysemu/sysemu.h" +#include "sysemu/kvm.h" #include "hw/pci/pci.h" #include "hw/pci-host/gpex.h" #include "hw/display/ramfb.h" @@ -372,13 +373,22 @@ static void create_fdt_socket_plic(RISCVVirtState *s, "sifive,plic-1.0.0", "riscv,plic0" }; - plic_cells = g_new0(uint32_t, s->soc[socket].num_harts * 4); + if (kvm_enabled()) { + plic_cells = g_new0(uint32_t, s->soc[socket].num_harts * 2); + } else { + plic_cells = g_new0(uint32_t, s->soc[socket].num_harts * 4); + } for (cpu = 0; cpu < s->soc[socket].num_harts; cpu++) { - plic_cells[cpu * 4 + 0] = cpu_to_be32(intc_phandles[cpu]); - plic_cells[cpu * 4 + 1] = cpu_to_be32(IRQ_M_EXT); - plic_cells[cpu * 4 + 2] = cpu_to_be32(intc_phandles[cpu]); - plic_cells[cpu * 4 + 3] = cpu_to_be32(IRQ_S_EXT); + if (kvm_enabled()) { + plic_cells[cpu * 2 + 0] = cpu_to_be32(intc_phandles[cpu]); + plic_cells[cpu * 2 + 1] = cpu_to_be32(IRQ_S_EXT); + } else { + plic_cells[cpu * 4 + 0] = cpu_to_be32(intc_phandles[cpu]); + plic_cells[cpu * 4 + 1] = cpu_to_be32(IRQ_M_EXT); + plic_cells[cpu * 4 + 2] = cpu_to_be32(intc_phandles[cpu]); + plic_cells[cpu * 4 + 3] = cpu_to_be32(IRQ_S_EXT); + } } plic_phandles[socket] = (*phandle)++; @@ -436,10 +446,12 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, create_fdt_socket_memory(s, memmap, socket); - if (s->have_aclint) { - create_fdt_socket_aclint(s, memmap, socket, intc_phandles); - } else { - create_fdt_socket_clint(s, memmap, socket, intc_phandles); + if (!kvm_enabled()) { + if (s->have_aclint) { + create_fdt_socket_aclint(s, memmap, socket, intc_phandles); + } else { + create_fdt_socket_clint(s, memmap, socket, intc_phandles); + } } create_fdt_socket_plic(s, memmap, socket, phandle, @@ -801,23 +813,25 @@ static void virt_machine_init(MachineState *machine) hart_count, &error_abort); sysbus_realize(SYS_BUS_DEVICE(&s->soc[i]), &error_abort); - /* Per-socket CLINT */ - riscv_aclint_swi_create( - memmap[VIRT_CLINT].base + i * memmap[VIRT_CLINT].size, - base_hartid, hart_count, false); - riscv_aclint_mtimer_create( - memmap[VIRT_CLINT].base + i * memmap[VIRT_CLINT].size + - RISCV_ACLINT_SWI_SIZE, - RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, - RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, - RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); - - /* Per-socket ACLINT SSWI */ - if (s->have_aclint) { + if (!kvm_enabled()) { + /* Per-socket CLINT */ riscv_aclint_swi_create( - memmap[VIRT_ACLINT_SSWI].base + - i * memmap[VIRT_ACLINT_SSWI].size, - base_hartid, hart_count, true); + memmap[VIRT_CLINT].base + i * memmap[VIRT_CLINT].size, + base_hartid, hart_count, false); + riscv_aclint_mtimer_create( + memmap[VIRT_CLINT].base + i * memmap[VIRT_CLINT].size + + RISCV_ACLINT_SWI_SIZE, + RISCV_ACLINT_DEFAULT_MTIMER_SIZE, base_hartid, hart_count, + RISCV_ACLINT_DEFAULT_MTIMECMP, RISCV_ACLINT_DEFAULT_MTIME, + RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, true); + + /* Per-socket ACLINT SSWI */ + if (s->have_aclint) { + riscv_aclint_swi_create( + memmap[VIRT_ACLINT_SSWI].base + + i * memmap[VIRT_ACLINT_SSWI].size, + base_hartid, hart_count, true); + } } /* Per-socket PLIC hart topology configuration string */ @@ -884,6 +898,16 @@ static void virt_machine_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[VIRT_MROM].base, mask_rom); + /* + * Only direct boot kernel is currently supported for KVM VM, + * so the "-bios" parameter is ignored and treated like "-bios none" + * when KVM is enabled. + */ + if (kvm_enabled()) { + g_free(machine->firmware); + machine->firmware = g_strdup("none"); + } + if (riscv_is_32bit(&s->soc[0])) { firmware_end_addr = riscv_find_and_load_firmware(machine, RISCV32_BIOS_BIN, start_addr, NULL); @@ -941,6 +965,15 @@ static void virt_machine_init(MachineState *machine) virt_memmap[VIRT_MROM].size, kernel_entry, fdt_load_addr, machine->fdt); + /* + * Only direct boot kernel is currently supported for KVM VM, + * So here setup kernel start address and fdt address. + * TODO:Support firmware loading and integrate to TCG start + */ + if (kvm_enabled()) { + riscv_setup_direct_kernel(kernel_entry, fdt_load_addr); + } + /* SiFive Test MMIO device */ sifive_test_create(memmap[VIRT_TEST].base); diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 9bc25d3055..a6922dde05 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -29,6 +29,8 @@ #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "fpu/softfloat-helpers.h" +#include "sysemu/kvm.h" +#include "kvm_riscv.h" /* RISC-V CPU definitions */ @@ -402,6 +404,12 @@ static void riscv_cpu_reset(DeviceState *dev) cs->exception_index = RISCV_EXCP_NONE; env->load_res = -1; set_default_nan_mode(1, &env->fp_status); + +#ifndef CONFIG_USER_ONLY + if (kvm_enabled()) { + kvm_riscv_reset_vcpu(cpu); + } +#endif } static void riscv_cpu_disas_set_info(CPUState *s, disassemble_info *info) diff --git a/target/riscv/kvm-stub.c b/target/riscv/kvm-stub.c new file mode 100644 index 0000000000..39b96fe3f4 --- /dev/null +++ b/target/riscv/kvm-stub.c @@ -0,0 +1,25 @@ +/* + * QEMU KVM RISC-V specific function stubs + * + * Copyright (c) 2020 Huawei Technologies Co., Ltd + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "kvm_riscv.h" + +void kvm_riscv_reset_vcpu(RISCVCPU *cpu) +{ + abort(); +} diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index dbaff53bf2..d5c6a9d41a 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -37,6 +37,7 @@ #include "hw/irq.h" #include "qemu/log.h" #include "hw/loader.h" +#include "kvm_riscv.h" static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, uint64_t idx) @@ -371,6 +372,19 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) return 0; } +void kvm_riscv_reset_vcpu(RISCVCPU *cpu) +{ + CPURISCVState *env = &cpu->env; + + if (!kvm_enabled()) { + return; + } + env->pc = cpu->env.kernel_addr; + env->gpr[10] = kvm_arch_vcpu_id(CPU(cpu)); /* a0 */ + env->gpr[11] = cpu->env.fdt_addr; /* a1 */ + env->satp = 0; +} + bool kvm_arch_cpu_check_are_resettable(void) { return true; diff --git a/target/riscv/meson.build b/target/riscv/meson.build index 95340b44aa..a3997ed580 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -20,7 +20,7 @@ riscv_ss.add(files( 'translate.c', 'm128_helper.c' )) -riscv_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c')) +riscv_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c'), if_false: files('kvm-stub.c')) riscv_softmmu_ss = ss.source_set() riscv_softmmu_ss.add(files( From patchwork Fri Jan 21 05:57:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719337 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5FCBDC433EF for ; Fri, 21 Jan 2022 06:36:52 +0000 (UTC) Received: from localhost ([::1]:41948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnXV-0002qF-Lp for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:36:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49634) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxa-0006oM-So for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:46 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxQ-00040G-HS for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744772; x=1674280772; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jcDgzCR1d4N0XkvAublXv0+ezCSv19gF+QFUYEZ8Mc0=; b=cMvYXm7dI4fzJZG+62OwTvWAz+vFslxmt5uW9K7ZSD0OLU0dLA243W3h 9HOHUGojnucVF7jBuHidY/QmjC9UT8EuwYu09ieeE3N4gOQQZ8i7/t1gy XwOgGT6kH+grbqu6P86162y8h7e8WtOASpFLZEN0AMb1pPE5rHeQyGTC7 PMJrQtSYh36i3L3M0AFPBcut2Jjb7AYAFOxUX+OYZQF4JVOohBinKn+Eq y8h+Wjjut82qyZ+VZmtyJPk73pkFck6Mzq/J4t0+eSSTluF5X/qUiNlv0 yhJ4j7kvKyADWJWJufx3Xe8wnDDEsWRJ3RQQCUpARDQrn0ADcUzphEpiE A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976519" 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; 21 Jan 2022 13:59:26 +0800 IronPort-SDR: WfFqWBXePpaYov5xMXrk6SgdsnQYHY50NPWnJwmUFXP2S1sThBiZUY3NCGfVgKv+w5AiUVXLTW EJcmVUIWOpAEeiMWDJLYP3BU74ELS3gXjmoVvX3MFJAHKswHXNjFHtNAhSHs19gt6YCDwPmFpk 09YvAY7LhT3OLQcuvKyib4oF4XpVWJMADnDAPgEkf6C0wynj2QRlaNwFW+WdfusjEzx8oCMIZ5 Laijl2lM48MOLy7WELS036NcgxDkcQrv3dh72gGmcCwb8uBZNpriK3f7x7OgHT92VOZUlvcRmH rUMhApxP69CpYC11RsjWTw4f Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:37 -0800 IronPort-SDR: s6O3ilBqjuGE/BYsDc1w/37pS040G3WdX7zl92dMcGVW9CqhjAGkMQtNA5UjLFQmswUrAk4CaP WxUSEp4uWdc0IXROjfq0Wk+SHuVSBscjoiEs9Ph/DYlY2OtHQkzK6lzKH2C6Pco0ugDe/K4+dR zzCMLOCdGVkjSlIVJzGjBW5CSlnKAsoydp05aah/q7UjwgyPqsio2458VnlvZkg+gepCoI0tHH YJBTD+mswG6idNQ5MIzsVOOVKJZm40db5u7fvCFQNX/Mxl/BtW7TT3dTk7/aFJhuQw6H/gNs+z AgA= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:26 -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 4Jg7xV16Qnz1SVp1 for ; Thu, 20 Jan 2022 21:59:26 -0800 (PST) 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=1642744765; x=1645336766; bh=jcDgzCR1d4N0XkvAub lXv0+ezCSv19gF+QFUYEZ8Mc0=; b=LZ6oKBlyXbvblgQrVjrA91JhSEZ+jh+V8q mP76BHMF4IPKKMmMzuCLcARCX8H5S9PRmxnI+CCbs9323gNSsuiB5HUjHbrjl5uX K8Ezy51yCdezyrX+iIU1OIQMigW0bXbUikgjB0ivpw+t5hft0iLgxxr7uAu+k5z5 f/dPBJuxuh73t1R/JgnDTsTlkJA9vwkMHDKtabYNEiD4n/15y2ynSol7kaOQcaiG ZlYNrLi/LaeECAORW4VLtitvHMrhwV+L9Uyow/t3BkLN2+kLCRbzJV78EyKpIXe7 gO0NTSpkm3FaY63lzyWdpQfi3Ip3+8yk4Eg919LaSN9S7RkMoKng== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 EZN9cGNukbSW for ; Thu, 20 Jan 2022 21:59:25 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xQ1CN7z1Rwrw; Thu, 20 Jan 2022 21:59:21 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 10/61] target/riscv: Support setting external interrupt by KVM Date: Fri, 21 Jan 2022 15:57:39 +1000 Message-Id: <20220121055830.3164408-11-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang When KVM is enabled, set the S-mode external interrupt through kvm_riscv_set_irq function. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-8-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm_riscv.h | 1 + target/riscv/cpu.c | 6 +++++- target/riscv/kvm-stub.c | 5 +++++ target/riscv/kvm.c | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/target/riscv/kvm_riscv.h b/target/riscv/kvm_riscv.h index f38c82bf59..ed281bdce0 100644 --- a/target/riscv/kvm_riscv.h +++ b/target/riscv/kvm_riscv.h @@ -20,5 +20,6 @@ #define QEMU_KVM_RISCV_H void kvm_riscv_reset_vcpu(RISCVCPU *cpu); +void kvm_riscv_set_irq(RISCVCPU *cpu, int irq, int level); #endif diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index a6922dde05..53b0524830 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -630,7 +630,11 @@ static void riscv_cpu_set_irq(void *opaque, int irq, int level) case IRQ_S_EXT: case IRQ_VS_EXT: case IRQ_M_EXT: - riscv_cpu_update_mip(cpu, 1 << irq, BOOL_TO_MASK(level)); + if (kvm_enabled()) { + kvm_riscv_set_irq(cpu, irq, level); + } else { + riscv_cpu_update_mip(cpu, 1 << irq, BOOL_TO_MASK(level)); + } break; default: g_assert_not_reached(); diff --git a/target/riscv/kvm-stub.c b/target/riscv/kvm-stub.c index 39b96fe3f4..4e8fc31a21 100644 --- a/target/riscv/kvm-stub.c +++ b/target/riscv/kvm-stub.c @@ -23,3 +23,8 @@ void kvm_riscv_reset_vcpu(RISCVCPU *cpu) { abort(); } + +void kvm_riscv_set_irq(RISCVCPU *cpu, int irq, int level) +{ + abort(); +} diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index d5c6a9d41a..0ba64795d5 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -385,6 +385,23 @@ void kvm_riscv_reset_vcpu(RISCVCPU *cpu) env->satp = 0; } +void kvm_riscv_set_irq(RISCVCPU *cpu, int irq, int level) +{ + int ret; + unsigned virq = level ? KVM_INTERRUPT_SET : KVM_INTERRUPT_UNSET; + + if (irq != IRQ_S_EXT) { + perror("kvm riscv set irq != IRQ_S_EXT\n"); + abort(); + } + + ret = kvm_vcpu_ioctl(CPU(cpu), KVM_INTERRUPT, &virq); + if (ret < 0) { + perror("Set irq failed"); + abort(); + } +} + bool kvm_arch_cpu_check_are_resettable(void) { return true; From patchwork Fri Jan 21 05:57:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719322 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 68E7BC433F5 for ; Fri, 21 Jan 2022 06:31:55 +0000 (UTC) Received: from localhost ([::1]:33228 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnSk-0005Gm-BY for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:31:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxa-0006oN-Tn for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:46 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxR-00043z-SD for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744773; x=1674280773; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t8qL4vn7jVFxlFStPbaok4siaiDlV6DUKqRng2liUmw=; b=cwuzqOOFcug8gLcuhidse71cdSa+pojEz+gb/6PVQbrfZjKkxFfvyAa9 2dea+vr46m9TWZUgBB9Wa/OKAnkdlA8oaRbQuZaKoPBuApd5DTU7RFzGP 0YzvQe/DQayeirnU7JK7eNGYL+HAgqVSXbPj8XH7WRtWYNBLe1uAOmhS9 elvrBpY6B1WOXftd4hyBD+f/3QZkIWo23zIBo0xcv54F5yDURffgaUSyr FgR7JQLBCYeYX/uZ/QR3vidPiB8GBfX7+Dox3S5pL5X7w1WlxtPJ4VcAz PjZ93KJ7El725oh+9qUEbVxttFw7jmo+Z/2sucYFK95fCik/9GItX7IpK Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976521" 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; 21 Jan 2022 13:59:31 +0800 IronPort-SDR: SgL63+Wl3oWQgS2ulhHBt08Dh5QxxE2ZaBqqz8Yb1JMea/xZuwyCR53nN4f5a4WjHe8gWVRaSD nF0t1LDAWm3SuhL9zuXv4UmOMjl9a2+bXeg7dF6OCGK2sCD21nzxR1QUaUe4ATm8SYRYGgUkI/ FTGOwZgsIGJHEOb+znbQs0zuo5GbadoAroblLOgmqmj9CYVgO0jl/yI3LdYg2Nk6rywEzUfbOh Td2EtsSA8P0RgwQ6LINMXlAl27KErhMdsRPWG80JdsauwGEYXeX6jXyeIr/SrGrNElzYMe/2V4 leGJ42IrwhGLYVULC01dfDso Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:42 -0800 IronPort-SDR: RPk5+JulY35LbC1Dj8Sth/qAoioZ/lpMCk5M1Wui9bcgfablZ1CPSUTiQF5n/H9oEFmtkTIVFs 0EElP7Ef1XgFtAMzdV3BoRRQ7fIQVYxitELsXXrAamG+Tc12IDvSHOMFEihXMF3IdwbE3tHk0a nQ6Z7h0gPv9WtB8b5gnEdi76+JYXY/uOVJMUr8JmQGlpgIZCbAGWZBF80O0MMAHMmfF5nJbbUu AOHnUYgx2UxjgeoRoDl3QWWfxQ+Xndq6PrscZ442RaKiEuWkgPwZvHA5oCM1M4sRCiu7igEnD1 K4c= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:31 -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 4Jg7xb0D96z1SHwl for ; Thu, 20 Jan 2022 21:59:31 -0800 (PST) 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=1642744770; x=1645336771; bh=t8qL4vn7jVFxlFStPb aok4siaiDlV6DUKqRng2liUmw=; b=fyxskvV8mNku02rhvPKffGytCt+b5V04HF swZH9XFsCobC5+e4z8nMa0LeJs1ZQ9JHi5AbtGDMajurF7f4R9DIxjcmTXJv+fTi dRq136EePtSH1bic9W3SjoVRh2wkkFwuGk4eS7tyT5PSG3ABFTaF+96bLYJmkODi C/f+sMm/01PzWJs4TkZTM7aKKS/u4er7X/X34IAsZt3eBJ+RBYrqKvejhlsgf85y NDS8RZbmmOPv1CwJYZVVyOxJ1Ym/q6LUDWrNTHvEJPlKM7wx8jqI8OZJio3oF3rK xCN3wNx3KmEeuoD1wPvtweYBtKIAb2DkFOp8vTvSSWTF8pHLkv3w== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 Hd3i-ZAKFg0n for ; Thu, 20 Jan 2022 21:59:30 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xV3hNvz1RvlN; Thu, 20 Jan 2022 21:59:26 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Anup Patel , Alistair Francis Subject: [PULL 11/61] target/riscv: Handle KVM_EXIT_RISCV_SBI exit Date: Fri, 21 Jan 2022 15:57:40 +1000 Message-Id: <20220121055830.3164408-12-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Use char-fe to handle console sbi call, which implement early console io while apply 'earlycon=sbi' into kernel parameters. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Anup Patel Reviewed-by: Alistair Francis Message-id: 20220112081329.1835-9-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/sbi_ecall_interface.h | 72 ++++++++++++++++++++++++++++++ target/riscv/kvm.c | 42 ++++++++++++++++- 2 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 target/riscv/sbi_ecall_interface.h diff --git a/target/riscv/sbi_ecall_interface.h b/target/riscv/sbi_ecall_interface.h new file mode 100644 index 0000000000..fb1a3fa8f2 --- /dev/null +++ b/target/riscv/sbi_ecall_interface.h @@ -0,0 +1,72 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel + */ + +#ifndef __SBI_ECALL_INTERFACE_H__ +#define __SBI_ECALL_INTERFACE_H__ + +/* clang-format off */ + +/* SBI Extension IDs */ +#define SBI_EXT_0_1_SET_TIMER 0x0 +#define SBI_EXT_0_1_CONSOLE_PUTCHAR 0x1 +#define SBI_EXT_0_1_CONSOLE_GETCHAR 0x2 +#define SBI_EXT_0_1_CLEAR_IPI 0x3 +#define SBI_EXT_0_1_SEND_IPI 0x4 +#define SBI_EXT_0_1_REMOTE_FENCE_I 0x5 +#define SBI_EXT_0_1_REMOTE_SFENCE_VMA 0x6 +#define SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID 0x7 +#define SBI_EXT_0_1_SHUTDOWN 0x8 +#define SBI_EXT_BASE 0x10 +#define SBI_EXT_TIME 0x54494D45 +#define SBI_EXT_IPI 0x735049 +#define SBI_EXT_RFENCE 0x52464E43 +#define SBI_EXT_HSM 0x48534D + +/* SBI function IDs for BASE extension*/ +#define SBI_EXT_BASE_GET_SPEC_VERSION 0x0 +#define SBI_EXT_BASE_GET_IMP_ID 0x1 +#define SBI_EXT_BASE_GET_IMP_VERSION 0x2 +#define SBI_EXT_BASE_PROBE_EXT 0x3 +#define SBI_EXT_BASE_GET_MVENDORID 0x4 +#define SBI_EXT_BASE_GET_MARCHID 0x5 +#define SBI_EXT_BASE_GET_MIMPID 0x6 + +/* SBI function IDs for TIME extension*/ +#define SBI_EXT_TIME_SET_TIMER 0x0 + +/* SBI function IDs for IPI extension*/ +#define SBI_EXT_IPI_SEND_IPI 0x0 + +/* SBI function IDs for RFENCE extension*/ +#define SBI_EXT_RFENCE_REMOTE_FENCE_I 0x0 +#define SBI_EXT_RFENCE_REMOTE_SFENCE_VMA 0x1 +#define SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID 0x2 +#define SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA 0x3 +#define SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA_VMID 0x4 +#define SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA 0x5 +#define SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID 0x6 + +/* SBI function IDs for HSM extension */ +#define SBI_EXT_HSM_HART_START 0x0 +#define SBI_EXT_HSM_HART_STOP 0x1 +#define SBI_EXT_HSM_HART_GET_STATUS 0x2 + +#define SBI_HSM_HART_STATUS_STARTED 0x0 +#define SBI_HSM_HART_STATUS_STOPPED 0x1 +#define SBI_HSM_HART_STATUS_START_PENDING 0x2 +#define SBI_HSM_HART_STATUS_STOP_PENDING 0x3 + +#define SBI_SPEC_VERSION_MAJOR_OFFSET 24 +#define SBI_SPEC_VERSION_MAJOR_MASK 0x7f +#define SBI_SPEC_VERSION_MINOR_MASK 0xffffff +#define SBI_EXT_VENDOR_START 0x09000000 +#define SBI_EXT_VENDOR_END 0x09FFFFFF +/* clang-format on */ + +#endif diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 0ba64795d5..e90e2a6709 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -38,6 +38,8 @@ #include "qemu/log.h" #include "hw/loader.h" #include "kvm_riscv.h" +#include "sbi_ecall_interface.h" +#include "chardev/char-fe.h" static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, uint64_t idx) @@ -367,9 +369,47 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs) return true; } +static int kvm_riscv_handle_sbi(CPUState *cs, struct kvm_run *run) +{ + int ret = 0; + unsigned char ch; + switch (run->riscv_sbi.extension_id) { + case SBI_EXT_0_1_CONSOLE_PUTCHAR: + ch = run->riscv_sbi.args[0]; + qemu_chr_fe_write(serial_hd(0)->be, &ch, sizeof(ch)); + break; + case SBI_EXT_0_1_CONSOLE_GETCHAR: + ret = qemu_chr_fe_read_all(serial_hd(0)->be, &ch, sizeof(ch)); + if (ret == sizeof(ch)) { + run->riscv_sbi.args[0] = ch; + } else { + run->riscv_sbi.args[0] = -1; + } + break; + default: + qemu_log_mask(LOG_UNIMP, + "%s: un-handled SBI EXIT, specific reasons is %lu\n", + __func__, run->riscv_sbi.extension_id); + ret = -1; + break; + } + return ret; +} + int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) { - return 0; + int ret = 0; + switch (run->exit_reason) { + case KVM_EXIT_RISCV_SBI: + ret = kvm_riscv_handle_sbi(cs, run); + break; + default: + qemu_log_mask(LOG_UNIMP, "%s: un-handled exit reason %d\n", + __func__, run->exit_reason); + ret = -1; + break; + } + return ret; } void kvm_riscv_reset_vcpu(RISCVCPU *cpu) From patchwork Fri Jan 21 05:57:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719318 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AAC6EC433F5 for ; Fri, 21 Jan 2022 06:27:18 +0000 (UTC) Received: from localhost ([::1]:52710 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnOH-0007pM-NJ for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:27:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49654) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxa-0006oO-Su for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:46 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxW-00043A-9Q for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744778; x=1674280778; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=owKr7Wfv1v1IxDroR4c3qkqKxV/+rAIBnjIqFvJTHHM=; b=RcwQ34GS/62rRVd3sGpIdnCoOrJ6YFRx5fCGudN2tTVut1HDCLbKb8Bu ZYmFGLzxQqbxKrRFN3n4e6t5Dv9enYhkZlN7kbY17UzovLKaCkUO2Wtn/ jPp+p9Hxvwboivwc0oLRDUgXYd+f6K7SOSrRkIQk8wqts1cyD7IGywGxJ SqQVT2+hINJ9ZzWicbgNRFDGk+C++PRuuPXKFYE5gmko0bP4Ghgnsd24I 4lhv89lFsvz6cQF9cJwFww9dgMuyjmMcAdyGHSShIVJTQ8PA/aeGWAvAK r18jY2aIbJrPV4+Hnw4RtwdRYlELM2eD2t8AJROZpPoNetIiipyIKAlug Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976525" 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; 21 Jan 2022 13:59:36 +0800 IronPort-SDR: kD4PjoR3PD4cmYbahjgWHlgbW2MNwUtY5yx63AJrzHCoS+hGR/DTZJVpizx7ZDOt9DiUZpUBuL +g83lJHbNbn/2kbz5MUH7PUC0uRXF+BDCVSTBnNJk7DyEnLz5F74tnXKxViPiGUxBq8cQftrVI /ARdVy0s2oKtEUTjURg+idgwBjpToT1HlZaLjNSoF6xWn8Xttq0r+O8z9X3o0RLKe+1ifzezyR wl/qEEc+5Q7dD+0wPV0VThWw0cxXBt9tOgKPK53Auk4tU05q2sJ6VkRCdyl7frdV4dhoojyszk Cm/ZEBDM4z74+vIfXHLIwQc0 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:47 -0800 IronPort-SDR: y0/vfl9ZRXj9LXHPvJ83qGcWdDQpXg/TcePO0ozXDyDfOLjyqG8r++7vY80/Iu0WEptOR5Hzg+ qnXcOrjTFhWbo8hytN1z4JA3YUO10IXDUofSSumCHIcs3pZW/hSDCJumcrJFRuYSiB7FnTbBUE tdyyTj1G+NPnxLmPfFt9lOm2qN6V/7Xk7e7HeKh44CwuXlsVh1xZmZUKpLukjjfVOE/AF0b9/+ pZTNGlU7Ylpox6WFWznL8tGV3X9C4tnW8teetPJ4N/Bnij7jOUoeIFXMLCXxV561cuta4EI/oC sAE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:36 -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 4Jg7xg6pfpz1SVp2 for ; Thu, 20 Jan 2022 21:59:35 -0800 (PST) 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=1642744775; x=1645336776; bh=owKr7Wfv1v1IxDroR4 c3qkqKxV/+rAIBnjIqFvJTHHM=; b=rHrNZfuN+a4ApBAYA8lefAoWyL6YBgr4AA WoX5/pfXwDcZRcMADS9bx1AxoIeVry1Abds2bgYRqq/cXEpTSKX5JBMqylX2qhOX PhpdSSnbM8BHA351bNyNx5SLZqnMTvtRuVr9lbXQuR11Ma7YVQEuTQvwTbvvvBqN eJbbHfOu0ZClfCVHTxQibE3EgMRyLYo9Zr1evZdZKVkrEt/cEwPnEuTWw0KCdXny LnjZ1aRnM6tG4vzC3tjUwXYu53bgrGx+di3S7qDxqIIYoXHMYMmmUKafcEf5kYPu JUfD1JHECpSrncgcRGz4IaR6RDKd3DAubqvo8zlLsfvgsVgMTOuA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 hy8QWY1A1YY0 for ; Thu, 20 Jan 2022 21:59:35 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xb3w7Xz1RvlN; Thu, 20 Jan 2022 21:59:31 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 12/61] target/riscv: Add host cpu type Date: Fri, 21 Jan 2022 15:57:41 +1000 Message-Id: <20220121055830.3164408-13-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang 'host' type cpu is set isa to RV32 or RV64 simply, more isa info will obtain from KVM in kvm_arch_init_vcpu() Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-10-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/cpu.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 8fa6fdcd77..73ced2116b 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -47,6 +47,7 @@ #define TYPE_RISCV_CPU_SIFIVE_E51 RISCV_CPU_TYPE_NAME("sifive-e51") #define TYPE_RISCV_CPU_SIFIVE_U34 RISCV_CPU_TYPE_NAME("sifive-u34") #define TYPE_RISCV_CPU_SIFIVE_U54 RISCV_CPU_TYPE_NAME("sifive-u54") +#define TYPE_RISCV_CPU_HOST RISCV_CPU_TYPE_NAME("host") #if defined(TARGET_RISCV32) # define TYPE_RISCV_CPU_BASE TYPE_RISCV_CPU_BASE32 diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 53b0524830..32879f1403 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -235,6 +235,18 @@ static void rv32_imafcu_nommu_cpu_init(Object *obj) } #endif +#if defined(CONFIG_KVM) +static void riscv_host_cpu_init(Object *obj) +{ + CPURISCVState *env = &RISCV_CPU(obj)->env; +#if defined(TARGET_RISCV32) + set_misa(env, MXL_RV32, 0); +#elif defined(TARGET_RISCV64) + set_misa(env, MXL_RV64, 0); +#endif +} +#endif + static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) { ObjectClass *oc; @@ -847,6 +859,9 @@ static const TypeInfo riscv_cpu_type_infos[] = { .class_init = riscv_cpu_class_init, }, DEFINE_CPU(TYPE_RISCV_CPU_ANY, riscv_any_cpu_init), +#if defined(CONFIG_KVM) + DEFINE_CPU(TYPE_RISCV_CPU_HOST, riscv_host_cpu_init), +#endif #if defined(TARGET_RISCV32) DEFINE_CPU(TYPE_RISCV_CPU_BASE32, rv32_base_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_IBEX, rv32_ibex_cpu_init), From patchwork Fri Jan 21 05:57:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719345 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3202BC433F5 for ; Fri, 21 Jan 2022 07:02:05 +0000 (UTC) Received: from localhost ([::1]:50828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnvu-0001fH-Jr for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:02:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49672) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxd-0006oc-3B for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:52 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:8964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxZ-00043A-Ry for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744781; x=1674280781; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cmbQ/ORiNcIEjhWxhBGyJulShQ/Q/k1kRzakz3eoAEQ=; b=O/pwq+9jx4mNO2LlmpCRiabCChtK4CvI+6UxoedT+H1xwOWLkAVGFMAb S4u+nixYORd/ZDj+sR1sdGwLn5DojEUX++/6+ivP0zDNYW3fhmmonFpdq W1kK/8ikVVEjN8Px8DMxRhfunXMqE6aLIjM7xios3BRtTEDoY/LmIEhXW TVSv+PGr1bTzl07NDQw1vHeFntYqO2wzFoRt8x0aakc6Pjn+j1MfPxSxz x49j+2UNfpVLjG4O97CZUJXFk6gLXnSbUisEmCFAvUHJln+E2O4sdNxak 8BNM8XF6uZtOXsTW7vg8hVFO6R5TVptgNiB4r+mLVIQhYhpNPR12crcpU Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976529" 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; 21 Jan 2022 13:59:40 +0800 IronPort-SDR: Sgpw0OujWdscDzUFNpncesj0U8/0xLeLZRwSEAQ1XDRQaOTigM216fu8kylxGm2EkF0jsp2/vJ h74QzYc6umF46NqvkTTAg8245W4selIWuHGR/JLkNtoL51u5/uv2p5ZhBtCcPQ+8VKrBGXOju0 oGAqu0kmumLgnnp6EvVFMzUyHV8vNVNcCeyCN+HljjyxBnBabcXsPuN97B10dOKkimzv509ZpA /gPoAn7SxG4sa5bHVOL8C5Fr7Xh5z9k0nqHltPVb9ZuQyLcmnQxdylcnNsVAFVC+Axw3EpvwR5 0xqYvP+zpkCq0Pcd/BXagHdM Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:51 -0800 IronPort-SDR: x65nL4lIPP2/N2Q+OxYL6N1PBBks7gYGtbIHsLNSszdQjQfrYvl1OlxWkH7cdxn4PG2UQ2yNhF 5+1yPmmoMupqlMKYA/In3zj76HoiFx6+dEpRS2jDCyZPartYIpj6borxY6HadhU2j1IuBil5C8 34EQYWAR96K8b6MDe5Uxqz5s4YdOACfeP4cvYKdsik9ZsLu/l9SjAt2jDECcUiJX+2mqFwC/K1 H7BkrUU9Bf5xAP2Fwf+Deb1W+AKk8+a1buH6TCexmDcUai1PFYaZK2UIzjMoKFWL8Qm7cpddws joQ= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:40 -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 4Jg7xm438Cz1SVp1 for ; Thu, 20 Jan 2022 21:59:40 -0800 (PST) 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=1642744779; x=1645336780; bh=cmbQ/ORiNcIEjhWxhB GyJulShQ/Q/k1kRzakz3eoAEQ=; b=S++YpBZm8PQ+UoFVbuhs73NyLxKtBFAkCc N42Po9ZgbiuNMmZ5E+LZqYFp2kCPloDRjlrQQx3jZHtugIrwHQSXOTVQNi8CknHe 6hsSNPZFXfuMB0W8zQB/3KWuO8tqTz/LC7Ii85ASk1i1Qqh9aNzkegYc0qGaj3Mr GW+cMdzzCTL+MDKr+1VDxkKu6PqRvHWpsaIBqw8pggRHc7j4vpjtAjpW48P5ATIQ tyDPL1wqIcRbqbmO1Fy2FrAYnVhNkAlszupZKq4mjaBQxDR0397EZUmBWu4CLoxD H9i0DxFa5fHXk6TNW5BiwjYX6hJiXLkNpt3Vp1OZ8WLFGpfSF8zg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 YTAN_se3yoVs for ; Thu, 20 Jan 2022 21:59:39 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xh2R0Xz1RvlN; Thu, 20 Jan 2022 21:59:35 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Anup Patel , Alistair Francis Subject: [PULL 13/61] target/riscv: Add kvm_riscv_get/put_regs_timer Date: Fri, 21 Jan 2022 15:57:42 +1000 Message-Id: <20220121055830.3164408-14-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Add kvm_riscv_get/put_regs_timer to synchronize virtual time context from KVM. To set register of RISCV_TIMER_REG(state) will occur a error from KVM on kvm_timer_state == 0. It's better to adapt in KVM, but it doesn't matter that adaping in QEMU. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Anup Patel Acked-by: Alistair Francis Message-id: 20220112081329.1835-11-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 7 +++++ target/riscv/kvm.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 73ced2116b..22c94d3c57 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -273,6 +273,13 @@ struct CPURISCVState { hwaddr kernel_addr; hwaddr fdt_addr; + + /* kvm timer */ + bool kvm_timer_dirty; + uint64_t kvm_timer_time; + uint64_t kvm_timer_compare; + uint64_t kvm_timer_state; + uint64_t kvm_timer_frequency; }; OBJECT_DECLARE_TYPE(RISCVCPU, RISCVCPUClass, diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index e90e2a6709..a43d5a2988 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -40,6 +40,7 @@ #include "kvm_riscv.h" #include "sbi_ecall_interface.h" #include "chardev/char-fe.h" +#include "migration/migration.h" static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, uint64_t idx) @@ -65,6 +66,9 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, #define RISCV_CSR_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CSR, \ KVM_REG_RISCV_CSR_REG(name)) +#define RISCV_TIMER_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_TIMER, \ + KVM_REG_RISCV_TIMER_REG(name)) + #define RISCV_FP_F_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_F, idx) #define RISCV_FP_D_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_D, idx) @@ -85,6 +89,22 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, } \ } while (0) +#define KVM_RISCV_GET_TIMER(cs, env, name, reg) \ + do { \ + int ret = kvm_get_one_reg(cs, RISCV_TIMER_REG(env, name), ®); \ + if (ret) { \ + abort(); \ + } \ + } while (0) + +#define KVM_RISCV_SET_TIMER(cs, env, name, reg) \ + do { \ + int ret = kvm_set_one_reg(cs, RISCV_TIMER_REG(env, time), ®); \ + if (ret) { \ + abort(); \ + } \ + } while (0) + static int kvm_riscv_get_regs_core(CPUState *cs) { int ret = 0; @@ -236,6 +256,58 @@ static int kvm_riscv_put_regs_fp(CPUState *cs) return ret; } +static void kvm_riscv_get_regs_timer(CPUState *cs) +{ + CPURISCVState *env = &RISCV_CPU(cs)->env; + + if (env->kvm_timer_dirty) { + return; + } + + KVM_RISCV_GET_TIMER(cs, env, time, env->kvm_timer_time); + KVM_RISCV_GET_TIMER(cs, env, compare, env->kvm_timer_compare); + KVM_RISCV_GET_TIMER(cs, env, state, env->kvm_timer_state); + KVM_RISCV_GET_TIMER(cs, env, frequency, env->kvm_timer_frequency); + + env->kvm_timer_dirty = true; +} + +static void kvm_riscv_put_regs_timer(CPUState *cs) +{ + uint64_t reg; + CPURISCVState *env = &RISCV_CPU(cs)->env; + + if (!env->kvm_timer_dirty) { + return; + } + + KVM_RISCV_SET_TIMER(cs, env, time, env->kvm_timer_time); + KVM_RISCV_SET_TIMER(cs, env, compare, env->kvm_timer_compare); + + /* + * To set register of RISCV_TIMER_REG(state) will occur a error from KVM + * on env->kvm_timer_state == 0, It's better to adapt in KVM, but it + * doesn't matter that adaping in QEMU now. + * TODO If KVM changes, adapt here. + */ + if (env->kvm_timer_state) { + KVM_RISCV_SET_TIMER(cs, env, state, env->kvm_timer_state); + } + + /* + * For now, migration will not work between Hosts with different timer + * frequency. Therefore, we should check whether they are the same here + * during the migration. + */ + if (migration_is_running(migrate_get_current()->state)) { + KVM_RISCV_GET_TIMER(cs, env, frequency, reg); + if (reg != env->kvm_timer_frequency) { + error_report("Dst Hosts timer frequency != Src Hosts"); + } + } + + env->kvm_timer_dirty = false; +} const KVMCapabilityInfo kvm_arch_required_capabilities[] = { KVM_CAP_LAST_INFO From patchwork Fri Jan 21 05:57:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719317 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1ACE6C433FE for ; Fri, 21 Jan 2022 06:25:03 +0000 (UTC) Received: from localhost ([::1]:49870 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnM5-0005pm-T7 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:25:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49692) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxh-0006q6-Uy for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:54 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:9014) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxe-00045v-Fp for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744786; x=1674280786; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MWAnr9MuS2FDQIY1PgCeYFbKV/fQuIp/tlMSrQcRBvQ=; b=QNnpbs6VTquDEITP7SPiXDex9eqUpE24PwGZ+cPDz7HLgzp5KiYSzCrE /UB/Cn5A4csCCu4hnm79JT3YrEpHP9O+l17f5enKAZeD9m3bNwMy7oYAo WWyrY3EHvO79U6RMRTjgh/syoXXIhCx7dOcE8QuvGHQx06TXDurTikQct ODeYZJ5cZEbGu8EW4ppv5M7479KSfPWdXeAC5X/OwM7oNUxc/DeHuk6UB vZuF4kIqbtJcBN3E1Z8v58oz6Hi7wpksqL9Es2fIwjmVyri9q8pFxeA3w OlLp+h+J3kAbXgid1G4TOLLV4pBXlZIy4p62mx3LKHwZNPGlQt1OTU7/P g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976533" 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; 21 Jan 2022 13:59:45 +0800 IronPort-SDR: YY1tUoZTXI7r6o2rUjZyc9+g/kwDj1o1u5KaDjfVPP6TAMB3t8dxbtPXu2+3q5F0FimShMXpg6 5+4+XyvrPyR1Hd0ancz7PXTrGHBygCJweDstKNkITohcBj5OX0+H7weirKAgwnLNzmXX/N1Co9 dLVM9YXnmd6Wtcrk/dfXxgj1D2clhndjE51+obYAsHxYqod+TLC7ZpDrwFyXf8fRzna3DUarKx Uf8q1kFnwd2T6PeywynNhEP74iXcK0JnjetyW55HpCxmPM81fDLi78CujTdBmWauD9Q8wQ4mW9 WLM1FtRnU51WaRyE1jUgSBfp Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:31:56 -0800 IronPort-SDR: dAydg9etHaobabBHb/0xPSgnlZyUA5KJ1ZkKgxmAIgWLF2sjyBP8/EP03Zs8dD8ZnSDpBpoQpR ADnIDMnxWVJbkGTUu4Yls92D2bAmRjv4pt50UIq71otwiZZ9OM5kNJ+zSQ+Ng72TPeFSY6bEeq zrjsVuPVKCaFdodUWoQ/keLLgzrVXFlEz5v1SKk+/+ODEHDATqixJ1ioBfpmkHYSgvA/BI/AJH c9tukUjD3jcgsUkC9vVMWKdeRjvBZUoeUClckS1AgXCawKHGH/UFWnk6LEUTBcxbNLirXNeGhU 2gE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59: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 4Jg7xr55hCz1SVp2 for ; Thu, 20 Jan 2022 21:59:44 -0800 (PST) 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=1642744784; x=1645336785; bh=MWAnr9MuS2FDQIY1Pg CeYFbKV/fQuIp/tlMSrQcRBvQ=; b=iMXvmu26u/usDFh9BVcNvK/r95/v0eRqAS kXwsE+a0cbwrpj19oF9NxGl2HCrSKN6MfQf+H4ys+8Ygy8oyspetypkqBlnVy2vT cdPKX3zUGMjonADOOx2w2ypJd9S0BXM8gSh9nuvv0hdKBqOnOeXkukZgiRGZsU8Z pqi8KqLn5YlGutXuM1HDI5B/LXtsEVXwhSs5TM7XMjES9cz7Wyi+W/MoJ4+N09E4 vCPj/erHxKavuN2fGvVcj4dNTh9gIe1i+x6AdMhxCxiGHJeJPPJXVEQ12HgVR9l0 Tb8RzVnV1mMBN8wrkdvCScpw1o5EYrVynWRFJ08FCojBR3ZvQXjg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 goIKBvBgb0P2 for ; Thu, 20 Jan 2022 21:59:44 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xm5pCxz1RvlN; Thu, 20 Jan 2022 21:59:40 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Anup Patel , Alistair Francis Subject: [PULL 14/61] target/riscv: Implement virtual time adjusting with vm state changing Date: Fri, 21 Jan 2022 15:57:43 +1000 Message-Id: <20220121055830.3164408-15-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang We hope that virtual time adjusts with vm state changing. When a vm is stopped, guest virtual time should stop counting and kvm_timer should be stopped. When the vm is resumed, guest virtual time should continue to count and kvm_timer should be restored. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Anup Patel Reviewed-by: Alistair Francis Message-id: 20220112081329.1835-12-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/kvm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index a43d5a2988..e6b7cb6d4d 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -41,6 +41,7 @@ #include "sbi_ecall_interface.h" #include "chardev/char-fe.h" #include "migration/migration.h" +#include "sysemu/runstate.h" static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type, uint64_t idx) @@ -378,6 +379,18 @@ unsigned long kvm_arch_vcpu_id(CPUState *cpu) return cpu->cpu_index; } +static void kvm_riscv_vm_state_change(void *opaque, bool running, + RunState state) +{ + CPUState *cs = opaque; + + if (running) { + kvm_riscv_put_regs_timer(cs); + } else { + kvm_riscv_get_regs_timer(cs); + } +} + void kvm_arch_init_irq_routing(KVMState *s) { } @@ -390,6 +403,8 @@ int kvm_arch_init_vcpu(CPUState *cs) CPURISCVState *env = &cpu->env; uint64_t id; + qemu_add_vm_change_state_handler(kvm_riscv_vm_state_change, cs); + id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, KVM_REG_RISCV_CONFIG_REG(isa)); ret = kvm_get_one_reg(cs, id, &isa); From patchwork Fri Jan 21 05:57:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719320 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 34DAAC433FE for ; Fri, 21 Jan 2022 06:30:08 +0000 (UTC) Received: from localhost ([::1]:58622 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnR1-0003N4-1F for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:30:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49716) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxl-0006qe-8W for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:56 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:9014) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxi-00045v-K4 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744790; x=1674280790; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2UhdumAafk0zqHBDS9WXcmpaS5RFtVLeSKQ+NzTffnE=; b=nBerR3AcIeMDS+ZhQ61AhGQ1c2myRieo0JZjyYNnJCez0izBB9b4n+IK 41d7YuBai7+n1iMJ5nEAX5a05D0a7G1TJysQbGQjyTJgC9p5z/FUCYMjY ODXMvtbqgQCQuo9JO5JPTFVDTvNbxwGbbR3bwvlVWo91vlqs9K+3MCUwa vQ/ZmzNi6Z9IuGg9eVDlMYmhSS+MvW5XwD3ORZikN21RoDFkpCr2TbpsH ZxBTi2J71xc9SOlgobLj7Zz7D6JCqkprpA9dzyug/i4dx+nMqG1nN5Efj Uujt8nyTSnBkmrezVI4Ei5Ummn0lUzfB3vhRPvpMZPrnU7Rn+Gw2HbPo+ w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976535" 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; 21 Jan 2022 13:59:49 +0800 IronPort-SDR: Q0IfZGLobU3lSNVLCFCbRupnAhlGs3n+uNNW2Y4AiYsKGHSxzirX8WR1iGQn0oE8f6ruDKuZ3l qDxpmp+tgNIhuHHA8VVk3yR2mKvvOYnMqJaCMYxYidc8shcOabISzCIMXVil8IYDVTG3rJvaEl s40+M50k3kIOhooARS3TioIsbETRKsSTJJ0rUJ23Bx//dVXJLHFvGr1FGkL4+q3EevZ18w53or mLresxEBv/Z1h0T10Xc1OVuu9c48n0pJZ/1Cq/MEKUkpn+6rqTeZt1C7lUi7NLv5eW3FaeNGk5 xtMX/vTWCcvh/BZ4vwEywCTt Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:32:00 -0800 IronPort-SDR: gwQ3r5epcj7n5dWcUCT3E2MGuZkgvHCA7Q8pPX5GK1Hy+ftdpCxRjX8ak3BUw9hBSn3ArMrFqd 7FErd44EAshkA4eFlm0aZ8S+BGjCr4HN674Chq8Uf2JRIUw0CvY0NixSkKriMplRf6E3kgO/33 ZRRW+xea2d++wY4ok9zsCEd7xdk6Z2yvxcd0JaK/LeSE1GzBFO8+u9byyePvja+sH4tY/keqRm ltx54j/O2QZhFBEq72Up/ukc6S/YzeBL21LA/VZ3rlQ1GiusPSx61ye9iaJpmAoNJRUjxjDfjf 87g= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:49 -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 4Jg7xx0VXXz1SVny for ; Thu, 20 Jan 2022 21:59:49 -0800 (PST) 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=1642744788; x=1645336789; bh=2UhdumAafk0zqHBDS9 WXcmpaS5RFtVLeSKQ+NzTffnE=; b=moA1w1tNjPJACVFVLvWW0lmwjhbAV3z5Ry gXYUoqG1KVF0ngeQHd49ob1lh6XeCmi1lcMT0HUZfHXglKYV6dMjWuyLg5xaiusB g7k0P78q42nU1M+MDeFI0+bXHmwtp9n3RD5Bf//n4UUmiuMbv4HcaydGp9eJX1l4 AEdTe0FeM0iRTls3iQYM+Al6NGncue+txcIbuO1lGv6h3v6e4+VOjmHP9igsM/e6 222CW/hn53WODsXVvYSquMsARTscKaYo48vEwKoFfOLy3fGfJtVFfQze+f+Q83PZ 7p/KtkdergbiyW+AP0nxbL/IiVxP/IfOyZFhFK5YPqwVqjsAf4Wg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 T5btxHxnKIaG for ; Thu, 20 Jan 2022 21:59:48 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xs0vZfz1RvlN; Thu, 20 Jan 2022 21:59:44 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Anup Patel , Alistair Francis Subject: [PULL 15/61] target/riscv: Support virtual time context synchronization Date: Fri, 21 Jan 2022 15:57:44 +1000 Message-Id: <20220121055830.3164408-16-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Add virtual time context description to vmstate_kvmtimer. After cpu being loaded, virtual time context is updated to KVM. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Anup Patel Reviewed-by: Alistair Francis Message-id: 20220112081329.1835-13-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- target/riscv/machine.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/target/riscv/machine.c b/target/riscv/machine.c index 13b9ab375b..098670e680 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -185,6 +185,35 @@ static const VMStateDescription vmstate_rv128 = { } }; +static bool kvmtimer_needed(void *opaque) +{ + return kvm_enabled(); +} + +static int cpu_post_load(void *opaque, int version_id) +{ + RISCVCPU *cpu = opaque; + CPURISCVState *env = &cpu->env; + + env->kvm_timer_dirty = true; + return 0; +} + +static const VMStateDescription vmstate_kvmtimer = { + .name = "cpu/kvmtimer", + .version_id = 1, + .minimum_version_id = 1, + .needed = kvmtimer_needed, + .post_load = cpu_post_load, + .fields = (VMStateField[]) { + VMSTATE_UINT64(env.kvm_timer_time, RISCVCPU), + VMSTATE_UINT64(env.kvm_timer_compare, RISCVCPU), + VMSTATE_UINT64(env.kvm_timer_state, RISCVCPU), + + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_riscv_cpu = { .name = "cpu", .version_id = 3, @@ -240,6 +269,7 @@ const VMStateDescription vmstate_riscv_cpu = { &vmstate_vector, &vmstate_pointermasking, &vmstate_rv128, + &vmstate_kvmtimer, NULL } }; From patchwork Fri Jan 21 05:57:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719336 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 91C82C433F5 for ; Fri, 21 Jan 2022 06:35:05 +0000 (UTC) Received: from localhost ([::1]:39210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnVm-0000yg-GT for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:35:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49750) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxr-0006sB-Og for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:02 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:9014) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxn-00045v-9E for qemu-devel@nongnu.org; Fri, 21 Jan 2022 00:59:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744795; x=1674280795; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hHKsDj3kSF8NK8YhDmgUu4/dhSlxBQeuycUlgBSHJOg=; b=NbtJfpccAdi/AMHh7QPZqO0uFRtdPSj0zR7pFZkqkE3WdLl2Oua/L3Ok f6HNBtIA+6Pyutr0aGvjurES6B154UXlwn3CQqI1JajUuVQPX3MOgy7B6 LRAL4MaiPpbb50aGwOfRIlryYB1Fxeoqkfs6EAi6Lj3JXmJj29DcEklDk Jv0GzR8mubjtxIuxIc5tsjcIWuWnnK0PmV7YgU54cMPODtQa2vGMLo5XM C3b1voo20/TWHQaizYHPuuq52C3Bb/8fo7A0Nl7JNVcskfmOtGFawAiuU TvYiSVtG7lROClP3iWP6Ov0gzjIAz5wNEVGXoB8y+DGZXTbi/eohStDRB w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="189976543" 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; 21 Jan 2022 13:59:53 +0800 IronPort-SDR: oR9HVyhUC11pf4BptW6g7nUTmXeNm462PI9M5fEZkSR3HjhUhWfUo2Db/09pTXvcaAkjTZ8bik zG+pe64UKxaZE/9ob6A9Bno3fgRJL13bftKdLkkUcrkBiZWzOQyQWiYbbC4saGk8TCX8li5UCr ZMRb4LsUZ1nAcD/YGG3EzZlhBj5j4VY99W9uSq9wrMAxAwk3IbTnVgw7IzsV0bQEFRyK39c9rK CcyGSfNyf+AQEXs7bfF3JdAg2vxZgZbbkd/emDal2TxrqlJ+ZQ9+HxUdoAxV82KRtA0Rn4Amje 6c7/vVu94eNKllTmV4uwCCni Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:32:04 -0800 IronPort-SDR: WJPx9KMpPUtaS1NsqxO4mBn5xEgQfSTwFDsLv9eqE7dDEKQw6UytcIK1nY8Ezgm4FiLqK8oLOz 17WRxK99yK+Ix22gvSt/XBeJ3dXS2M2iO7SnnyTFe0cljuU6bAZqIBmltmDkMHh4eXnhzZm8BZ YHMm1Rpijh+W4inI7ikKTOOyCzN5M+IaSGWjq/1+ewBsuhcVsAhsTViTl7xe8C25eEWqbyCAq9 rYSnfk/ZAzgs/QItSf7u0Jo8JhNS5GgtMAcQCyiZLC1vZtmOCqJzyfLLCBlwYaYXMFN+w1e1we KNM= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:53 -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 4Jg7y14DpQz1Rwrw for ; Thu, 20 Jan 2022 21:59:53 -0800 (PST) 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=1642744793; x=1645336794; bh=hHKsDj3kSF8NK8YhDm gUu4/dhSlxBQeuycUlgBSHJOg=; b=PFM++hg3OiNWJnVUe2sGUp0RMDWJiezltU NDONTUBrxMhs8tQ4rRJiFV+VKE0YRicMrDR7cR4JHM00cVzgvhoILfvSsTlrIiBb ONXOJnXplXPxl3iH7ZzQhZNWla66PIydtHE/iksYPEpoPUyCsc195PYkiBnZQXqI ymVoZCC/piNAB8NGE7q6ggA5FM668tkAb2uaIsBT2laxz6JjcWgdB5NiqeEaBbR8 MSAMliLJgUYB8ypETj6zhp57+RkIPUppuztguajXAkVvqzH79JF2BrNe9R94PGiV DyJmhvtXR+btTqpylSX1k/+B08jdEvpv0Fvvrz/ch2YgRpGx8beg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 pj8ydikxuRLn for ; Thu, 20 Jan 2022 21:59:53 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7xx3Hfyz1RvlN; Thu, 20 Jan 2022 21:59:49 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yifei Jiang , Mingwang Li , Alistair Francis , Anup Patel Subject: [PULL 16/61] target/riscv: enable riscv kvm accel Date: Fri, 21 Jan 2022 15:57:45 +1000 Message-Id: <20220121055830.3164408-17-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa4.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yifei Jiang Add riscv kvm support in meson.build file. Signed-off-by: Yifei Jiang Signed-off-by: Mingwang Li Reviewed-by: Alistair Francis Reviewed-by: Anup Patel Message-id: 20220112081329.1835-14-jiangyifei@huawei.com Signed-off-by: Alistair Francis --- meson.build | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meson.build b/meson.build index 333c61deba..833fd6bc4c 100644 --- a/meson.build +++ b/meson.build @@ -90,6 +90,8 @@ elif cpu in ['ppc', 'ppc64'] kvm_targets = ['ppc-softmmu', 'ppc64-softmmu'] elif cpu in ['mips', 'mips64'] kvm_targets = ['mips-softmmu', 'mipsel-softmmu', 'mips64-softmmu', 'mips64el-softmmu'] +elif cpu in ['riscv'] + kvm_targets = ['riscv32-softmmu', 'riscv64-softmmu'] else kvm_targets = [] endif From patchwork Fri Jan 21 05:57:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719300 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 26843C43217 for ; Fri, 21 Jan 2022 06:09:44 +0000 (UTC) Received: from localhost ([::1]:60832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAn7H-00023c-6N for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:09:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49770) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxw-0006sy-Ca for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:10 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:53743) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxt-00047D-9f for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744799; x=1674280799; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hm1MxAa5jY/LA0BJnYgvyDmUDhUVhqL9dhEd0OPYnqE=; b=CHBt40Uoqnm3BiomImsETBwziZ4SdlT5FS4unEKXIs1a5vfNq5/+NMsX IaCS1juCZxOXONVIGo806jk6Egvuzb3vNATYpigacKDWotIR39Avmkryc aCTyifVc/8ctOViQzG3uxq4fkuP6BlxBe+MJCzbbf5Wzwyr5H1AfhXvTq DMIRyrQJmipiH+LEMe0XO0nvC/Z7OqqLSSAsClxvKC528Segj6pjPcBvp JvYN8uyX4XIgOlFxdvAIiJCYMnuAK0sNUI5RorRXj5PgKgdvQ0ztvSV4N YGI/3+Z0XN+Uw/taoynZ914GSnPzF/vavfkBcLIW5XhZpv9vhLgUWBV1O w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195813986" 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; 21 Jan 2022 13:59:57 +0800 IronPort-SDR: RLcpaMhAFoktC6NQL3i7ds6GBUWu1gdhIeL8oq+3JqbDvQObcYTUDqwICFXg+bxzhY38oAG9Y1 2ix+BCj9z59uO6BkLWh0eBSX+x0+FIZ38GAkFvbjwF51OoiHAKBjfXUBgy5lvpF2KCKMInJv/l KSoETHE32TN8Pzxz1LDpjmK8JuQ61Os5jqL+kgGqEBAbaHHVngnRQPVzlwkW5ZxJl2hEKVfixe cAAp7bgdJMw4iWjikogFeCmFAaMIEFhdyaKrEZ0ABf8JIYVCjLed95RcgNjiJh98sYfJC/9Rku DQ4LDlOdLMS49raCnPL7xyg6 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:32:10 -0800 IronPort-SDR: HV2iUdyiVPeNHG7ew4/2dxpBaLNSsaBSyhcu1vjwKMW7txBp6/9NIy+ysnvwQEVTud2sFE6En3 13ZotLkuL67snxXIxMwZBFXraEmXYoOS7+EmIX/8IT3oBrsIhy3AFMNyjPNHrsjVhYl1q9GcsN RZXcQPjzBZNypi3iGmZvw3cmMusF9lw96Dnsj5ThJvHk6a16/MobBa0Dw8hz35lJDiGvmNSirT VHM3XbsJ0B27YgaZHUT0N42/0ayYg1ac/rwDw6HOe3Gy2dF0kd1X0IkvgYTEL6oTlZhL3NFsGO sEE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:59:59 -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 4Jg7y7295wz1SVp4 for ; Thu, 20 Jan 2022 21:59:59 -0800 (PST) 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:content-type :mime-version:references:in-reply-to:x-mailer:message-id:date :subject:to:from; s=dkim; t=1642744798; x=1645336799; bh=hm1MxAa 5jY/LA0BJnYgvyDmUDhUVhqL9dhEd0OPYnqE=; b=WoI0m4TgPHjIR1GfPfCpTPu 9/QLhwaHYb46PPj4oQLhvkEQ/aw8uTj1iUtN5KkW9WvYWKWCBtJie9cTMk8wxB4D ow9koMVua0LzvWnshMDLr6H32v2udqmID4CACgOdf3+wZIquA+L6k3cc8nNa8NLp UauA+XaZUlgHeel4LLQCNOJV54W9HXWaGjAYuYVbEZ0sVT3OE/DJjW6ViaXBKI3g AqiUHzvIM/iY5txRgti/X9Xu6vZTCgbxYFcnJ9q1Wt8OlfZU3HYttDBJ3M83+HMM D+w6DkneJd5mVk2IWVyM+RIVI2TaEZqugh5IcjHJ13FfEm9/hdOfO1hjO4FYiYQ= = X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 Ee0ha14uQvXL for ; Thu, 20 Jan 2022 21:59:58 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7y20c8Vz1RvlN; Thu, 20 Jan 2022 21:59:53 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Thomas Huth , Andrew Jones , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Richard Henderson , Alistair Francis , Yanan Wang Subject: [PULL 17/61] softmmu/device_tree: Silence compiler warning with --enable-sanitizers Date: Fri, 21 Jan 2022 15:57:46 +1000 Message-Id: <20220121055830.3164408-18-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Thomas Huth If I configure my build with --enable-sanitizers, my GCC (v8.5.0) complains: .../softmmu/device_tree.c: In function ‘qemu_fdt_add_path’: .../softmmu/device_tree.c:560:18: error: ‘retval’ may be used uninitialized in this function [-Werror=maybe-uninitialized] int namelen, retval; ^~~~~~ It's a false warning since the while loop is always executed at least once (p has to be non-NULL, otherwise the derefence in the if-statement earlier will crash). Thus let's switch to a do-while loop here instead to make the compiler happy in all cases. Signed-off-by: Thomas Huth Reviewed-by: Andrew Jones Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Yanan Wang Message-id: 20220107133844.145039-1-thuth@redhat.com Signed-off-by: Alistair Francis --- softmmu/device_tree.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c index 31d1066940..0a433c98e2 100644 --- a/softmmu/device_tree.c +++ b/softmmu/device_tree.c @@ -566,7 +566,7 @@ int qemu_fdt_add_path(void *fdt, const char *path) return -1; } - while (p) { + do { name = p + 1; p = strchr(name, '/'); namelen = p != NULL ? p - name : strlen(name); @@ -586,7 +586,7 @@ int qemu_fdt_add_path(void *fdt, const char *path) } parent = retval; - } + } while (p); return retval; } From patchwork Fri Jan 21 05:57:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719319 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 30463C433F5 for ; Fri, 21 Jan 2022 06:30:08 +0000 (UTC) Received: from localhost ([::1]:58608 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnR0-0003MN-Tg for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:30:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmy5-0006ta-D6 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:19 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmxz-0004AK-K3 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744807; x=1674280807; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fsIWfG/YhDiWb+NY861jhKV1cgP13eIxnm24Vc1+lTo=; b=P1hp4LTd+BZ/XL+nAAiTUz0pWSf8tI/Ieum6tj7/VOUqxJ1LIEkfZFLo 0oBzRfOPhGaV9kQtYidQ3uxFDCQSlNNED22DeKVrWH2DoAMIT9G6+SJ7t 6EceN9cr+IHoC6u6QFiKSYnNtjRuiYOYsNKNRIBkrHuOTg/Kss/e6xNVk ghGE8pnnvULQajVYEf6kU+A4hHk6WbTlNUS93lLf+1GLnVihcuivo5J1w JreYOzYMczt5G1vep8UQk72xlk1iaotNu0hWUk6S0vMLknjPgU8Wo9Bzd 47D2EcEkecVw521dxuzQF4fwzK6kEkUfowM1rbbvFagFTqex87wV8Yfs+ Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082884" 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; 21 Jan 2022 14:00:05 +0800 IronPort-SDR: phzUCQA0d+0SpTqR4PQ2Jm0oeV1fURIKIp7BvY1rgR2E45V6sqtmyONPmc6XIYQRMx+M0B4g9U lttu0BvFrYRtflneBazFIQ/WhL1ALIHtvQdVmdJhxfjnS8sOSrx99uQTsKErX2K6nLopHDcZKC 0a9YgjZhw+fOdqftJF35s8nv1pzhr0gCknOUKXHHaK8bPfiWP9xunkqD7p0jvg8zIUSjg3CxAA PQpUQolEnHzQAiQHLrRgEVewYN04H44s3zAzHWBg32+V/Kjcs1dIUx34VJPju6kV5wOVS8kPL3 ilFxSR/hmsFo3FMx0TNZ0u5R Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:32 -0800 IronPort-SDR: CNwFq99qf+LG3pq41dfJYYq/52q4stJMKIoSRlVYK67dgF6rb8STpmUls6M1XM7APx5C+rgZMJ jNJCIp9X4JUMDFpdqjNYTMTUm3WCcZwII5iQYwHhbK9bTF1Nj+1k26nPqd6ArkR5Kt2/3oZOj3 c8b5N2QcywZ1wIxnkM7abrVGZrNYyt6rdJ7nm0Vrc7ZsrRzKEaga7iZ06swua94NV6m6EKZqny y66ure2Ny5OSalT7KbNoNyJLHB4WppDlbd/BWkPUAmr4NMIEjBvj74KPOxqIXkGPp2CSuewONc 0Ks= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:05 -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 4Jg7yD6yPwz1SVp1 for ; Thu, 20 Jan 2022 22:00:04 -0800 (PST) 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=1642744804; x=1645336805; bh=fsIWfG/YhDiWb+NY86 1jhKV1cgP13eIxnm24Vc1+lTo=; b=KkhvUnL2mZswS29ZXd/CQQEOAPyYmQsVy7 Q4HaoE2ZRd321R3slHzU7zVoam/+AGXwRRckGhO6OYnlDJO22dlKtYCiq0ydwjhK sMNjekETwlB+SscQleFYl2jgzBRy+wgogyi8aLPf+nJZ+uQfK8M7+IzCWqmGV572 M+1ZIvF35Llgz83+vUMgEjC3PcO9DToV8DxryOqrM3XGvxBB1Nmo4RCjUGglDiWO CRSYdOCHTGmFvpDXmzK7upcWMaAgrLuIvbWVY9GVZ4MyRKx2rMtkxRmP1oS9jsox EIYK0eEpoRKBPbpiTZWbck66nbB9xZ6rb/uhrh1Mnfk7hEZGFiJw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 32Ek_ojmHSFc for ; Thu, 20 Jan 2022 22:00:04 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7y76CjRz1RvlN; Thu, 20 Jan 2022 21:59:59 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yanan Wang , Richard Henderson , Andrew Jones , Alistair Francis , Thomas Huth Subject: [PULL 18/61] softmmu/device_tree: Remove redundant pointer assignment Date: Fri, 21 Jan 2022 15:57:47 +1000 Message-Id: <20220121055830.3164408-19-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Yanan Wang The pointer assignment "const char *p = path;" in function qemu_fdt_add_path is unnecessary. Let's remove it and just use the "path" passed in. No functional change. Suggested-by: Richard Henderson Signed-off-by: Yanan Wang Reviewed-by: Andrew Jones Reviewed-by: Alistair Francis Reviewed-by: Thomas Huth Message-id: 20220111032758.27804-1-wangyanan55@huawei.com Signed-off-by: Alistair Francis --- softmmu/device_tree.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c index 0a433c98e2..6ca3fad285 100644 --- a/softmmu/device_tree.c +++ b/softmmu/device_tree.c @@ -558,7 +558,6 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) int qemu_fdt_add_path(void *fdt, const char *path) { const char *name; - const char *p = path; int namelen, retval; int parent = 0; @@ -567,9 +566,9 @@ int qemu_fdt_add_path(void *fdt, const char *path) } do { - name = p + 1; - p = strchr(name, '/'); - namelen = p != NULL ? p - name : strlen(name); + name = path + 1; + path = strchr(name, '/'); + namelen = path != NULL ? path - name : strlen(name); retval = fdt_subnode_offset_namelen(fdt, parent, name, namelen); if (retval < 0 && retval != -FDT_ERR_NOTFOUND) { @@ -586,7 +585,7 @@ int qemu_fdt_add_path(void *fdt, const char *path) } parent = retval; - } while (p); + } while (path); return retval; } From patchwork Fri Jan 21 05:57:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719343 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1E1C6C433EF for ; Fri, 21 Jan 2022 06:59:03 +0000 (UTC) Received: from localhost ([::1]:48064 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnt0-0007r6-UA for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:59:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmy9-0006ti-4G for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:20 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmy3-0004B6-Gk for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744811; x=1674280811; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GMLbD5ayFkoErB/IZay1cQB3pe5/0mX/reC7P+tfqJI=; b=BixTvZJX//TAUc8oB1dRA/S37OGt7KCZfecucsP0OGTPx1fAdNugXIux paOoDeHI/9yiNP8QNvHqnAYkntylBuFpQJZP1e+IaezneNjuJpOylK8uJ 1wGnOMCPSMR7eY+FIGqg4pNfrgsp71oPanflkRtWVcUCRO/ckGyiMexKu XD8t8ElXn3OxmtqNEyeocrtPj8wa2Y1BwjDL9pdXaUFUryBlDjCvDEQRT 0zy1YbJZg/eACRMulfW4L0vnjsieMcqMFKrsGeBFj8cUaR8I+KXC+7Hof ChbzYBAouL2c7nKEv1/D5kPhPkIe4kD9e432vSfSgfarmR4AEKOBfQK5T A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082892" 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; 21 Jan 2022 14:00:09 +0800 IronPort-SDR: c7+C9cQwN1iGVOJuUionIfWhK69UzFQZjm1CWJC31h4Xvrp1p58ec0feJdFfBG+h1YL0sdIouI ky5SGK6Ci/FyrSmjeFAOsAo98uQe/JOp/yCxWcIPMJ8F6o5G0c2kAo2kuGV5yzOoB57ma4A92H dED/6Vn54aUowar7JxYCI3ClI9DJSMntVBsUtO9/U3BgM2OUvPGSIv+651JwvrOfXQIW6MSD6b gB3uqvBUyeaAL34GiQUpHkbZ8OUwbJwbj61jS7uNo3xa+FaVZocogAOHXsuJNv17pULiFIndET 63SfjKzEPUppprL/ocEhIf1d Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:36 -0800 IronPort-SDR: iU7t9/oNx18I71llRViXCHG4uXrYO1nSpAzfuStpeMX59hexx/EvL1HD/nRt9RlKyidwpRcCP+ 9uZZUrR6bWmz/ctNzlyg68zBc78YjL3LG0soU8kW3AdnLd5Lzus0hSguMQLPDKNekrSxcj1ugB DrYW4y/I3b6GLayT/69HGknAd58M+5W8NRW9SPYkhFOMtImtPVCmpEV1/LRwmHeu7m60H2+dlV 7LWSktW2o3J4zmwEl0yflWrENsF4/KNae7qxuqrSJJ090z8twfk80rf3e/dUDWQejckZCctXmL 3tU= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:08 -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 4Jg7yJ54Yrz1Rwrw for ; Thu, 20 Jan 2022 22:00:08 -0800 (PST) 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=1642744808; x=1645336809; bh=GMLbD5ayFkoErB/IZa y1cQB3pe5/0mX/reC7P+tfqJI=; b=gLJy4GU0NOqwOhaSyb/PwfNY/mj7NPsxwa 1bUh4lF5E9T6f5lQqcYzivHiBjrQkM2Ccu84nFkcgFxKHS0xMOTvyO0V8YTb4GxE YshN67HXdWIe79bb+AWh+/U3yhWDpzoelbjRlRl6F2rjpK9IF/hzUanqy/wrEMur ZUyvJlGhxBiD83AI4ct0lkLdXAaSWl6WmSiBuOSXQIU6eTUHfn5fajX5IeyDzYFp huRyHOSGjWIlDshCBK91SWAO9Wkf7eWQbqr/VjWtE5rqta8cNOn/pFKi3ElU8bTD 2uESMN8vTvNlKjPwXiXINZ+9KjN4qp1DKRqof1MHMPjWusm9+AHA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 fb4NDF_OMFmE for ; Thu, 20 Jan 2022 22:00:08 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yF2LmNz1RvlN; Thu, 20 Jan 2022 22:00:04 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 19/61] target/riscv: rvv-1.0: Add Zve64f extension into RISC-V Date: Fri, 21 Jan 2022 15:57:48 +1000 Message-Id: <20220121055830.3164408-20-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-2-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/cpu.c | 4 ++++ target/riscv/cpu_helper.c | 5 ++++- target/riscv/csr.c | 6 +++++- target/riscv/translate.c | 2 ++ 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 22c94d3c57..424bdcc7fa 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -340,6 +340,7 @@ struct RISCVCPU { bool ext_icsr; bool ext_zfh; bool ext_zfhmin; + bool ext_zve64f; char *priv_spec; char *user_spec; diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 32879f1403..cdb893d601 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -609,6 +609,10 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) } set_vext_version(env, vext_version); } + if (cpu->cfg.ext_zve64f && !cpu->cfg.ext_f) { + error_setg(errp, "Zve64f extension depends upon RVF."); + return; + } if (cpu->cfg.ext_j) { ext |= RVJ; } diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 434a83e66a..43d498aae1 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -69,12 +69,15 @@ static RISCVMXL cpu_get_xl(CPURISCVState *env) void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { + CPUState *cs = env_cpu(env); + RISCVCPU *cpu = RISCV_CPU(cs); + uint32_t flags = 0; *pc = env->pc; *cs_base = 0; - if (riscv_has_ext(env, RVV)) { + if (riscv_has_ext(env, RVV) || cpu->cfg.ext_zve64f) { /* * If env->vl equals to VLMAX, we can use generic vector operation * expanders (GVEC) to accerlate the vector operations. diff --git a/target/riscv/csr.c b/target/riscv/csr.c index adb3d4381d..e9311cfd9d 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -47,7 +47,11 @@ static RISCVException fs(CPURISCVState *env, int csrno) static RISCVException vs(CPURISCVState *env, int csrno) { - if (env->misa_ext & RVV) { + CPUState *cs = env_cpu(env); + RISCVCPU *cpu = RISCV_CPU(cs); + + if (env->misa_ext & RVV || + cpu->cfg.ext_zve64f) { #if !defined(CONFIG_USER_ONLY) if (!env->debugger && !riscv_cpu_vector_enabled(env)) { return RISCV_EXCP_ILLEGAL_INST; diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 615048ec87..d3c0d44e2e 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -79,6 +79,7 @@ typedef struct DisasContext { bool ext_ifencei; bool ext_zfh; bool ext_zfhmin; + bool ext_zve64f; bool hlsx; /* vector extension */ bool vill; @@ -894,6 +895,7 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) ctx->ext_ifencei = cpu->cfg.ext_ifencei; ctx->ext_zfh = cpu->cfg.ext_zfh; ctx->ext_zfhmin = cpu->cfg.ext_zfhmin; + ctx->ext_zve64f = cpu->cfg.ext_zve64f; ctx->vlen = cpu->cfg.vlen; ctx->elen = cpu->cfg.elen; ctx->mstatus_hs_fs = FIELD_EX32(tb_flags, TB_FLAGS, MSTATUS_HS_FS); From patchwork Fri Jan 21 05:57:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719334 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3B6F9C433EF for ; Fri, 21 Jan 2022 06:35:02 +0000 (UTC) Received: from localhost ([::1]:39250 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnVl-0000zs-5h for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:35:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyG-0006xO-HD for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:25 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyB-0004AK-Qe for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744819; x=1674280819; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kJZ2pkYgoZBiDqjiSH7rZR/fDtTv3nC21nqEvexgxE4=; b=aZm6tyWUSkYcpM2PsSL9rZqUiwQdEQ0q/JprOOgCv419PH6dDtus62bz K7f05TQjSKedKmlcElHAZFtlvVxh+7x1p2j3AFO7wDcJYOwa5ucxpMZN3 NVQlHpqf2DSLmt6qp/5AZaRoVfR9tT8TatuY5NX17gSKWl6HO3HfB8sn4 3GGAbJ094aqCjgLure/0kRFgmkGb9gfyPu2SNQIrsLxI2w0Xia/7CP/VQ JYR6SUcwsCXMjWK0Sn4KRSiqk+jZcbYvwj/r17eqo4hmIdTJQyLjp7WwB cAuZFqKi0ysj/XPci6EzQlZ0IV3JNUlRJWUvwDNObkRFqfME0jkM59ntH Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082907" 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; 21 Jan 2022 14:00:12 +0800 IronPort-SDR: Pek0TDmdQDrdzEVz/LV7MiNkLyDW2/eCQFFG+fkvX79lyATRscXY6+4K4yOf/lhw/zfT4EuO8V 2SZBDMEPjVX5/A9CHIYRLO2vXqgdULVwJO/9Mn39hIrJ43hlChIm39Vg7lYpd5Koids3sVwvNB y0NTxmX4FXclkhKkV9F97z/zSf7gJOq2jmw4nhZMeu4rOH9h9pUM2TYEKCRJUjtDpGnigSJ2sx xbQ+70c5/V0TLAf2bmNVhQsfDM/hyEJNNC2uv1bbXCh1BU6GfdXMQE7dwqojG1YY+e5mEolbKF zVpSABy0K/Cvx0LCw0AdS2tZ Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:40 -0800 IronPort-SDR: fBFT2epgCwSFR0zxrrwQlRHDwux5M6XRUk3mxCVBxEF3svw47MySJB9YxzpymGYnWQ21YNJUBq hJxtJRlXlqx5Z9njHPnw8wNDx/zf5Xw2ZeNTAvlwy8QebBR7jUsl99M984L0R3gChS3O+wS0zu sf8+3jAWNY1zuNyhFPN43bmfPjX2spw+CsrnF0YgggA4R/gqDiUnosWnfyGD5inWgwELdVvb5W 3Z8GtKq/BZNNGiBbVUsRXIAjygsNCmW5gFuJf4UMNaG+gCXrtrJgSsARqfa4ngxeYVq2vYuUtb LcE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:12 -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 4Jg7yN4GXWz1SVny for ; Thu, 20 Jan 2022 22:00:12 -0800 (PST) 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=1642744812; x=1645336813; bh=kJZ2pkYgoZBiDqjiSH 7rZR/fDtTv3nC21nqEvexgxE4=; b=OZE3CPpSy4/untbNXXx8dE2JoH0K/04SNF qN3uVPuGmpEWYzRSGFWSXoijt+YhxML9nutegW3kYeJQP90v3S1rO7dNHyjm3OzE uqNWFSA8vInTXZNL+/S3XEVFzvU5xHiJgFODqScOdKKqH72kwrDVDJum8ZK+AiTB 15Wsg5b1pJW6uZnb8oiI9Gkfzr6iEKIhmfKcg73j5MOBrtsaSO9SCa+FrEfjLlIE YMnYV5zzk85yot9HdcKHLNTv7o5wnNBE4Pprsa+OLTVNNfdDz4bl8SVnX29WtvGe eZj+VaqYQ4B4/NRRNfiyfsezvigggofHMN/7MzbGfU30nlXKX4aw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 fONxB7YFaOWN for ; Thu, 20 Jan 2022 22:00:12 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yK1TPqz1RvlN; Thu, 20 Jan 2022 22:00:08 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 20/61] target/riscv: rvv-1.0: Add Zve64f support for configuration insns Date: Fri, 21 Jan 2022 15:57:49 +1000 Message-Id: <20220121055830.3164408-21-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang All Zve* extensions support the vector configuration instructions. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-3-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 6c285c958b..5b47729a21 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -129,7 +129,8 @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2) { TCGv s1, dst; - if (!require_rvv(s) || !has_ext(s, RVV)) { + if (!require_rvv(s) || + !(has_ext(s, RVV) || s->ext_zve64f)) { return false; } @@ -164,7 +165,8 @@ static bool do_vsetivli(DisasContext *s, int rd, TCGv s1, TCGv s2) { TCGv dst; - if (!require_rvv(s) || !has_ext(s, RVV)) { + if (!require_rvv(s) || + !(has_ext(s, RVV) || s->ext_zve64f)) { return false; } From patchwork Fri Jan 21 05:57:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719342 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4D415C433EF for ; Fri, 21 Jan 2022 06:59:01 +0000 (UTC) Received: from localhost ([::1]:47968 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnsx-0007li-Mz for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:58:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50474) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyN-0006ys-NQ for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:33 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyC-0004KU-5s for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744820; x=1674280820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kAXRuOXq4UmXktQ8rpqKoY1MfNLvcU1m17jNyFcSY54=; b=HlJK2PE7jVS7OEM9CwpIvxT8MnEoao8F/PgWYAeb0DLsAQ8SGqAndlFq hPhch+zWZk7Y3OwHFfbUp/JEmp5GuNLgnRZFEkjI10dlLq2LHYj1G3Fzj VJb3OQFocrAomaSuUgkYYydEb2SqHU/o+89vR3MjyDYjeYYx9oUwCzUmg KIDSVSdPOKaV2xiJ4TR0cNr0Ld9Z8VZwZd43In3ryJondKtwQc4r7+Efu fAcrhbXKfqb8Hd97LpSCCUg3zK2zQz1zZ0KuI7b9e9oPslz7MYKdYS9JF sTmB+VunchVx2/nyTkTYOFV4DDbp6PNQ1Bbiq8iUt7kxmAgnbfYrPsBeN Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082913" 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; 21 Jan 2022 14:00:16 +0800 IronPort-SDR: pgmr5Ss2Q19o4YlvT/+8Hep4AFHinwfJoFMEk/aL+1sCxlKtNtvO4lvdE0avQWse54EczMfL8a anGuag+TeOa4dKHwgqlkhFp9RMfKtOiaCEFoB9nLEBLvxXeRBvVsixfL50Q/IRwOjqZ/ArV+/+ A8C2XCqrBoAsQRV2LfqqA6qFHLHmR3m15ppWQD2XYEjwMDUOZhGrg9+GmKjc+ZZ1KdpUKrrj6+ JyTFdlEvHVbLgZcvVQ5wXTiyTNLIGtEa2a451AMtu1zlFz4JUru9UmyaQz82EBMCUSK0d+pAG4 CaCw9XdTK6G8zzYkoS875v6/ Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:43 -0800 IronPort-SDR: Vp3H08hudypbo5UbNHRix8xbSTMtHTTBj5pqScxYF+e1q/6EAgRRAfLHY0Fz/kl4AXbloS02cy FFwhs8ZqjV6nZcQj5JLxPGpryrRyDuvBg6HrTN1MWT7HPgdf4wF3AFLNgtMoms8oK42pwRKTlQ QKWy1LDB9QUiju2gcWdiT6DI8b5Vmw6zKGPCQlN8aV54byne7yBYBC9j+wY28NfV4hxQXXm7C1 EzkpC/WhVrdO0ajqB2B6iA1IoQoagf00d8pFbYw4gvprbAjcVeiL/zyAGW3+Nn/vMOvAznNU8a G9o= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:16 -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 4Jg7yR6ZQcz1SVny for ; Thu, 20 Jan 2022 22:00:15 -0800 (PST) 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=1642744815; x=1645336816; bh=kAXRuOXq4UmXktQ8rp qKoY1MfNLvcU1m17jNyFcSY54=; b=XMVZQkNjfvVtt86aF+qkoAvgOv2M52UnEi pzjFQBrtUdrf0bHMx7kMTC7iSpQ5mQqv95T7ZprUVdRtU81MLmfbps2VEtDBnnAd hLkBmy0rAHE45PdGRo3Sl48nWM+ixM33Uo2XZ2vvfM2G8qfW67+Pts5m+fSDqOBv XmICmqavDznZEURUDPSc8aNhhuS0M2BmfKeynftP2bBgmsJ84wH9VdDju+YXgw1C BkRcCGLeRx50Jg/Wvr9NckskL/v3tz10wZVyJC68LN7++ekzWUtE9CMIr42Fy76N Z02TfNgZQs41o0p9p2A1vTXTTZAyhtSAnaDGaAfiL0hk4XO84cwA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 1hnh6lWbRHa4 for ; Thu, 20 Jan 2022 22:00:15 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yP07Lnz1RvlN; Thu, 20 Jan 2022 22:00:12 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 21/61] target/riscv: rvv-1.0: Add Zve64f support for load and store insns Date: Fri, 21 Jan 2022 15:57:50 +1000 Message-Id: <20220121055830.3164408-22-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang All Zve* extensions support all vector load and store instructions, except Zve64* extensions do not support EEW=64 for index values when XLEN=32. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-4-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 5b47729a21..0bf41aaa1e 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -263,10 +263,21 @@ static bool vext_check_st_index(DisasContext *s, int vd, int vs2, int nf, uint8_t eew) { int8_t emul = eew - s->sew + s->lmul; - return (emul >= -3 && emul <= 3) && - require_align(vs2, emul) && - require_align(vd, s->lmul) && - require_nf(vd, nf, s->lmul); + bool ret = (emul >= -3 && emul <= 3) && + require_align(vs2, emul) && + require_align(vd, s->lmul) && + require_nf(vd, nf, s->lmul); + + /* + * All Zve* extensions support all vector load and store instructions, + * except Zve64* extensions do not support EEW=64 for index values + * when XLEN=32. (Section 18.2) + */ + if (get_xl(s) == MXL_RV32) { + ret &= (!has_ext(s, RVV) && s->ext_zve64f ? eew != MO_64 : true); + } + + return ret; } /* From patchwork Fri Jan 21 05:57:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719347 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D452C433F5 for ; Fri, 21 Jan 2022 07:11:46 +0000 (UTC) Received: from localhost ([::1]:56912 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAo5J-00068r-8Q for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:11:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50462) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyN-0006yk-Gv for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:32 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyC-0004B6-Ii for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744820; x=1674280820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CwqZRS63jly+7oXNlZgQeFSepPZUNPK7myVpe15Dmh8=; b=hxUuh3yOkI4NNGTza9b9DXI+c8XCrckyqqY2Gc6eKBW7EhkT75nU+kqC tOuLoJz1haG+43CQjasC1JBxwwykjJd+bkD26W5dMUyCcG3RCYYEe2urj mz7VhA/bpd0TVeq1FgxskG3QOt4Arj2NpgM5bN21h5gN9uqRNDZ1Z49HU y+GaJUohrrEJoK8vVCBTYqN2Y6vzxBn9T/l0Qu8oSHTB3A/zGTmJQpti3 KRiplT3gYHyQtADjPZw3Q0DhRmcpAjt121XkL8Q7tSlPwNRbjQpJzrVXm H38ti1iF9Fb8iqBeDM8Dx3KvVrCfgflTOIQH/DCnW3UkbCWSRPNs03SJV A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082921" 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; 21 Jan 2022 14:00:19 +0800 IronPort-SDR: mEMSkJ6CoXtpgfX+haLcZdmwF3cH27F3yxlbBLst/snHQ27JiK3CoybbTIntj+uSRvQU25X22n ebZToEI7lksyol3V0dOBZIkwZgbRWyhsvrkurkYm06UVL7E5R4T/76KqroulVIujqEZbPCqdX4 y9d3e+Hgy/TLSaee3Prbme3ufYspPlZ6JlPCkhQmt0WCbYK3R0kNw5j3pG0K57MAXM4UgSmKSy A91+uKrKcF1XoTxWVjUl083dbd0Tk2tS6bBPBI9RAnxTemKRLXwBH3TJdxXDwEG52x/scPbPHC Iwf3oBhxFjYetWKkMiQj9HrB Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:47 -0800 IronPort-SDR: 21ENmzl9jrjG1f/7m8MG09YKbkmnmideW5WJlbvoqbp3F7EVGw8i3dFh0dZh/KgMsMfY2PPWjm AOpCfTSdC9VsIW5cM2sdIqMC1Vt9j7EiZPZS+sDZOYrRqZPNdApqrzrBLw1RH5BXxX3mcCCZNd aON6hNkcgGF516wMLfd704NQjQyJl2M+pktsIi8frwgP9u3GjwMLy9l1gu0lkggLL2kc+ZQ2kE b2L43/iuRRYgMWEQe7hyBSWiX/RjTDPLbxIpz6KgIYwVmLCqRWmyIjjAT/1OVFYtQFUhxHL7Fo EHk= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:19 -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 4Jg7yW3NPSz1Rwrw for ; Thu, 20 Jan 2022 22:00:19 -0800 (PST) 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=1642744819; x=1645336820; bh=CwqZRS63jly+7oXNlZ gQeFSepPZUNPK7myVpe15Dmh8=; b=t39pPr8SP2kS89ibCeKAdDSaIQ6h+Suipw d8KIZEKOx3KSQdMp4QfGy6QWj16pYytiAI6WqAsnuATrLpmEhVu3uqUwTt290o3K Q7+xbEa0zFE3+soOYRwdShYwSlXAsVNUWSyKztXOrxruPFQ4DtaQYln4P6ZaU+B2 YNPZXceUyvfK0HqfUU2/q7Yw0zfg6XdIZfdrX52t9Z3/03N0e3O0x8PXT2iDP7P8 CDWApJxeYK3BTS65cqGRlDWfa8Tg3h1o12zdLdk9NGeiiKBnGvaTqDqUKj88jNJ9 0MzuFyHhLpDOKPXG6TePcoLxVmCQgCKDoCoTgz/eqAuN4hhgqUfA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 akirQpDZFkpF for ; Thu, 20 Jan 2022 22:00:19 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yS3HBxz1RvlN; Thu, 20 Jan 2022 22:00:15 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 22/61] target/riscv: rvv-1.0: Add Zve64f support for vmulh variant insns Date: Fri, 21 Jan 2022 15:57:51 +1000 Message-Id: <20220121055830.3164408-23-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang All Zve* extensions support all vector integer instructions, except that the vmulh integer multiply variants that return the high word of the product (vmulh.vv, vmulh.vx, vmulhu.vv, vmulhu.vx, vmulhsu.vv, vmulhsu.vx) are not included for EEW=64 in Zve64*. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-5-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 39 +++++++++++++++++++++---- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 0bf41aaa1e..e64dddda28 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1908,14 +1908,41 @@ GEN_OPIVX_TRANS(vmaxu_vx, opivx_check) GEN_OPIVX_TRANS(vmax_vx, opivx_check) /* Vector Single-Width Integer Multiply Instructions */ + +static bool vmulh_vv_check(DisasContext *s, arg_rmrr *a) +{ + /* + * All Zve* extensions support all vector integer instructions, + * except that the vmulh integer multiply variants + * that return the high word of the product + * (vmulh.vv, vmulh.vx, vmulhu.vv, vmulhu.vx, vmulhsu.vv, vmulhsu.vx) + * are not included for EEW=64 in Zve64*. (Section 18.2) + */ + return opivv_check(s, a) && + (!has_ext(s, RVV) && s->ext_zve64f ? s->sew != MO_64 : true); +} + +static bool vmulh_vx_check(DisasContext *s, arg_rmrr *a) +{ + /* + * All Zve* extensions support all vector integer instructions, + * except that the vmulh integer multiply variants + * that return the high word of the product + * (vmulh.vv, vmulh.vx, vmulhu.vv, vmulhu.vx, vmulhsu.vv, vmulhsu.vx) + * are not included for EEW=64 in Zve64*. (Section 18.2) + */ + return opivx_check(s, a) && + (!has_ext(s, RVV) && s->ext_zve64f ? s->sew != MO_64 : true); +} + GEN_OPIVV_GVEC_TRANS(vmul_vv, mul) -GEN_OPIVV_TRANS(vmulh_vv, opivv_check) -GEN_OPIVV_TRANS(vmulhu_vv, opivv_check) -GEN_OPIVV_TRANS(vmulhsu_vv, opivv_check) +GEN_OPIVV_TRANS(vmulh_vv, vmulh_vv_check) +GEN_OPIVV_TRANS(vmulhu_vv, vmulh_vv_check) +GEN_OPIVV_TRANS(vmulhsu_vv, vmulh_vv_check) GEN_OPIVX_GVEC_TRANS(vmul_vx, muls) -GEN_OPIVX_TRANS(vmulh_vx, opivx_check) -GEN_OPIVX_TRANS(vmulhu_vx, opivx_check) -GEN_OPIVX_TRANS(vmulhsu_vx, opivx_check) +GEN_OPIVX_TRANS(vmulh_vx, vmulh_vx_check) +GEN_OPIVX_TRANS(vmulhu_vx, vmulh_vx_check) +GEN_OPIVX_TRANS(vmulhsu_vx, vmulh_vx_check) /* Vector Integer Divide Instructions */ GEN_OPIVV_TRANS(vdivu_vv, opivv_check) From patchwork Fri Jan 21 05:57:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719358 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6B138C433FE for ; Fri, 21 Jan 2022 07:19:36 +0000 (UTC) Received: from localhost ([::1]:34140 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoCt-0001gu-7s for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:19:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50752) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyV-00070g-N5 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:40 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyG-0004AK-S4 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744824; x=1674280824; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WZAO9+Rph4XXyW1b/BH9rX/CC+XJHAVd/x9sAayd6Ao=; b=Jl/amEe44NLU2jXgnxMqvRHZuLs7wbkrga6hmslisWyUH86DMiWHQMsZ MnBzzjTsw93852YcXXEcQSCWr10NMJF5OUs6x4ZXtbjtIXry7hFdu/TXG MMmIHQBLmG9BPSwb9DnbClXCOkj4wBhYXb+QSBsrboVmQs45p7ULrHZUU JY2iDjVMjYuUS/xAp6hkjDvlN4fY2bLf/mS3SdknqoC/wkLQiDh81exkD MzFZ4EfnZ+zw4smqe8sit7hCrj2ESyUwxqdy70PsIz7k1I6eAsVBlneS3 Bz9BRyGSDxZDBTwNiJwP7681Bky2ZHW9FBJw/qfmSymLnFVGk2gREjK2w w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082928" 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; 21 Jan 2022 14:00:23 +0800 IronPort-SDR: +FP7zSKcDYGsJjSkIBNYqg5NRWcsOA4qsVXuS2HHIK41CKXwgtgkIyibamLAa5KQyhP/YSk91x R7gzRk0/6EAsgbYY/r66/dXKueBKizEsjPJuljnGkg4FpZ0gKRKdbyQUrMSC7uOhXzT/qye+a4 JAfWzC/3KbQZdKjVriRb/7wp8116ciQIoBeSCBzPBRDNleJiI3OJLvb6IC57YrXm8JGJTa8nP9 qw463Ff2dX7zHaQG1CFMdtdyp+mwXC1f9HeQOrkVJxIoRYHeTLaDuuPrtSoatSmz1rEV9LvVma qyddU2tIr9OgqLHf6FILQ4O1 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:51 -0800 IronPort-SDR: yAYty4qT3Hlr9rkYOMX5rr/BNTWpTqM/e+EsC+yDqwseb6qWiTJClrEeFasSbmy5ul4NqpVeV7 VnvU2HNXTLn7MTzH1ME41273Fz5r3OTnF4RN5ng//IDSQh+t8WtCiDElBmkD9Dn/K8+h1fFJG6 U6AwWbhWHM/ts5J1BgQD/qv0fWBv9EFv+jRGxlFPOv29ZFk0YHKqLkAb6COgA9xNwuGdtMKdAd RN1by9FfytYPhqPLTDX+ZRpeH1zGGubVe7AEWyL1v7xjt7lQ9nk47NtvJR+zzBYSn3bWzvYFqN rgk= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:23 -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 4Jg7yb2SPYz1SVnx for ; Thu, 20 Jan 2022 22:00:23 -0800 (PST) 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=1642744822; x=1645336823; bh=WZAO9+Rph4XXyW1b/B H9rX/CC+XJHAVd/x9sAayd6Ao=; b=p7eCC1OF/QpkEcHR9BxTabUguBkGESdXCE wM1iDR4pYU/tMB7fPQ62SLBrBumCj10v8lPlOsIeDbmGTuIHGVsnIjYelxInMuSq w7VxF3DlobInK0aDK4CUyrJbkbO3LZ6TnV4VOLGFGu4bq1+uGzyR59KylF8yEErp XaOO21tbq3f+AjMmFJMKJ/AzBe+BMXoXQcrtak+cQE5q1EU32fli2z8Ebh1rZYCr 3VosKY44myAmhaq7TDwLnuaFuUaJ686JLnetqdqpiMkMzsZwEuoYXweNRvkLq+83 Z3GNzl3LBgFmc148f4fRAtGhVvPqv6jSUCN0c245XnxDNgBa5ZnA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 U3USLOr3t3gD for ; Thu, 20 Jan 2022 22:00:22 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yX1JgWz1RvlN; Thu, 20 Jan 2022 22:00:19 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 23/61] target/riscv: rvv-1.0: Add Zve64f support for vsmul.vv and vsmul.vx insns Date: Fri, 21 Jan 2022 15:57:52 +1000 Message-Id: <20220121055830.3164408-24-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang All Zve* extensions support all vector fixed-point arithmetic instructions, except that vsmul.vv and vsmul.vx are not supported for EEW=64 in Zve64*. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-6-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 27 +++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index e64dddda28..8e493b7933 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2123,8 +2123,31 @@ GEN_OPIVX_TRANS(vasub_vx, opivx_check) GEN_OPIVX_TRANS(vasubu_vx, opivx_check) /* Vector Single-Width Fractional Multiply with Rounding and Saturation */ -GEN_OPIVV_TRANS(vsmul_vv, opivv_check) -GEN_OPIVX_TRANS(vsmul_vx, opivx_check) + +static bool vsmul_vv_check(DisasContext *s, arg_rmrr *a) +{ + /* + * All Zve* extensions support all vector fixed-point arithmetic + * instructions, except that vsmul.vv and vsmul.vx are not supported + * for EEW=64 in Zve64*. (Section 18.2) + */ + return opivv_check(s, a) && + (!has_ext(s, RVV) && s->ext_zve64f ? s->sew != MO_64 : true); +} + +static bool vsmul_vx_check(DisasContext *s, arg_rmrr *a) +{ + /* + * All Zve* extensions support all vector fixed-point arithmetic + * instructions, except that vsmul.vv and vsmul.vx are not supported + * for EEW=64 in Zve64*. (Section 18.2) + */ + return opivx_check(s, a) && + (!has_ext(s, RVV) && s->ext_zve64f ? s->sew != MO_64 : true); +} + +GEN_OPIVV_TRANS(vsmul_vv, vsmul_vv_check) +GEN_OPIVX_TRANS(vsmul_vx, vsmul_vx_check) /* Vector Single-Width Scaling Shift Instructions */ GEN_OPIVV_TRANS(vssrl_vv, opivv_check) From patchwork Fri Jan 21 05:57:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719346 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81160C433EF for ; Fri, 21 Jan 2022 07:11:39 +0000 (UTC) Received: from localhost ([::1]:56796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAo56-00064L-OH for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:11:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50800) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyW-00070z-55 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:40 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyO-0004KU-4X for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744832; x=1674280832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=42qYG+O+e07DbEON443WWzoyeLU+jrt85FhS5UtrJ0I=; b=qP3bxoMJxIs+iZFpDVhzkOvS3Mh9lF+yJ5vXbNDJ8XvF0gkf/sbBdwOT qDXAwyFrbksdW2A/WX4KvSaTA52HSnY4CflMvcjJLtBA9wXFS02cqGVOQ nDhCsDgdg3ddFWIe5L0gqoAYb+65eJOePweepH7fb1ugV9kQAC8xePsaf 3gNcfxX8iRes2TYNzN9nL2RjSxOnwpWPnSMvH2TLg3BOqlGfN2OnwUvIb N2T1siE6vxbZ2d9DwDQ6TKbYjV5a6n5/viK8eAhYY92rbaQOCiVPUvgJ8 0KlTo2bd6oIRBWEpsfSPY5tpgD9cQwOEH73u95t1XBnfvf8oubH73dCwk Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082934" 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; 21 Jan 2022 14:00:27 +0800 IronPort-SDR: 7pETJHStUEmvD4oULU06ea1m249hhm1RITnziO5NaO5WrpkDy0RSCvds9KItG9iqjiA2SeB4qy 23UjBwHrDYbdRwZ+DXM5tvfXRSBSdOWxuDPiWp8Si05WAjf3Kmovz2+bn8UPwGZO9s+PhQEFxS KayO5j4Pn4xQ8RHiLnqUCMQzk0J0WXtzI7dVGTkoP9gyYtTAQxn2VI+Z+gKUPpwvN3poho5Cn2 ZiYjY2rI38tyrnePkCvY8l9I5Epfv3+pfs6dy4jhzRDJ+2LiFvIDprUD2fDsx8wQbzhu6p4DpQ QHQO5r17ODBl6tMnnZGt8abs Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:54 -0800 IronPort-SDR: DORH32hC4YO8VO8eYMugF8QSXVd0pnTDELw62rjNvMsRoVlSUS+2zVKtGZwPEFNg+hflDexr8F oizuGQCiO1+flTaItj0AZo5u7o9mnV93udbNJOE0K1tGXX8MF2vLHLPE7rVGoCoOmlbjPGAacT rf8wAi465oDvW9Yp4B7aw4e1Uiw7lO8OGdABamsO9Kw/FJvyubo308W767YjIA1B40rffZVdBW Q/3qbUFSg/mNDIwX38XNjaICW7i1Uy2adgbBVv0sFWfI9/LjqzqJB8aMp4DnimQpFZdwIkjcnA F+s= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:27 -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 4Jg7yf6Wryz1SVny for ; Thu, 20 Jan 2022 22:00:26 -0800 (PST) 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=1642744826; x=1645336827; bh=42qYG+O+e07DbEON44 3WWzoyeLU+jrt85FhS5UtrJ0I=; b=Tw/p3KQJBf/7c1DvYuCm3HsKjgtyafj9cn fSQEsxbXTS2Qcdo4Q+edIXYHaAJcR+ks2lBDlxc1jz2fluvJF3IsNotFYiP8KMTt kF5EGlkp0vI4VcvXYkaBPxCUfmquROwYKWkxLqUqzInsTQ79TVyNHQHvwZd5yDva pVzRLAdt9HM2Z6EAhzWTKsbxEwbn7v6OSc/7/F8wufHuig5T8xNzZIQQrWH0nt4d 4oibSlSbLASXuBRYmsXR66UFP2IXsTqF2CuzKT+7/fwwwvZhGiac/IEMsFA4Rz+H Qg80b7WMf2Njt3HM2C50UeTbdA0j8+m8vbWCU2qvXSxvOHvAzVPQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 V3GDvPvZ1O2r for ; Thu, 20 Jan 2022 22:00:26 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yb60b7z1RvlN; Thu, 20 Jan 2022 22:00:23 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 24/61] target/riscv: rvv-1.0: Add Zve64f support for scalar fp insns Date: Fri, 21 Jan 2022 15:57:53 +1000 Message-Id: <20220121055830.3164408-25-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Zve64f extension requires the scalar processor to implement the F extension and implement all vector floating-point instructions for floating-point operands with EEW=32 (i.e., no widening floating-point operations). Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-7-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 41 +++++++++++++++++++------ 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 8e493b7933..56246a5d88 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -66,6 +66,17 @@ static bool require_scale_rvf(DisasContext *s) } } +static bool require_zve64f(DisasContext *s) +{ + /* RVV + Zve64f = RVV. */ + if (has_ext(s, RVV)) { + return true; + } + + /* Zve64f doesn't support FP64. (Section 18.2) */ + return s->ext_zve64f ? s->sew <= MO_32 : true; +} + /* Destination vector register group cannot overlap source mask register. */ static bool require_vm(int vm, int vd) { @@ -2206,7 +2217,8 @@ static bool opfvv_check(DisasContext *s, arg_rmrr *a) return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_sss(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_sss(s, a->rd, a->rs1, a->rs2, a->vm) && + require_zve64f(s); } /* OPFVV without GVEC IR */ @@ -2286,7 +2298,8 @@ static bool opfvf_check(DisasContext *s, arg_rmrr *a) return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_ss(s, a->rd, a->rs2, a->vm); + vext_check_ss(s, a->rd, a->rs2, a->vm) && + require_zve64f(s); } /* OPFVF without GVEC IR */ @@ -2503,7 +2516,8 @@ static bool opfv_check(DisasContext *s, arg_rmr *a) require_rvf(s) && vext_check_isa_ill(s) && /* OPFV instructions ignore vs1 check */ - vext_check_ss(s, a->rd, a->rs2, a->vm); + vext_check_ss(s, a->rd, a->rs2, a->vm) && + require_zve64f(s); } static bool do_opfv(DisasContext *s, arg_rmr *a, @@ -2568,7 +2582,8 @@ static bool opfvv_cmp_check(DisasContext *s, arg_rmrr *a) return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_mss(s, a->rd, a->rs1, a->rs2); + vext_check_mss(s, a->rd, a->rs1, a->rs2) && + require_zve64f(s); } GEN_OPFVV_TRANS(vmfeq_vv, opfvv_cmp_check) @@ -2581,7 +2596,8 @@ static bool opfvf_cmp_check(DisasContext *s, arg_rmrr *a) return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_ms(s, a->rd, a->rs2); + vext_check_ms(s, a->rd, a->rs2) && + require_zve64f(s); } GEN_OPFVF_TRANS(vmfeq_vf, opfvf_cmp_check) @@ -2602,7 +2618,8 @@ static bool trans_vfmv_v_f(DisasContext *s, arg_vfmv_v_f *a) if (require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - require_align(a->rd, s->lmul)) { + require_align(a->rd, s->lmul) && + require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); TCGv_i64 t1; @@ -3328,7 +3345,8 @@ static bool trans_vfmv_f_s(DisasContext *s, arg_vfmv_f_s *a) { if (require_rvv(s) && require_rvf(s) && - vext_check_isa_ill(s)) { + vext_check_isa_ill(s) && + require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); unsigned int ofs = (8 << s->sew); @@ -3354,7 +3372,8 @@ static bool trans_vfmv_s_f(DisasContext *s, arg_vfmv_s_f *a) { if (require_rvv(s) && require_rvf(s) && - vext_check_isa_ill(s)) { + vext_check_isa_ill(s) && + require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); /* The instructions ignore LMUL and vector register group. */ @@ -3405,13 +3424,15 @@ GEN_OPIVI_TRANS(vslidedown_vi, IMM_ZX, vslidedown_vx, slidedown_check) static bool fslideup_check(DisasContext *s, arg_rmrr *a) { return slideup_check(s, a) && - require_rvf(s); + require_rvf(s) && + require_zve64f(s); } static bool fslidedown_check(DisasContext *s, arg_rmrr *a) { return slidedown_check(s, a) && - require_rvf(s); + require_rvf(s) && + require_zve64f(s); } GEN_OPFVF_TRANS(vfslide1up_vf, fslideup_check) From patchwork Fri Jan 21 05:57:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719370 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1247EC433EF for ; Fri, 21 Jan 2022 07:25:57 +0000 (UTC) Received: from localhost ([::1]:37402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoJ1-00046d-Ca for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:25:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50798) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyW-00070y-3F for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:40 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyO-0004B6-O8 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744832; x=1674280832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xp1VSiEe9HFt0e0WXbOseF5xgToeCEmetPZiqBjE/dU=; b=EcURYpVxvLyI00qSFBn+nB+3rroT/vV7kSto2fzAAjsgPXUtfBBGdCuP OujY89saVNQEe+foi33rSKRfcLKm8mFUhjH/uxIrsp8c+nRSuUUbIoQqV zfaeHtqdu8ghDUI4QQTf0BInRkPjGluS1DS0TeTgsRYFO6VzV8Y5H+OVY xTlR1DtHgYhhMhgfoN8BltG/hxlN+MCq7evAyguwbu5tWJlqL8ZkVQENC RdKfFp1TulS+uRguq7mAfK1HpndKd+x31Yei0ZmwvZQoEC1r9yyHnpBnA uFptq2pe8UaZDOM3xP88iPz6gU56nVR2ww2F/k2Js3aucHdfPahV3j4MM A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082942" 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; 21 Jan 2022 14:00:30 +0800 IronPort-SDR: 7fBV2tcoecDVDm/Slt8K2hEE+uNIWh8OCpAogNcHYRqmmc097tS+1ukpd3w/bfhoZjOV9cWthw J4b5u6Ny7f0/lw1cpkRVIfx9sMkKaC+29p2I4nAK5TMc9OfMtiV3TacDuTAE5KvvNqXGDcyP51 hAMFfoi6wXhSOfnNm9dnblv5SQZ67iSqVwl4kx4pVRn5unLeDOenVTATRQ3i+eXFJBqiEl23OI SJCXySVq6634bEqkGkssVKXvsSfdIuclVHPNj2zj5BGQSbS2EKvZsonR9OOQSTCFV3T5YR3zus XsMA7X7B9KKRls18UMVBPiHU Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:33:58 -0800 IronPort-SDR: mAUNXHgWQjXHVlYdcppKfsubIGS31sMDOoJsj99HhK9HveDupUAaZ4eKEpAHEwkoTty0RHHW1v gVh2o4j2Sph+tl7HyV/wY/70ZNc6AwD959uA1Hk4jF0bMBp+wpsaI6XMEXcH+o5wspmijJMfcG JjA+k3SbGD8wgQvnGnkt8n+J64c7c22DaIWjOG94NwIe67K2zoIHWlHcSmcOilHg5SmRURKoM7 Q1rsdWVhec5kYdYZT/uw2vtn5p2xJkBkVpYcDVsYpbsFQSBFJWSDoaq5NAbb7N5oJtXxptPkV2 nn0= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:30 -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 4Jg7yk2hsdz1SHwl for ; Thu, 20 Jan 2022 22:00:30 -0800 (PST) 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=1642744830; x=1645336831; bh=xp1VSiEe9HFt0e0WXb OseF5xgToeCEmetPZiqBjE/dU=; b=VIyktQx/n9FDmxVvp8atxwcavXNDZgwS1v iqnDWsSOrWM6Ys1UoUK5ktb+4FzohdwvRGZIIHKssuYzO2vVRoLRJToxs1NJPhiJ 7Q16SwDniTGRmwbnVmQAsc99jK6Lj1Mx68FRslTTpp2IO2pknY1cKewWAVrqL/fl cpuiCHP8RjPf0YiUzAW5NQ7EPNUiVJLrS11N6SKR1V7y5wVu1fvBj+AhUQsY1F6O D1OEpb3R69fw2KtlIzNELhG82kwg6fMO4nowKXa04m7K9dQFUhK6nlW5zfsq83Bl xZtOC18+Pe8Yb/aHpMa5JPXnapd2cJrT/DPo5TyaH1Ei1AzkEeWQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 nLH7ofenGU3m for ; Thu, 20 Jan 2022 22:00:30 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yg3c78z1RvlN; Thu, 20 Jan 2022 22:00:26 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 25/61] target/riscv: rvv-1.0: Add Zve64f support for single-width fp reduction insns Date: Fri, 21 Jan 2022 15:57:54 +1000 Message-Id: <20220121055830.3164408-26-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector single-width floating-point reduction operations for EEW=32 are supported for Zve64f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-8-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 56246a5d88..08f25e3ce4 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2937,7 +2937,8 @@ GEN_OPIVV_WIDEN_TRANS(vwredsumu_vs, reduction_widen_check) static bool freduction_check(DisasContext *s, arg_rmrr *a) { return reduction_check(s, a) && - require_rvf(s); + require_rvf(s) && + require_zve64f(s); } GEN_OPFVV_TRANS(vfredsum_vs, freduction_check) From patchwork Fri Jan 21 05:57:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719383 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 542FBC433F5 for ; Fri, 21 Jan 2022 07:34:16 +0000 (UTC) Received: from localhost ([::1]:42896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoR4-000836-66 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:34:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyg-0007B2-QU for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:51 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyW-0004AK-EG for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744840; x=1674280840; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lO8ob1XoTb7PGEauculY+Ka22EkYgGZLbuFHUiMExkM=; b=QXa1gUdIgLiQdRzaUY+EFoBNWFiG3WMQjlg3jR3fMe97MUn5wO6AeRV8 79B22e9OxWn7+B01WSjzWXejg+fnVQIJDZKEaPArCuOSU6qj9J2bkBpCx 4mKFQ0scaBSNRA6a9Mxt/lYfUAnw87olOIl9lwxwGFzAIRdpAm6qtouOi +2OEHFok1fEGSlMg6ls/otpoaKRarltmXJX4SfjrzmhEDAKg2dUPB7Pu2 zfiEX5pi67YFRBw4ogAmf2hLOa2MEkWoDJQWFGrPJvc9Zz1Rw0KaDeMdN pXWpqjW2QOwOogLDlj3U4y9bVZD9Lwl8nMM9iNxIiz0QAzlooa6aUsdge w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082951" 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; 21 Jan 2022 14:00:34 +0800 IronPort-SDR: Z+befMP+gMN3VUQNSMMbEz7/s3fdJfnVSV1bMyzCcvoNflESnpUe52Vrg39gcFbLeaN263sta/ ZAYy6FXw0dEx2fbsHcqIFaV6P7ycWTk6pNvd3Oh+wZQLNx5A7V9fEDSD3DN+Q4IshBjazH5E2p HWCc5r8t4xYUMhifNvsLVM4IA+Yg+4ts152tgqx88MI1tnvhk1oYoCqx6ScVdq/3LXEXJkLxP1 ihw2nlj28863sb4dVmNXmfSY4+1APh6NnswtgFAeFHIcD/1t9BrYcc5LA1eol6R5/9FnDHzNMh vS9woq+1CPtYsTiCqem0PU6E Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:01 -0800 IronPort-SDR: g2b8QZ8JuxqD04QIITgcDSaQCLEbOaZWG4ouyzTpHugq2BEueTifj4uREj6I38h8PYopuCXPPc gIOnI2hyzcz+YgGyO5UvyOK7nP91fe6qaLhzjrMnPIkfPTaSKQRpiJY/inN4LJcKb7RPMiD8tG QBvgqQyHh7Tp6nEv90/tpmtnCPY6btkg7IhrzEwesgtiGPDJdAm18a/E2aeLmnbirQj0KF6Q0Q gOqD5ITopOcg9pikrzto86nfz5xoi67hy8y5FjLOm66iPZdLKcAdVqaNQolm2vjvDX9+0p9ASI F5M= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00: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 4Jg7yp0GCSz1SVny for ; Thu, 20 Jan 2022 22:00:34 -0800 (PST) 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=1642744833; x=1645336834; bh=lO8ob1XoTb7PGEaucu lY+Ka22EkYgGZLbuFHUiMExkM=; b=Exx0Feb5mxR89mRFjDQK+IGyiwos6ATh1c 3gf1mFItLOuAicMorvXBJeDbiUYrU2v3pCjyIFMWfNF82SG/F3HelykkGucOnwEa 9G2gNticm0bX3U6/me5PgHx2Qad6SlUE0cz4daOXXBeZKZ4DqRV/EkTnAxN7PcDt X8uxo5kSDdSvLKD+tPiPeKv0sFqoNMEOEcTItwyKE3oB1v5SFowxDAM7RKQfeiQW PVOs0gAkTb7ftli1+C09fPLyGZ3Yv4PygzKU/f33oEA59DiGM1waN3hoMv97Ckv1 7sls7L8Abie2t5QSZEfZuwPDtoCJN2QJTd3EK/pm9RfxjnOCLswg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 H0VOB2NuLuey for ; Thu, 20 Jan 2022 22:00:33 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yk6XGZz1RvlN; Thu, 20 Jan 2022 22:00:30 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 26/61] target/riscv: rvv-1.0: Add Zve64f support for widening type-convert insns Date: Fri, 21 Jan 2022 15:57:55 +1000 Message-Id: <20220121055830.3164408-27-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector widening conversion instructions are provided to and from all supported integer EEWs for Zve64f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-9-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 32 +++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 08f25e3ce4..58f12366dd 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -77,6 +77,17 @@ static bool require_zve64f(DisasContext *s) return s->ext_zve64f ? s->sew <= MO_32 : true; } +static bool require_scale_zve64f(DisasContext *s) +{ + /* RVV + Zve64f = RVV. */ + if (has_ext(s, RVV)) { + return true; + } + + /* Zve64f doesn't support FP64. (Section 18.2) */ + return s->ext_zve64f ? s->sew <= MO_16 : true; +} + /* Destination vector register group cannot overlap source mask register. */ static bool require_vm(int vm, int vd) { @@ -2333,7 +2344,8 @@ static bool opfvv_widen_check(DisasContext *s, arg_rmrr *a) require_scale_rvf(s) && (s->sew != MO_8) && vext_check_isa_ill(s) && - vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + require_scale_zve64f(s); } /* OPFVV with WIDEN */ @@ -2372,7 +2384,8 @@ static bool opfvf_widen_check(DisasContext *s, arg_rmrr *a) require_scale_rvf(s) && (s->sew != MO_8) && vext_check_isa_ill(s) && - vext_check_ds(s, a->rd, a->rs2, a->vm); + vext_check_ds(s, a->rd, a->rs2, a->vm) && + require_scale_zve64f(s); } /* OPFVF with WIDEN */ @@ -2402,7 +2415,8 @@ static bool opfwv_widen_check(DisasContext *s, arg_rmrr *a) require_scale_rvf(s) && (s->sew != MO_8) && vext_check_isa_ill(s) && - vext_check_dds(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_dds(s, a->rd, a->rs1, a->rs2, a->vm) && + require_scale_zve64f(s); } /* WIDEN OPFVV with WIDEN */ @@ -2441,7 +2455,8 @@ static bool opfwf_widen_check(DisasContext *s, arg_rmrr *a) require_scale_rvf(s) && (s->sew != MO_8) && vext_check_isa_ill(s) && - vext_check_dd(s, a->rd, a->rs2, a->vm); + vext_check_dd(s, a->rd, a->rs2, a->vm) && + require_scale_zve64f(s); } /* WIDEN OPFVF with WIDEN */ @@ -2700,14 +2715,16 @@ static bool opfv_widen_check(DisasContext *s, arg_rmr *a) static bool opxfv_widen_check(DisasContext *s, arg_rmr *a) { return opfv_widen_check(s, a) && - require_rvf(s); + require_rvf(s) && + require_zve64f(s); } static bool opffv_widen_check(DisasContext *s, arg_rmr *a) { return opfv_widen_check(s, a) && require_scale_rvf(s) && - (s->sew != MO_8); + (s->sew != MO_8) && + require_scale_zve64f(s); } #define GEN_OPFV_WIDEN_TRANS(NAME, CHECK, HELPER, FRM) \ @@ -2758,7 +2775,8 @@ static bool opfxv_widen_check(DisasContext *s, arg_rmr *a) require_scale_rvf(s) && vext_check_isa_ill(s) && /* OPFV widening instructions ignore vs1 check */ - vext_check_ds(s, a->rd, a->rs2, a->vm); + vext_check_ds(s, a->rd, a->rs2, a->vm) && + require_scale_zve64f(s); } #define GEN_OPFXV_WIDEN_TRANS(NAME) \ From patchwork Fri Jan 21 05:57:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719385 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 52C7AC433EF for ; Fri, 21 Jan 2022 07:42:15 +0000 (UTC) Received: from localhost ([::1]:46396 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoYo-0002SD-1j for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:42:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzD-0007DB-AL for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:01:28 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyX-0004KU-1U for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744841; x=1674280841; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=u+Bp9ae/P3qsRq0gAJWyKt9O86uLA0K1OEuBNZJ6N+I=; b=oJeuv0ofKxkO3dxGbvg2Qg25PftRXrSg5wd631As/5K6GobfytFUkDm3 kbY3dEQ+nZVYFdXO+NhRSfkRAl6bFS/GBzbvQQSKz3WyaV56D0sd2huiN LTOALAf5uenDgAn6gqQdrqAkw1uCpHoPNitmWW/0SO27PT086gIYxQqCa PpwFvhSEMVwnzP8/DaiLqibNWyOS0zsn/ODYXewiDZeXrrNDJBMxYu/Mm LGbnDi3HEPGCuwRXQGiuh2XF0pacU/As37en/+boTy1LQLI3UNrIdSZxy uzKm3zUTtV/I+n1zuH1wqpddu5MciR5hWVrvje/79dEOLzFdp2RtnzDF9 A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082957" 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; 21 Jan 2022 14:00:38 +0800 IronPort-SDR: lT6GELsYTNu0Mp3qqVgGkdxh1bA9vuUcs1freJMZlOF38f+V0tQVr+nWZHOGiXlslNrN2hWisH OZTAizWcjsWVxDCbs71RFfZSYllTU4eV+4ShSKq13RvebWG2xmgUQyq8XoUCv7g5Qdcd5cI9JL KmevEOaxFsD3adK2EMh0GNxQStgQmLxdz+noG/o5jus/oRtzROgk73zPHKyYPg2wz3JYRjDFN7 ZPpCvgyNx0WQeJAjTWQS+2+3zcT6CFKDzzZn3MB0RrG/pltNM8lietLlczAfCFoqu0tTUFnnT+ s49boB0bFYYMwV4ZXuPaPAmK Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:05 -0800 IronPort-SDR: 7H4zY/Nk59QywU0Mw0IP3qVfFSXSsBV3BxTDvlkurEQrrpsKGtgXTlkKdWHi51wQlKqPGUIhXO J7wA8fTkrQP3tGuU769SCgcPcmoF2UlAfcoG1lHxWEWsBC+vZGLvpR8Q7JiNP7GO41JoYNmsHP 94uj33WtykF8I+WWl30PtmbeIb2fe0yvPzRJ5uZKmjU/EHOJNbSzcGBWSWZRjgY7s1aDqthWay RpeqPupHQgnyqd7PGpGWFt4cOR0ZIJW8/eTw0oxnay0qW0hYB0eow8LlWBts4pduQHtjwS0Pcd Csg= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:37 -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 4Jg7ys5DpLz1SVny for ; Thu, 20 Jan 2022 22:00:37 -0800 (PST) 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=1642744837; x=1645336838; bh=u+Bp9ae/P3qsRq0gAJ WyKt9O86uLA0K1OEuBNZJ6N+I=; b=rU4hVYq7EHMvuB2DURAmOk2aSINLM2fUH/ vG6yTFqcf7UDWN4qN+okO/p5EnM6mQnTEuG3Lnda3TUGI+vA7JZyRJE597/FYgma qwL0jGRcw4D+BzwZys3mZPk7SlGoGeKk56EWQT/lbtKrC+3N8LNUUQeDNz/PfUbD 3Iv5b1YYCcc9kgGLv6/CJZIQ9kVbrie9bcOk9yqsfJDrrNxhr1fRMXD00/U4OKrV 5kwGz57O02C/fGpdBWzxbspxhlKGPQtdSMKFaRX8gwlivwpoULzLNehVLy1Zi5cE yvCheEFd8vX3UfhJZxMKjtZKWPNp3hb2BjsH+e67mEtxOv9vAJHA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 82Za8dwLqDJG for ; Thu, 20 Jan 2022 22:00:37 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yp3DkTz1RvlN; Thu, 20 Jan 2022 22:00:34 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 27/61] target/riscv: rvv-1.0: Add Zve64f support for narrowing type-convert insns Date: Fri, 21 Jan 2022 15:57:56 +1000 Message-Id: <20220121055830.3164408-28-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector narrowing conversion instructions are provided to and from all supported integer EEWs for Zve64f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-10-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 58f12366dd..9fa3862620 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2826,14 +2826,16 @@ static bool opfxv_narrow_check(DisasContext *s, arg_rmr *a) { return opfv_narrow_check(s, a) && require_rvf(s) && - (s->sew != MO_64); + (s->sew != MO_64) && + require_zve64f(s); } static bool opffv_narrow_check(DisasContext *s, arg_rmr *a) { return opfv_narrow_check(s, a) && require_scale_rvf(s) && - (s->sew != MO_8); + (s->sew != MO_8) && + require_scale_zve64f(s); } #define GEN_OPFV_NARROW_TRANS(NAME, CHECK, HELPER, FRM) \ @@ -2882,7 +2884,8 @@ static bool opxfv_narrow_check(DisasContext *s, arg_rmr *a) require_scale_rvf(s) && vext_check_isa_ill(s) && /* OPFV narrowing instructions ignore vs1 check */ - vext_check_sd(s, a->rd, a->rs2, a->vm); + vext_check_sd(s, a->rd, a->rs2, a->vm) && + require_scale_zve64f(s); } #define GEN_OPXFV_NARROW_TRANS(NAME, HELPER, FRM) \ From patchwork Fri Jan 21 05:57:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719335 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 59FEFC433F5 for ; Fri, 21 Jan 2022 06:35:03 +0000 (UTC) Received: from localhost ([::1]:39224 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnVm-0000zA-6T for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:35:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51676) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzB-0007D2-Sz for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:01:25 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyY-0004B6-KG for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:00:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744842; x=1674280842; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DrhOrJW4QfQO9qERTwhcBVkHdyWoi6iLY0zGY+r5t0A=; b=T6tcIMR1cyhnTXaR9E4io2/EY1+gc2JbgLuDFdwc565ACMCzazvvlcOQ d3IncYhWHQarUpVmV0KUnJz46+kqwio7PTy7hd1aFMEHgz3qfgIs+B0Ef nP4wexWA4aYz5XjVeoNBdtKsquJYcapTRKY8kEMZ7Lm6b74cIFcgVj5YY Tu8GbKk2CcsC30+M0qi1I7sOEs/JX0A4vL5Ug/pNEIB4IQlDXsZxbY5le PSfzOkrvb4sYWuovi3JX+2DEokW/hJbzSZk56f/aG6YS1h6GzH9r8JxOf WFZJGNPRRWeNjPpWhgKhlV99iPoXCkHVEeQn8HHDL5XKH8wxcKvjAdj0b g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082965" 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; 21 Jan 2022 14:00:41 +0800 IronPort-SDR: CqRlNPjYZZGpOJvFsMKfHn/o+sk9DQfYfhk+nINu6rY+S1+2dyIypVjGQSHiT8K1i2qLRqRAHl 8+dkUkEUrZaPBLU5MlbnMmGGEbfnneSYXkfj1/W533dNTuBrb2eyX7v7NcBBMMl+HuxV4fJ3c9 MHa2jVgV6XvduajkR9szobuHG8Y+WE1v3OjlT8hoK7oTH/vKwD9ky/oKpGrkXsUkdGeYdbmOli BCYQQrOk/rX4N+9HXFRqm8uugPejp+ElFCLa2FKSF76Gr0dYYlaFBaRrqnDKcf9MwPVLuOg1Ga tnw3aDeglp0xmrtIJnMXHp6L Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:08 -0800 IronPort-SDR: WmmJuca+rSiKYFvIPUz4MxQXW0RK4IaTG2cQdWg88i9FI4Op1VcVPDbYQ+slCQy3w6AaT2HO1f ybZfGWv1h3ACoRZU7yJ2SIp/LSxTqAsPwrz7Do/rm3WePQ7vAE0BvqEiVvdwErgcWAGIYej8rP tKrtO/Vd7v9+6Z3Me/r7WgoZVTOBMwjLGDFA0bs3Da+aKW8/i8pYgWU5AnaWMkh0oMKncUJhPU cVHsIMhLd1zy9295MFBX/EoYMogGj+7Edvo0BTWwOaEdOHCMfbLzMvHM2rpFzcvbtGtZqPzjkA m2w= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:41 -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 4Jg7yx0pJ5z1SVnx for ; Thu, 20 Jan 2022 22:00:41 -0800 (PST) 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=1642744840; x=1645336841; bh=DrhOrJW4QfQO9qERTw hcBVkHdyWoi6iLY0zGY+r5t0A=; b=NrdsyKYG3pYs4ZyLLeVM3lJ0VeqtZLW9Y8 AEBonR5HTfhtU4Dr8fe0gX8E/JFR1upI0IHXN4RUZkUtSK3LiEa90TCvRUKj0pEA ZO2vxasKLYbhPYrraUshdIq2EE35fwdoKVFIMHS7rwgDr+LK9Ud+KhAslppMgI7h YOaCv0/j7JSF7a70+UVLWOfT4e1/lHZBH7OHwTNtHuAK6DpBOVYNIeiZnKedUkcW TDVvHqCwdvbpwpnJVsUc9HXqd9baSEqxqHN3dlOn0Fbp5hbTYap2Z4gVt3m3chgC XXDfgsKEXhnzGEwe8PGAl4ncfMzIZHGVxXHQFPVnlFA9a/NmzzTw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 Y9jD3cSrT2HI for ; Thu, 20 Jan 2022 22:00:40 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yt1dTlz1RvlN; Thu, 20 Jan 2022 22:00:37 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 28/61] target/riscv: rvv-1.0: Allow Zve64f extension to be turned on Date: Fri, 21 Jan 2022 15:57:57 +1000 Message-Id: <20220121055830.3164408-29-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-11-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index cdb893d601..4f3d733db4 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -688,6 +688,7 @@ static Property riscv_cpu_properties[] = { DEFINE_PROP_BOOL("Zicsr", RISCVCPU, cfg.ext_icsr, true), DEFINE_PROP_BOOL("Zfh", RISCVCPU, cfg.ext_zfh, false), DEFINE_PROP_BOOL("Zfhmin", RISCVCPU, cfg.ext_zfhmin, false), + DEFINE_PROP_BOOL("Zve64f", RISCVCPU, cfg.ext_zve64f, false), DEFINE_PROP_BOOL("mmu", RISCVCPU, cfg.mmu, true), DEFINE_PROP_BOOL("pmp", RISCVCPU, cfg.pmp, true), From patchwork Fri Jan 21 05:57:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719369 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 87233C433F5 for ; Fri, 21 Jan 2022 07:25:54 +0000 (UTC) Received: from localhost ([::1]:37364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoIz-00045O-EB for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:25:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51800) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzH-0007Dc-Ut for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:01:28 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmyx-0004AK-Sz for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:01:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744867; x=1674280867; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ggoBLKSLTPQzTdQI6Vw7EvyAhdqKFm3uWOomLdg+1XY=; b=nveKBwxQKvnttAShaIQnA4u9j4M596fEow9LEH2xzbjJIA1dc8EwSywQ gCRhxRGEPkZpET73ppEdNU/wwZ7la01HZLQIKWTcEhlQVJTM2qfJSKQaK 4Fk48IW/NzeUpYY2HI6vMHqFlYV7RUb4RLvavAaqTLAtqZ82g92mzd0as 9EnxdQ9XPm8osVK7a0+URdVBOpT/4dXweDwB5Nk/2NF8YUy/xM3+DnODO or/vjVKv8PP0lABcvDV6wVBJ8BCM5NQw8Gbkc7pQMuFIe7PEeOGjEgTiE peVOE6AIW4HoTZMW7IESLbDG31II84vsZheigXJFIQZmQK/4V7tnedk5y A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082969" 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; 21 Jan 2022 14:00:45 +0800 IronPort-SDR: neP0X3XEt1TYKRRiCGM3Uzivqoo8toUwaCmOavPIu//pEOaV+SJcNcpvIjt2n61ebXsEzrvEam 4PepDr6Ga2KAjRWDWpl7dyZryjmxNENK3DwYxtuKRcYA8005cWKw5cWke8rL0bJodhYPuKZ8J5 EplWDzTVYwYjjy4GFrtP8VCIQKsKFyNERG+/Jo6Q/Xmx854XDCZX4h4tGsm8Ii0hWLdGcJQ5xn hrZrFda/nwwMnxvYw0nUlhRKSl0Q5BEVYTil+Ejk8QV5NcG13WyV5BAffkQ+RmqTe33Zwbw6Rj 5StkO1yUXRZdJT4RS+dL+JBp Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:12 -0800 IronPort-SDR: BigU+5iIDM+G0NBnVZ7EIrQA8ZzyghpZuXtPcBf5UVMDD8pI282wTIBpgpKCb+7N1E0N77dh0w 4qlm5efOsPKgyUxujnLF3qaZUvfFVVZwOVIkYt4YxrwCmTxf6ubS++qTO/93ish1Hvj3uc9Icl Yj0JTkNt1fpq7T/GqlawKfgsNkLpILeYRqARWNndPykJzhIfaSwR7mAGJ6GOmSMkD8H+UIQuRa D+H0iupYRaAQfqmWyXCvuMHO2ruoq9uxd4IrPnJ5SAyN2eljs7Cj7c4XwW8G/5tEu7hrldn1lG 4ro= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:45 -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 4Jg7z06c00z1Rwrw for ; Thu, 20 Jan 2022 22:00:44 -0800 (PST) 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=1642744844; x=1645336845; bh=ggoBLKSLTPQzTdQI6V w7EvyAhdqKFm3uWOomLdg+1XY=; b=PDEOmfZPOC5wW/eoLfCTOC3uzccXxWK0we iPK2SNod2z+2CAFUomTxR/Y0Jmb8PQwjEDe4zHVMrmjnC5lpe9ZcTB8iwa9NZ0Lr cr4+gHO9budiGosi5YaiFZv9az4a2F7vfjk7RPrrJzq2B+/5/OHuUy1XV1iAOjlx FJ6qTAu3Irmn/prII1Cn4MHCIaKES9dptE9Sz94UXumaaF0r1pLKpXA0OYYmL7x0 CJ5dKUf7Q8DOJixRbt2yyNbtYr/9KPLVmDuN8vLnBdmK6A9NFCrkhxkuyZy0J+zB C7LR6lqyKqiCjpcUMxBjGEEiGu3q2x73LDXALtu1DloET8CrvtZw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 6Hx1VD82xRwO for ; Thu, 20 Jan 2022 22:00:44 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7yx4V2Dz1RvlN; Thu, 20 Jan 2022 22:00:41 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 29/61] target/riscv: rvv-1.0: Add Zve32f extension into RISC-V Date: Fri, 21 Jan 2022 15:57:58 +1000 Message-Id: <20220121055830.3164408-30-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-12-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/cpu.c | 4 ++-- target/riscv/cpu_helper.c | 2 +- target/riscv/csr.c | 2 +- target/riscv/translate.c | 2 ++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 424bdcc7fa..03552f4aaa 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -340,6 +340,7 @@ struct RISCVCPU { bool ext_icsr; bool ext_zfh; bool ext_zfhmin; + bool ext_zve32f; bool ext_zve64f; char *priv_spec; diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 4f3d733db4..ef269378de 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -609,8 +609,8 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) } set_vext_version(env, vext_version); } - if (cpu->cfg.ext_zve64f && !cpu->cfg.ext_f) { - error_setg(errp, "Zve64f extension depends upon RVF."); + if ((cpu->cfg.ext_zve32f || cpu->cfg.ext_zve64f) && !cpu->cfg.ext_f) { + error_setg(errp, "Zve32f/Zve64f extension depends upon RVF."); return; } if (cpu->cfg.ext_j) { diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 43d498aae1..afee770951 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -77,7 +77,7 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, *pc = env->pc; *cs_base = 0; - if (riscv_has_ext(env, RVV) || cpu->cfg.ext_zve64f) { + if (riscv_has_ext(env, RVV) || cpu->cfg.ext_zve32f || cpu->cfg.ext_zve64f) { /* * If env->vl equals to VLMAX, we can use generic vector operation * expanders (GVEC) to accerlate the vector operations. diff --git a/target/riscv/csr.c b/target/riscv/csr.c index e9311cfd9d..a9e7ac903b 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -51,7 +51,7 @@ static RISCVException vs(CPURISCVState *env, int csrno) RISCVCPU *cpu = RISCV_CPU(cs); if (env->misa_ext & RVV || - cpu->cfg.ext_zve64f) { + cpu->cfg.ext_zve32f || cpu->cfg.ext_zve64f) { #if !defined(CONFIG_USER_ONLY) if (!env->debugger && !riscv_cpu_vector_enabled(env)) { return RISCV_EXCP_ILLEGAL_INST; diff --git a/target/riscv/translate.c b/target/riscv/translate.c index d3c0d44e2e..330904265e 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -79,6 +79,7 @@ typedef struct DisasContext { bool ext_ifencei; bool ext_zfh; bool ext_zfhmin; + bool ext_zve32f; bool ext_zve64f; bool hlsx; /* vector extension */ @@ -895,6 +896,7 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) ctx->ext_ifencei = cpu->cfg.ext_ifencei; ctx->ext_zfh = cpu->cfg.ext_zfh; ctx->ext_zfhmin = cpu->cfg.ext_zfhmin; + ctx->ext_zve32f = cpu->cfg.ext_zve32f; ctx->ext_zve64f = cpu->cfg.ext_zve64f; ctx->vlen = cpu->cfg.vlen; ctx->elen = cpu->cfg.elen; From patchwork Fri Jan 21 05:57:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719405 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 26734C433EF for ; Fri, 21 Jan 2022 07:48:49 +0000 (UTC) Received: from localhost ([::1]:51842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAof9-0006N3-Ur for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:48:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn02-0007UP-TT for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:17 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzo-0004KU-VR for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744921; x=1674280921; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=y+5u59Ng5aXuSfhsc6LCexaztL1VPg+1H4mkATgL70I=; b=q/MnNTnZ3xCABg/fttmT+XDOGLJB2DysU2hd+cezZlVCaG//qcJPYwEl KODDR92km3ecrBlWAH7toI+UDpx9gGVQrLF7SkhdiTCjajC6WQuDgea9i nj4nH1kzVn2AuVG6oeUssJObZAbo3k/UGURXCDhM5ilpozl6rLBCItllK FbQ3Fqw5xhCYwKNLWFSz6g/8dYx7Iiaf7iG3R0NOy6h5YQegO9Sgmwz9u 2fUrKxYK0oGqyee24NaguZIWBt9s2DPMJK/ivbM/a6RjDnuvAK31UPyK8 Bl2Tyyv20dgjFz2FC7ZG53A39w7hd9dt0MNuRXF7rAYbAcjNhVNocltbt w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082979" 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; 21 Jan 2022 14:00:48 +0800 IronPort-SDR: /DsQH5FLSVXndaqR4wiNF/1MNQG3OubVzSjJc3wHgGA0xs5HY+h5ffGQz1paKe5PdChYhIeSCa 7DDZTjjF7jrbGpsk5M4KWaaYScjsFwQdxPCH8h9pckGAPLX1iUdeENT/2nmjVBkE/X5tmAfLXn Yb1X+awIrFQr5bUZshWEwNAk72FNFUpu77aaOTrJGGDKfspxIBbbZpDya4T0Gfm0f2C98s5Fzc MerKp8jvq2WkosYhyYCUgHi1j5zYg8C71xHGj4iQPb1hptw0zViBLEQm43wIfZX/YZgCTI1JA1 Wsg4ZcWX6BRub3Qo2V+axIa7 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:16 -0800 IronPort-SDR: t87nX0gvKv+GcqQl90WG1pE5ow314/XKO25aE6PR+MjPwsdyG0YNpPc3pdMSU/n7YPUdXus3nS QHMxexmGOdgal0FCJp6aW6CP13L2zXTFKKO1hvNllud9V4er79yEw1KWXq6WwSqBd0Ct/ZFnNn klcrbD8EfNt8UmjpxHLszzSNSsvoP5c82nC8+SxISq+Yr7LjQXAfT5yoXmgG/npZSGo6stFYRU pFggrj/0fe7S1umW6drJukgCzfE4GD7YORZvCoLCmgzAXMtpoQd+FReqh9z5ZmymfgCbXWbDQs qsk= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:48 -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 4Jg7z420Vjz1SVnx for ; Thu, 20 Jan 2022 22:00:48 -0800 (PST) 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=1642744847; x=1645336848; bh=y+5u59Ng5aXuSfhsc6 LCexaztL1VPg+1H4mkATgL70I=; b=YYleumBf9wugwpPYzI6R7SZkXOLFXOlbyY INVUzf3FF9/gmEB0+s6xPDsbyrxmRbHFxaU7jzAOdm6C0Ek0aWFcAFx3XqkOvJ5G gS6jhXoyhakawjbr7Uqgfze91wghodxhixMSxd4rqYIjvjca+ZBqrmVxDPpFCMlI /J2jr2XkP6BkXLnMkTjAXI67L0ZrF5QCB/J/ns8cSeRTT3qm5EZFrK2lRHLXnAi+ 8oCFgHJWBUUdCWTlJiRaNgb822iA7DWoP7P6BnAwHEZC24E5BrXX+otUjM9Xh9SW CSDibG5WYJz3jpE7Jfpae2clEANdpd3ZfSWIkfG2U8dEF8iCaPbA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 hgrncKzzVwtE for ; Thu, 20 Jan 2022 22:00:47 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7z12ftmz1RvlN; Thu, 20 Jan 2022 22:00:44 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 30/61] target/riscv: rvv-1.0: Add Zve32f support for configuration insns Date: Fri, 21 Jan 2022 15:57:59 +1000 Message-Id: <20220121055830.3164408-31-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang All Zve* extensions support the vector configuration instructions. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-13-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 9fa3862620..fd6e74c232 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -152,7 +152,7 @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2) TCGv s1, dst; if (!require_rvv(s) || - !(has_ext(s, RVV) || s->ext_zve64f)) { + !(has_ext(s, RVV) || s->ext_zve32f || s->ext_zve64f)) { return false; } @@ -188,7 +188,7 @@ static bool do_vsetivli(DisasContext *s, int rd, TCGv s1, TCGv s2) TCGv dst; if (!require_rvv(s) || - !(has_ext(s, RVV) || s->ext_zve64f)) { + !(has_ext(s, RVV) || s->ext_zve32f || s->ext_zve64f)) { return false; } From patchwork Fri Jan 21 05:58:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719407 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2622BC433F5 for ; Fri, 21 Jan 2022 07:55:55 +0000 (UTC) Received: from localhost ([::1]:55154 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAom2-0000QM-Jp for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:55:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52782) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn02-0007UN-RA for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:17 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzp-0004B6-0n for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744921; x=1674280921; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HMRt8uENsuoDQXvLBUl+QT8dUT3GmmF6KkO/SuCa9Gw=; b=dJ0wqzo2M+96APW8r37KulkBTgLDhFRJk70qHTKtt0qMSpgL9Hb/0zDW YHZECUEmDidGinBAAtjBZEsPLWfFgQQTqyqVKY25MxkaQX6lz+6rIiphK ezUmICrjycdmMIjxr3wBOObvwj9aL8leJXwzFAX0ohuS9yKrXhq2dlqqK CWiqyoCPbNjVz1KUJRQyg5TdhOIUecPFJzPg5AjJYMNHXzRmaekc5NiQw r4N/ufF0eYO+PgQoWaYFa+N/fS9ZimPs96sASJSjorY/O75O1/iF/XImW N2eCa0ce6Ooe+7XZjdtFqc7eaDF9gteLtU6oleVDE2ag1Hl3Y/fDyHCS3 w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082988" 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; 21 Jan 2022 14:00:52 +0800 IronPort-SDR: rtSaZGcjF7LkDVTt1W6Yj3qo8jbBWUAlo2W4R5PwDS07gZGwtZ2u6Akl5Ac53tpwBxk04Swe+3 dU6G9PTOsE4OrmzG95dxKDBJb42DasuLsWOjG3hdccCqEHfCOAa6+/ngPQFFevXiqz9QZ87Xt2 mAt3uVJRU11minfZZapVN/s3WOU7VFVtfHiHuCs6zSYhZcNI3aP7W+cNITR/QXE0OK1nJNzOQ2 N/NF6cxGyS2pxbQBYApHYVLeYi1xYKrCQVLnbgZL6UXSuvEfzlonv/gmH4HRqoOskYvab7Lx6j Ym7yElrXT+r6kgll5B4iqX6l Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:19 -0800 IronPort-SDR: xdBeSUB2a0MegnYrg6dpnnR2VeL4LV04EV5U/0LgFV/CE55/U3STH7b8JFVvVG4fdQaLhc9FfD W6VgUy9z8p8Umn7sgUeuu3cYVb5f0Dz+7oF3B8kdoY26yn7qVq1Ohz8x66R51ioQkqgVQ/kn4C h8n5L62hzeXUYcftjjdT+F7d8Ewcf6sNdjO16xCzboEj+BjcYH2yRaAjTExjR3XuCdoOBjy5nQ QJYlvT8A8aWsd2K6f9U/gWfCmL41FURI+E15ChrygC/EVq3qklx6xkNwz7vGVETnPShWdEnhSb tFg= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:52 -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 4Jg7z81Gg7z1SVny for ; Thu, 20 Jan 2022 22:00:52 -0800 (PST) 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=1642744851; x=1645336852; bh=HMRt8uENsuoDQXvLBU l+QT8dUT3GmmF6KkO/SuCa9Gw=; b=JBOgcbcrj026HJbGLTPYnrLzoJMKhaFez1 qilVcKOiJk5AOxZcxzcMl++TJn97yTgoD8eY6y7PEO+iwHUpl0HVRHMi613QgGMJ w9gJCJ/dSzu1yS9BVfshRLW5m/el30Eh84RYz4L98xjVLDG/tuil9b9TXgjN7WCZ dFnNK8joOy2oQA1cr78oyn1Z8NiEKDlruUSsohMbz/rpBUVfq/g9L8Wbhi6J62hf QhXFb3v6PGDkQHxNKKa2zSbaJ2I24mRMXL8TsLdIv27X0tw3B4isBfk0PxOchg+P ZzBJ4VAjwTfTWXOWgCHHlWvrvGylwsiiqT3GsBzJk7Zxqq5q1SEw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 99pzHK4yNLpt for ; Thu, 20 Jan 2022 22:00:51 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7z50P6hz1RvlN; Thu, 20 Jan 2022 22:00:48 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 31/61] target/riscv: rvv-1.0: Add Zve32f support for scalar fp insns Date: Fri, 21 Jan 2022 15:58:00 +1000 Message-Id: <20220121055830.3164408-32-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Zve32f extension requires the scalar processor to implement the F extension and implement all vector floating-point instructions for floating-point operands with EEW=32 (i.e., no widening floating-point operations). Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-14-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index fd6e74c232..fe4ad5d008 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -66,6 +66,17 @@ static bool require_scale_rvf(DisasContext *s) } } +static bool require_zve32f(DisasContext *s) +{ + /* RVV + Zve32f = RVV. */ + if (has_ext(s, RVV)) { + return true; + } + + /* Zve32f doesn't support FP64. (Section 18.2) */ + return s->ext_zve32f ? s->sew <= MO_32 : true; +} + static bool require_zve64f(DisasContext *s) { /* RVV + Zve64f = RVV. */ @@ -2229,6 +2240,7 @@ static bool opfvv_check(DisasContext *s, arg_rmrr *a) require_rvf(s) && vext_check_isa_ill(s) && vext_check_sss(s, a->rd, a->rs1, a->rs2, a->vm) && + require_zve32f(s) && require_zve64f(s); } @@ -2310,6 +2322,7 @@ static bool opfvf_check(DisasContext *s, arg_rmrr *a) require_rvf(s) && vext_check_isa_ill(s) && vext_check_ss(s, a->rd, a->rs2, a->vm) && + require_zve32f(s) && require_zve64f(s); } @@ -2532,6 +2545,7 @@ static bool opfv_check(DisasContext *s, arg_rmr *a) vext_check_isa_ill(s) && /* OPFV instructions ignore vs1 check */ vext_check_ss(s, a->rd, a->rs2, a->vm) && + require_zve32f(s) && require_zve64f(s); } @@ -2598,6 +2612,7 @@ static bool opfvv_cmp_check(DisasContext *s, arg_rmrr *a) require_rvf(s) && vext_check_isa_ill(s) && vext_check_mss(s, a->rd, a->rs1, a->rs2) && + require_zve32f(s) && require_zve64f(s); } @@ -2612,6 +2627,7 @@ static bool opfvf_cmp_check(DisasContext *s, arg_rmrr *a) require_rvf(s) && vext_check_isa_ill(s) && vext_check_ms(s, a->rd, a->rs2) && + require_zve32f(s) && require_zve64f(s); } @@ -2634,6 +2650,7 @@ static bool trans_vfmv_v_f(DisasContext *s, arg_vfmv_v_f *a) require_rvf(s) && vext_check_isa_ill(s) && require_align(a->rd, s->lmul) && + require_zve32f(s) && require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); @@ -3368,6 +3385,7 @@ static bool trans_vfmv_f_s(DisasContext *s, arg_vfmv_f_s *a) if (require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && + require_zve32f(s) && require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); @@ -3395,6 +3413,7 @@ static bool trans_vfmv_s_f(DisasContext *s, arg_vfmv_s_f *a) if (require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && + require_zve32f(s) && require_zve64f(s)) { gen_set_rm(s, RISCV_FRM_DYN); @@ -3447,6 +3466,7 @@ static bool fslideup_check(DisasContext *s, arg_rmrr *a) { return slideup_check(s, a) && require_rvf(s) && + require_zve32f(s) && require_zve64f(s); } @@ -3454,6 +3474,7 @@ static bool fslidedown_check(DisasContext *s, arg_rmrr *a) { return slidedown_check(s, a) && require_rvf(s) && + require_zve32f(s) && require_zve64f(s); } From patchwork Fri Jan 21 05:58:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719344 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CC200C433FE for ; Fri, 21 Jan 2022 06:59:05 +0000 (UTC) Received: from localhost ([::1]:48124 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAnt2-0007tY-Nw for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 01:59:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52796) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn02-0007UQ-Uv for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:17 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAmzq-0004AK-Uv for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744922; x=1674280922; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=o8b2BAPC2j6IrVHywyvVYIOZhVPc8RBiA+r/e4WZy8Q=; b=f1XejyOh+OceJNwQ8oCOpKBqpyxhqGCVgnIkiUOESZQ1yCfZ+tujYAGV NryMFwnFe3e7h8PpgMv4ARdcD3pte8/ANWiu9/p+nT+C3WQT2KEdEuMg7 7saKiPhb7+wa9SlHzaMgvpBM5QJ4BUZxRGrgDL1/uDFPFuCpcP0OP8vyO IZpAm3yPZWMQShO5prgQElue/JSamIQRT9a6BMxCobHjtXmH39n6j5uuQ lI71IhotxMsFeNhb8EbXctqEBEQpJLcg2ZYiiP6qKtL2huZvfgMV2JUDG F8uFP82Q6Ef2h5Jodrw/LMkNUpH9Fd5RgqpBOBSIT4aiXnxf4qgUcMnRc g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295082995" 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; 21 Jan 2022 14:00:56 +0800 IronPort-SDR: fspjI/Ozapw/yIw0A1vUwPn14jvCj4yg6MgG/JKKR0ltuwPKPzdthhP5NRSRBtRCfBthG8SzO4 gs7/QhDeDRfWpi9Y48XgSjcOR9q/c284fCyH2uV0zN0V8rUkgS1d8ADbnLmfi3Mn0Ok6c6J/2B eQLJREl79Sh5Yof96CflfmLSZrvRCAxQuRyta6uk/94flPgTHnwJobwRbFfXZhcIFJ2xYkgjuO boCv3NnNv8XGYDxl5uRmmQlCgwmXvy4khIUASmTjb7zySF4ERIY6eaORy4MJ0vghGsCzv9nzZc 5x31IAq64GCpl+pbG2YfXXC2 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:23 -0800 IronPort-SDR: 6GATETWobhQls8Gdv1fAu5dY5zK/GHDZlt8nh614/V0jBn+WK6/zWofrA/GVYRnjqLtAxmEVTs flVAWX0+GhAuC90yQCPCdcdCJVL7wbts7XFp60uRuCgeCcgQkoUWM0DaNGuTeIzGiLKST4UyeW aLDVvFWgjJkPzR9+8vMJsMCh7g8DyUJozsLeqaSUVOl9snGo+VxB4ITMdFMt2LKl+AM7fAd+pw NVuer2+kBdd2P6JxZdpY+oKNHzxfSIFombXpMbiCYT7GRTSGKUK8FZmFmJy93v5Im9MZPyBd59 UPs= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:55 -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 4Jg7zC5M5wz1SHwl for ; Thu, 20 Jan 2022 22:00:55 -0800 (PST) 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=1642744855; x=1645336856; bh=o8b2BAPC2j6IrVHywy vVYIOZhVPc8RBiA+r/e4WZy8Q=; b=tn+4TNVJqOr+6S7awSJ94vxbxBVnjoOlre R/Sol27dNEuRYju+p3Biq1vIrFkGkXXMo2yOh932DUG8Zbd+YkDfoMf8REgTIq1j SwEecRFR7Rl2DNqa7DoElbXLDQPKnUpFFti4R7jFKxhNAFIJxEm2sAONkJDDtJvW YnJ2z43TOa3QiQxJVzlgQVdzt6vWj7lEV6/UgHlzJvFSGbjLaIJARakyzBpUsKF2 0XRGekj9wWwOUq6UsgpUJ5mmDtn2W85ozcq85mkUG6FtG+51aI3dVQT64fns9N66 kgSOBpzepM3k1cTEmzSRgnmcnK5lbgAAT5Ow52AV1XSds3u5QAug== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 DmPk2EiLtZ0X for ; Thu, 20 Jan 2022 22:00:55 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7z84Hy5z1RvlN; Thu, 20 Jan 2022 22:00:52 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 32/61] target/riscv: rvv-1.0: Add Zve32f support for single-width fp reduction insns Date: Fri, 21 Jan 2022 15:58:01 +1000 Message-Id: <20220121055830.3164408-33-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector single-width floating-point reduction operations for EEW=32 are supported for Zve32f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-15-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index fe4ad5d008..b02bb555a6 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2976,6 +2976,7 @@ static bool freduction_check(DisasContext *s, arg_rmrr *a) { return reduction_check(s, a) && require_rvf(s) && + require_zve32f(s) && require_zve64f(s); } From patchwork Fri Jan 21 05:58:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719494 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1AA8BC433EF for ; Fri, 21 Jan 2022 08:38:52 +0000 (UTC) Received: from localhost ([::1]:58958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApRa-00077C-BE for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:38:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-00083N-GR for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:41 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn03-0004B6-81 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744935; x=1674280935; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hWEN4sC0pqSX1eg+ExD7OHzG6ssU2OOASQgEHYHSkJ8=; b=G59nHhTHO1R7lfZMt5nGca3W9eDVOGLrcZUQNtifOByD9Pqfs85uqaFJ 0Z2iAC9N5DiQlRDUmCTsqthjs7PsIA1zNSFF4jvuHUfOFf03GgF8RMxOF Kmg/mNb9ocqnT+TlS/cTY/XDvjT9tZVhEoirL5f/3LLy7azRccHjMJWY6 6Wjx5FYYQNZwPUdUreJM0pMin6Fq9ib+vdjnJEn1mZdAZHP2mUyrXbG5O cGuLnGS2LatT8Ss/JBMDeoh2waAyIFZq1JBUnAhIWaJdA5kj8GMmVQwaH f/uDB6Z1G41e+IWLLwuUZrlHbFTQt3+GJUpgNPZjiW+Jjh2s7LoIrHUjA A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083000" 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; 21 Jan 2022 14:00:59 +0800 IronPort-SDR: /oXp3puZRn471+g1UG5pC9AYtkytjQRcCwbaEjttMaiMUOTsPYPNQ0Vf0KI/tCLXFG/cOIlLeX WfHC08i9w4xkqWj9M+5ya3Txa808EUQNP717Ho1cqU3kjjdSXn5mOV2hC17AkF1yiKUjt0/shR AwWXc90rmmM5mQv0pJYh8PpmK+Ka+KavKFRP+BKvKj0aMwLfSswCKET0RC2Q1JlNplroBdngT8 BIuotJ8fMif+or2FF4FFPeyB3N1uMXyiHDm693oUHLgBsVdMVVqtx9JVlg7K6+7C1hrLyFpANz 0krKMfAFJuoyiUYcbmcRbkXd Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:27 -0800 IronPort-SDR: dQOFOVuxYJvTZAkeRH+AXs5iBMxsYzP9XSVGqcnkUXq/TxXEirhfLWg5mYy3kfcm5eEt0AIA7q Xulk03x5Jp1x4ppHGImpLHvRG608XT/iDWpD6LsFoM9ZETMeU0fiUSZUIdEbL/9bqre2Hw2zz5 V3/DRRVSvKa4fiv/gurfjjs0eImc1mqLlrpGdsTQR0Ya/z9HxNBWgBU8dMXCFJ779ZiIIlVgt5 getz8wSdUNygPo/fjRB6T6pNUe4sOozs34Kpmn8LEwFD3X+M6OItX86ZoSOTkdSzFCtwfV+8nv IPo= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:00:59 -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 4Jg7zH2M3sz1SVny for ; Thu, 20 Jan 2022 22:00:59 -0800 (PST) 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=1642744858; x=1645336859; bh=hWEN4sC0pqSX1eg+Ex D7OHzG6ssU2OOASQgEHYHSkJ8=; b=t8sojie2YTIr5374cDADiao65hmPOKtQNg LunGWnpXFoAfHk5acTs/sz+vbG87u6iDzU/4PWB3+Ol71vIyj54A4KxvInE1EMfT 0N41hLUwxKd9lJbxFt2bg2siMX/RP86cbCHpElatWWXNKgN2vCwEiclbUMINABk1 U4qx+rVTivBxOXGvNFVW2bKpyXmEAZyDcKp7WAYMb8pbj/6bbF32l8CWJskkbyna PeqOmM7qWnQ52OrdwWGej5+dqDnElFZ2UNb5I0v9KvyNFeV1r6VqaztA1kPF/wIJ 6YxSRccPDs45DdEMLIOjFvWDUFafyppv6QdgA9aGILN705GfS3WA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 fQOhyYQAWuY3 for ; Thu, 20 Jan 2022 22:00:58 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zD24mkz1RvlN; Thu, 20 Jan 2022 22:00:55 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 33/61] target/riscv: rvv-1.0: Add Zve32f support for widening type-convert insns Date: Fri, 21 Jan 2022 15:58:02 +1000 Message-Id: <20220121055830.3164408-34-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector widening conversion instructions are provided to and from all supported integer EEWs for Zve32f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-16-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index b02bb555a6..f2d3c9e8b9 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -77,6 +77,17 @@ static bool require_zve32f(DisasContext *s) return s->ext_zve32f ? s->sew <= MO_32 : true; } +static bool require_scale_zve32f(DisasContext *s) +{ + /* RVV + Zve32f = RVV. */ + if (has_ext(s, RVV)) { + return true; + } + + /* Zve32f doesn't support FP64. (Section 18.2) */ + return s->ext_zve64f ? s->sew <= MO_16 : true; +} + static bool require_zve64f(DisasContext *s) { /* RVV + Zve64f = RVV. */ @@ -2358,6 +2369,7 @@ static bool opfvv_widen_check(DisasContext *s, arg_rmrr *a) (s->sew != MO_8) && vext_check_isa_ill(s) && vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2398,6 +2410,7 @@ static bool opfvf_widen_check(DisasContext *s, arg_rmrr *a) (s->sew != MO_8) && vext_check_isa_ill(s) && vext_check_ds(s, a->rd, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2429,6 +2442,7 @@ static bool opfwv_widen_check(DisasContext *s, arg_rmrr *a) (s->sew != MO_8) && vext_check_isa_ill(s) && vext_check_dds(s, a->rd, a->rs1, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2469,6 +2483,7 @@ static bool opfwf_widen_check(DisasContext *s, arg_rmrr *a) (s->sew != MO_8) && vext_check_isa_ill(s) && vext_check_dd(s, a->rd, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2733,6 +2748,7 @@ static bool opxfv_widen_check(DisasContext *s, arg_rmr *a) { return opfv_widen_check(s, a) && require_rvf(s) && + require_zve32f(s) && require_zve64f(s); } @@ -2741,6 +2757,7 @@ static bool opffv_widen_check(DisasContext *s, arg_rmr *a) return opfv_widen_check(s, a) && require_scale_rvf(s) && (s->sew != MO_8) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2793,6 +2810,7 @@ static bool opfxv_widen_check(DisasContext *s, arg_rmr *a) vext_check_isa_ill(s) && /* OPFV widening instructions ignore vs1 check */ vext_check_ds(s, a->rd, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } From patchwork Fri Jan 21 05:58:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719489 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CEF5BC433EF for ; Fri, 21 Jan 2022 08:30:40 +0000 (UTC) Received: from localhost ([::1]:50114 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApJf-0000p7-J1 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:30:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-00082p-7R for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:41 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn03-0004AK-5k for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744935; x=1674280935; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g61FRhgwubVdApbJjnjVPGeYZMaZEBNpPxb+6LxcFGo=; b=l09lZYN4DUEI+ipo7mdJ5Rp1m3TUf5aEfDS//26HNO9/2yMhh4+o/54M I6I79OCSDUbz9fZ24SARm2n2qcmhdlH+22GXpYBFCpkq+GkQYklBQaFrl 4CoBWu31nhjXd4HYPonjYiNHhj2esk8HepPZhCzgylxxQDtBUsfBOYU16 EkwG+tuBXIsiGJulD1sfMruLpn5vtbKWk+HuXBCMBFztUX+ahQAokAs2P Q/bzskWBXfBxs9u/u9DeYvRpROy7mQZ24dTljxEqk8Rmk7+srUGyJAvUZ T1I3nuamovaktcJl+zN5jvdOwSKAceKQ+iPt+5RL/UbW+t5sk7pHI6WkM w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083007" 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; 21 Jan 2022 14:01:03 +0800 IronPort-SDR: ANJh385/MRjvhrEgkEDUSW4OSzwUXSAdekAp5VqmjsQfuPrilvMqgXI/fkzo6mEKUPBlCaZNhj W/KCu63yfKAnIZ1/hF3S4rOIN2JdET1jz+5uv19i81dugHS6Sy3SQGKBuKYX1VJHDTdz/LxU+J +JbImm38QOxb7A/zs7+rc8MWjP6NS2AOzaq2d99fzJa8QD+nbuG5fKtGu1dCpg1TCuawjjZdid LGiYEFSxK12vMx7brfTNqzGe53po+jTjyOEYS6Sq82YJbio5SWMUSBakrZ/2kmMiHVk8R+LwkQ Yi/1Imethf0WavMO4E/F49ND Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:31 -0800 IronPort-SDR: i4FWiz09r4t2tOnCcqIqHD9Qgk2fyNmrJQv3rpRpobtdlE/1YqD0ewa/zJCFhR+3w1CEBHPaI4 FHng/9m9ABsd+eeFCJHDr2dsoke0YCQeSaxgn4abGNvmD35IdPgRZT+1Xt2cpdmJp56tLJES2V ubgfLsmaTwey6F/v43vUuo2xKEOhaPZfTqJ9xAyV/QPowtnkyAguE6Ki5CoV8S6wBafKQlHWEC jltGLl2B9MqTSPhRLLbmRX08fYq9kuk/WRKYW9E+ctFXJlxVwEmDnCMA6c94hxp3kC93mDRfci mCI= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:03 -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 4Jg7zM3VdKz1SVny for ; Thu, 20 Jan 2022 22:01:03 -0800 (PST) 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=1642744863; x=1645336864; bh=g61FRhgwubVdApbJjn jVPGeYZMaZEBNpPxb+6LxcFGo=; b=IzuhDQDL+8ntBylSS1+V9x7UYDYivRV+FF PzsQPUznquaTlzjOmlaoRU4VC9rKvJb5XJZYCEWT6Ye6rdc+5u3InwmQGTPlkAnT ByH0jzL+vjnCl2LTpkggFXzvwTiei1kBHZDCta9+vy74D0wlQYL+5Y366rPWNs9h p6ZGWZOyyh+CPotEM43TeljNHrk6kVZFHXwxUsUAN86EbhGWtLG13VQdjcoDXAsI JmRQ6Vnx+RomWcFwpzEIRUAW1jx/4e+KEGajoRNHpiK0PncA5TCdvQFPv1Mgg/oy f0MgohaeBXFqjM9UeOm3i7/667XoYo0OCwyf8XSBixkKZ+0YfKzw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 L_eCa49bKcYx for ; Thu, 20 Jan 2022 22:01:03 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zJ1H0Tz1RvlN; Thu, 20 Jan 2022 22:00:59 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 34/61] target/riscv: rvv-1.0: Add Zve32f support for narrowing type-convert insns Date: Fri, 21 Jan 2022 15:58:03 +1000 Message-Id: <20220121055830.3164408-35-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Vector narrowing conversion instructions are provided to and from all supported integer EEWs for Zve32f extension. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-17-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index f2d3c9e8b9..7a040b3089 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2862,6 +2862,7 @@ static bool opfxv_narrow_check(DisasContext *s, arg_rmr *a) return opfv_narrow_check(s, a) && require_rvf(s) && (s->sew != MO_64) && + require_zve32f(s) && require_zve64f(s); } @@ -2870,6 +2871,7 @@ static bool opffv_narrow_check(DisasContext *s, arg_rmr *a) return opfv_narrow_check(s, a) && require_scale_rvf(s) && (s->sew != MO_8) && + require_scale_zve32f(s) && require_scale_zve64f(s); } @@ -2920,6 +2922,7 @@ static bool opxfv_narrow_check(DisasContext *s, arg_rmr *a) vext_check_isa_ill(s) && /* OPFV narrowing instructions ignore vs1 check */ vext_check_sd(s, a->rd, a->rs2, a->vm) && + require_scale_zve32f(s) && require_scale_zve64f(s); } From patchwork Fri Jan 21 05:58:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719457 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8709FC433EF for ; Fri, 21 Jan 2022 08:10:20 +0000 (UTC) Received: from localhost ([::1]:35842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAozz-0006yP-2w for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:10:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53762) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-00082u-AG for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:41 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn03-0004KU-67 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744935; x=1674280935; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lprmGJLTu2ZrN13aa8EhQPPD/xU5ZwL+7vgWEEfKfbQ=; b=DR0dq44L8AFLnzMqr0fhNeSe7S7oYF0A7uf2Xj1S/YWn1qY61d5IbsFn m3U3aZB/4ROdOEx8yz4Z0/ifYxLceZj2pKN9e7ulJZQHcnEelhwz2M7o6 NXo1UaO/J+AVpqdi+aXgGTng40nzWAfyDHpekzEGjmoBsfK1dwaT86E68 d0grl6oWXHm7uK0WU46XF7S6Ok7zqyfdEyYhODD0x7tiAKrQ12SFLgtZX /9/mrSrvH027bUutsFo8zFvdGgMjouDyMMNxl4tMz12gXNW4e4daNnLAc e1KkzCURGcHIrotefrOrUAI582bQZ+YFaiauWeGzjt2679bQ/em+5/1yA Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083019" 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; 21 Jan 2022 14:01:07 +0800 IronPort-SDR: NUJZaTH8puGtKTlR7lwbkNEoxJsxXXfMkUzf/Atly5qe+cfc+qobY6KxMBGIhycPL4MrP6rCQA v/Q67raSo3XmJHnb9t0Ysm1vCghRbRznI1oMMTjc4rW4dzx4hocQnm/e40slJC3KmN3DyuS79K fzzY3aNg9VsQydPpObWxTdkxPogZ/ylfc6votc7u8A4hA1IUjpUHcT2GxhhimYs1c6IJOz+9qi 3ZbbhSes81Hv4Q7MuHs+Fxetz8sRcYk3r+UMqRAZxoHYyvoqTIObeXgkNQCmSzoG6NUs9NrV0a HcIHhOvrDnsnBGcXx/Q6acM9 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:34 -0800 IronPort-SDR: nqVT9rQr1hg11HH8r4MIMRQB6aJXRRpBYM/3K7FyMd9zO1PY9LU3xCgDXIOXN8tZKll3X7mrhQ k59hoG1gVQv1tL1m+srLcmDYUi8nkFU+0A4W0XJNq8wN5xi8tiIcUSqSJ/FJBwcU1N8CU8fekZ iQQeDaSYZQ5pmrqJXZk1rosUVtKOWsLMdoRPPtiuJCmlDG2vBXWO+KNtQ7kdTNA+jZY4gqBo0M 4hb7Zf3A99cW+nOdlryZtSyM0iLN4vAjpSFDGeZFaSnK6i/6B7Gc+bRAzgejW4IVZoWB+8MJkR C8Q= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:07 -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 4Jg7zR0vsxz1SVny for ; Thu, 20 Jan 2022 22:01:07 -0800 (PST) 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=1642744866; x=1645336867; bh=lprmGJLTu2ZrN13aa8 EhQPPD/xU5ZwL+7vgWEEfKfbQ=; b=JNqq7ph+1Jg5OdmFxkHOlWejzwJp/vLunA XM8w76cCA2AW2H55Um6zbQBFlAjWk+4PLY3ahJYpmIDk7ME33lt9T6Ji/xPy7JuO Ue8DQiPrSu6xrjJhENsKfb0w2dy4HFouwhMEMKx4OzjnfveOjx/cizxGvv8Dq7JC /8KFAgUJSVIWTQzbT+Rlbb25iynwXd2lEMcoRV8ti54/q458KONXXnfUsGA6tMiu nv1k9I3DoKZWQaT42YlvpqFbtk0sXu2fz01iwcV4A+6i1JQ4V/D/eqh+CRNosAfk K0pJxPxFGi8tANQbd6/b7pFi0SzBq8O8CEK4ABr5ZkQ3PBgSx6CQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 USbTCCg-iphL for ; Thu, 20 Jan 2022 22:01:06 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zN0f4Dz1RvlN; Thu, 20 Jan 2022 22:01:03 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 35/61] target/riscv: rvv-1.0: Allow Zve32f extension to be turned on Date: Fri, 21 Jan 2022 15:58:04 +1000 Message-Id: <20220121055830.3164408-36-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-id: 20220118014522.13613-18-frank.chang@sifive.com Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index ef269378de..c2b570e904 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -688,6 +688,7 @@ static Property riscv_cpu_properties[] = { DEFINE_PROP_BOOL("Zicsr", RISCVCPU, cfg.ext_icsr, true), DEFINE_PROP_BOOL("Zfh", RISCVCPU, cfg.ext_zfh, false), DEFINE_PROP_BOOL("Zfhmin", RISCVCPU, cfg.ext_zfhmin, false), + DEFINE_PROP_BOOL("Zve32f", RISCVCPU, cfg.ext_zve32f, false), DEFINE_PROP_BOOL("Zve64f", RISCVCPU, cfg.ext_zve64f, false), DEFINE_PROP_BOOL("mmu", RISCVCPU, cfg.mmu, true), DEFINE_PROP_BOOL("pmp", RISCVCPU, cfg.pmp, true), From patchwork Fri Jan 21 05:58:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719513 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 05687C433EF for ; Fri, 21 Jan 2022 08:46:10 +0000 (UTC) Received: from localhost ([::1]:39548 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApYf-0004y0-1C for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:46:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53854) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0V-00088M-M6 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:43 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-0004AK-Gp for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744961; x=1674280961; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gkK7yxRVaKcGF1cY2nL8A+mBLviOERSUKiQGtnIgUKg=; b=Q48azDfNFkKWp095KYsmckXDyh5MIIMHwKi4TgHlAYLQn6pkoMJlKXGG o5uOZ8YRZbpwAe3lIhfQauY7IPNbzu9ec/JyTPh8nkfvNQga98pTKvWHe U3EOCfUKSZxmATduTZn0TBu/btu5TL6yLbZT95Lu+nuPKCGkh0fcjm0zE BECLEmpEiW/ySuxI3yf2JW6rlxfVZtHlZsjpTvbZrOM9YyRvO7tPaSLOu f4pYFxj+iaJORQC1QYsk8iNcfdOcOaWYazYUerXhNsbZo9ckEqHY1QC6H 9gPq/OOytjqu76w1ch+3r8rv7SuabV2M6Slrv7VL2JgeM2jOtbW7cbx/K A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083025" 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; 21 Jan 2022 14:01:12 +0800 IronPort-SDR: rO4vy7JJqyqKu97WE0iyyoEAN4/NLhSYbjhpoE/puU5CFTm73YYp2tctWB+4jFQfKRRMEnb8Jl ZYcRp7KRTSUNpKFt6Ob+sBC1PHBoINOKlrN+vIj2bVHHBzjpxzJrJYcsyl4dCNajYZ/cRYhoxX aDX4LgUchp2OnnlGxGotW2oGZeWAtP3vViL0qIJxLkp+pnE4d1VSfAcms+Veyodmm/Q9gp2hgf LlH+uNoOsQdwn1JRVjE2iirc4EdpP4KzJroC76/Pty/7Tv1FDYzNCMYv9jIP1C7n2IbGQyG+rl ooW5kEokjEWwSzwUXWV202iY Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:39 -0800 IronPort-SDR: L1S+vvApVnYL9dbmzu3S13FjIBZRlz2vJawFalF3vsZJ62JDftiPyoSW/u1/gb6apW9up1cn1Y T+INn4mwQrrIWG5411TdbCXx2B2CIeCzoU6Pir3AITXzoryQxMcvfau1GaaE2ACkKCZPly3Y4c Z7oIUmw5mEDNg1LFPly4+M77I2OrLi5bSH05mz6mgy02yvf3ll6ZEOWL7Ha+vWkDktn5CtQbxv qoVaMvRjwlMFAucroDEi/IfX3dTxuaMON3pSRKIfAqVRvf+7PVQOJUdgcx37fY0yP+pqED2E4f C4Y= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:12 -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 4Jg7zX1B34z1Rwrw for ; Thu, 20 Jan 2022 22:01:12 -0800 (PST) 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=1642744871; x=1645336872; bh=gkK7yxRVaKcGF1cY2n L8A+mBLviOERSUKiQGtnIgUKg=; b=gEs0R74/d1ZzbGHUO1A81WJAdwUNRV7yhU G+moDfmyFi652XTAdjt2IyE59DBtYaglk5VdHBgpLR2B/mJ6DgmcKdHcskwuk80t V8QCFsSjxMnOX+0JxDpeW2M35rZDFl9sKs6/VLqKljpYjoCjDVdNduKOWII3u9/q oU8z+lN0aM6WU5LMqM8UxYtcz4p6zsl9O3qHzyNEe3oJG4sbID3IDCKw/F5dxqOW GqsFmJayIhQfWUQPPMP0HmbYnrn4/pivu4xCChy38lusJKnns8lY9L0r6QvCF3M/ FKQ0BBnzbr/DQN2p+sugl46SUuxSIvgVECqaeXtbQ8sc/9rcHmDA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 c_4MSvXTeKHH for ; Thu, 20 Jan 2022 22:01:11 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zS0Hqrz1RvlN; Thu, 20 Jan 2022 22:01:07 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anup Patel , Alistair Francis , Bin Meng Subject: [PULL 36/61] hw/riscv: spike: Allow using binary firmware as bios Date: Fri, 21 Jan 2022 15:58:05 +1000 Message-Id: <20220121055830.3164408-37-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Anup Patel Currently, we have to use OpenSBI firmware ELF as bios for the spike machine because the HTIF console requires ELF for parsing "fromhost" and "tohost" symbols. The latest OpenSBI can now optionally pick-up HTIF register address from HTIF DT node so using this feature spike machine can now use OpenSBI firmware BIN as bios. Signed-off-by: Anup Patel Reviewed-by: Alistair Francis Reviewed-by: Bin Meng Signed-off-by: Alistair Francis --- include/hw/char/riscv_htif.h | 5 ++++- include/hw/riscv/spike.h | 1 + hw/char/riscv_htif.c | 33 +++++++++++++++++++---------- hw/riscv/spike.c | 41 ++++++++++++++++++++++-------------- 4 files changed, 52 insertions(+), 28 deletions(-) diff --git a/include/hw/char/riscv_htif.h b/include/hw/char/riscv_htif.h index fb9452cf51..f888ac1b30 100644 --- a/include/hw/char/riscv_htif.h +++ b/include/hw/char/riscv_htif.h @@ -52,8 +52,11 @@ extern const MemoryRegionOps htif_io_ops; void htif_symbol_callback(const char *st_name, int st_info, uint64_t st_value, uint64_t st_size); +/* Check if HTIF uses ELF symbols */ +bool htif_uses_elf_symbols(void); + /* legacy pre qom */ HTIFState *htif_mm_init(MemoryRegion *address_space, MemoryRegion *main_mem, - CPURISCVState *env, Chardev *chr); + CPURISCVState *env, Chardev *chr, uint64_t nonelf_base); #endif diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h index cdd1a13011..73d69234de 100644 --- a/include/hw/riscv/spike.h +++ b/include/hw/riscv/spike.h @@ -43,6 +43,7 @@ struct SpikeState { enum { SPIKE_MROM, + SPIKE_HTIF, SPIKE_CLINT, SPIKE_DRAM }; diff --git a/hw/char/riscv_htif.c b/hw/char/riscv_htif.c index ddae738d56..729edbf968 100644 --- a/hw/char/riscv_htif.c +++ b/hw/char/riscv_htif.c @@ -228,13 +228,25 @@ static const MemoryRegionOps htif_mm_ops = { .write = htif_mm_write, }; +bool htif_uses_elf_symbols(void) +{ + return (address_symbol_set == 3) ? true : false; +} + HTIFState *htif_mm_init(MemoryRegion *address_space, MemoryRegion *main_mem, - CPURISCVState *env, Chardev *chr) + CPURISCVState *env, Chardev *chr, uint64_t nonelf_base) { - uint64_t base = MIN(tohost_addr, fromhost_addr); - uint64_t size = MAX(tohost_addr + 8, fromhost_addr + 8) - base; - uint64_t tohost_offset = tohost_addr - base; - uint64_t fromhost_offset = fromhost_addr - base; + uint64_t base, size, tohost_offset, fromhost_offset; + + if (!htif_uses_elf_symbols()) { + fromhost_addr = nonelf_base; + tohost_addr = nonelf_base + 8; + } + + base = MIN(tohost_addr, fromhost_addr); + size = MAX(tohost_addr + 8, fromhost_addr + 8) - base; + tohost_offset = tohost_addr - base; + fromhost_offset = fromhost_addr - base; HTIFState *s = g_malloc0(sizeof(HTIFState)); s->address_space = address_space; @@ -249,12 +261,11 @@ HTIFState *htif_mm_init(MemoryRegion *address_space, MemoryRegion *main_mem, qemu_chr_fe_init(&s->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&s->chr, htif_can_recv, htif_recv, htif_event, htif_be_change, s, NULL, true); - if (address_symbol_set == 3) { - memory_region_init_io(&s->mmio, NULL, &htif_mm_ops, s, - TYPE_HTIF_UART, size); - memory_region_add_subregion_overlap(address_space, base, - &s->mmio, 1); - } + + memory_region_init_io(&s->mmio, NULL, &htif_mm_ops, s, + TYPE_HTIF_UART, size); + memory_region_add_subregion_overlap(address_space, base, + &s->mmio, 1); return s; } diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 288d69cd9f..597df4c288 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -42,6 +42,7 @@ static const MemMapEntry spike_memmap[] = { [SPIKE_MROM] = { 0x1000, 0xf000 }, + [SPIKE_HTIF] = { 0x1000000, 0x1000 }, [SPIKE_CLINT] = { 0x2000000, 0x10000 }, [SPIKE_DRAM] = { 0x80000000, 0x0 }, }; @@ -75,6 +76,10 @@ static void create_fdt(SpikeState *s, const MemMapEntry *memmap, qemu_fdt_add_subnode(fdt, "/htif"); qemu_fdt_setprop_string(fdt, "/htif", "compatible", "ucb,htif0"); + if (!htif_uses_elf_symbols()) { + qemu_fdt_setprop_cells(fdt, "/htif", "reg", + 0x0, memmap[SPIKE_HTIF].base, 0x0, memmap[SPIKE_HTIF].size); + } qemu_fdt_add_subnode(fdt, "/soc"); qemu_fdt_setprop(fdt, "/soc", "ranges", NULL, 0); @@ -172,6 +177,7 @@ static void create_fdt(SpikeState *s, const MemMapEntry *memmap, if (cmdline) { qemu_fdt_add_subnode(fdt, "/chosen"); qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline); + qemu_fdt_setprop_string(fdt, "/chosen", "stdout-path", "/htif"); } } @@ -241,10 +247,6 @@ static void spike_board_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[SPIKE_DRAM].base, machine->ram); - /* create device tree */ - create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline, - riscv_is_32bit(&s->soc[0])); - /* boot rom */ memory_region_init_rom(mask_rom, NULL, "riscv.spike.mrom", memmap[SPIKE_MROM].size, &error_fatal); @@ -266,6 +268,7 @@ static void spike_board_init(MachineState *machine) htif_symbol_callback); } + /* Load kernel */ if (machine->kernel_filename) { kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc[0], firmware_end_addr); @@ -273,17 +276,6 @@ static void spike_board_init(MachineState *machine) kernel_entry = riscv_load_kernel(machine->kernel_filename, kernel_start_addr, htif_symbol_callback); - - if (machine->initrd_filename) { - hwaddr start; - hwaddr end = riscv_load_initrd(machine->initrd_filename, - machine->ram_size, kernel_entry, - &start); - qemu_fdt_setprop_cell(s->fdt, "/chosen", - "linux,initrd-start", start); - qemu_fdt_setprop_cell(s->fdt, "/chosen", "linux,initrd-end", - end); - } } else { /* * If dynamic firmware is used, it doesn't know where is the next mode @@ -292,6 +284,22 @@ static void spike_board_init(MachineState *machine) kernel_entry = 0; } + /* Create device tree */ + create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline, + riscv_is_32bit(&s->soc[0])); + + /* Load initrd */ + if (machine->kernel_filename && machine->initrd_filename) { + hwaddr start; + hwaddr end = riscv_load_initrd(machine->initrd_filename, + machine->ram_size, kernel_entry, + &start); + qemu_fdt_setprop_cell(s->fdt, "/chosen", + "linux,initrd-start", start); + qemu_fdt_setprop_cell(s->fdt, "/chosen", "linux,initrd-end", + end); + } + /* Compute the fdt load address in dram */ fdt_load_addr = riscv_load_fdt(memmap[SPIKE_DRAM].base, machine->ram_size, s->fdt); @@ -303,7 +311,8 @@ static void spike_board_init(MachineState *machine) /* initialize HTIF using symbols found in load_kernel */ htif_mm_init(system_memory, mask_rom, - &s->soc[0].harts[0].env, serial_hd(0)); + &s->soc[0].harts[0].env, serial_hd(0), + memmap[SPIKE_HTIF].base); } static void spike_machine_instance_init(Object *obj) From patchwork Fri Jan 21 05:58:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719482 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81AE2C433F5 for ; Fri, 21 Jan 2022 08:23:40 +0000 (UTC) Received: from localhost ([::1]:44658 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApCt-0005Kl-G5 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:23:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0V-00089K-VR for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:44 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-0004KU-ID for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744961; x=1674280961; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JoSHtMShyGQPRyscEFgCR6aqZqbwnh9BL+qXQLCZYsE=; b=iPMtPB3cwUopcOFcdsmd4SIaWh5BRR2YYNbwIBK64XUNpEmARQPvt3ku UxnHf0YNgIhQcBX5FH3G51S8PEiomiBs6wrAWFREadkbC9MCsniRmY5lg opv+TlJByLH1fPtkTluL39qvHJ8Ti3S2nTbJQuz5DnpoGTLouxJirsQpN 2DodgsuS25Ek72XkQTcqajdsQ7VcElObITzJoJzai81CO8lNqV3oY4o9T Bh6f94gQ3py7RqA+pYqiWBt14wIzvAg0/OSHJpMyqV4K0aeL/22pnuxwI loZUaLB8nybD8FyPz0cfw121y7vOnujGYPl4/n3AO/a48mgApkYih6fjr g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083028" 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; 21 Jan 2022 14:01:16 +0800 IronPort-SDR: NuPebrCVpR+IxdDQ0Z257W1WJ0gH3dold7rmWBo/tbZ//cr/d9VjOg2U8nZLJBSozhC4A5v6TB sZtBuxhtRkGqYOoEir09KqApFuf140SoOUcCYDsrcO262+VXyVzCdVEVO3AHHjKP5y4GpMZgYv hbhp5XjVljYn6eGF8gE+R4x0+vsDys1WmaMUbCGop2rQo4xnSgWInNuteR9/KoFZB68pfyI3Os 7TYfm4+7GuMQXNz2fdvFESdHTcNRM65GviXnhzaX9AX59Fa96hbJ/IsndF1+ewW7HS9ShEzf7Q /qWMI6cJnCxhaql8fd4FZYa3 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:44 -0800 IronPort-SDR: Www/BBvQQ8kCh4m/jdXYo/GZlMFmYm3O5GSm9zpzPHJmb38UDDCqjq0kEnnbugfhup8tUCBhKY /M+xuDgXMezg1xI7V0BtNa5it9zDgGu+Qrs+Plf8pkIgOdqhQTV1Z7RBy+K1QyALdZWRZ97jMq zyQSDOgQrcetyg+zRb2M6aHhFYJGqP0errTqbqDnaLKWkaFOdoKCWcFV2w/2w3gxF1iedWytnY MJ3LDGVOJjCWOxPFClWcG3DCXo5D0fIFBeOBYafc15OU0Si9t20TTORAM1FY6kbwhjANQVHXmN Vsg= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:16 -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 4Jg7zc3F9Sz1SVny for ; Thu, 20 Jan 2022 22:01:16 -0800 (PST) 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=1642744876; x=1645336877; bh=JoSHtMShyGQPRyscEF gCR6aqZqbwnh9BL+qXQLCZYsE=; b=hVfZx/2IrOhkgL5EHUMS+4R72W6/6UGl1O KfSTwNdDDGqmIgfbyQUrfZnuUsQZbxMn0j2TiquN2p/Y1GLytRA3FVIUgqSl1+Zs trmgB0hldEsR4X+r0MLnLZXdDnW/YFU+23AEp5jwxLKB/gMTCfVZKBNwIZxyw43P vM/cJwsVSsobTnloSaxVCNu3QlnCLLiHFmxiSc/4oqBfts+nmv1sTppkPGOJXzi4 gDx+PXskoxAftooG2m9at5APW0SVhUwkUBRQ3KCGyCMR3aK+/t+ByrduL00oGlxh /EdhfTAxijtsJJJkL7GLYCjF2W3frkRlDqdMQ2nEYanvU52vAEJw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 YXww3FCt6zZ9 for ; Thu, 20 Jan 2022 22:01:16 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zX3R8Tz1RvlN; Thu, 20 Jan 2022 22:01:12 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anup Patel , Alistair Francis , Bin Meng Subject: [PULL 37/61] hw/riscv: Remove macros for ELF BIOS image names Date: Fri, 21 Jan 2022 15:58:06 +1000 Message-Id: <20220121055830.3164408-38-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Anup Patel Now that RISC-V Spike machine can use BIN BIOS images, we remove the macros used for ELF BIOS image names. Signed-off-by: Anup Patel Reviewed-by: Alistair Francis Reviewed-by: Bin Meng Signed-off-by: Alistair Francis --- include/hw/riscv/boot.h | 2 -- hw/riscv/spike.c | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h index 5834c234aa..d937c5c224 100644 --- a/include/hw/riscv/boot.h +++ b/include/hw/riscv/boot.h @@ -25,9 +25,7 @@ #include "hw/riscv/riscv_hart.h" #define RISCV32_BIOS_BIN "opensbi-riscv32-generic-fw_dynamic.bin" -#define RISCV32_BIOS_ELF "opensbi-riscv32-generic-fw_dynamic.elf" #define RISCV64_BIOS_BIN "opensbi-riscv64-generic-fw_dynamic.bin" -#define RISCV64_BIOS_ELF "opensbi-riscv64-generic-fw_dynamic.elf" bool riscv_is_32bit(RISCVHartArrayState *harts); diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 597df4c288..d059a67f9b 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -260,11 +260,11 @@ static void spike_board_init(MachineState *machine) */ if (riscv_is_32bit(&s->soc[0])) { firmware_end_addr = riscv_find_and_load_firmware(machine, - RISCV32_BIOS_ELF, memmap[SPIKE_DRAM].base, + RISCV32_BIOS_BIN, memmap[SPIKE_DRAM].base, htif_symbol_callback); } else { firmware_end_addr = riscv_find_and_load_firmware(machine, - RISCV64_BIOS_ELF, memmap[SPIKE_DRAM].base, + RISCV64_BIOS_BIN, memmap[SPIKE_DRAM].base, htif_symbol_callback); } From patchwork Fri Jan 21 05:58:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 484E5C433F5 for ; Fri, 21 Jan 2022 07:59:24 +0000 (UTC) Received: from localhost ([::1]:57836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAopP-0002Wm-3V for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:59:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53880) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0W-0008AP-9b for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:44 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-0004B6-MA for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744961; x=1674280961; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/zgfZghHBu3+q1V/LGLsyQeLxybtBrIXMA8OF4Db8Mw=; b=B2kDt6pR9oOFnopOrKyppeky0bdJBcQFErV9ORTpN++zBtNg9CiJS0bU UF0dwD+fHjdaIuNtO7ax+OoBglHojWoCoxmkR6mvGh3QR4VoYiupkM8Kl z4Rn1bw5UlS65dSrAy3leADd9sZ5LAg28SKInJbJq48l+Se5qQ2kGpEUX x1TDW59bIqebNZzzdDEFWemsubssN7cNLUes60KYXO6l+vcEBJKcwIWCq mskElApIhrOW2vV+aNO/f9qrebY4mR5pT5EcZYuYAMffwhaI1tujjvuho bYE0HiClZ4jTZ34kpWgFR7UbbmDJ+NkqddmNAwL+CFE8Y2rEKpEplkmGO w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083033" 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; 21 Jan 2022 14:01:20 +0800 IronPort-SDR: uODkHnJ8+K0sf1ZBsU0URPBG6I1SwxcQAkXYtQQZEI5SkBO2P6TWENMsNRUzTch6IrEzRs8XaK Bqj793+DR9Y7n2fcG1vgxi8OXkSI4s6kUclbGy5gTHlVw4QRq4+ovFbUV6img+84D1v6e96cKB Xsfx0QqYKqcUzP7TKfvctbmri3ApVszM/3/9e4A+wE3nHVClY0B/5Qp5DYZ6IcWfe6rrwZsCjF S05HgEQxFqdf/V8YlV9qIBVANDWojT/8eEu8V+3atWDQP/BMZSc4j+pZn+3EMu9p6Tir7JZtAb tMkJrWRFHvwSzNlTtJ3LKjAP Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:48 -0800 IronPort-SDR: t32kWVkOVqxzrqK6N5Rb0hauKQcraV2+j3MVxlO9z+Ji+LHVFpmelzVgwKgUxaBr8zDWpk77ew tKPkgcS9focUAuMUIGyeaP2kBd5kKK3Blj7dJasUqaSmbMObJZhZ7g92eb7qfJIP8geJrQZNnq DWIstOg3WbKLCq9nH//63iJsTcADqlqNfJ2tqbUddq817B6K4y8/mVPuWBsdZWT6ysLn6nWNHa NOQoQNHVdj+jI1/gF6FdhuMAVhsDzetc5MAzgruuiVthImwxsgKOv29tnx44YJZ8hkDNXwkrDk cH4= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:20 -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 4Jg7zh37wDz1Rwrw for ; Thu, 20 Jan 2022 22:01:20 -0800 (PST) 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=1642744879; x=1645336880; bh=/zgfZghHBu3+q1V/LG LsyQeLxybtBrIXMA8OF4Db8Mw=; b=RhjkY6f9sUWA/MY7TAobQJt5vtXqg7XCFl ROtDAXcCceoGlWCK3nd+9YQn3U6jI2KojRQATFkwLOwuipZogBdYpZM8EQN3QZyg pmxg2jR5JJWnp8u4R0WPoPtCjOmO0WoSnNszXwkaY6/ajQZkTK794w4VeWQwKMjC IGF1FsV1bweeqInUm5sfEcqpDLJCWHFlz0Bk/5nAMBPCI7H0AcUVbeI+b1ULDL1L W5dJ5skmUXdbwgBnyHj1a71eyklQnZmBpWnJZd414H/8cejZNOiOCArIfPN3cWnB ega0UVnumk0QTkI+9sKj+nusifJXlQOASXwlVPD4ARksQjUBmOjA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 t9LvGBxXuDdd for ; Thu, 20 Jan 2022 22:01:19 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zc6msJz1RvlN; Thu, 20 Jan 2022 22:01:16 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anup Patel , Alistair Francis , Bin Meng Subject: [PULL 38/61] roms/opensbi: Remove ELF images Date: Fri, 21 Jan 2022 15:58:07 +1000 Message-Id: <20220121055830.3164408-39-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Anup Patel Now that all RISC-V machines can use OpenSBI BIN images, we remove OpenSBI ELF images and also exclude these images from BIOS build. Signed-off-by: Anup Patel Reviewed-by: Alistair Francis Reviewed-by: Bin Meng Signed-off-by: Alistair Francis --- .gitlab-ci.d/opensbi.yml | 2 -- pc-bios/meson.build | 2 -- pc-bios/opensbi-riscv32-generic-fw_dynamic.elf | Bin 838904 -> 0 bytes pc-bios/opensbi-riscv64-generic-fw_dynamic.elf | Bin 934696 -> 0 bytes roms/Makefile | 2 -- 5 files changed, 6 deletions(-) delete mode 100644 pc-bios/opensbi-riscv32-generic-fw_dynamic.elf delete mode 100644 pc-bios/opensbi-riscv64-generic-fw_dynamic.elf diff --git a/.gitlab-ci.d/opensbi.yml b/.gitlab-ci.d/opensbi.yml index 5e0a2477c5..29a22930d1 100644 --- a/.gitlab-ci.d/opensbi.yml +++ b/.gitlab-ci.d/opensbi.yml @@ -43,9 +43,7 @@ build-opensbi: artifacts: paths: # 'artifacts.zip' will contains the following files: - pc-bios/opensbi-riscv32-generic-fw_dynamic.bin - - pc-bios/opensbi-riscv32-generic-fw_dynamic.elf - pc-bios/opensbi-riscv64-generic-fw_dynamic.bin - - pc-bios/opensbi-riscv64-generic-fw_dynamic.elf - opensbi32-generic-stdout.log - opensbi32-generic-stderr.log - opensbi64-generic-stdout.log diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 1812a4084f..4ac7a5509b 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -80,8 +80,6 @@ blobs = files( 'hppa-firmware.img', 'opensbi-riscv32-generic-fw_dynamic.bin', 'opensbi-riscv64-generic-fw_dynamic.bin', - 'opensbi-riscv32-generic-fw_dynamic.elf', - 'opensbi-riscv64-generic-fw_dynamic.elf', 'npcm7xx_bootrom.bin', ) diff --git a/pc-bios/opensbi-riscv32-generic-fw_dynamic.elf b/pc-bios/opensbi-riscv32-generic-fw_dynamic.elf deleted file mode 100644 index a19363e27c..0000000000 Binary files a/pc-bios/opensbi-riscv32-generic-fw_dynamic.elf and /dev/null differ diff --git a/pc-bios/opensbi-riscv64-generic-fw_dynamic.elf b/pc-bios/opensbi-riscv64-generic-fw_dynamic.elf deleted file mode 100644 index c59573d026..0000000000 Binary files a/pc-bios/opensbi-riscv64-generic-fw_dynamic.elf and /dev/null differ diff --git a/roms/Makefile b/roms/Makefile index b967b53bb7..5e44d97890 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -178,14 +178,12 @@ opensbi32-generic: CROSS_COMPILE=$(riscv32_cross_prefix) \ PLATFORM="generic" cp opensbi/build/platform/generic/firmware/fw_dynamic.bin ../pc-bios/opensbi-riscv32-generic-fw_dynamic.bin - cp opensbi/build/platform/generic/firmware/fw_dynamic.elf ../pc-bios/opensbi-riscv32-generic-fw_dynamic.elf opensbi64-generic: $(MAKE) -C opensbi \ CROSS_COMPILE=$(riscv64_cross_prefix) \ PLATFORM="generic" cp opensbi/build/platform/generic/firmware/fw_dynamic.bin ../pc-bios/opensbi-riscv64-generic-fw_dynamic.bin - cp opensbi/build/platform/generic/firmware/fw_dynamic.elf ../pc-bios/opensbi-riscv64-generic-fw_dynamic.elf MESON = meson NINJA = ninja From patchwork Fri Jan 21 05:58:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719530 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3D1FBC433EF for ; Fri, 21 Jan 2022 08:54:13 +0000 (UTC) Received: from localhost ([::1]:48106 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApgS-0002gX-4e for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:54:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0X-0008Dz-P2 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:45 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0V-0004AK-V2 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744963; x=1674280963; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vPZRUlXDPy4MVm9PsIiT6XmNqYiQ0yJDQrBKTD85GK8=; b=TX5REdAc9GaizzvAduqGcG5TlPwTshlumulbldxF9Dm6r9xlem92/IEq OPtJxXEUhwrW4814bT9AyOIYRd6fbvQ5XUJlH6SEijWF7wnMHoyqvT3sm aCWldmAp96DntY1z/vHsfkFgTa6wR3BJnG0BZ0csaq55CsjckfYoNR6Cm K1FY07AMaACTiF79zjdrY5gY0ZpsOHhNURjSopsl5VEsXzdwXnWEl9xoj zFNz9lT9yP+EQzC9XYMiSc7bblPGZYD3xVP7VV5hvoRz1jrblwecODK4w tWz/C1Rqr5IT/gLrCx7dazeIIsluK99d4VvRlsBxdvml/3F64T3r/ZBSH g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083042" 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; 21 Jan 2022 14:01:25 +0800 IronPort-SDR: G+zAdJXLjID4LQCFBsWtphUNya1XxGTNaM/WJVO+usdQ6y6jmhpdPhEzmUeCcJ9jydNobI7MuP HeUgWd6uMFWknqjqvMuGgXHaahF8Yrxr2bzWiPWoEqNC/SAoH1Pl0VGnnXJt+ZN9IGetZiaju7 otuPDg14XoknJtKxLGDGP7Fpjl9ae3NbtKIoZcgJ7QnHkmkdpnehT2I5V+AHXs3RzfNWYaFjTx iCiTH0qdjbsMJvlWbehQtpm0SMX1VpsEFHhid5eG0zopgZP7HfeGMcLpj/QXYoy8E9FkIfFEl5 lqEadHppJ66yBP083xrywaB1 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:52 -0800 IronPort-SDR: +vIjLupXONC952UclitxHdfLcHduhhScNEQei/DvCr3kL1fTB9D2Hw0DgAnU4+AemkcUWNPRyf r14r6Qk118NJNxY7xQJ5OLtZRtf4mJWAPZVbXTf9fC1xS34mb6cWECt5RB0MNOtKW31hDqIsm5 NgKKnQpkI/4IFbu/H65y631gVrCXQfyfghxtw+rkvHvzC1bN2+gK4boJacAtD1K7J9w+l2JQV1 tOPxJRFK6cY5ehtIWBeZOAHC6CCboGEBpxwgio5hWOkrEPAqKddTrc2RqQirCYSygbjRkYQwcq 8Zo= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:25 -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 4Jg7zn0xY2z1SHwl for ; Thu, 20 Jan 2022 22:01:25 -0800 (PST) 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=1642744884; x=1645336885; bh=vPZRUlXDPy4MVm9PsI iT6XmNqYiQ0yJDQrBKTD85GK8=; b=r0L5dHm4uCkBwo9DwN4dKtkSs3UWmzHTQS BCnJ+vg4PpBHPJOMlIGwG7x0l0UaIwLpMpKsGO9FjY55YmAZivK91Wo8iKyTvUhd NqMbNx/3npmotJvqMUmuFZ7Mtn0gd4nuLDN8FMG+NEAZp7MJ3dhWbra1tOh79R7/ nOAlw2PHNJMx8qGo5/dPDAloiAtl0TumZbNuh1iKNyoahFDPbtyihk9JeWdkqpgB OzOpCd8ATB68TLrtCGdQs4Lh+28TUtF34tYW7fR4Owp4TrCw/LNQFsrCsV09YlNZ b/wL0NhSDBqmndWX4rrzrOb8OLh2EX1RA3tiuzMnJNumQfMxRPNw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 duw0Jzn7JUbY for ; Thu, 20 Jan 2022 22:01:24 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zh6tBVz1RvlN; Thu, 20 Jan 2022 22:01:20 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 39/61] target/riscv: Adjust pmpcfg access with mxl Date: Fri, 21 Jan 2022 15:58:08 +1000 Message-Id: <20220121055830.3164408-40-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-2-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 19 +++++++++++++++++++ target/riscv/pmp.c | 12 ++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index a9e7ac903b..6bc7ee780c 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -1497,9 +1497,23 @@ static RISCVException write_mseccfg(CPURISCVState *env, int csrno, return RISCV_EXCP_NONE; } +static bool check_pmp_reg_index(CPURISCVState *env, uint32_t reg_index) +{ + /* TODO: RV128 restriction check */ + if ((reg_index & 1) && (riscv_cpu_mxl(env) == MXL_RV64)) { + return false; + } + return true; +} + static RISCVException read_pmpcfg(CPURISCVState *env, int csrno, target_ulong *val) { + uint32_t reg_index = csrno - CSR_PMPCFG0; + + if (!check_pmp_reg_index(env, reg_index)) { + return RISCV_EXCP_ILLEGAL_INST; + } *val = pmpcfg_csr_read(env, csrno - CSR_PMPCFG0); return RISCV_EXCP_NONE; } @@ -1507,6 +1521,11 @@ static RISCVException read_pmpcfg(CPURISCVState *env, int csrno, static RISCVException write_pmpcfg(CPURISCVState *env, int csrno, target_ulong val) { + uint32_t reg_index = csrno - CSR_PMPCFG0; + + if (!check_pmp_reg_index(env, reg_index)) { + return RISCV_EXCP_ILLEGAL_INST; + } pmpcfg_csr_write(env, csrno - CSR_PMPCFG0, val); return RISCV_EXCP_NONE; } diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 54abf42583..81b61bb65c 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -463,16 +463,11 @@ void pmpcfg_csr_write(CPURISCVState *env, uint32_t reg_index, { int i; uint8_t cfg_val; + int pmpcfg_nums = 2 << riscv_cpu_mxl(env); trace_pmpcfg_csr_write(env->mhartid, reg_index, val); - if ((reg_index & 1) && (sizeof(target_ulong) == 8)) { - qemu_log_mask(LOG_GUEST_ERROR, - "ignoring pmpcfg write - incorrect address\n"); - return; - } - - for (i = 0; i < sizeof(target_ulong); i++) { + for (i = 0; i < pmpcfg_nums; i++) { cfg_val = (val >> 8 * i) & 0xff; pmp_write_cfg(env, (reg_index * 4) + i, cfg_val); } @@ -490,8 +485,9 @@ target_ulong pmpcfg_csr_read(CPURISCVState *env, uint32_t reg_index) int i; target_ulong cfg_val = 0; target_ulong val = 0; + int pmpcfg_nums = 2 << riscv_cpu_mxl(env); - for (i = 0; i < sizeof(target_ulong); i++) { + for (i = 0; i < pmpcfg_nums; i++) { val = pmp_read_cfg(env, (reg_index * 4) + i); cfg_val |= (val << (i * 8)); } From patchwork Fri Jan 21 05:58:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719458 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B0EC0C433F5 for ; Fri, 21 Jan 2022 08:14:34 +0000 (UTC) Received: from localhost ([::1]:38290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAp45-0000a3-Kr for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:14:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0Y-0008Ef-1f for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:46 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0W-0004KU-6Z for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744964; x=1674280964; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/wjPSH2EAci9G0WbxegO8W9+OTDs/sXehVnzULpy+NI=; b=jQX9ULNnIsFsIg4R+I4kWsINPc9Y9QesnJ9cNTX0RAYEpDK6KFZB4hQF K/ag9bZM/K4DoiAd1WqLYCDqMWc1sUXpJ0WaN51xeeHphNo6ErB/5QBSh gURLXw0WLqmDfEx6yy4ehOe/yCiHJ8LKtNQ2zTpVvwUMuHj5DCu29LhWC xmxXM1Z+hJv58J6i7aaCfOsdu1XfGk9fvdq8b9VBrgaGIZt2XmXQJD8TS gaMn6yHSmiFkrK/Gp2PekSawWNy4ZcoiWaTGbPlGvMuAgxJWZd938TBXa bF14yRfCbGalGKhhSKe6yUu2GHrAnD/d6/0Q0q6C+3IgHooIEdWuNRR+9 A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083046" 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; 21 Jan 2022 14:01:29 +0800 IronPort-SDR: gPgoq+kfBIHJ55OKxWtl+jmzPQgXnsd+BD8veY8nsY4miOMMyeqHH/1ONHOJWda4W9nmDYiyGr ucm0bs637CVHvq08KjZbbR0YCI0Hx0cKEWS6YVVL2aqJLIFKZ+EwsKJDv8sT4s1t73IRBiF+wN uutPn5lUg9wyfFQ3+77tkWNlS2ABRCkk1SdCl49t0teE7exDd1bDb8TN1IYgDdfHGsssH3uqg2 Dr0H5Vam8+GqAJkjZDjbfdYN/r8gYKCxRwx8hEqyow83UHeW4eDJoJjeVBSIDTbBGw0+t0YYQ4 YpXLbv2lPgYFfvUr3fTf8iqU Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:34:56 -0800 IronPort-SDR: U5lgssqxzNHf+B3Ju+O+KU8GHrXtd8hb2xW+GjNFKbvdZ/QMdxX59tJGc3kCYQAoCWTDIVxIKR WTlzYTW5hfRTJe0pVcHfxJaOpuJeGonV3I+rtNoQOMlJliCdSQ6zQZTx11kcI1/2Tv3LJILk6N Baj50dbt1JsdPzQ58Ji6TvTq23s4bBEECXkrnmspVg3xNzYRp7J/vxE4lHO79gMdsSEQ/tUvsZ QJRrKNPkxT2kZsft4kDpWBfgTWfWOYWEg54D0mNjiwOK3HnoWjDZu/EQXxqw4DoKMWBtFx1lCm b7E= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:29 -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 4Jg7zs1x6jz1SHwl for ; Thu, 20 Jan 2022 22:01:29 -0800 (PST) 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=1642744888; x=1645336889; bh=/wjPSH2EAci9G0Wbxe gO8W9+OTDs/sXehVnzULpy+NI=; b=KeOsTAhW2jDRrWARn8xKfodt5BALfNVfa3 T8Fo6HQHokk4/60hAyD0O289+Bca6YT24hmLqlQXpoBTLU2KO01yPWFajQ3iwlQj CSUXR7HCD4lBgxf5CfTOY43/oVJOH3XNEkZ3qRNOG5NZ94KlAGeo8XoISHax3Oxz GJLoApgDCgXXASpd9EKhYbp8SRcWKiQI7BVzJX6LZDDmWkaMqbve/NvXEqCqJctd kH2mn2EN2W3rA+FnZu1UkkdK8J1ZO0rUVFi4Ooo9+T1Tlk8lR6+mK06WrE8ONSa3 IQlqF8H//eyDR9sJDNfMaMLi9s3l2IUJtgMQRpKG5U9u+c9xwMTw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 toJjH1gMJAv8 for ; Thu, 20 Jan 2022 22:01:28 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zn4dvcz1RvlN; Thu, 20 Jan 2022 22:01:25 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 40/61] target/riscv: Don't save pc when exception return Date: Fri, 21 Jan 2022 15:58:09 +1000 Message-Id: <20220121055830.3164408-41-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei As pc will be written by the xepc in exception return, just ignore pc in translation. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-3-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/helper.h | 4 ++-- target/riscv/op_helper.c | 4 ++-- target/riscv/insn_trans/trans_privileged.c.inc | 7 ++----- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 6cf6d6ce98..72cc2582f4 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -100,8 +100,8 @@ DEF_HELPER_2(csrr_i128, tl, env, int) DEF_HELPER_4(csrw_i128, void, env, int, tl, tl) DEF_HELPER_6(csrrw_i128, tl, env, int, tl, tl, tl, tl) #ifndef CONFIG_USER_ONLY -DEF_HELPER_2(sret, tl, env, tl) -DEF_HELPER_2(mret, tl, env, tl) +DEF_HELPER_1(sret, tl, env) +DEF_HELPER_1(mret, tl, env) DEF_HELPER_1(wfi, void, env) DEF_HELPER_1(tlb_flush, void, env) #endif diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 6f040f2fb9..67693cb42b 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -115,7 +115,7 @@ target_ulong helper_csrrw_i128(CPURISCVState *env, int csr, #ifndef CONFIG_USER_ONLY -target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) +target_ulong helper_sret(CPURISCVState *env) { uint64_t mstatus; target_ulong prev_priv, prev_virt; @@ -176,7 +176,7 @@ target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) return retpc; } -target_ulong helper_mret(CPURISCVState *env, target_ulong cpu_pc_deb) +target_ulong helper_mret(CPURISCVState *env) { if (!(env->priv >= PRV_M)) { riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, GETPC()); diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc index 75c6ef80a6..6077bbbf11 100644 --- a/target/riscv/insn_trans/trans_privileged.c.inc +++ b/target/riscv/insn_trans/trans_privileged.c.inc @@ -74,10 +74,8 @@ static bool trans_uret(DisasContext *ctx, arg_uret *a) static bool trans_sret(DisasContext *ctx, arg_sret *a) { #ifndef CONFIG_USER_ONLY - tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next); - if (has_ext(ctx, RVS)) { - gen_helper_sret(cpu_pc, cpu_env, cpu_pc); + gen_helper_sret(cpu_pc, cpu_env); tcg_gen_exit_tb(NULL, 0); /* no chaining */ ctx->base.is_jmp = DISAS_NORETURN; } else { @@ -92,8 +90,7 @@ static bool trans_sret(DisasContext *ctx, arg_sret *a) static bool trans_mret(DisasContext *ctx, arg_mret *a) { #ifndef CONFIG_USER_ONLY - tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next); - gen_helper_mret(cpu_pc, cpu_env, cpu_pc); + gen_helper_mret(cpu_pc, cpu_env); tcg_gen_exit_tb(NULL, 0); /* no chaining */ ctx->base.is_jmp = DISAS_NORETURN; return true; From patchwork Fri Jan 21 05:58:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719533 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D14DFC433F5 for ; Fri, 21 Jan 2022 09:09:25 +0000 (UTC) Received: from localhost ([::1]:55970 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApvA-0000Of-Fu for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:09:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53928) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0Y-0008GL-P7 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:47 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0W-0004B6-IC for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744964; x=1674280964; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TKBKT/lup5hc/at0bly7ZZuFETEagyAi3iVW1VXJx8I=; b=V21/qSjZLjATjbhUX09toOd/fHBYNMTknmMgNC+z1HVuOhgq+Q4M7NDB SCC4m4qcpHzYbm3u/M4F2X2gmrFg2yWaUtLhE+1WPdEJNNYnnJvV7q7x3 66X37/jp040ZRy3Sx9m1wB/WJxeMgvnIRSttVpITNC4pS/2+MvK/0lw1H Kli8dLqtN6vtfBr47N/Q3nJJ36s25qDfy11n8JZzRbTU7gnvShuAynkf6 JWFZyc+usSS599D47D0pWM/ot1TbHqIHOTURmilOizo5jy9BoJy/AeyFD rilkfZcsW5CxoVz8co9dgjwUTwyItq9JhoUJocgBblZTMoB9LrLh9yrRZ g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083054" 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; 21 Jan 2022 14:01:33 +0800 IronPort-SDR: 52lsbi39bTMVyWZgIPz8F9HnXRyEpW2cUBQh7QOOxB/GUapSa6L3cR0kMHfHZBlMk1UYvxVdi8 CfjeGQqGTu8N7iSjhsT6/3OurXgD0Y9sOHlbY1NuEoCGwico+V7IEOmocI/BJaHTVnvTs+gmPK LejPwd/On7ii/mxe9qY2SFavuo5L5ipuMIWbuZ7pE5yQAcohJ7mziqbQ5pHII+kzCbC1LfqRGu 6nXG61nJWFdhYC+rg4XKsmCvAe2UVbu4fAjvh21xsop6DRErgQT2rXd8wfBoDMb3j33xf13mgf P8grVKbNsx2wugzGg3FjMa6M Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:00 -0800 IronPort-SDR: XVX52CDEYW8M7QsYdYugGySTjbYn9ZqPqmAHQf92iG73B4gp49rYpf3gMmAk5pL/v5KIPq2XoL kpFA4ej8H3Z6JKn4atgMHpURvP/VWvsf7yEPUoyoYV7MS/AN8qHXKolZeXmI6HjJg8QKO0JRAe 3u4oeAZz1NQiE9v6cq63bglLuTGHMHDnsqfjROBK7HCbeC6k+ZoJzjaliF/bEoUJe8+5ET4vc5 XwTITQhD/t3VkySJBO0jh/cdgZm764BmBFnISso3YAy2Ws8v0lCtvCQMtXn1vUfqNTqwffr32B 3UU= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:33 -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 4Jg7zx1NG1z1SVp1 for ; Thu, 20 Jan 2022 22:01:33 -0800 (PST) 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=1642744892; x=1645336893; bh=TKBKT/lup5hc/at0bl y7ZZuFETEagyAi3iVW1VXJx8I=; b=RSAt3j5IE9Yl6U4qOhQ3g6IOjkSgPFn3t8 7GU11WOeFACf7m3FgT1RIlNpjtor9EvMM0NosCtNB7D1pgoWePgSAZ8HQOH46GcS +kSjJzd3yIF5hoIswJeR/DvDNnWQmz5rQq55OG3ZIn1LXJYZDLOVk2B/Py76t2Zk 2lM6wP/r1OMU6NWZZqJ1/uZSjHFBxXPADpO+k+MhP+eIzONtxSTeikItoucmlpxG UfxMr+4cLlM1tZ17e6+JyGsi8LThKQSQSip1eJ3+G2MX68kLOiJXTYtcNa+gcXq4 u7G8EtjlQShnNR3M5sGt85yHVO1Nhutpz6qFKA9+0Fe35jf6teqQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 jtXtcecu8qVg for ; Thu, 20 Jan 2022 22:01:32 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zs6qztz1RvlN; Thu, 20 Jan 2022 22:01:29 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis Subject: [PULL 41/61] target/riscv: Sign extend link reg for jal and jalr Date: Fri, 21 Jan 2022 15:58:10 +1000 Message-Id: <20220121055830.3164408-42-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-4-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/translate.c | 4 +--- target/riscv/insn_trans/trans_rvi.c.inc | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 330904265e..30c0e28778 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -369,10 +369,8 @@ static void gen_jal(DisasContext *ctx, int rd, target_ulong imm) return; } } - if (rd != 0) { - tcg_gen_movi_tl(cpu_gpr[rd], ctx->pc_succ_insn); - } + gen_set_gpri(ctx, rd, ctx->pc_succ_insn); gen_goto_tb(ctx, 0, ctx->base.pc_next + imm); /* must use this for safety */ ctx->base.is_jmp = DISAS_NORETURN; } diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc index 3a0ae28fef..b9ba57f266 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -68,9 +68,7 @@ static bool trans_jalr(DisasContext *ctx, arg_jalr *a) tcg_temp_free(t0); } - if (a->rd != 0) { - tcg_gen_movi_tl(cpu_gpr[a->rd], ctx->pc_succ_insn); - } + gen_set_gpri(ctx, a->rd, ctx->pc_succ_insn); tcg_gen_lookup_and_goto_ptr(); if (misaligned) { From patchwork Fri Jan 21 05:58:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719488 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A57EFC433EF for ; Fri, 21 Jan 2022 08:30:19 +0000 (UTC) Received: from localhost ([::1]:49978 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApJK-0000jc-3K for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:30:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0k-0008VI-76 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:58 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0i-0004AK-1s for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744976; x=1674280976; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=N07AWP0wS69Tj0dLOFghNA6awyxx5Kz0GBENA1qs9bg=; b=qRVdGMbMlp/Q08+w7Cgg+9zG5zp4v+AqlFzVKeAdhDvvTZkDwHq4frtr SeMJvu5cZriPHKtxhngrr8TliPd1x2xVIka7oCCdwmQRn1NS86bM9y3wj MF9W1wh83CLEyJOO9fwuYnnZ7TYLl17CW3gjQ7v+6IAZ5c+MqXFRGqIwG jrXmvGC7bTALpQwGEUDslaWLYEfKXRLCynahg9a3Ckb7ag8/3ezVoCj0H tBQerp7ZIW5RXcEVXQpmEihzFdsZjjG477IpIp4zOCpoIPPB3dpRAi9+v HjalHl6VQGZt6aAqMijqjEfJwrzNp3OlfeTPGiWVvmczi9AoscMh9otlu Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083058" 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; 21 Jan 2022 14:01:37 +0800 IronPort-SDR: zI7UcqB+vtOULPYlzaP3vkNTKGZlmMZlG/OBQsYpeNF6LYKNP5q2TGGapgE70i1zlgFCasz5WI nc6aIF33ed/lDRCAPCZiu4aUqSOyVO8t5Ys13zQYs9OI0pWGc3ukY3JEIIhJ/qgVfqge3oE9Cy AZM5flvoTxHtJc4x5WprshVLc+0zeena5KFNqzCOkzw2WCC4llpJ+99/DLl4TWm4GXeFcMjkNV c3TDeWOYq4jRe9RjilTVnQh+iknuEKTl4NkNc8MF/o4klLCOHZrLi5ayMh4yKwQ1bdpWc/E558 XXypAE1+z1O3LQNB6B+vJ3jY Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:05 -0800 IronPort-SDR: 6uygw3xQsP6OndpyU4yrMrloYmBgscuhwCL0+IjfL8aGxsP9iq1JjDSYRut3s/2cq25TKwVMNY 1JxETkx2n1QpMP1fMg15LSQ9dd8LN457m78K2ojYSoDBQJIPLZg1jPL+fDEczZAw8FE/zmzapI MTFPizVtgasuxJ3TeYp4F/dHH+xNQ1htkXIJ4C46cQtaP+ro2E2Nx0AN4BpJeSwSMahhsBO3gt 1p9TOMJ/MWOeYIhv10nkC4IqST8KAuFIj2PipWDY+GlQLg9h6gnxDCwXhxH1HosPxp8UgjBwh8 PG4= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:37 -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 4Jg801391bz1SVny for ; Thu, 20 Jan 2022 22:01:37 -0800 (PST) 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=1642744896; x=1645336897; bh=N07AWP0wS69Tj0dLOF ghNA6awyxx5Kz0GBENA1qs9bg=; b=biWknnm54kQTjFyGZs53YLGUrdzTN9cdC6 aOfcK6EDIDHgujQUyyOgM3ZhWkzUf/OhDAhL9nA67LqW2e3tq0Rh+0ShBScMPdF3 BYXODAsM6tGsIQsy/z06HE2IxZ0/iAPEUQYCNvG6btnV5KmArzhbc61BXLMNK6eX Q2EREHQ+b0uoUjBFUC1g64b9eRm+5Mztyw3oOy0X8j/LE97OHOvcl/PGyFe50jIn 1kSyiNfVy2dVDdi0GWsLjZUpXO5bNRIlOxSrsrSf0ruaeJb5cLnO5BEF4kkSCizC Zvf8C+f15flWjdqg1GT1aTFwaSuZz8R0KwrY4Deqeo4HZMgeACaw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 UrlXZkkKdIKe for ; Thu, 20 Jan 2022 22:01:36 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg7zx5LN7z1RvlN; Thu, 20 Jan 2022 22:01:33 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 42/61] target/riscv: Sign extend pc for different XLEN Date: Fri, 21 Jan 2022 15:58:11 +1000 Message-Id: <20220121055830.3164408-43-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei When pc is written, it is sign-extended to fill the widest supported XLEN. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-5-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/translate.c | 25 ++++++++++++++++--- .../riscv/insn_trans/trans_privileged.c.inc | 2 +- target/riscv/insn_trans/trans_rvi.c.inc | 5 ++-- target/riscv/insn_trans/trans_rvv.c.inc | 4 +-- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 30c0e28778..2a88bd99dc 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -193,16 +193,33 @@ static void gen_check_nanbox_s(TCGv_i64 out, TCGv_i64 in) tcg_gen_movcond_i64(TCG_COND_GEU, out, in, t_max, in, t_nan); } +static void gen_set_pc_imm(DisasContext *ctx, target_ulong dest) +{ + if (get_xl(ctx) == MXL_RV32) { + dest = (int32_t)dest; + } + tcg_gen_movi_tl(cpu_pc, dest); +} + +static void gen_set_pc(DisasContext *ctx, TCGv dest) +{ + if (get_xl(ctx) == MXL_RV32) { + tcg_gen_ext32s_tl(cpu_pc, dest); + } else { + tcg_gen_mov_tl(cpu_pc, dest); + } +} + static void generate_exception(DisasContext *ctx, int excp) { - tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next); + gen_set_pc_imm(ctx, ctx->base.pc_next); gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp)); ctx->base.is_jmp = DISAS_NORETURN; } static void generate_exception_mtval(DisasContext *ctx, int excp) { - tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next); + gen_set_pc_imm(ctx, ctx->base.pc_next); tcg_gen_st_tl(cpu_pc, cpu_env, offsetof(CPURISCVState, badaddr)); gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp)); ctx->base.is_jmp = DISAS_NORETURN; @@ -225,10 +242,10 @@ static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) { if (translator_use_goto_tb(&ctx->base, dest)) { tcg_gen_goto_tb(n); - tcg_gen_movi_tl(cpu_pc, dest); + gen_set_pc_imm(ctx, dest); tcg_gen_exit_tb(ctx->base.tb, n); } else { - tcg_gen_movi_tl(cpu_pc, dest); + gen_set_pc_imm(ctx, dest); tcg_gen_lookup_and_goto_ptr(); } } diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc index 6077bbbf11..53613682e8 100644 --- a/target/riscv/insn_trans/trans_privileged.c.inc +++ b/target/riscv/insn_trans/trans_privileged.c.inc @@ -102,7 +102,7 @@ static bool trans_mret(DisasContext *ctx, arg_mret *a) static bool trans_wfi(DisasContext *ctx, arg_wfi *a) { #ifndef CONFIG_USER_ONLY - tcg_gen_movi_tl(cpu_pc, ctx->pc_succ_insn); + gen_set_pc_imm(ctx, ctx->pc_succ_insn); gen_helper_wfi(cpu_env); return true; #else diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc index b9ba57f266..04d3ea237f 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -59,6 +59,7 @@ static bool trans_jalr(DisasContext *ctx, arg_jalr *a) tcg_gen_addi_tl(cpu_pc, get_gpr(ctx, a->rs1, EXT_NONE), a->imm); tcg_gen_andi_tl(cpu_pc, cpu_pc, (target_ulong)-2); + gen_set_pc(ctx, cpu_pc); if (!has_ext(ctx, RVC)) { TCGv t0 = tcg_temp_new(); @@ -827,7 +828,7 @@ static bool trans_fence_i(DisasContext *ctx, arg_fence_i *a) * FENCE_I is a no-op in QEMU, * however we need to end the translation block */ - tcg_gen_movi_tl(cpu_pc, ctx->pc_succ_insn); + gen_set_pc_imm(ctx, ctx->pc_succ_insn); tcg_gen_exit_tb(NULL, 0); ctx->base.is_jmp = DISAS_NORETURN; return true; @@ -836,7 +837,7 @@ static bool trans_fence_i(DisasContext *ctx, arg_fence_i *a) static bool do_csr_post(DisasContext *ctx) { /* We may have changed important cpu state -- exit to main loop. */ - tcg_gen_movi_tl(cpu_pc, ctx->pc_succ_insn); + gen_set_pc_imm(ctx, ctx->pc_succ_insn); tcg_gen_exit_tb(NULL, 0); ctx->base.is_jmp = DISAS_NORETURN; return true; diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 7a040b3089..e03959c46f 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -194,7 +194,7 @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2) gen_set_gpr(s, rd, dst); mark_vs_dirty(s); - tcg_gen_movi_tl(cpu_pc, s->pc_succ_insn); + gen_set_pc_imm(s, s->pc_succ_insn); tcg_gen_lookup_and_goto_ptr(); s->base.is_jmp = DISAS_NORETURN; @@ -219,7 +219,7 @@ static bool do_vsetivli(DisasContext *s, int rd, TCGv s1, TCGv s2) gen_helper_vsetvl(dst, cpu_env, s1, s2); gen_set_gpr(s, rd, dst); mark_vs_dirty(s); - tcg_gen_movi_tl(cpu_pc, s->pc_succ_insn); + gen_set_pc_imm(s, s->pc_succ_insn); tcg_gen_lookup_and_goto_ptr(); s->base.is_jmp = DISAS_NORETURN; From patchwork Fri Jan 21 05:58:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719492 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3CA7FC433EF for ; Fri, 21 Jan 2022 08:34:05 +0000 (UTC) Received: from localhost ([::1]:53584 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApMy-0003M9-4t for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:34:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0k-0008Vj-FQ for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:58 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0i-0004KU-9X for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744976; x=1674280976; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sPb+HetLwrLjaLC9HyGtURERyDVL+93C/QX0fIBuGpw=; b=Bsj20WcUhXD9/OXXJ7WxUbfMN2DoLYtw9fKB3zaiR4/GduCaQJDPpWBz sLEVFtRoF4xQD4CRglOboyb1nLXbEKqPdcY1kzCVKsExkRae78O6uYJnU /oqk4A2wKHNJi023fCfOTpMFxCGK84qZRrYKG0CxtRHpTRBiuri16JIjz gRSs19trI+3oz0G6lSAnvF9V09IFqX+doTDw0RcqShxei95/GTSlyAMMi 775G4Fn3XF0AwkLT9a7350A+a0nOwC4oCf/e0KjzrCh9W8qnrbBCsKi8X EkfGzZ1VF6hD9Au9abkQ2sU3Z9rkeD5HKU/5ylWSu+v4cpzRXyG/Ymc+V g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083063" 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; 21 Jan 2022 14:01:41 +0800 IronPort-SDR: yD20GH3M28gCJFFNH2p+BtEJDFlpvW7dN2H0Y4aQJd7QndH+QyLwf6ZH1sCRoT9lDeTVJWJUap mv8iISLbC5He34E+vsAMAoE4qU1ube/wBP8/HMaxyMb6tWYG69Ta6Mty0ABTO6xiUgqyeD8LhO Qh8DYrwSXacGUkunXvXlSd1uSeYId1IBTW+MZncAp+JSL5wapAp+geFA/GH01VV5laX/jj1kLH TFPLzMF71qaxiarcvEJEUtSZClwxt5Mx1Zo2wffzXnZs1Ev4Ejgh4s6zsUPpFwrjWt4cJQXfYH ceHefGkmXmGukdgynNSn87/U Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:08 -0800 IronPort-SDR: hQBkLilTXlB3aumEDe5s0AbCdu6bXtvlLci1jMppvehZ24DafRKwXuLMiucNAvx7fl3tt3pNxj Y2Z20RaUtSWBjKkNWZSEciYOc+awGGO/TuIjKZr2vpi0Z8LqPU3ys3cy9mRLtjrHLgEuodH0mY jpUFzagAnLsrd2LJ1GS9Q2KJjTYXSqojQpb90ooHlG21xkE9/gL8dz/oxiKt2v2sl6RbTIaSqu xjzoaGzuTXDewMDTAMfV5PViUcZpt7GF83YVYwuSJXNUtaA7WDiJXMErFEKLW2y+clbr7NpyjG Kh0= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:40 -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 4Jg8046BJTz1SVny for ; Thu, 20 Jan 2022 22:01:40 -0800 (PST) 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=1642744900; x=1645336901; bh=sPb+HetLwrLjaLC9Hy GtURERyDVL+93C/QX0fIBuGpw=; b=koptQnfXKTFZUG0r8TUGawIvdajDQ3YZCH CIGNGZ+Cm30mu3fdPhdWt8FvxmJ9t5jhtZfJy8thUsb2dcOavSl4/PE7FhdrtLjY O2KJTENfNGve1eqKbBCixwhEkonyxhW3+8Ja2blm68ETE+U9mGn6Tojyo7cRUxaO N8Hcd8yy/fkzwbcLocPjR4vCT4hK6MLhKiaZl2SVtcMYhiaNKgg6Uykbdhe3tnuJ ZboOuFl7GovGvmuXa171bLuqfo9pouo3yhMoyCdZEmoYYELH4aOrSzFfFXRWAJVs fYHpFXZNL1N6EcRdlxXW7BkHBcXdRpgZvxteLF5rEW0E0q4KfTRA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 FLmqosDI-v9H for ; Thu, 20 Jan 2022 22:01:40 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg8015J05z1RvlN; Thu, 20 Jan 2022 22:01:37 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis Subject: [PULL 43/61] target/riscv: Create xl field in env Date: Fri, 21 Jan 2022 15:58:12 +1000 Message-Id: <20220121055830.3164408-44-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Current xlen has been used in helper functions and many other places. The computation of current xlen is not so trivial, so that we should recompute it as little as possible. Fortunately, xlen only changes in very seldom cases, such as exception, misa write, mstatus write, cpu reset, migration load. So that we can only recompute xlen in this places and cache it into CPURISCVState. Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-6-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 31 +++++++++++++++++++++++++++++++ target/riscv/cpu.c | 1 + target/riscv/cpu_helper.c | 34 ++-------------------------------- target/riscv/csr.c | 2 ++ target/riscv/machine.c | 10 ++++++++++ 5 files changed, 46 insertions(+), 32 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 03552f4aaa..7657e22a56 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -146,6 +146,7 @@ struct CPURISCVState { uint32_t misa_mxl_max; /* max mxl for this cpu */ uint32_t misa_ext; /* current extensions */ uint32_t misa_ext_mask; /* max ext for this cpu */ + uint32_t xl; /* current xlen */ /* 128-bit helpers upper part return value */ target_ulong retxh; @@ -456,6 +457,36 @@ static inline RISCVMXL riscv_cpu_mxl(CPURISCVState *env) } #endif +#if defined(TARGET_RISCV32) +#define cpu_recompute_xl(env) ((void)(env), MXL_RV32) +#else +static inline RISCVMXL cpu_recompute_xl(CPURISCVState *env) +{ + RISCVMXL xl = env->misa_mxl; +#if !defined(CONFIG_USER_ONLY) + /* + * When emulating a 32-bit-only cpu, use RV32. + * When emulating a 64-bit cpu, and MXL has been reduced to RV32, + * MSTATUSH doesn't have UXL/SXL, therefore XLEN cannot be widened + * back to RV64 for lower privs. + */ + if (xl != MXL_RV32) { + switch (env->priv) { + case PRV_M: + break; + case PRV_U: + xl = get_field(env->mstatus, MSTATUS64_UXL); + break; + default: /* PRV_S | PRV_H */ + xl = get_field(env->mstatus, MSTATUS64_SXL); + break; + } + } +#endif + return xl; +} +#endif + /* * Encode LMUL to lmul as follows: * LMUL vlmul lmul diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index c2b570e904..736cf1d4e7 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -413,6 +413,7 @@ static void riscv_cpu_reset(DeviceState *dev) /* mmte is supposed to have pm.current hardwired to 1 */ env->mmte |= (PM_EXT_INITIAL | MMTE_M_PM_CURRENT); #endif + env->xl = riscv_cpu_mxl(env); cs->exception_index = RISCV_EXCP_NONE; env->load_res = -1; set_default_nan_mode(1, &env->fp_status); diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index afee770951..8ebcd57af0 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -35,37 +35,6 @@ int riscv_cpu_mmu_index(CPURISCVState *env, bool ifetch) #endif } -static RISCVMXL cpu_get_xl(CPURISCVState *env) -{ -#if defined(TARGET_RISCV32) - return MXL_RV32; -#elif defined(CONFIG_USER_ONLY) - return MXL_RV64; -#else - RISCVMXL xl = riscv_cpu_mxl(env); - - /* - * When emulating a 32-bit-only cpu, use RV32. - * When emulating a 64-bit cpu, and MXL has been reduced to RV32, - * MSTATUSH doesn't have UXL/SXL, therefore XLEN cannot be widened - * back to RV64 for lower privs. - */ - if (xl != MXL_RV32) { - switch (env->priv) { - case PRV_M: - break; - case PRV_U: - xl = get_field(env->mstatus, MSTATUS64_UXL); - break; - default: /* PRV_S | PRV_H */ - xl = get_field(env->mstatus, MSTATUS64_SXL); - break; - } - } - return xl; -#endif -} - void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags) { @@ -148,7 +117,7 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, } #endif - flags = FIELD_DP32(flags, TB_FLAGS, XL, cpu_get_xl(env)); + flags = FIELD_DP32(flags, TB_FLAGS, XL, env->xl); *pflags = flags; } @@ -364,6 +333,7 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ulong newpriv) } /* tlb_flush is unnecessary as mode is contained in mmu_idx */ env->priv = newpriv; + env->xl = cpu_recompute_xl(env); /* * Clear the load reservation - otherwise a reservation placed in one diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 6bc7ee780c..9be2820d2b 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -589,6 +589,7 @@ static RISCVException write_mstatus(CPURISCVState *env, int csrno, mstatus = set_field(mstatus, MSTATUS64_UXL, xl); } env->mstatus = mstatus; + env->xl = cpu_recompute_xl(env); return RISCV_EXCP_NONE; } @@ -704,6 +705,7 @@ static RISCVException write_misa(CPURISCVState *env, int csrno, /* flush translation cache */ tb_flush(env_cpu(env)); env->misa_ext = val; + env->xl = riscv_cpu_mxl(env); return RISCV_EXCP_NONE; } diff --git a/target/riscv/machine.c b/target/riscv/machine.c index 098670e680..b76e4db99c 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -214,10 +214,20 @@ static const VMStateDescription vmstate_kvmtimer = { } }; +static int riscv_cpu_post_load(void *opaque, int version_id) +{ + RISCVCPU *cpu = opaque; + CPURISCVState *env = &cpu->env; + + env->xl = cpu_recompute_xl(env); + return 0; +} + const VMStateDescription vmstate_riscv_cpu = { .name = "cpu", .version_id = 3, .minimum_version_id = 3, + .post_load = riscv_cpu_post_load, .fields = (VMStateField[]) { VMSTATE_UINTTL_ARRAY(env.gpr, RISCVCPU, 32), VMSTATE_UINT64_ARRAY(env.fpr, RISCVCPU, 32), From patchwork Fri Jan 21 05:58:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719495 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2FE0EC433EF for ; Fri, 21 Jan 2022 08:39:54 +0000 (UTC) Received: from localhost ([::1]:34178 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApSb-000187-28 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:39:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54040) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0l-00005T-DV for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:59 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0j-0004B6-As for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744977; x=1674280977; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XLGMZBRPx0NEetu49RSwi6gA4yKtlkSNpzB0qHWSzmc=; b=fAxeezQ/06VueAyOt5+zEt23yIqVFPw6/2c3UUKDLX7maN+Br0AV5iUI wmtHTsndgzdk2JcNIhsFya+DnsUsNnTCJLVBkaS6KVYj7EjVYkF1ETFjn o1Ohm5PhtKfN5IjWuvP1/1q5ll9TMMkRim1aiphhBfJ+ASSfutIo8w9wq 55cRpX6C9RUho0Rzwy/zMuRY9yK4At3W4pt0tEhdJP07jO01LnGr6Ezbv v7D+DOhJpQAfjS4u7WzTNac/CxRCkWtoj8CfcVLyYND6cDidYJku56JFw h+5hXl582IS1GLMENsnu1jOYev5SxyQDvnqLZpdNCFI3cheZDrMkYovUl Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083070" 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; 21 Jan 2022 14:01:45 +0800 IronPort-SDR: OttMhFRebfPaLetm1K/5UVPAYpNJTwPVjc8pGxKMC8v+U6MRc1b17dmfCglQmX5cpr8MYS63BT X0Azx9u+ul2YT9mO0phAXYfnRwTEKNwam3ebyuzrw+CzRAqzsAelNGJjVS0ezuuBZsXRaO/wgw P6Znt/pjo4ohgOUNlZS+tDYDN7JK2r25N0oGuZbWfTkbRCrEasE0g4kzrcFHUv9lu0krxW0D92 jTYJinY0Br4h42u+17yS6vOlSBXDwykSeE9dUNiYExvzeEpjOjVgccFv/q8AdW41OGqyNf40f1 zRairAKrDrLbXKbPehMhmV2+ Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:13 -0800 IronPort-SDR: TGTM8eG6hwBD/31gEGqFhOLuB2hh9xxCIViwPTnbtG60pBAzwM4r6vSeA/PI3iohMtBqg7+0Rh UG+212CkwofcEDQ17jb7rtkPgpUOEbSynzcfMJmoJVr/hbWr2CrsFf67Lk7hk1BkT/W0t203Ko UfrxNsZ9Ap5+rH7UjGCjhPgsT+SVLOWi34k1K5ibY/i4HvvQZyBP7nRUNB/AxnFX6Yf7OvE7o5 D3+qMrqVLjV7I8zWyrfkvdnv2rkjQmWFo3/dHNvSkowZJe8/M6X4K798/n5VHOLgwube5xpp9n 3aM= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:45 -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 4Jg8093qTfz1SVny for ; Thu, 20 Jan 2022 22:01:45 -0800 (PST) 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=1642744905; x=1645336906; bh=XLGMZBRPx0NEetu49R Swi6gA4yKtlkSNpzB0qHWSzmc=; b=FVF+dwKk/C30+mjF48DiuyTM7kj3+dmwG+ qguxgGv0ZzSVyizmLJ72x0sE9mG7MeENnKHwa0BZDy1a6hVbckh3+1dONRweXBS1 sS9QIcrcXSm9El5cnea1sTQR0bEQolZ/SUW35Z2z9QwxSXoSXKhu8pvYbOCXEfGH vGgSbCOd2EyFV7aF9AzQbQNZ+w8nYCp9BA/rnZ+3lTK90to0JN6WcvwOTieHov30 B1bsF/TCt8Wco62vuXSY0+h3639tQZMRQDVFnvZW7eMSx8QZjEMJzrWarqipKbsG NwDj6N3UQ/7uMI3dzWH+oKCBSPBoX0RCUukMKKQtkEi7d1mGLxOg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 I3JubT14yB1m for ; Thu, 20 Jan 2022 22:01:45 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg8051Qr5z1RvlN; Thu, 20 Jan 2022 22:01:40 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 44/61] target/riscv: Ignore the pc bits above XLEN Date: Fri, 21 Jan 2022 15:58:13 +1000 Message-Id: <20220121055830.3164408-45-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei The read from PC for translation is in cpu_get_tb_cpu_state, before translation. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-7-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 8ebcd57af0..d73925a823 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -43,7 +43,7 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, uint32_t flags = 0; - *pc = env->pc; + *pc = env->xl == MXL_RV32 ? env->pc & UINT32_MAX : env->pc; *cs_base = 0; if (riscv_has_ext(env, RVV) || cpu->cfg.ext_zve32f || cpu->cfg.ext_zve64f) { From patchwork Fri Jan 21 05:58:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719536 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D676BC433EF for ; Fri, 21 Jan 2022 09:17:30 +0000 (UTC) Received: from localhost ([::1]:34454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAq2z-0005FJ-M9 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:17:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54120) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0y-0000Cf-Aa for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:16 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0u-0004AK-Dd for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744988; x=1674280988; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wUf1U0qj6BARONTMAKBZ92D45vuISX1KcrurXCHkxFs=; b=kya0pFyM4K6akAhVpeE8T8xyKpz/YuMz4Ex16wH37LWkLr9nd5wQhslQ x/4pOM7e5L5P5LYyCsetfL2FJV0kuBJyuS0mTi3TBVaL7FSNo0zWtr8OZ /pqr/53V8iM6KU/2F89tMjLvc5wQO++nbwBPob8FgAJT0V/hkPl/4omWy wLyTFyP4btgqi3+9dmTc82s7bJ6v8vLEzjFncJnbaH1APczzGr0VNJ4hj aSg1E+5IsPSbfcsQrwQxzAVXi6onoSJrls+pWGUPvE9LpPt1oBGNFpNl2 wib6kOog8DrNr6/pW+tYSB3E26tkmlBKJ8B1Ugj/f3CZ5kXlkvrWbaj8G Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083078" 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; 21 Jan 2022 14:01:50 +0800 IronPort-SDR: UiF4gLKEnbc3zhmttjV8F356YWf6fxzqqJ8ehcnSMHN147S9Qv7W/PGDFQK22CPe8nVbFSKvjC sOQyxNjSSXdRXEeJrjNJLkh8QWv9jz5t0q2FC5zzfWQ0iHhL8OApwkwrMhX6CC+EKAKONhBuDy z+sGg+0epkN+jAs1SEAI6sRi1losRXdtixPxXL49NUsXOfgMlrVyAJkzmVMvTKL5EUQqh07NfN mdrAMU9gDo2104ItVJSVTyZdqz5U4Hq8yl9f2fHTs3xmstbNELXmxkNKiwODSzkI9ak4QOQ2cS 0IXjrkBpuyPAXHY6VsqADqAg Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:17 -0800 IronPort-SDR: AiYR92fOhXBaG2LdxAkHCd1WeFbVq3hdju6XsyEbe+FtasM6vGVGKA5hpZR6SGrHjXTlLoHUI7 jBT5hlDDEH0g6GIi1fp/Z1MbXPPUI0MZ5dxbwy6g7bnJXEsCFLHSyTVzqLeuV+IX8t9rp25Nlq ZTrUtrazYsEnExUy4ppHlzHW7Dx5EGnwgbaZBg4c+ERDI6JkKVadh2Et8JeTCVzUPA351IluB1 ZA6vQdcpvaenQ/kovJEgmAMvoAkadH5037JDAfT5nj1wjxRj+lC+rBowmjp88Dhbd52I4I5/1y wMQ= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:50 -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 4Jg80F629tz1Rwrw for ; Thu, 20 Jan 2022 22:01:49 -0800 (PST) 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=1642744909; x=1645336910; bh=wUf1U0qj6BARONTMAK BZ92D45vuISX1KcrurXCHkxFs=; b=Y9Dotrwyj+zVitofZedOPigPBM+IYuTm+0 Au+dx/x5wqe5Gs0hVceeD0vjj9MZl5Ojloj5O36Tn4FQkp7inSigla5ZlD/uW4ZF EVaLcU47Y9xzmEkcqczNeGM+0dDyr4+fzfkbdNp52cQRrY8O7h2zKMn7paKPFrjt VakR1kRCwZVR4/tnE6bSmupv0z76K4mX7Ba46xyJ6StfILMz1/2E76aL2JD0k1Dl 06b3UtU8a/RNmPIUK8/YWDhHKciZPN4TZNgf8i9v33Vq1bQJ6LfM4e6oxiN1WqQG kFN85umzl4YbSmll1mSq+NHj5MfgKSPJYi5beXtO2r2bvMX9rXPQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 WW8M7NDaB33k for ; Thu, 20 Jan 2022 22:01:49 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80B0GYjz1RvlN; Thu, 20 Jan 2022 22:01:45 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 45/61] target/riscv: Extend pc for runtime pc write Date: Fri, 21 Jan 2022 15:58:14 +1000 Message-Id: <20220121055830.3164408-46-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei In some cases, we must restore the guest PC to the address of the start of the TB, such as when the instruction counter hits zero. So extend pc register according to current xlen for these cases. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-8-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 736cf1d4e7..eac5f7bf03 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -355,7 +355,12 @@ static void riscv_cpu_set_pc(CPUState *cs, vaddr value) { RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; - env->pc = value; + + if (env->xl == MXL_RV32) { + env->pc = (int32_t)value; + } else { + env->pc = value; + } } static void riscv_cpu_synchronize_from_tb(CPUState *cs, @@ -363,7 +368,13 @@ static void riscv_cpu_synchronize_from_tb(CPUState *cs, { RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; - env->pc = tb->pc; + RISCVMXL xl = FIELD_EX32(tb->flags, TB_FLAGS, XL); + + if (xl == MXL_RV32) { + env->pc = (int32_t)tb->pc; + } else { + env->pc = tb->pc; + } } static bool riscv_cpu_has_work(CPUState *cs) @@ -384,7 +395,12 @@ static bool riscv_cpu_has_work(CPUState *cs) void restore_state_to_opc(CPURISCVState *env, TranslationBlock *tb, target_ulong *data) { - env->pc = data[0]; + RISCVMXL xl = FIELD_EX32(tb->flags, TB_FLAGS, XL); + if (xl == MXL_RV32) { + env->pc = (int32_t)data[0]; + } else { + env->pc = data[0]; + } } static void riscv_cpu_reset(DeviceState *dev) From patchwork Fri Jan 21 05:58:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719537 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08BC6C433F5 for ; Fri, 21 Jan 2022 09:22:35 +0000 (UTC) Received: from localhost ([::1]:42584 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAq7u-0002RS-Js for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:22:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54128) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0y-0000Cq-MK for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:19 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0u-0004KU-NL for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744988; x=1674280988; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=My+y4xwrIoPeaWHLgNp5KOb2eyb0GktoaTHMAVqUJVU=; b=bIdO457wVeF7Ukux3i3q00579IJc6P5AHKSMw9p39ccgQBfhGzYl3Wvi MQmN9oZWi43I8wRqyHIHYqMF256A2zRuEMXUIu2g9OdV/lO1Q66+wpVOT 2/NdbyEACnsR8AEVXVK+HYqc5ZHfY6jdN+EgY2tNSrwQ6/OYETvm3GtXp sXH31eXyV1y6+cOJ8O/z5paNfVYQI6Nesv2Iv287cMi4442RFqIIep0Bc DqrhUg54KjM7dHv59tx6PuTJDx9TeAPtKQ8WjtBK2+2U3VPqfVsquqXXX sGIAoxu6vG7dTHGv56tOXGh2kJ3Y+nug+pg8usjHdNrTIsYN8XngLGkrt A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083094" 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; 21 Jan 2022 14:01:54 +0800 IronPort-SDR: 216oAfc0MERJ757hx1qW3hmys5AM2ycaDiBC4AIA9axkqgKQUOyypU7FvDuA1mG0Hecsg4XGAu 9qtkNc+sXlfaE8Olcjkc3XmhYKkWAx96uaOyFCnSSYUU1LnRah1HKBtkZK7KFNr2C7k0y1LYc0 NizOd2xQ2GoQQqKSydIO/OGDd2TH6VdI/JhLjjge9JXsqqfVx9gO2krBQamBK6vFCEQrjrUW7z UgTdU38zxU7YG5Z2tTrHmiA0vCNZrmmSHDD6GsztI6/FErHmB0dPitcYNI538DheTgWrshRKm4 OLY3Opu5IiVGf8R4pFnHvl/L Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:22 -0800 IronPort-SDR: Xt+Svdwk355gDWjoXmqFbgKvlEhq5PfgM3+jf718qP6B5ODJA5O5BHooxtZTE5mWgI+zCrV685 WukKWDTB/Vgi9OpdkPyyomzwq/m/WCXJIzKn3clvVzYN0CVQGVNiqz0GkwJ4i9GqZCZDZZkRmP yN4ysYl8tw8Uxokv/57lpFfW1Nf9P/lvdoPz3YNzZ7gS3rQ8OnTcrQMDyjxfXanJzpqYX8T10u HvrIQGlJsAHj5bH3CCDLxi80IdaruwDlbO+ctLaWCyPhrLO7ROT/Ef8K0l6piUy8GQ+9S9fZX3 rU8= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:54 -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 4Jg80L1WdVz1Rwrw for ; Thu, 20 Jan 2022 22:01:54 -0800 (PST) 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=1642744913; x=1645336914; bh=My+y4xwrIoPeaWHLgN p5KOb2eyb0GktoaTHMAVqUJVU=; b=ZexEKcn+MUB5236bMGymZmyEFs639UNED+ l/v1TrWj/ImgOcp3CDv34+q0+VLOl2uC5T9znQTPG0gWwaHzZHI3ga0liYDsk3j/ oZuWLKce5eBWSlHN5x+YqaWk6gq6kBunqnCRjxaTv0Nj7ScoZEcTJCY9TUd7njio 5scRJKIzM7elJHJao4PGBU2aDXn4K700MEVVvXxrhhrSLkKA3b07ZOQy48gsf+eX 3jS5QZNSlj+hqf2he8f5l9kxBFex789Z+ROICu3hhWuWJRJQrptVhIgkWZK981qr gm3DQ/EhSaHOmXP2taDNxmsbEXY/45UePmrOQ4Z+VHQXuqsBm/2w== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 9vAG5wqsRGxh for ; Thu, 20 Jan 2022 22:01:53 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80G2QcQz1RvlN; Thu, 20 Jan 2022 22:01:49 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 46/61] target/riscv: Use gdb xml according to max mxlen Date: Fri, 21 Jan 2022 15:58:15 +1000 Message-Id: <20220121055830.3164408-47-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-9-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 8 ++--- target/riscv/gdbstub.c | 71 +++++++++++++++++++++++++++++++----------- 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index eac5f7bf03..690c879901 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -466,6 +466,7 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) RISCVCPU *cpu = RISCV_CPU(dev); CPURISCVState *env = &cpu->env; RISCVCPUClass *mcc = RISCV_CPU_GET_CLASS(dev); + CPUClass *cc = CPU_CLASS(mcc); int priv_version = 0; Error *local_err = NULL; @@ -516,11 +517,13 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) switch (env->misa_mxl_max) { #ifdef TARGET_RISCV64 case MXL_RV64: + cc->gdb_core_xml_file = "riscv-64bit-cpu.xml"; break; case MXL_RV128: break; #endif case MXL_RV32: + cc->gdb_core_xml_file = "riscv-32bit-cpu.xml"; break; default: g_assert_not_reached(); @@ -802,11 +805,6 @@ static void riscv_cpu_class_init(ObjectClass *c, void *data) cc->gdb_read_register = riscv_cpu_gdb_read_register; cc->gdb_write_register = riscv_cpu_gdb_write_register; cc->gdb_num_core_regs = 33; -#if defined(TARGET_RISCV32) - cc->gdb_core_xml_file = "riscv-32bit-cpu.xml"; -#elif defined(TARGET_RISCV64) - cc->gdb_core_xml_file = "riscv-64bit-cpu.xml"; -#endif cc->gdb_stop_before_watchpoint = true; cc->disas_set_info = riscv_cpu_disas_set_info; #ifndef CONFIG_USER_ONLY diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index a5429b92d4..f531a74c2f 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -50,11 +50,23 @@ int riscv_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; + target_ulong tmp; if (n < 32) { - return gdb_get_regl(mem_buf, env->gpr[n]); + tmp = env->gpr[n]; } else if (n == 32) { - return gdb_get_regl(mem_buf, env->pc); + tmp = env->pc; + } else { + return 0; + } + + switch (env->misa_mxl_max) { + case MXL_RV32: + return gdb_get_reg32(mem_buf, tmp); + case MXL_RV64: + return gdb_get_reg64(mem_buf, tmp); + default: + g_assert_not_reached(); } return 0; } @@ -63,18 +75,32 @@ int riscv_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) { RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; - - if (n == 0) { - /* discard writes to x0 */ - return sizeof(target_ulong); - } else if (n < 32) { - env->gpr[n] = ldtul_p(mem_buf); - return sizeof(target_ulong); + int length = 0; + target_ulong tmp; + + switch (env->misa_mxl_max) { + case MXL_RV32: + tmp = (int32_t)ldl_p(mem_buf); + length = 4; + break; + case MXL_RV64: + if (env->xl < MXL_RV64) { + tmp = (int32_t)ldq_p(mem_buf); + } else { + tmp = ldq_p(mem_buf); + } + length = 8; + break; + default: + g_assert_not_reached(); + } + if (n > 0 && n < 32) { + env->gpr[n] = tmp; } else if (n == 32) { - env->pc = ldtul_p(mem_buf); - return sizeof(target_ulong); + env->pc = tmp; } - return 0; + + return length; } static int riscv_gdb_get_fpu(CPURISCVState *env, GByteArray *buf, int n) @@ -387,13 +413,20 @@ void riscv_cpu_register_gdb_regs_for_features(CPUState *cs) cs->gdb_num_regs), "riscv-vector.xml", 0); } -#if defined(TARGET_RISCV32) - gdb_register_coprocessor(cs, riscv_gdb_get_virtual, riscv_gdb_set_virtual, - 1, "riscv-32bit-virtual.xml", 0); -#elif defined(TARGET_RISCV64) - gdb_register_coprocessor(cs, riscv_gdb_get_virtual, riscv_gdb_set_virtual, - 1, "riscv-64bit-virtual.xml", 0); -#endif + switch (env->misa_mxl_max) { + case MXL_RV32: + gdb_register_coprocessor(cs, riscv_gdb_get_virtual, + riscv_gdb_set_virtual, + 1, "riscv-32bit-virtual.xml", 0); + break; + case MXL_RV64: + gdb_register_coprocessor(cs, riscv_gdb_get_virtual, + riscv_gdb_set_virtual, + 1, "riscv-64bit-virtual.xml", 0); + break; + default: + g_assert_not_reached(); + } gdb_register_coprocessor(cs, riscv_gdb_get_csr, riscv_gdb_set_csr, riscv_gen_dynamic_csr_xml(cs, cs->gdb_num_regs), From patchwork Fri Jan 21 05:58:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719371 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6CC44C433EF for ; Fri, 21 Jan 2022 07:25:59 +0000 (UTC) Received: from localhost ([::1]:37674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoJ4-0004J6-8E for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:25:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54132) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn16-0000D5-2W for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:25 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0v-0004B6-Lp for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744989; x=1674280989; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=T8TZTLkm6TVOiPDKon5xAmNZPmH96wo+nLKM8NyUM5c=; b=dVfjrialjG7z4zDLX9l45QQZ6hHrl1St9GNJJ95gWUwEtPO5e1jOYMs3 EJuvFOyW8q3UCNJOaGvi5ev1U7UBwREDzk8LPSR7HQXjNjWqE+K/iAT/i bj7Ag8rQHmwktXNt/LQvj5c562VXL8GK/C1s0nQcElWTc6EUd45uOeyRU hVkf6LYimTmFIqqcltjOKB27d70FcPz59HXUfuH2Rso+tH/MIfre2g4ch cBBW4YTENrAC9ikPxY1BleD0E96vuvF088YWhtmnYj2tum0Sb16ZUmnLs CfkRugGqcPBiu1aj7OVZGfeOFCn+Ka2oVQG6npqvjuPqFTppRRX7g4idP A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083102" 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; 21 Jan 2022 14:01:59 +0800 IronPort-SDR: pS30i9UAPfbL6PEC5p8JcA2PZ6JFnn8r+heRNAqWWunGIvMACvgOBNGKXnVMtWLeYWE4XY8bTE Y1K1r2va++zOSPR1s+z3Y92DqHKlOctQ7AqXM9hs899Fwa2p0rV/YXc/ZrJKa+ueJglu1G8IRi hUZWyWZVPy6ZP8gZPfYs8qaIDc+wHkWEGF7QLUCJuL1IxS2jDulK0mp3CqJ62GYjrcIl2aflMe wpWS9hKPsLeNd5W3v3l5zzdkCwKrODFmOUJV5CFRQfXfKXWtZL3luyCh/l0G8FcVu/E784GcF5 dxnD/DwRVilAWq9gEF2jyOZC Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:26 -0800 IronPort-SDR: IZ9jYesM+FWUn9gQiUmGInbyEXzyYuae8jZ9ad9Xf695TgOyGdAzs6+jrxa0emf2uBY6OUx2ON 6AIqyrbNGHFC8oFnF9EAbZmHcLoipapQs40ekiZi/X1jGMR4NE/XQAi8nZYilmKLigaNYStwi8 9uJXLZQNkjARuNL2jUCE6HlkZTemxmPMxeyjmkNalWqvKXso/s9wkCT6ei7Mc1Z6A3tqZDsS9G abLh4LJ1Ij+T0Kh6K3E2YloVbqjU+/6qG2jB5N7nnMJxmc9bcjyGttGHg735UH0pgfvnDgDLOh usI= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:01:58 -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 4Jg80Q3mnbz1SVp3 for ; Thu, 20 Jan 2022 22:01:58 -0800 (PST) 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=1642744918; x=1645336919; bh=T8TZTLkm6TVOiPDKon 5xAmNZPmH96wo+nLKM8NyUM5c=; b=KURQy8VAWrMfcnbLFssfamuwbhMLPzhO77 JfOEjMLo+XpG7wFxOfkUE3MCQioCqzWvpVuYSZk0V9KPc6oObz7HB+wv9X6WTO4g w2Mybke2fOZ8tVtJP+1nC+96WWiPRCTsEqwhSLl3kFUs8siG7gDKxqlJs2oWPCTy LWoi4ieiIUr46zmYeuzflJMv9uah8g3FCqtX9Xj+BSAm75AMcwUNTxGfgOg00egl trtMfQLnApUPCJ5/+idFivHQ/meLaKNQF+FxL5Omo+qUgPi3efKBQxb1fPCHcH7d NCb9X9ctrob4AonX/9NNA4wcZuyfsE/3LDRSbteDpeJZIITGq7rw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 2xa5E4QChXWq for ; Thu, 20 Jan 2022 22:01:58 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80L3wKSz1RvlN; Thu, 20 Jan 2022 22:01:54 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 47/61] target/riscv: Relax debug check for pm write Date: Fri, 21 Jan 2022 15:58:16 +1000 Message-Id: <20220121055830.3164408-48-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-10-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 9be2820d2b..c00a82022e 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -1556,6 +1556,9 @@ static bool check_pm_current_disabled(CPURISCVState *env, int csrno) int csr_priv = get_field(csrno, 0x300); int pm_current; + if (env->debugger) { + return false; + } /* * If priv lvls differ that means we're accessing csr from higher priv lvl, * so allow the access From patchwork Fri Jan 21 05:58:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719554 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 06DA0C433EF for ; Fri, 21 Jan 2022 09:45:09 +0000 (UTC) Received: from localhost ([::1]:54260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAqTj-0004iY-Im for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:45:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55782) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAnAr-00065l-BK for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:13:25 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:54834) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAnAo-0007Cg-NO for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:13:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745601; x=1674281601; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=N+1aRLXT092oBNqxBx2BPdiTh6Kqw+t9KVDu5u2B7YY=; b=NceM3nJmuec2Xk5HKcDE5sWpT4pcP5HxpsixNU82Me3B6vxQpLWzmqOS PKH6Vo4T5I7FdAU9L9sH+FfXua/O2B9EKSkaIVQ7QRHVeZrlqe9lknre7 glcoviCl5asi4rKbISkyWtdpBmDlYA3sJHtd/8bSiE5WDcFZTR5wSK309 nKIJqOF+kOby2w6EkjHMiLMyu1hH5CPjA+rpN5LQu3Wpuzc36Q2jPFEer CPD63UeLHX7Tf1U67G9XXyTn3Mj9BlaHktsT1NDcnKfxMx9zz/ptFvsn1 CsJCEuqot11Tdc7euJNTI/8cyOcgfF0GYXabXrXbiUaFOhUbbCRNS03YG A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814959" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:13:17 +0800 IronPort-SDR: W1AETn0sW0pG0tV7tJygJwXEBChPxqtA/8ufB9ugvQdv2I4Pks+N55OBkLORDABxCVaWhfBAuP Tg4bqrFNfMhi9w6g5NoAObPOpYgJKfzr6wGFwf/OpCy5L/wgwk4b2QL3zbvl6yDCm0hhXFaEiN Y4RVpNSghu3O0+W9jRRDEnbatPVXia4X3v0e/C8eL2Q8IlcXgEZFvA7bDMn6wdTf72PxtDXEWt d/8Q3vL+dZnYtc7u5FpQ9M4U/4qYAtC4/893DLo4bjn+7pJ+aEx7sc6iBkwv6HIuXlzol98m3l W4yLGjyqyTz6qUiuZWOi4gYg Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:45:29 -0800 IronPort-SDR: ZzY33hnisot8pxmBx/MAVVBY/G50fFCALXmrdmBYPQhPbRd9tqOUkp4OdJwE1GP15CVjh0tIXv uuCm02AC81wxn4cC4HkYD9quQST8WBkR2LTLuJaShRvMdckVgFbCuA2RdoNWNT/KDWnVatdTcM FYS6hoKGTit65K/H03VO+mrS+FlQkTz0wkEvdLWU7n9Iao6qqT+/laB2T0dS4oKS/IbA+dMfmH BWPb+LTsI+m3loZ72vMVHqoSGcwRcIZXeJevOVXOsF734ISIBX6m9Ky3xduKsS1VuOs1xK6oYa pdU= WDCIronportException: Internal 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; 20 Jan 2022 22:13:17 -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 4Jg80V6MGVz1SHwl for ; Thu, 20 Jan 2022 22:02:02 -0800 (PST) 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=1642744922; x=1645336923; bh=N+1aRLXT092oBNqxBx 2BPdiTh6Kqw+t9KVDu5u2B7YY=; b=hakkfTkG/L3nWxAatKf9yyeGbmP74TsNSt 5qPxe1J5SXrwWBnavzD2UqerbA945qWPxceZp2425O1bVXUKt7zbvUEXbvzWqImR EovyaqgZBOEuiUSGTAyFL+X8iWv5FaiPaY/esZzSYGqRGHhT2sXy2Nv7FZxOBi9I Zeb8c8YTXwLj845ryk9h2Og6zEHD+d8cx1bOsxV45HAJhSzbBhZXV1eUuJzSV7t0 vMChWnB0rhpcqeLArnjjm3VnuwL9mFhxte45m3DzzaAc8cLcHRhKchnBdTMKvdOP gf8P8JPdO51wYRePKrcqGRkV8GNPFbUV8KOTE+ZfIYyd81mq6Knw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 gIq4766SIUy7 for ; Thu, 20 Jan 2022 22:02:02 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80R0gKCz1RvlN; Thu, 20 Jan 2022 22:01:58 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 48/61] target/riscv: Adjust csr write mask with XLEN Date: Fri, 21 Jan 2022 15:58:17 +1000 Message-Id: <20220121055830.3164408-49-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Write mask is representing the bits we care about. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-11-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/op_helper.c | 3 ++- target/riscv/insn_trans/trans_rvi.c.inc | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 67693cb42b..1a75ba11e6 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -50,7 +50,8 @@ target_ulong helper_csrr(CPURISCVState *env, int csr) void helper_csrw(CPURISCVState *env, int csr, target_ulong src) { - RISCVException ret = riscv_csrrw(env, csr, NULL, src, -1); + target_ulong mask = env->xl == MXL_RV32 ? UINT32_MAX : (target_ulong)-1; + RISCVException ret = riscv_csrrw(env, csr, NULL, src, mask); if (ret != RISCV_EXCP_NONE) { riscv_raise_exception(env, ret, GETPC()); diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc index 04d3ea237f..631bc1f09e 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -924,7 +924,8 @@ static bool do_csrrw_i128(DisasContext *ctx, int rd, int rc, static bool trans_csrrw(DisasContext *ctx, arg_csrrw *a) { - if (get_xl(ctx) < MXL_RV128) { + RISCVMXL xl = get_xl(ctx); + if (xl < MXL_RV128) { TCGv src = get_gpr(ctx, a->rs1, EXT_NONE); /* @@ -935,7 +936,8 @@ static bool trans_csrrw(DisasContext *ctx, arg_csrrw *a) return do_csrw(ctx, a->csr, src); } - TCGv mask = tcg_constant_tl(-1); + TCGv mask = tcg_constant_tl(xl == MXL_RV32 ? UINT32_MAX : + (target_ulong)-1); return do_csrrw(ctx, a->rd, a->csr, src, mask); } else { TCGv srcl = get_gpr(ctx, a->rs1, EXT_NONE); @@ -1013,7 +1015,8 @@ static bool trans_csrrc(DisasContext *ctx, arg_csrrc *a) static bool trans_csrrwi(DisasContext *ctx, arg_csrrwi *a) { - if (get_xl(ctx) < MXL_RV128) { + RISCVMXL xl = get_xl(ctx); + if (xl < MXL_RV128) { TCGv src = tcg_constant_tl(a->rs1); /* @@ -1024,7 +1027,8 @@ static bool trans_csrrwi(DisasContext *ctx, arg_csrrwi *a) return do_csrw(ctx, a->csr, src); } - TCGv mask = tcg_constant_tl(-1); + TCGv mask = tcg_constant_tl(xl == MXL_RV32 ? UINT32_MAX : + (target_ulong)-1); return do_csrrw(ctx, a->rd, a->csr, src, mask); } else { TCGv src = tcg_constant_tl(a->rs1); From patchwork Fri Jan 21 05:58:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719446 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E922BC433F5 for ; Fri, 21 Jan 2022 08:01:45 +0000 (UTC) Received: from localhost ([::1]:60634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAore-0004P2-5c for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:01:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53648) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0Q-0007vN-R9 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:38 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:53939) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn00-0005AO-EB for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744932; x=1674280932; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=s4soeCmdQ2vjsAiWXcDwPw7kOq4kDmAaL+Zjclw0Xf8=; b=J05/xK7EaPjRIToY7LE7KUc5FLwDFF3xze0AQf2bn1j5o/rhiKzpb7Bi 9pTToQ9eHURKh57nCu2bvp40kKKBIHvrqtB+Kvc17BoY6rWObklg0qvEv X0C4SCrrJtRvkS9hgUXc2rnSuggCuGFB99OOK2SrzM+2dKJ4n6J1tvQ49 Qk1jHe19C4+jMXZigmxUmqN20Qu83uKv/krVzPX2MgkY3zDypzAFVOP+X 861WJlPxYPPhKLGloML9YZsPNSb+x+7ji2kwXvTg97GDPHh8+I3U6jklc BavRB54IdqYSEMoIsmTXDl7yzXVNC994waf6EAWNuAnGKFliUq4rcOpz0 A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814202" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:02:06 +0800 IronPort-SDR: eCVi4snE1UIKSFdE2ZwDmvKFeBVP1yDLa1/ubl1vtAv9gpJCt4vRgvNjzFmR8cDYcTN2px0DV6 67AioKa+mv75Isyjdj0yAHakYjHX6O/KIlJqyH3o6V8rphaWrxOFMuSbI7PiJWjylm9YvZYD8g aTcoV8fTrLtm6qHwXNmjJI7hU5ip1i/YZbPRyiTOareg57rHBjt1eYY5GX8uLsgIY4ysP1lwAy T8yd4WFDFh1mklkUOsbqpNZajGOfIXa921nyuGnjc/4OxeVNDoFKwgN3uV13MQsHd4iQBkJuqK 7lALytt1OCBdDHnbXTMYBHEj Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:34 -0800 IronPort-SDR: 25JaqG/yJwKU5RajmBCpob634cs6RNqzTL8lxh4XhMdoFQB7p4PWUbiaoaHm4UBdXlARMF8rJt N4iUq+iEPrsmplaM5C7j14yuUUGXEwdeI8o8bgijse8mwTq8MGNnCjvgwPVHioby6T/5Ya1B2O jwn1SNr6WBJs66TtrCfWA4beV3QT/PZaRKKcgVXAc5qE0J1CMVcTtv1DrDddiGL997xoga9dGk JyULTABMjI9RGU+IZ8tTmNwQ754lYjY/nBUckMz8qE1oCyu2TMPaEbFUJZ/RKcjnpYhHF2d/xC MOE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:07 -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 4Jg80b1RBPz1SVp5 for ; Thu, 20 Jan 2022 22:02:07 -0800 (PST) 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=1642744926; x=1645336927; bh=s4soeCmdQ2vjsAiWXc DwPw7kOq4kDmAaL+Zjclw0Xf8=; b=HXHQGnWKbqx2Ut65yxPFkDIZ7y0b/QY8An cQa9JCy7n8TzmCpX1t15ObdcoFU79pZ7EkrsKX24WRaWtYdgW6dQNGRVpJ+Urtfb zK7CpEJ6X5p0AdLEY75Ro0wITRr5JJvqVPf05DH0dZafp9a6XXlv9bcOWxbIYcMV eOlgB0Lbqgj5IoIp3nF384Ps8BGiHobjOE6rKrjjS7KJ5XXB+4zHR6M+otkSaoDz TxVW0pxKKhOnOpEyOylovAbmMNmTlc4+R7glfZxiE4LyNZImUmpd3YQf79bXYDcB a2uE8ztKMhix5qRvz5OjYoSI4/jwvrg1ROJ3eiB8BivD6TKSfPJA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 hXQzjmXK_9a5 for ; Thu, 20 Jan 2022 22:02:06 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80W3988z1RvlN; Thu, 20 Jan 2022 22:02:02 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis , Richard Henderson Subject: [PULL 49/61] target/riscv: Create current pm fields in env Date: Fri, 21 Jan 2022 15:58:18 +1000 Message-Id: <20220121055830.3164408-50-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Reviewed-by: Richard Henderson Message-id: 20220120122050.41546-12-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 ++++ target/riscv/cpu.c | 1 + target/riscv/cpu_helper.c | 43 +++++++++++++++++++++++++++++++++++++++ target/riscv/csr.c | 19 +++++++++++++++++ target/riscv/machine.c | 1 + 5 files changed, 68 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 7657e22a56..6fe842edfd 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -266,6 +266,8 @@ struct CPURISCVState { target_ulong upmmask; target_ulong upmbase; #endif + target_ulong cur_pmmask; + target_ulong cur_pmbase; float_status fp_status; @@ -515,6 +517,8 @@ static inline uint32_t vext_get_vlmax(RISCVCPU *cpu, target_ulong vtype) void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *pflags); +void riscv_cpu_update_mask(CPURISCVState *env); + RISCVException riscv_csrrw(CPURISCVState *env, int csrno, target_ulong *ret_value, target_ulong new_value, target_ulong write_mask); diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 690c879901..a120d474df 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -430,6 +430,7 @@ static void riscv_cpu_reset(DeviceState *dev) env->mmte |= (PM_EXT_INITIAL | MMTE_M_PM_CURRENT); #endif env->xl = riscv_cpu_mxl(env); + riscv_cpu_update_mask(env); cs->exception_index = RISCV_EXCP_NONE; env->load_res = -1; set_default_nan_mode(1, &env->fp_status); diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index d73925a823..b239d721f4 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -122,6 +122,48 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, *pflags = flags; } +void riscv_cpu_update_mask(CPURISCVState *env) +{ + target_ulong mask = -1, base = 0; + /* + * TODO: Current RVJ spec does not specify + * how the extension interacts with XLEN. + */ +#ifndef CONFIG_USER_ONLY + if (riscv_has_ext(env, RVJ)) { + switch (env->priv) { + case PRV_M: + if (env->mmte & M_PM_ENABLE) { + mask = env->mpmmask; + base = env->mpmbase; + } + break; + case PRV_S: + if (env->mmte & S_PM_ENABLE) { + mask = env->spmmask; + base = env->spmbase; + } + break; + case PRV_U: + if (env->mmte & U_PM_ENABLE) { + mask = env->upmmask; + base = env->upmbase; + } + break; + default: + g_assert_not_reached(); + } + } +#endif + if (env->xl == MXL_RV32) { + env->cur_pmmask = mask & UINT32_MAX; + env->cur_pmbase = base & UINT32_MAX; + } else { + env->cur_pmmask = mask; + env->cur_pmbase = base; + } +} + #ifndef CONFIG_USER_ONLY static int riscv_cpu_local_irq_pending(CPURISCVState *env) { @@ -334,6 +376,7 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ulong newpriv) /* tlb_flush is unnecessary as mode is contained in mmu_idx */ env->priv = newpriv; env->xl = cpu_recompute_xl(env); + riscv_cpu_update_mask(env); /* * Clear the load reservation - otherwise a reservation placed in one diff --git a/target/riscv/csr.c b/target/riscv/csr.c index c00a82022e..292f7e1624 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -1607,6 +1607,7 @@ static RISCVException write_mmte(CPURISCVState *env, int csrno, /* hardwiring pm.instruction bit to 0, since it's not supported yet */ wpri_val &= ~(MMTE_M_PM_INSN | MMTE_S_PM_INSN | MMTE_U_PM_INSN); env->mmte = wpri_val | PM_EXT_DIRTY; + riscv_cpu_update_mask(env); /* Set XS and SD bits, since PM CSRs are dirty */ mstatus = env->mstatus | MSTATUS_XS; @@ -1682,6 +1683,9 @@ static RISCVException write_mpmmask(CPURISCVState *env, int csrno, uint64_t mstatus; env->mpmmask = val; + if ((env->priv == PRV_M) && (env->mmte & M_PM_ENABLE)) { + env->cur_pmmask = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ @@ -1707,6 +1711,9 @@ static RISCVException write_spmmask(CPURISCVState *env, int csrno, return RISCV_EXCP_NONE; } env->spmmask = val; + if ((env->priv == PRV_S) && (env->mmte & S_PM_ENABLE)) { + env->cur_pmmask = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ @@ -1732,6 +1739,9 @@ static RISCVException write_upmmask(CPURISCVState *env, int csrno, return RISCV_EXCP_NONE; } env->upmmask = val; + if ((env->priv == PRV_U) && (env->mmte & U_PM_ENABLE)) { + env->cur_pmmask = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ @@ -1753,6 +1763,9 @@ static RISCVException write_mpmbase(CPURISCVState *env, int csrno, uint64_t mstatus; env->mpmbase = val; + if ((env->priv == PRV_M) && (env->mmte & M_PM_ENABLE)) { + env->cur_pmbase = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ @@ -1778,6 +1791,9 @@ static RISCVException write_spmbase(CPURISCVState *env, int csrno, return RISCV_EXCP_NONE; } env->spmbase = val; + if ((env->priv == PRV_S) && (env->mmte & S_PM_ENABLE)) { + env->cur_pmbase = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ @@ -1803,6 +1819,9 @@ static RISCVException write_upmbase(CPURISCVState *env, int csrno, return RISCV_EXCP_NONE; } env->upmbase = val; + if ((env->priv == PRV_U) && (env->mmte & U_PM_ENABLE)) { + env->cur_pmbase = val; + } env->mmte |= PM_EXT_DIRTY; /* Set XS and SD bits, since PM CSRs are dirty */ diff --git a/target/riscv/machine.c b/target/riscv/machine.c index b76e4db99c..a4b7859c2a 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -220,6 +220,7 @@ static int riscv_cpu_post_load(void *opaque, int version_id) CPURISCVState *env = &cpu->env; env->xl = cpu_recompute_xl(env); + riscv_cpu_update_mask(env); return 0; } From patchwork Fri Jan 21 05:58:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719461 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1FB30C433F5 for ; Fri, 21 Jan 2022 08:18:42 +0000 (UTC) Received: from localhost ([::1]:41214 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAp84-0002jP-SG for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:18:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53694) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0R-0007xv-Uv for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:40 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:53946) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn02-0005As-7M for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744933; x=1674280933; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3vgktb5EDlAfBr28kqak3LKYudEjbo80mWaCphCZPxE=; b=gpKVYn9t+4t5EHqKHo9eEqp7bLoICS82Hj2ILW0ABmIzt55cudzdwzcf 8Ok52sPQEm+ks01Ftob06nPRvLMU5hfMJaAYXkpP6hmieCXEnCMVcms4U nM+IxFMMVbY1IJewNURDCDeKB1E7Nd9H5sGgFDGT/XyRx2iSOLn7o9MpT l7j891Jr3xurhilm0s/HvmZhsD9D2x2hUyJm+3oz8vS1ncktsEr1MLONf 8a3pXuP3wvejbBdKzFN0s7LlR0Lu3eUOHcWrt1M/dTPoNlCdEqFQpct4u sBHyTy+hHrmnXNUI64VGdXOgakaBqKFx1hoRpJBZQQWRFFj2WL7Sn8zxk A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814213" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:02:11 +0800 IronPort-SDR: bwLe29jwig1hPHslpN33mCTEPLj7iH+0UqnumjJ07Iwu5hIX9x+LGdEzluNaDC6GBg/jxg7S9o m82+FcscKUTwkTQ2w29XOJTqQeRMyCHGqImPswHMoSGVUUEfVkaJCBxAmO0crfFpQpYh5+GiWu iLVprcCke3k3UwIzMzpriEaXQQpOPN5GDBITYr9phkqsi8Ak5v1Sqt1taHt7/UzF+RUDJN2uNZ BooHzZBuvcHnGUM1o7WDsWV6N6ddyRXICXlcsuuO4xAqgfYH1KxqmL3hY4WnJXAY4WOjB5kIhi vSuQq6jOvUxsa6VdR5+gv6TI Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:38 -0800 IronPort-SDR: rm6zYh60gBsusH+kY0mDwOW05Xo1oe2nJJrMo6XBHtFeJnPjhnE+gtxIejgWY/BZlwgJEb98ct kfJidnB9ar5oI6F3f+Rj2xtRdaYaV7pKMXr4YzFnQpIxX3tx+erjYdkqGA/98+8if+tMaFGlvk SqwUwsDH6gVDfkM0/KH1xAh7cg60NtuFA3XNuyBUSMv4j9lY8P8qBtZY95mxh+mEki9C6n5l6F uYP1rfmExnY2qYccpoxgGhebbwIexCo31sEGkpxmBCwxMyHVwvnkKIn67pb9Wr7h5P0iRDK88w H8w= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:11 -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 4Jg80g06wmz1SVp3 for ; Thu, 20 Jan 2022 22:02:11 -0800 (PST) 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=1642744930; x=1645336931; bh=3vgktb5EDlAfBr28kq ak3LKYudEjbo80mWaCphCZPxE=; b=GONzIL0b1ucQlyFeQ2wNydSqvwH1hTboIV yJ1hElUnJt0Z0pZOw+qKPyU5w4ZHfdfKGCIVDvfSldSOkHOqbn0UwhGXXjlzrRiZ OMjeaZfscWJGRNSQIzacs8WysAZQezT+O3vxj6uVthxOPwyzALw2F2nzn2bAtvdK 8118WbMESy4sRZSFZaPUk11wzuqXcmHP1IzpLxxb/HRyAWoU8NcJVPDm+rQdlppl gAHWZxv2QENItgnGUZ6i9Ae3e+cgGx5ZefpZAqkLMGIDZRiXMcVxkmv5JqI0iHgQ hy8iXGoEe0fxfR+/WsyxOaoHgEzYRgfN4by0ANdR+j1H6KXvasnQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 NCnQf2MCFMeh for ; Thu, 20 Jan 2022 22:02:10 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80b2yNpz1RvlN; Thu, 20 Jan 2022 22:02:06 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 50/61] target/riscv: Alloc tcg global for cur_pm[mask|base] Date: Fri, 21 Jan 2022 15:58:19 +1000 Message-Id: <20220121055830.3164408-51-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Replace the array of pm_mask/pm_base with scalar variables. Remove the cached array value in DisasContext. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-13-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/translate.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 2a88bd99dc..43e2ec6dce 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -38,8 +38,8 @@ static TCGv_i64 cpu_fpr[32]; /* assume F and D extensions */ static TCGv load_res; static TCGv load_val; /* globals for PM CSRs */ -static TCGv pm_mask[4]; -static TCGv pm_base[4]; +static TCGv pm_mask; +static TCGv pm_base; #include "exec/gen-icount.h" @@ -109,8 +109,6 @@ typedef struct DisasContext { TCGv temp[4]; /* PointerMasking extension */ bool pm_enabled; - TCGv pm_mask; - TCGv pm_base; } DisasContext; static inline bool has_ext(DisasContext *ctx, uint32_t ext) @@ -403,8 +401,8 @@ static TCGv gen_pm_adjust_address(DisasContext *s, TCGv src) return src; } else { temp = temp_new(s); - tcg_gen_andc_tl(temp, src, s->pm_mask); - tcg_gen_or_tl(temp, temp, s->pm_base); + tcg_gen_andc_tl(temp, src, pm_mask); + tcg_gen_or_tl(temp, temp, pm_base); return temp; } } @@ -929,10 +927,6 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) ctx->ntemp = 0; memset(ctx->temp, 0, sizeof(ctx->temp)); ctx->pm_enabled = FIELD_EX32(tb_flags, TB_FLAGS, PM_ENABLED); - int priv = tb_flags & TB_FLAGS_PRIV_MMU_MASK; - ctx->pm_mask = pm_mask[priv]; - ctx->pm_base = pm_base[priv]; - ctx->zero = tcg_constant_tl(0); } @@ -1050,19 +1044,9 @@ void riscv_translate_init(void) "load_res"); load_val = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, load_val), "load_val"); -#ifndef CONFIG_USER_ONLY /* Assign PM CSRs to tcg globals */ - pm_mask[PRV_U] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, upmmask), "upmmask"); - pm_base[PRV_U] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, upmbase), "upmbase"); - pm_mask[PRV_S] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, spmmask), "spmmask"); - pm_base[PRV_S] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, spmbase), "spmbase"); - pm_mask[PRV_M] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, mpmmask), "mpmmask"); - pm_base[PRV_M] = - tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, mpmbase), "mpmbase"); -#endif + pm_mask = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, cur_pmmask), + "pmmask"); + pm_base = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, cur_pmbase), + "pmbase"); } From patchwork Fri Jan 21 05:58:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719348 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5F0EFC433F5 for ; Fri, 21 Jan 2022 07:11:53 +0000 (UTC) Received: from localhost ([::1]:57162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAo5Q-0006LC-F4 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:11:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53800) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0T-00084H-Vd for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:42 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:53953) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn05-0005Cw-D2 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744936; x=1674280936; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VmOAzI2znzzQW/1LVSA8m7fnCBErlOCcnDBlzT/cH60=; b=fyzFhJQLtCtTmQOczAfgaXU7nYBrRjt3WX8To/Y6LOYbxMzZosU9ik8n Wd7hXVMQT50qZCM8HTkXDB+MV5Nv3ETr6U7xXdtkN+37KJiy53d0MUl2i 9ZH2ctijVXC77Xb531QEHcKPh+QqnWxwHH6/QYyQwqS6WMCQSi0EhfNT6 sbrjvfGrR6qOyHI8gi1yWLorEIpkgMBeyjMZPe1cdxwb7tgBrMriGPMJk 4GFBgEJZKqEsa9KrxsmNpYhaSVUFG9egXWnLmdaoTs0tOR2A4Qbn/r/UE R9zZnmoRh/+K4sZJ+X2UOB/OmiB7Go61TdAUAiRpfk0U3d+Icy8yER7L1 w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814217" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:02:15 +0800 IronPort-SDR: xi6eEPcpmehA0iTG8MqISu+tw0IsMpk2LqPq1p7c55jUn36LiIdEVZHdKT1yKVBIdvFFbJgyek 1YrF7Vx/ehcJWa234kjyXQKGcbzrIT8z+8yy5qszgqZWTY/d6D1NJ7kQc94Kn46qefujIr4Ocm NmBPCA0DzGsEOafjBpjxNeOtTrgcIb+Wev52RTMakvb8B0crXqXcso0zkmayhHMtM8YwMZvdEp PH5K+IrRtuRcY1IC/8kal7QFWKcsp1r0lJE6mEMJOA7sSHeAtLamvLT+Afhvj6WQu+EiphFYnR YErEHM9xowNrsdKtC3HKQ8I3 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:43 -0800 IronPort-SDR: 8WM1YQHChdXIeCv/TcEVrDgGi05Ir5gwu5H2q4DA17WBbxvxEAhuaLr50I37zYEOeww6jwEyT7 AUxM7Q3P4oiY8+oWZb4Y/lSs81Ugr4jlgnzuoWfUe/bNYAT8L82UvWqixu2TptDXqPJQ16Bu1F shyi9qkmWhJs7Ac3F2Y7wvhtz8DMsV49KR5IEo3lRBIhLAhtOv2o9OvfPtAdv3NNWYi6MO70/D B0q+s/BYtq6uU9FtEOAxIiXthKj3AgkVeZyE4dNGWRhozYguIsTi4L9v0LfsxNt5JKbm8vYXq0 kb0= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:15 -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 4Jg80l53s2z1SVp3 for ; Thu, 20 Jan 2022 22:02:15 -0800 (PST) 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=1642744935; x=1645336936; bh=VmOAzI2znzzQW/1LVS A8m7fnCBErlOCcnDBlzT/cH60=; b=I68HS4J8mhgRXmQ/AODJAh7pFWNZDSK1mx AwPI6qBBaiNl8i8kDtWn6OVDtFA1yda7JniDSqcNcACAUo4QSs0J78eAuJjEiavI Kz4tB/A2M3NrFGBjwvMpJIDXXnsu8kP8slY95EBvOLDsyla3LuNp6FVwciiSLk0G /Raqak/skm9NK/HZ4iPR8ivWuMrf85qtvLvW93vFUS45gbjDsW2WJpbTE3+IbeVA rE9cZAwOBglGWtvamk8WS0DcTPeR4DJCsBIHtRUXWsHQVTTpiu12KwINvNEqnzr+ 2C1Hp10sNufFfljt4Y/kPnMzDgQ6cYzUMeExEXTTg9bwHmqHQFxg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 15-NU9BHayW1 for ; Thu, 20 Jan 2022 22:02:15 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80g3XwJz1RvlN; Thu, 20 Jan 2022 22:02:11 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 51/61] target/riscv: Calculate address according to XLEN Date: Fri, 21 Jan 2022 15:58:20 +1000 Message-Id: <20220121055830.3164408-52-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Define one common function to compute a canonical address from a register plus offset. Merge gen_pm_adjust_address into this function. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-14-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/translate.c | 25 ++++++++++++------------- target/riscv/insn_trans/trans_rva.c.inc | 9 +++------ target/riscv/insn_trans/trans_rvd.c.inc | 19 ++----------------- target/riscv/insn_trans/trans_rvf.c.inc | 19 ++----------------- target/riscv/insn_trans/trans_rvi.c.inc | 18 ++---------------- 5 files changed, 21 insertions(+), 69 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 43e2ec6dce..33564d059d 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -390,21 +390,20 @@ static void gen_jal(DisasContext *ctx, int rd, target_ulong imm) ctx->base.is_jmp = DISAS_NORETURN; } -/* - * Generates address adjustment for PointerMasking - */ -static TCGv gen_pm_adjust_address(DisasContext *s, TCGv src) +/* Compute a canonical address from a register plus offset. */ +static TCGv get_address(DisasContext *ctx, int rs1, int imm) { - TCGv temp; - if (!s->pm_enabled) { - /* Load unmodified address */ - return src; - } else { - temp = temp_new(s); - tcg_gen_andc_tl(temp, src, pm_mask); - tcg_gen_or_tl(temp, temp, pm_base); - return temp; + TCGv addr = temp_new(ctx); + TCGv src1 = get_gpr(ctx, rs1, EXT_NONE); + + tcg_gen_addi_tl(addr, src1, imm); + if (ctx->pm_enabled) { + tcg_gen_and_tl(addr, addr, pm_mask); + tcg_gen_or_tl(addr, addr, pm_base); + } else if (get_xl(ctx) == MXL_RV32) { + tcg_gen_ext32u_tl(addr, addr); } + return addr; } #ifndef CONFIG_USER_ONLY diff --git a/target/riscv/insn_trans/trans_rva.c.inc b/target/riscv/insn_trans/trans_rva.c.inc index 86032fa9a7..45db82c9be 100644 --- a/target/riscv/insn_trans/trans_rva.c.inc +++ b/target/riscv/insn_trans/trans_rva.c.inc @@ -20,12 +20,11 @@ static bool gen_lr(DisasContext *ctx, arg_atomic *a, MemOp mop) { - TCGv src1 = get_gpr(ctx, a->rs1, EXT_ZERO); + TCGv src1 = get_address(ctx, a->rs1, 0); if (a->rl) { tcg_gen_mb(TCG_MO_ALL | TCG_BAR_STRL); } - src1 = gen_pm_adjust_address(ctx, src1); tcg_gen_qemu_ld_tl(load_val, src1, ctx->mem_idx, mop); if (a->aq) { tcg_gen_mb(TCG_MO_ALL | TCG_BAR_LDAQ); @@ -44,8 +43,7 @@ static bool gen_sc(DisasContext *ctx, arg_atomic *a, MemOp mop) TCGLabel *l1 = gen_new_label(); TCGLabel *l2 = gen_new_label(); - src1 = get_gpr(ctx, a->rs1, EXT_ZERO); - src1 = gen_pm_adjust_address(ctx, src1); + src1 = get_address(ctx, a->rs1, 0); tcg_gen_brcond_tl(TCG_COND_NE, load_res, src1, l1); /* @@ -83,10 +81,9 @@ static bool gen_amo(DisasContext *ctx, arg_atomic *a, MemOp mop) { TCGv dest = dest_gpr(ctx, a->rd); - TCGv src1 = get_gpr(ctx, a->rs1, EXT_NONE); + TCGv src1 = get_address(ctx, a->rs1, 0); TCGv src2 = get_gpr(ctx, a->rs2, EXT_NONE); - src1 = gen_pm_adjust_address(ctx, src1); func(dest, src1, src2, ctx->mem_idx, mop); gen_set_gpr(ctx, a->rd, dest); diff --git a/target/riscv/insn_trans/trans_rvd.c.inc b/target/riscv/insn_trans/trans_rvd.c.inc index ed444b042a..091ed3a8ad 100644 --- a/target/riscv/insn_trans/trans_rvd.c.inc +++ b/target/riscv/insn_trans/trans_rvd.c.inc @@ -25,14 +25,7 @@ static bool trans_fld(DisasContext *ctx, arg_fld *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVD); - addr = get_gpr(ctx, a->rs1, EXT_NONE); - if (a->imm) { - TCGv temp = temp_new(ctx); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); - + addr = get_address(ctx, a->rs1, a->imm); tcg_gen_qemu_ld_i64(cpu_fpr[a->rd], addr, ctx->mem_idx, MO_TEUQ); mark_fs_dirty(ctx); @@ -46,16 +39,8 @@ static bool trans_fsd(DisasContext *ctx, arg_fsd *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVD); - addr = get_gpr(ctx, a->rs1, EXT_NONE); - if (a->imm) { - TCGv temp = temp_new(ctx); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); - + addr = get_address(ctx, a->rs1, a->imm); tcg_gen_qemu_st_i64(cpu_fpr[a->rs2], addr, ctx->mem_idx, MO_TEUQ); - return true; } diff --git a/target/riscv/insn_trans/trans_rvf.c.inc b/target/riscv/insn_trans/trans_rvf.c.inc index b5459249c4..0aac87f7db 100644 --- a/target/riscv/insn_trans/trans_rvf.c.inc +++ b/target/riscv/insn_trans/trans_rvf.c.inc @@ -31,14 +31,7 @@ static bool trans_flw(DisasContext *ctx, arg_flw *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVF); - addr = get_gpr(ctx, a->rs1, EXT_NONE); - if (a->imm) { - TCGv temp = temp_new(ctx); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); - + addr = get_address(ctx, a->rs1, a->imm); dest = cpu_fpr[a->rd]; tcg_gen_qemu_ld_i64(dest, addr, ctx->mem_idx, MO_TEUL); gen_nanbox_s(dest, dest); @@ -54,16 +47,8 @@ static bool trans_fsw(DisasContext *ctx, arg_fsw *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVF); - addr = get_gpr(ctx, a->rs1, EXT_NONE); - if (a->imm) { - TCGv temp = tcg_temp_new(); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); - + addr = get_address(ctx, a->rs1, a->imm); tcg_gen_qemu_st_i64(cpu_fpr[a->rs2], addr, ctx->mem_idx, MO_TEUL); - return true; } diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc index 631bc1f09e..3cd1b3f877 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -226,14 +226,7 @@ static bool trans_bgeu(DisasContext *ctx, arg_bgeu *a) static bool gen_load_tl(DisasContext *ctx, arg_lb *a, MemOp memop) { TCGv dest = dest_gpr(ctx, a->rd); - TCGv addr = get_gpr(ctx, a->rs1, EXT_NONE); - - if (a->imm) { - TCGv temp = temp_new(ctx); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); + TCGv addr = get_address(ctx, a->rs1, a->imm); tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rd, dest); @@ -330,16 +323,9 @@ static bool trans_ldu(DisasContext *ctx, arg_ldu *a) static bool gen_store_tl(DisasContext *ctx, arg_sb *a, MemOp memop) { - TCGv addr = get_gpr(ctx, a->rs1, EXT_NONE); + TCGv addr = get_address(ctx, a->rs1, a->imm); TCGv data = get_gpr(ctx, a->rs2, EXT_NONE); - if (a->imm) { - TCGv temp = temp_new(ctx); - tcg_gen_addi_tl(temp, addr, a->imm); - addr = temp; - } - addr = gen_pm_adjust_address(ctx, addr); - tcg_gen_qemu_st_tl(data, addr, ctx->mem_idx, memop); return true; } From patchwork Fri Jan 21 05:58:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719389 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 41C60C433EF for ; Fri, 21 Jan 2022 07:45:03 +0000 (UTC) Received: from localhost ([::1]:49136 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAobW-0004OM-8I for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:45:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53840) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0V-00086o-2H for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:43 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:53939) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn0R-0005AO-4D for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:02:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642744958; x=1674280958; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oMicRhehYOvRTi0WCkCo69lWkvqmFDL8RhgCLn31WRg=; b=L88++z2DaVamzsuzIr89JQW/hUYAYBl4NtbagqW1OU+YJUTaUwEhqo06 EsEAVR9jcDFI8PmXsIpCBFTIkUaGxVxMCopdz4YgxgNnsdiQjHhR/FAKa ygIpMk9BEr9MmU9+k8SxTZKwbJdZHlIlIaFxd3c53iOVOV9iYWB8m6bxS jrKGw3Tw31upeK2bU52QSmb0Gz2E9oO68ABWkusaSNOhij12ekXrOovtI arMVOeShM7bWe5xh7NnsNDHj835MK34MCv3inGTkSbPs/gKgp3+RgASmU q4JAWYgTNOVHzzIr8BZZqDV/G9fWTmUUAM/4hRXnI3Y7+v5T4O9ITdm9f A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814222" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:02:19 +0800 IronPort-SDR: jRoMhJc5pz8SAjyzKL+3Q5lR0ENyEsO+iqs+w0PrWU3075JNmLMqyZ/9+sIh3avfOk1Q7uLvGC keUJQ1NTS4LtoERqyMbDTT6ylUxzBwcPvxlfRJhdscMKl0hUJpg95sPGe9Y1n6N+kPtTKN/96K mKVPOYbHE1tVO1TXuqgPp9MlBFJuxKa0nj9ZNV1DQJquMZTCcYL6PiEaYiGvWYSW3ZA+VvzP3l WgGhKUkjQj83iY7Og5KiRLcJL1zfdJ801823hRbUSWvG8z7OHswUKAnAGL2LtXzSU7sjvn04Q+ PzJki+wUyYcl3oLGzr/I1fUW Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:47 -0800 IronPort-SDR: YiGO44dCHBcU+Vvst7yXfnha2vFE++Pl989AUnqeMB/Ff3wPMK7xEZ5H38IqqS3pih0/DBK0DU uGxKQoWqACALfHBpt+2SqtFARIJEUtgFbmQDzqViUSiU60EYDEoDjhl+VLz0OzzaZOpbdC3cnM K4IXzY+qdw+RL1R+Nd12DbK3Dt4j4vLlJ6YEkLKOhf+oZB2L+w0/jo0D19/98LBKDjuK2ByleJ qWmByNgpiamAYHqETti7T86X7Id4RiJXe3O6ylHwHrtfC0HGLdPhCaHCKBfGo9/rrMB4/wyzL+ 98A= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:20 -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 4Jg80q6Vv9z1SVp1 for ; Thu, 20 Jan 2022 22:02:19 -0800 (PST) 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=1642744939; x=1645336940; bh=oMicRhehYOvRTi0WCk Co69lWkvqmFDL8RhgCLn31WRg=; b=FZ3ORCljnqCMpdvULcRT1Op+RD7cLudOrZ Eb+xdp61YBfjIP3mTaZ+MTsN5fHKdiE94d/ww79/IjCeql/IBI+WbP+stJiuni7v 2zMUqu5OORDZtqhBGafaCzfoHrjacjmtaosQNYq7Qt1/SUZqUrhcofO88k0wLTVO Q1RmzZaopibVh1o9GmwW/c/CEqO4cPhwlBC/zkbJ/S88c1JkQLJG/54Q5emBESRQ HBpWHY31oub1BNv7Vi9DOA4tim8AzC+CJWtNDMR09GTod4MbzlMXDvcI58S8FQlt TRusQg8jLJLML8Wz7RH2gPGqY7JGU+yFLWknFi1rhzuL/PEGnnmw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 jAgSKZn7jYxY for ; Thu, 20 Jan 2022 22:02:19 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80m0kKqz1RvlN; Thu, 20 Jan 2022 22:02:15 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 52/61] target/riscv: Split pm_enabled into mask and base Date: Fri, 21 Jan 2022 15:58:21 +1000 Message-Id: <20220121055830.3164408-53-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Use cached cur_pmmask and cur_pmbase to infer the current PM mode. This may decrease the TCG IR by one when pm_enabled is true and pm_base_enabled is false. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-15-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 3 ++- target/riscv/cpu_helper.c | 24 ++++++------------------ target/riscv/translate.c | 12 ++++++++---- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6fe842edfd..89621e1996 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -448,7 +448,8 @@ FIELD(TB_FLAGS, MSTATUS_HS_VS, 18, 2) /* The combination of MXL/SXL/UXL that applies to the current cpu mode. */ FIELD(TB_FLAGS, XL, 20, 2) /* If PointerMasking should be applied */ -FIELD(TB_FLAGS, PM_ENABLED, 22, 1) +FIELD(TB_FLAGS, PM_MASK_ENABLED, 22, 1) +FIELD(TB_FLAGS, PM_BASE_ENABLED, 23, 1) #ifdef TARGET_RISCV32 #define riscv_cpu_mxl(env) ((void)(env), MXL_RV32) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index b239d721f4..502aee84ab 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -97,27 +97,15 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, flags = FIELD_DP32(flags, TB_FLAGS, MSTATUS_HS_VS, get_field(env->mstatus_hs, MSTATUS_VS)); } - if (riscv_has_ext(env, RVJ)) { - int priv = flags & TB_FLAGS_PRIV_MMU_MASK; - bool pm_enabled = false; - switch (priv) { - case PRV_U: - pm_enabled = env->mmte & U_PM_ENABLE; - break; - case PRV_S: - pm_enabled = env->mmte & S_PM_ENABLE; - break; - case PRV_M: - pm_enabled = env->mmte & M_PM_ENABLE; - break; - default: - g_assert_not_reached(); - } - flags = FIELD_DP32(flags, TB_FLAGS, PM_ENABLED, pm_enabled); - } #endif flags = FIELD_DP32(flags, TB_FLAGS, XL, env->xl); + if (env->cur_pmmask < (env->xl == MXL_RV32 ? UINT32_MAX : UINT64_MAX)) { + flags = FIELD_DP32(flags, TB_FLAGS, PM_MASK_ENABLED, 1); + } + if (env->cur_pmbase != 0) { + flags = FIELD_DP32(flags, TB_FLAGS, PM_BASE_ENABLED, 1); + } *pflags = flags; } diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 33564d059d..f0bbe80875 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -108,7 +108,8 @@ typedef struct DisasContext { /* Space for 3 operands plus 1 extra for address computation. */ TCGv temp[4]; /* PointerMasking extension */ - bool pm_enabled; + bool pm_mask_enabled; + bool pm_base_enabled; } DisasContext; static inline bool has_ext(DisasContext *ctx, uint32_t ext) @@ -397,12 +398,14 @@ static TCGv get_address(DisasContext *ctx, int rs1, int imm) TCGv src1 = get_gpr(ctx, rs1, EXT_NONE); tcg_gen_addi_tl(addr, src1, imm); - if (ctx->pm_enabled) { + if (ctx->pm_mask_enabled) { tcg_gen_and_tl(addr, addr, pm_mask); - tcg_gen_or_tl(addr, addr, pm_base); } else if (get_xl(ctx) == MXL_RV32) { tcg_gen_ext32u_tl(addr, addr); } + if (ctx->pm_base_enabled) { + tcg_gen_or_tl(addr, addr, pm_base); + } return addr; } @@ -925,7 +928,8 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) ctx->cs = cs; ctx->ntemp = 0; memset(ctx->temp, 0, sizeof(ctx->temp)); - ctx->pm_enabled = FIELD_EX32(tb_flags, TB_FLAGS, PM_ENABLED); + ctx->pm_mask_enabled = FIELD_EX32(tb_flags, TB_FLAGS, PM_MASK_ENABLED); + ctx->pm_base_enabled = FIELD_EX32(tb_flags, TB_FLAGS, PM_BASE_ENABLED); ctx->zero = tcg_constant_tl(0); } From patchwork Fri Jan 21 05:58:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719548 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id ECC42C433F5 for ; Fri, 21 Jan 2022 09:42:23 +0000 (UTC) Received: from localhost ([::1]:47468 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAqR5-000064-1f for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:42:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAnAn-000656-Ti for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:13:22 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:54834) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAnAl-0007Cg-Rc for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:13:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745598; x=1674281598; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bUjz7eRFR1gjUHSOajKMdYNuk2eQkeoW3rLA+XBUITQ=; b=d58n566F9BV9RpgIfYA01wjmiNbrTNysPA6EHFyrub/g48nzJgrdh6Si Vi5wZHavqBzxSETx7x9ouIUm4KQhjbPkZB8rWB6ergvFidCQMIolw3vn0 ec+sA+I1RRRAdVJ38lWLvycrf6Iv1Ki0QGa8F5v6pbbvaAatztx453NmT fFeaZjRpDTne7KzqIdziVWxg5iakW88l4QOzvxd23tbW7e1qKlcd3tIze /nac0YJfUTtUVB1+nwW0zDZ4/SFh37NguevwQB86gAlw4j4HENa5wNeI5 W6DrYfKsr3KMpBeHX61S9mZymhr7M0OdDpSCMOTiJ22XSm6jlrwl/hM2f A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="195814958" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 21 Jan 2022 14:13:17 +0800 IronPort-SDR: vXLymIPwJqel77t5xDfCyiJTOKBkTr/CHlH7/Sy/rmKCzwR4tSDHi0VVcj6Hoz0n65BKpp5B7k GpFRHXNkNVwBQbL05oHPljn1GNM8INyjkr3+9sUOVb2VNB5KunDJD8IwZ4VAr0elRTg3SloD80 vOngzgrlvYVerel1pCHUqFPYFS7+OsGaHvm8RMuvX5xo5TcBw5PjEDVk31Y91QxDepii382a8o nVOUwP4rfRNqwB18Phy1oUoRQ2HEIOS2Dy346s84Bvm9rUTIH4lp0GNWCb41ooGCsDOlUHcs/3 0MovJPigKpXtzCZ/IgQuhWug Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:45:28 -0800 IronPort-SDR: UqOjP1jkNooEjh6iHiUdk/yGRe50F6rk5Fc10KH8cXbR05tj0fyVv7yl0kelZznVLc65e40MKu FCk8AluN9GMnZKunbft8JHVMcF+tp46llE9UqvH9ZQQFVBIzyZAdfrZaBQ51k9uEuneQbGay7p 0gra4yRuJHRqi15CWC03fDTNf0MzZSJLb6DbbUVMzdqX5EgT5x3fVCby1bQa72q+bJyFQgUYj9 rkVMqIVs2fdxlI5Jks29qO56g5AeuMomNpCzLbwRkC5ilvVLUdSdAxTLzihSvH3E5Kz3Ik7UlM ZcI= WDCIronportException: Internal 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; 20 Jan 2022 22:13:17 -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 4Jg80w0DSfz1SVp5 for ; Thu, 20 Jan 2022 22:02:24 -0800 (PST) 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=1642744943; x=1645336944; bh=bUjz7eRFR1gjUHSOaj KMdYNuk2eQkeoW3rLA+XBUITQ=; b=p04WTLigIgv4vd01y8guGmtAFM3vmntMZB YiwnrXUD1k5pM2EKAe7K9LbOTZ+0BBgiV5JTSKopvqEVlyxpRE2SAwJt+xNkXDpR 92RKvq1SeFXU+07JNScG9CTBovntABpnneZkb5Q8mLJUI9/fDEaKXz8MpF8OUWpA sI/D9+aaJbgXDmlizr4eroxv5P1Q/+vHyM45QhtsUJ04KdvBUfgbLEslzmJzok1u jzmuiZe7lAAswzq7MqcTCRTi/TAL9XEMuxAyrNtUL8rarQ9b2sajtGZipRZMk+Js VFm5/xgcznqfn5/3riM5gLycU213OPMTWlyfhg4Rhas5ykiyxQmw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 JbLaRui-FhEf for ; Thu, 20 Jan 2022 22:02:23 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80r2Swhz1RvlN; Thu, 20 Jan 2022 22:02:19 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 53/61] target/riscv: Split out the vill from vtype Date: Fri, 21 Jan 2022 15:58:22 +1000 Message-Id: <20220121055830.3164408-54-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=0135fdaf6=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei We need not specially process vtype when XLEN changes. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-16-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/cpu_helper.c | 3 +-- target/riscv/csr.c | 13 ++++++++++++- target/riscv/machine.c | 5 +++-- target/riscv/vector_helper.c | 3 ++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 89621e1996..6c740b92c1 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -125,6 +125,7 @@ struct CPURISCVState { target_ulong vl; target_ulong vstart; target_ulong vtype; + bool vill; target_ulong pc; target_ulong load_res; diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 502aee84ab..327a2c4f1d 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -60,8 +60,7 @@ void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, uint32_t maxsz = vlmax << sew; bool vl_eq_vlmax = (env->vstart == 0) && (vlmax == env->vl) && (maxsz >= 8); - flags = FIELD_DP32(flags, TB_FLAGS, VILL, - FIELD_EX64(env->vtype, VTYPE, VILL)); + flags = FIELD_DP32(flags, TB_FLAGS, VILL, env->vill); flags = FIELD_DP32(flags, TB_FLAGS, SEW, sew); flags = FIELD_DP32(flags, TB_FLAGS, LMUL, FIELD_EX64(env->vtype, VTYPE, VLMUL)); diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 292f7e1624..b11d92b51b 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -283,7 +283,18 @@ static RISCVException write_fcsr(CPURISCVState *env, int csrno, static RISCVException read_vtype(CPURISCVState *env, int csrno, target_ulong *val) { - *val = env->vtype; + uint64_t vill; + switch (env->xl) { + case MXL_RV32: + vill = (uint32_t)env->vill << 31; + break; + case MXL_RV64: + vill = (uint64_t)env->vill << 63; + break; + default: + g_assert_not_reached(); + } + *val = (target_ulong)vill | env->vtype; return RISCV_EXCP_NONE; } diff --git a/target/riscv/machine.c b/target/riscv/machine.c index a4b7859c2a..740e11fcff 100644 --- a/target/riscv/machine.c +++ b/target/riscv/machine.c @@ -124,8 +124,8 @@ static bool vector_needed(void *opaque) static const VMStateDescription vmstate_vector = { .name = "cpu/vector", - .version_id = 1, - .minimum_version_id = 1, + .version_id = 2, + .minimum_version_id = 2, .needed = vector_needed, .fields = (VMStateField[]) { VMSTATE_UINT64_ARRAY(env.vreg, RISCVCPU, 32 * RV_VLEN_MAX / 64), @@ -134,6 +134,7 @@ static const VMStateDescription vmstate_vector = { VMSTATE_UINTTL(env.vl, RISCVCPU), VMSTATE_UINTTL(env.vstart, RISCVCPU), VMSTATE_UINTTL(env.vtype, RISCVCPU), + VMSTATE_BOOL(env.vill, RISCVCPU), VMSTATE_END_OF_LIST() } }; diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index ad505ec9b2..a9484c22ea 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -52,7 +52,8 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1, || (ediv != 0) || (reserved != 0)) { /* only set vill bit. */ - env->vtype = FIELD_DP64(0, VTYPE, VILL, 1); + env->vill = 1; + env->vtype = 0; env->vl = 0; env->vstart = 0; return 0; From patchwork Fri Jan 21 05:58:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719531 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id ACDB1C433EF for ; Fri, 21 Jan 2022 09:02:52 +0000 (UTC) Received: from localhost ([::1]:50822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApoo-0004jr-Up for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:02:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54210) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1C-0000Dn-Tg for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:34 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn18-0004AK-NY for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745002; x=1674281002; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Fm47EllRl2wXvlxAZ/r1Y8qu9vascqutym+Rvh5sLy8=; b=mJataqURzNTK6Tk60YE5JOgRbRekbJTi4jPVsdV83EX+RuJDm9jfZBxB FQFjHrBhHN1hHCAorXElrBTS57M/gJeyH0emQ8IDxHL4JhXknW+84KeFW PDrKuwATV466t7OkOUCQDwQ6cH0z2FK0DqPJ+aL5SEbPD2iTmPyOc2zZo 9KIer8fHdMXxTrCz+S5FgzQd51Z/lqrzoAHvty3nHeECCGwx49SqY2rlI qWZXJU9DzZcDq0vO46y9wVQd25FL7LB5buCgpgpzoWVLVwcKE4r0SAOPM V9cNeUj4s05M9zkwC24tbnortTuYXARj3TAIzU0T5hqQXdkJz9nx54tZ+ w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083151" 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; 21 Jan 2022 14:02:28 +0800 IronPort-SDR: RqKLKK1on/H/4pMKYO7eXd75SMvXf7NWrpHksqm48QDxMtlGXbASzC5bOd31q8aFOh7TyH/XXg Ugf/jP5Ei+jBbi57Ay+Tq2YpeMiqRssSnSMRIrY56RbZlnx0L8WElJy/EFPE+Bd4bWNFYr3gdc QiY+/ev/OJlsJkRu2jzp7R1gd5qQt7SDTrZFgepU4qC7zZBlSbro0x4rfbg38s+E8nHB2Cw/k9 /uVf5EfdjPQB2cvdTr10TfOxUGG+Gy5VzifaanyGgIAQb8spE743xN2NOQlvG0XEu8FT4qMSyU g//UFUaMvrgtDxsBBzSltqQA Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:35:55 -0800 IronPort-SDR: q6dcgaoiGFN4+MMg9XjtuNkI7CHDFV4BGzN45w5GXqhbQvLpV2W31XbXw/2CudnhnvbbmXuehV NM9G8GhdvATTkY89+1js2arYKqzo9eykdxDHeQ/Y3BL3kTRX8HxPCYNWhQGk8gtXY1VmK3rEml u26S9ATtRKcuWXiXqOsuCI/eKPEwK1eRbfWXN9UivqZPVrM4Jw3V2UcTSTw3ZQLy9w1e4o+5zE fzHMspbfLaPu1jTuk3Fd8gMDH0hm+DhfovFJB3xtcI74p5dNIGSq7cXhwOCh/hOEsZZs7Lys6J iMc= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:28 -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 4Jg80z74Stz1SVp4 for ; Thu, 20 Jan 2022 22:02:27 -0800 (PST) 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=1642744947; x=1645336948; bh=Fm47EllRl2wXvlxAZ/ r1Y8qu9vascqutym+Rvh5sLy8=; b=BlR1NTW/mGILsttZNvRRqvLvIS7jgr0g1l /v1JNCTiJQUe214qffFhYm9LiiCY9XO4PGqet6hYwrfoz5nqDG+xtlBA2DUPtrLg L6pU9ossbQMW0WycUrxcJx9QMdxMvZ+H7e2/X7wowU6Lvkx6ih7m7Ipns9Qpae9U sfp8ojgb+d8+5ptxU/UEHzbdHbmZ2d0FBnxfMagQnf8nAHmCfcp31XDg/G3bLvGi DBguXV2hPeR6B5fpPXFYBSWrEL0amQPOrTCVQLUuLBoNRrcL2BoxfKwVm32b3cO9 VwjL2HVgJBqJR1dEOcSVazNcGeX7qTWTCRpuBzcJt0kShJ2wQCSw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 d_NdNhMpa5V3 for ; Thu, 20 Jan 2022 22:02:27 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg80w3NWzz1RvlN; Thu, 20 Jan 2022 22:02:23 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 54/61] target/riscv: Adjust vsetvl according to XLEN Date: Fri, 21 Jan 2022 15:58:23 +1000 Message-Id: <20220121055830.3164408-55-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-17-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 5 +++++ target/riscv/vector_helper.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6c740b92c1..fe58ccaeae 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -491,6 +491,11 @@ static inline RISCVMXL cpu_recompute_xl(CPURISCVState *env) } #endif +static inline int riscv_cpu_xlen(CPURISCVState *env) +{ + return 16 << env->xl; +} + /* * Encode LMUL to lmul as follows: * LMUL vlmul lmul diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index a9484c22ea..8b7c9ec890 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -36,8 +36,11 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1, uint64_t lmul = FIELD_EX64(s2, VTYPE, VLMUL); uint16_t sew = 8 << FIELD_EX64(s2, VTYPE, VSEW); uint8_t ediv = FIELD_EX64(s2, VTYPE, VEDIV); - bool vill = FIELD_EX64(s2, VTYPE, VILL); - target_ulong reserved = FIELD_EX64(s2, VTYPE, RESERVED); + int xlen = riscv_cpu_xlen(env); + bool vill = (s2 >> (xlen - 1)) & 0x1; + target_ulong reserved = s2 & + MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT, + xlen - 1 - R_VTYPE_RESERVED_SHIFT); if (lmul & 4) { /* Fractional LMUL. */ From patchwork Fri Jan 21 05:58:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719524 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 018C1C433F5 for ; Fri, 21 Jan 2022 08:50:48 +0000 (UTC) Received: from localhost ([::1]:42894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApd9-0007Pn-NP for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:50:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1C-0000Di-R7 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:33 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn18-0004KU-VI for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745002; x=1674281002; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kPpIa6xaQN7cp8WeCK4LvOeUCCQyxx8+e4FeLvMkpo8=; b=aEQ6bM8GDPn07HFQgj4HiSoQadTflVB6Z3vxYkkYAqydZ14bgB3eCCbg pSos+rd0iiF756eXzcyj9gRhJ4u72bjxxkuA7LX2CFjJYoFBGXUUbjqNo VERHAMYU2BctEiuVUb0rMAU0ODQXdrgA+0J9vXMI1J8zmVV8B9KcH4K3W eqEqEwghitPrP4WKF6x5IhSeaRlp6KjYa4RHNWHTfdo1L6dfYwXWSVVtE 1OhhW7WJXckuyx28p/HY1YDP3P5zpQrTAGkczC+iB1R78qwUZPd8DaZbO ISazM5yLLhamMWbW4Yojin2k6RQjaTelk3E8mNCAXVl4XA0KTovtlMuwa g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083157" 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; 21 Jan 2022 14:02:32 +0800 IronPort-SDR: rVHDWP4W/rCeRdWIHxVG89UpdXVevOIZPky4VeEWr6PKkTWcAd4yxEU9fdUPdqtVUfhyHCs3ZB GBG0cRi8r71mZm9EZySUjtrVCILUo00udbwUEf8pWPF38+Kae7ulnW+GWDIuzEt9W96bUAZ60S zU6KGjiMrW6ocMTP9cZMzZJGfcffrtLPOzyg+xRyualmZLGlA59ACCpms4pgjnDBKf/q9CNvzq 26c1pZy4T1o4NnSkrRiCMLZG16RzyVOD6CkxPF3rkIfQ3wtt3kbNdqh9joUNO5CMCywbubWNsl 062OPWpaXbhwX8wN0VdUBFws Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:00 -0800 IronPort-SDR: EHWhxL1DTXhEJI6igIyTk8wcVkWZU3kPOd8Koe1+nGKz/oKyVSYVrrrG5TpemUpccwSlYReGbx cusI4OYtjJLBTOcfZEy57f6TNGhyfX/fRvc6sRpu+z7uUYHZR0x6T/Xu4qeKLnulo85X5Kkr6c L10Jfpcy6ko/MElMrR/nomMj+up9lZtFVDJIWlHCfrKm7wxIeVyZxxnQvzA9bG0niHltZ5K7lT eeImu+CeMJMn5bD99hrMCkoOk5hPK13h8s9OPcWIZoZiCF0HPJhFKzJbZlLpUPEaf6G1HOX7IP BM8= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:32 -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 4Jg8142sMQz1SVp6 for ; Thu, 20 Jan 2022 22:02:32 -0800 (PST) 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=1642744952; x=1645336953; bh=kPpIa6xaQN7cp8WeCK 4LvOeUCCQyxx8+e4FeLvMkpo8=; b=pYuFJx64NXbUkElBhxLm+YaoqS1anGPSDD ELHDOHyOmRd0GauWdRAz/g6eXBo9YEU7Oi7+p4YEa21VG67mlXPeDwtGW9nUkmib jNCNRFWU9rQT9o5qSHdxLDbyvqoGBFLaZCLfF8Hm1IsHAV6hglLAXCDClDneKrpP daw8TGkDM2c/kVpzrqrKLM9YDUE0mrSv3kIlx+kgfrH9TvnxXK4f1dlGzpc4bBq5 YzESAQQJ/19tUvI7IPPMK364L53d/PK+g21KUjk4G4i4A7v5fj46SAX6RPKKqXI+ 5wTE4y9N7qjOPqyfozpT9d4lHNvLdoXjv6NfXtF8VB8pjPnu/Vfw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 1BqeuKXoN6cz for ; Thu, 20 Jan 2022 22:02:32 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg8104L2bz1RvlN; Thu, 20 Jan 2022 22:02:28 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 55/61] target/riscv: Remove VILL field in VTYPE Date: Fri, 21 Jan 2022 15:58:24 +1000 Message-Id: <20220121055830.3164408-56-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Acked-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-18-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 - 1 file changed, 1 deletion(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index fe58ccaeae..55635d68d5 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -111,7 +111,6 @@ FIELD(VTYPE, VTA, 6, 1) FIELD(VTYPE, VMA, 7, 1) FIELD(VTYPE, VEDIV, 8, 2) FIELD(VTYPE, RESERVED, 10, sizeof(target_ulong) * 8 - 11) -FIELD(VTYPE, VILL, sizeof(target_ulong) * 8 - 1, 1) struct CPURISCVState { target_ulong gpr[32]; From patchwork Fri Jan 21 05:58:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719538 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 58EE8C433F5 for ; Fri, 21 Jan 2022 09:27:16 +0000 (UTC) Received: from localhost ([::1]:51628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAqCR-0000Ay-En for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:27:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54260) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1L-0000Ee-O0 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:37 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1G-0004B6-K0 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745010; x=1674281010; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8GLgidKFmTM0na/tvygKsEkZ/UYLfAM6RbzY3orjP+k=; b=TnjUN5VEuyXCcwwXQw/KaWpIdUZ8S6r4UEiZpOOaiVWylRdMgT+FIJFg kJ+cD9TupH5MX1OlImFcNbqNPIXj8MrKNYSmkLqv0cG8l/fYhmN3U4W/d pCV5IVZDtzLrtDvDbJQM/l2/vkzeYaqZ3YaSM6HiOTTcih8/94rsh2SG0 L5w/7Epehn1QrSQ3ytAl9Hgyh/kCFKb+uqofZB0o7Th3tLICOiEK4FiJO s4DY7QPOJNkUzu1m0xRn70cJ9y9CugoV397nHB8lt4o0OwxEKqk5mWrga LsXoS7sh8hDC6hgEhpB74YzX/O0F6Agaq9hkQ9bb0BoUUlB5GqzmKbaar g==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083161" 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; 21 Jan 2022 14:02:36 +0800 IronPort-SDR: zOFTLOCgr/DMU7grj4cBsQM4knaVrUQ1y4hjm0P+iBKlU2UQ9LKgcuaIxVcVqwlLwORDLR1mFn 2F4PuQMeO0i+Xi5kLRXA6uP7s+APGB1KOTaUJOA0ykhDauk9oFFMzLZWahdzhlj4xy5dB6ZYRX 0QMHfBBbFTW2ReogN1DFbtU8hxtUgT2eHdAHje9YssUrr8uDRT0/LtLv3JMmOu9w+vR4sshN3t AaOcc8UkQUgc7ZkDcNRk4YX5xKFrNGwiRzp0M0xbb98gMUHHhcbB3/8l0Al+3RsSyL1VBKcz8h q+Wi6zXwIwG+rFW0tiFgHBpv Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:04 -0800 IronPort-SDR: 3cXTo8+tdkL1zxD2ieYR8n804dCVE8MUGzB8GJ9LbY2+VnY1hdiqKjxmO/3evcpOxcK5mqr/sR z5txD9JiOmyLft8t97q48yb5yY8THfzjlXEOOXqVNnoAMb6mBXmWjDjrs0Z5a+k1DVVPMvKea/ 4lvehHtSIMA7MZHZFaf2VZznh9X9OFxaTWyeTzgLmrm3DyP4/sl6XZpwBV+IIWAdCCWhFDDDiX 6wMYgaiw2lbxI6sr80vLjOsGN3cUmh2yS4GP1d+0jY6CpKGXX8xZbGKka76gHtUFW+l43UnMAd v18= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:36 -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 4Jg81831JVz1SVp1 for ; Thu, 20 Jan 2022 22:02:36 -0800 (PST) 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=1642744956; x=1645336957; bh=8GLgidKFmTM0na/tvy gKsEkZ/UYLfAM6RbzY3orjP+k=; b=LrqM1J7kRxJqg2pGPeFkEwC+Cu1QvjaKHF py626t0+Gt25fPX+UXr3eJov4oWfhh2kJcbhBRKxeJ1TmEPaAhFfAzbW1uZjtmzz PXVb2FXr3KTUGAjFsFBTfRY9N1sHz20Cnt5wVbLLUIEg5DsPnx1hYpvh2PIU7tLC wx35v+2GcJqcFShKjTR+XcEf4Is78Ymi098WjXoalSNEnMnO6oBbOsiGiyhW3cH9 ExIYxD4JVMsCj3lkmKs+1RDEu+4+/qJLYwZe/AzJUayQS6O+GdCumaJjnus0D7c2 q/hB+eXFOiSk6tdVSX7NQDZFBFYCKUv0p0jlbJLgfDBYQJjnESag== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 KMI6urYlwk9d for ; Thu, 20 Jan 2022 22:02:36 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg81500cpz1RvlN; Thu, 20 Jan 2022 22:02:32 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 56/61] target/riscv: Fix check range for first fault only Date: Fri, 21 Jan 2022 15:58:25 +1000 Message-Id: <20220121055830.3164408-57-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Only check the range that has passed the address translation. Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-19-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/vector_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 8b7c9ec890..efb3129532 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -500,12 +500,12 @@ vext_ldff(void *vd, void *v0, target_ulong base, cpu_mmu_index(env, false)); if (host) { #ifdef CONFIG_USER_ONLY - if (page_check_range(addr, nf << esz, PAGE_READ) < 0) { + if (page_check_range(addr, offset, PAGE_READ) < 0) { vl = i; goto ProbeSuccess; } #else - probe_pages(env, addr, nf << esz, ra, MMU_DATA_LOAD); + probe_pages(env, addr, offset, ra, MMU_DATA_LOAD); #endif } else { vl = i; From patchwork Fri Jan 21 05:58:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719493 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 71CD3C433F5 for ; Fri, 21 Jan 2022 08:38:50 +0000 (UTC) Received: from localhost ([::1]:58826 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApRZ-00071y-36 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:38:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54308) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1X-0000Hy-C2 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:47 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1N-0004KU-B4 for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745017; x=1674281017; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PAyoT20kHvwRg/KH2k/HEDq4C35SRUt6ucL5LDZr84o=; b=BKCSVNfMwSAOVbeMh2WKcdaikHeljMV4gIboWCkSdcTPHJOpKGpuQfg9 aPZ+WvM6TDPPuJWef3sYUxzEFGsI7P62FVA3e7No1MdQV/1ughRjrq6im sKaZ4c1J65kkqFgQM0ty1jbAPaWX4MOLx919CNzd0oqufk047FVlzDy5O BoJp0Ed+93PYo8hbe9rQRW2RP4YFeZ0dUakcZtblqfbVJIftVTL2YK+Lt fRIsg9atEUqdJC2emBOmqrXPUPv0940Nz2RSL8rp7NY/8AZc/xVauCLOW WHg3IDHrG0oN7rZm4zPcTuFPBG+sPnWDSX1s3IvHKjR+XiyeDbBsNKJSR w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083167" 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; 21 Jan 2022 14:02:40 +0800 IronPort-SDR: 96TyCgXRXWNKrsjJEUyrv7c5W/TKWTboY4Ny16s2EEDkmv7RGTyrvYwMw83gNoioPlMDFKCADM dY9TVOpPvORM0BZp+/oe3cYOjPyzZUOxdqIdafdXGKw8IO68mgybjO7kDIT9a+HgFWNmYANje+ yXPGF+WC0m7sEC7FvU0BhWTiSdHivkYs7CxeA5MTWGHerlxLif1hFtaeL3pAiI77f/r/wFvIj1 Ptgh/xV5vN4ZzVSeF3uDz8a4HBcDdws6m2/cQDYhY7/9Jr5q8Z0mP2LZd8c1Zr4NVmAmRDgdfZ YqDXUaQmO0wp+wHobEDau0v7 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:08 -0800 IronPort-SDR: 6bsIFqmNyaZuCd+q0KZ4uzPLNVz3YFkfZBctQ9HnuyGrq/NQ/oD6aXhq4H91JqIBKo9Qo7TV1X 2Rj8osDrd8TlOU6oslrBy+4NlgKZ4bM0yxBNeBHlpS2FdIxqnIFjmSc4PwPTclCjDaezxTBAg7 IEttYApSFUV5RjZfqaljlxW4qSRMqXlMiFwzRqHQetwrB0/9dHg7V3ELwuY/6Tbdx8DMhm94pk +caW9q0zQ2nm7T/5tM/CfdA/plqKRA87gIA51+/HywgrF0zR7Q7hCbqUUq5u30TRxpxB33f4nX QwE= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:40 -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 4Jg81D4KfGz1SVp7 for ; Thu, 20 Jan 2022 22:02:40 -0800 (PST) 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=1642744959; x=1645336960; bh=PAyoT20kHvwRg/KH2k /HEDq4C35SRUt6ucL5LDZr84o=; b=OYJEkPrmiq57jfP/rAG39elAMPws/gZZP6 n30CLVgmgaavGYRXOSrvg0snl1WzEyVtIUzm2+kfod2CKEpZC11dz5Mw/GNBDnhy dhN+HJTM1eiadL7Lhi30s+A98nZtCisN2flHp+WlhrVlZ3dsFD4GJqWD8A6GQlSm XlZZaDpeiTW6VwbDTpy8V0xzcP28hgg6oxwdeGgIrm4IBSi5ZLVKs7bECp7SxBDh 81Knw29LFoWdiDrV91BXcCOwUmcMTBBojJdEKn8rxXAspdh3Bh19VjfX5J3Fev2r Ud8pseW6OdfHE+Sl9zHbPtFqat9A+KSCtlx23yJJ4VCL4+X/oDzA== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 KiT_qmc3Pd3r for ; Thu, 20 Jan 2022 22:02:39 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg8186PGcz1RvlN; Thu, 20 Jan 2022 22:02:36 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis , Richard Henderson Subject: [PULL 57/61] target/riscv: Adjust vector address with mask Date: Fri, 21 Jan 2022 15:58:26 +1000 Message-Id: <20220121055830.3164408-58-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei The mask comes from the pointer masking extension, or the max value corresponding to XLEN bits. Signed-off-by: LIU Zhiwei Acked-by: Alistair Francis Reviewed-by: Richard Henderson Message-id: 20220120122050.41546-20-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/vector_helper.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index efb3129532..020d2e841f 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -139,6 +139,11 @@ static inline uint32_t vext_max_elems(uint32_t desc, uint32_t esz) return scale < 0 ? vlenb >> -scale : vlenb << scale; } +static inline target_ulong adjust_addr(CPURISCVState *env, target_ulong addr) +{ + return (addr & env->cur_pmmask) | env->cur_pmbase; +} + /* * This function checks watchpoint before real load operation. * @@ -156,12 +161,12 @@ static void probe_pages(CPURISCVState *env, target_ulong addr, target_ulong pagelen = -(addr | TARGET_PAGE_MASK); target_ulong curlen = MIN(pagelen, len); - probe_access(env, addr, curlen, access_type, + probe_access(env, adjust_addr(env, addr), curlen, access_type, cpu_mmu_index(env, false), ra); if (len > curlen) { addr += curlen; curlen = len - curlen; - probe_access(env, addr, curlen, access_type, + probe_access(env, adjust_addr(env, addr), curlen, access_type, cpu_mmu_index(env, false), ra); } } @@ -239,7 +244,7 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base, k = 0; while (k < nf) { target_ulong addr = base + stride * i + (k << esz); - ldst_elem(env, addr, i + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); k++; } } @@ -295,7 +300,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, k = 0; while (k < nf) { target_ulong addr = base + ((i * nf + k) << esz); - ldst_elem(env, addr, i + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); k++; } } @@ -409,7 +414,7 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, k = 0; while (k < nf) { abi_ptr addr = get_index_addr(base, i, vs2) + (k << esz); - ldst_elem(env, addr, i + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); k++; } } @@ -488,7 +493,7 @@ vext_ldff(void *vd, void *v0, target_ulong base, if (!vm && !vext_elem_mask(v0, i)) { continue; } - addr = base + i * (nf << esz); + addr = adjust_addr(env, base + i * (nf << esz)); if (i == 0) { probe_pages(env, addr, nf << esz, ra, MMU_DATA_LOAD); } else { @@ -515,7 +520,7 @@ vext_ldff(void *vd, void *v0, target_ulong base, break; } remain -= offset; - addr += offset; + addr = adjust_addr(env, addr + offset); } } } @@ -531,7 +536,7 @@ ProbeSuccess: } while (k < nf) { target_ulong addr = base + ((i * nf + k) << esz); - ldst_elem(env, addr, i + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); k++; } } @@ -585,7 +590,7 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, /* load/store rest of elements of current segment pointed by vstart */ for (pos = off; pos < max_elems; pos++, env->vstart++) { target_ulong addr = base + ((pos + k * max_elems) << esz); - ldst_elem(env, addr, pos + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), pos + k * max_elems, vd, ra); } k++; } @@ -594,7 +599,7 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, for (; k < nf; k++) { for (i = 0; i < max_elems; i++, env->vstart++) { target_ulong addr = base + ((i + k * max_elems) << esz); - ldst_elem(env, addr, i + k * max_elems, vd, ra); + ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); } } From patchwork Fri Jan 21 05:58:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719386 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 527B2C433EF for ; Fri, 21 Jan 2022 07:42:18 +0000 (UTC) Received: from localhost ([::1]:46504 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAoYr-0002Vw-7s for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:42:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54306) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1X-0000Hw-Be for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:47 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1N-0004AK-JT for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745017; x=1674281017; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6g+KGUBwL4HD76OFEt3Qg98EviIIomgGJzvK44LlZvU=; b=gkwBtDKDi/aVyXHl5ssKTQWWjIctQgFtNJNwvqv565TqHVuUKRJ/By45 ANSAMqEXBHIDbjngP2mbdcF5fqGPl2iR/0uhWHmZonaOowBYeJOjN7z+H arWleXjehp0svmLWUpLO7B/7XVOoUrd5aMbcocFHragpNQ9giazGD00Pg TEtZg59UG/CpLb1IpY+dBOiYBNSomiC3mjWP8KzOo09pPTUkakt0Sqimf 4x8nsXGT0tI3ywiiPBkwJ8/fbyBkphPTy8cZU3Zqv7hOJgU7xa9CrdHHt C6S8KMts6pYuIH2N60/jW2RlGA89I1QE4crxCawcT0w8nwe3RqRgFKHDH Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083169" 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; 21 Jan 2022 14:02:44 +0800 IronPort-SDR: 544rFCcGQg472A15pm/BAVoAr0dUgffZ7CsGRidwJSsj2olLVQEyGVWYxU3z7Sk2cDmIXJTX+u CMv7Ey76ufC3m79CqwC2sjUwWsDncO2Z5iPLBsuXXyPOeYAPLbXbinIf7nLevsAhwAqohdOtqz adT0L5Fngy5rMds1DATkxejy6qY8ZV+pg0Wc1XZoEz8uoh2fSb65mjiqDmzWktcEqVa/tR3IZr c8C97GmtMfubHxYEOnGNWuzx8kgIRWtDeIF5WAmp8Sw8iWKu6eQNbpFvBOUr2RHFfcmvd0Evkx u+YD/yrdYubekFG1GSexPmEH Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:12 -0800 IronPort-SDR: 0VwszwuepN/Aabay+LEK1OKwzm8ltZ04cRDnKwtkOahCTTDe0/f7NBeJ5D8XPVr/gawpOnbJz8 u77L3So+cooo7J+y4apX0lu4hRm8T30F/LYFG6x/T/sCZyeq0XeVwQ5MHSTNAh5sDp0DGK8GtF N+vu9J5rjiJuENs3bKQ+UUf5H/RRn8oOWldJ4PedyAuBGgLButMYFDOXlBOFY+QngMUAVx81tp 25D3R10PVF+on0yr+pURapZP4krI82aWooG1OVR4e+RTfzAAa1JZGghn9qJWzTt/8VgmfRzdu5 Aic= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02: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 4Jg81J37TMz1SVp3 for ; Thu, 20 Jan 2022 22:02:44 -0800 (PST) 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=1642744964; x=1645336965; bh=6g+KGUBwL4HD76OFEt 3Qg98EviIIomgGJzvK44LlZvU=; b=DJGG2V7SfDNvDqiOZTxLJnGKnZaeVVgYbR ikN78jOufbI/qX17lVQ9IYgmA53mO98C20e6rjogQSodO6hzSkM8EvcvfLvGO2M/ h2L8SdvjzrUC/sf/2hhpTtrqOAUNNKzLRxQ3wn/aqTiqHjBR425xucOk0PJ6MDbk W5FJ3miMpoPcnr/SOW2JThCkM5w0R4GEN7p5XRSMwGZcpJmz3s0PulHNWTPekQAA RLB1kiZs/EnjMu9mZUJ/of1eipaOwvbHFqG+cZ9Zo/yKnTReQMpVbDv6ryLsfMXf +OvyqzsHRhPyT8TDcV15rnuaAj5Ds3gjRv7Nzvx6nxyv1KJ911tQ== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 w13ix5-GMw7D for ; Thu, 20 Jan 2022 22:02:44 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg81D6QN8z1RvlN; Thu, 20 Jan 2022 22:02:40 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis Subject: [PULL 58/61] target/riscv: Adjust scalar reg in vector with XLEN Date: Fri, 21 Jan 2022 15:58:27 +1000 Message-Id: <20220121055830.3164408-59-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei When sew <= 32bits, not need to extend scalar reg. When sew > 32bits, if xlen is less that sew, we should sign extend the scalar register, except explicitly specified by the spec. Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-21-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index e03959c46f..f85a9e83b4 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1258,7 +1258,7 @@ static bool opivx_trans(uint32_t vd, uint32_t rs1, uint32_t vs2, uint32_t vm, dest = tcg_temp_new_ptr(); mask = tcg_temp_new_ptr(); src2 = tcg_temp_new_ptr(); - src1 = get_gpr(s, rs1, EXT_NONE); + src1 = get_gpr(s, rs1, EXT_SIGN); data = FIELD_DP32(data, VDATA, VM, vm); data = FIELD_DP32(data, VDATA, LMUL, s->lmul); From patchwork Fri Jan 21 05:58:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719408 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AD051C433F5 for ; Fri, 21 Jan 2022 07:56:52 +0000 (UTC) Received: from localhost ([::1]:55320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAomx-0000We-5F for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 02:56:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1Z-0000LP-6o for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:49 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60345) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1X-0004B6-DJ for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745027; x=1674281027; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Mj1JliWDqzl5tTrflTFMlO7E9sAym+qOeYWZYR05TZc=; b=Exu+cVShEi1GsQSAontaQKzmJI6QrYmYxDa2Q3Pi7jVS+RrXKkkc8gOB 4RgLmU+/d3XMKg+aSUw644eyVaE+HBSPoVUB2kTOaSJiBnSnat8Q32UYh 7sYWsJ1qO+wP4eNp+nH0uTqanmscCKLjjMNqsVpUxyGjXjgQu89/TG1Kb S4m9MFZuWJdD+1UDsSnjU6J1ArX0D0izTycRiYfcSsRMBrds5P/fLPDQL 0iR7ojFrC1Kc+vsF403hgToJKWhEIGzdI9XpkhLUksGt05CLoOf7/hU6m 03lF9/Ir4Uz4Esv6IgjG/IIPKkgS7yMdlbPNCLW9JaDVsvuqA5R75uzCd w==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083173" 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; 21 Jan 2022 14:02:48 +0800 IronPort-SDR: 8ixz0qx8kNBkj1MOS5wuJ/TmIs3/GuOHCng3Gd06uZlnqCbGbmKdPCauuvkwSvqB9vI18gJ0cg ulYRm7TsIxYA+u5ssgbK0E8viX5gYCvBogGTFkuHJcSNE1qOeM5SNWOccICVkwn7Cf1IRHOB8U UvftxvfhMraZtLv2u6LSfZkO/IGlBki+bausUDNLy+EgmVxHJvju6WpeMH8uD19pN57I+jaUWM ilx15Y6qRlMEh8LHtlKrbfVYCgw/F9kpRa9KPSN2aOY19rYNFnyFdwmCTb/bGR4+f0bOXT7xru tleuwuLdqK8ioHvMO7IL/G5b Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:15 -0800 IronPort-SDR: FJanx85kWxnrF4GQzMS/N66Q5KOKEQGG5NUYolBIqPAmi/zYJN9/toorNLxSPDtjuCR1mYYENc +E7l9XpMxbZjWZAGwlRcwOCb13h8dJHIpTe4S/UgRPHl6TRsb2t1TjnuTaMPPbj1Siifv/AQIb lnQTC/EN05wao17J/O92qCoOD0n+HoymseDD4130l1FwlKF+ZDj9JSbfoFfRZj362O0qC7CFHw ZHIGnbQnpOcU8tpBppgElNzzqZj4BeKDAUrAwmuenJx9usMX1E2tL9naEjIFSz+ho2e4AYrErR Cog= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:48 -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 4Jg81M6lyhz1SVp4 for ; Thu, 20 Jan 2022 22:02:47 -0800 (PST) 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=1642744967; x=1645336968; bh=Mj1JliWDqzl5tTrflT FMlO7E9sAym+qOeYWZYR05TZc=; b=nAAsahb1frSgnlMCqIHIRPDkvH4x/Ewlro 34EFCj4eF4Io7OnaJwUQpKfMWvZ4Qk5YEkZQtpwa7HalHkDGd3EYr+MiQali2EkA /I3gqtpANrTJ63wB5YDRBnj1vvErSCENKmUK32b1SyNXjNJgF+gXZz+KjpQPvNA7 cem3Q2dgDr9O2w/IaRIZitSlpMTz6BMY7ZtMncfSk71KEkyxEixZKxC08N2v2zbL HmpDvY8TxuC8uv6amsUOSI4PQ65lolU0nO2J3ede3qIgLALFB7nVJR6X4LXzZUf8 CEfa+ILonDAXQcDF7Bv8PeJh8ZGIPvZa4J2wE+jEv131mGnPW0hg== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 afK8QhFeI1Ne for ; Thu, 20 Jan 2022 22:02:47 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg81J6cBYz1RvlN; Thu, 20 Jan 2022 22:02:44 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis Subject: [PULL 59/61] target/riscv: Set default XLEN for hypervisor Date: Fri, 21 Jan 2022 15:58:28 +1000 Message-Id: <20220121055830.3164408-60-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei When swap regs for hypervisor, the value of vsstatus or mstatus_hs should have the right XLEN. Otherwise, it will propagate to mstatus. Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-22-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index a120d474df..1cb0436187 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -422,6 +422,16 @@ static void riscv_cpu_reset(DeviceState *dev) */ env->mstatus = set_field(env->mstatus, MSTATUS64_SXL, env->misa_mxl); env->mstatus = set_field(env->mstatus, MSTATUS64_UXL, env->misa_mxl); + if (riscv_has_ext(env, RVH)) { + env->vsstatus = set_field(env->vsstatus, + MSTATUS64_SXL, env->misa_mxl); + env->vsstatus = set_field(env->vsstatus, + MSTATUS64_UXL, env->misa_mxl); + env->mstatus_hs = set_field(env->mstatus_hs, + MSTATUS64_SXL, env->misa_mxl); + env->mstatus_hs = set_field(env->mstatus_hs, + MSTATUS64_UXL, env->misa_mxl); + } } env->mcause = 0; env->pc = env->resetvec; From patchwork Fri Jan 21 05:58:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719512 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C9BD9C433EF for ; Fri, 21 Jan 2022 08:46:01 +0000 (UTC) Received: from localhost ([::1]:39496 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nApYW-0004w1-NN for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 03:46:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54396) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1k-0000cZ-Ic for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:04:00 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60359) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1h-0004KU-MD for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745037; x=1674281037; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dZI2frXpABrUcELOmqx8DAFsntrCSET4efSbsptjCx0=; b=kGqaxI1cF21ALOz2/plv7kN0dmdrs9uh7Zr7SsbPM89xQrZAaEBjwMAY NACa42q0o7r25hFQ333RmgeUgecPBtqaSQXSOvWBFXWyVAyVot5D2Da41 cwX7T1iT0ELTSxX94qjvLC78zzdxsJYCqqLI9p0HGBCHrUVObe8cnKisN 10yHOOvKOtJH6Vox8eQP+jDZBSy3hXDhX74pOTCeAX2ssYUg7rihEyG+w FV1mwanh2EoRJimBNWm+pWXry8j4tINMmRZUwGzKduV6lUGKcVBiXUPPC PYcLb3edOpVi7sFDCGOHXTy84e7crzll9tNQPrAPLajxxZu4qnpKzCRPV A==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083176" 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; 21 Jan 2022 14:02:52 +0800 IronPort-SDR: 1/+eRk2KBi0mujilovIOm/XU1O7IXrLnZY7/AbpETlbvPwl+Pgfue7m+H5E4Oeyz2DSj1bE/Cg 7zbmxe2/wDwz/gS2OE5dtSswN0OCX2E/RZKcsLQbJigr/3LCkBg4P2mK7RLUMyR0qrj5uYsZP5 oMYzn/LP1V+N9PkNhyrjMUhL6+oEeXf4AOgy6YkWJnSivWwOsSDqmbZ69WouSzzL+8b9UFr5gW +L8TL9hQUIGqvreQehVfFq6Q8URIBRS3DlGPqPOovLvG7tAaVkokQgtZImUg406uviwlPFzTjg 2Y/8whWrwhelS7c2ovP8Sezl Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:20 -0800 IronPort-SDR: iHAIBrFifFn/nolzWOP6yWL1xG6MKuWMb1vJP1IdRRPJc83KNHAi4FSX72uRqcn+njS1XyOogL kiTxCLW5yoWuacni3Gu7YO4HA56NbarjW2iYWeAsl72NxbF1AXWuIcqsz4wai0TEjOtMBJqBDo p5BohrYfBuvwFwte703S+KgJg6Hq4FY3CJ7MVSz2MkmYca5y2XFPyhySmIg70rIJwz+hRaaaNy jryKQjCd2GrgDbkMmchoE55Lgfajv1nnPPS1K7iIQ0w66aPjZ+2Zp7QOWKttmq6iZ3LZYeO17d vl4= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:52 -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 4Jg81S46pMz1SVp3 for ; Thu, 20 Jan 2022 22:02:52 -0800 (PST) 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=1642744972; x=1645336973; bh=dZI2frXpABrUcELOmq x8DAFsntrCSET4efSbsptjCx0=; b=jRY7n9Yfsg+df9LOUw9T5xVYHEWZuPSiMx rgtuMARYV9G1QUaJso6KZEaIw4XTMPSQnrkji2CH/U5Rr2X5pdOQV96TZTLJ7JzX h//Jk+Rb8vHnqGWvi2iJVaZipKLecUBFyzbCv3U6SrSDXNqiGbCKwqtbQ0U9WMby iyMuY7hcAEkKOVbHWJccGrYgApO4hFG558NE0fbVR25Ul5VbTqfXfomKCcUSuxfB IDZ4gxYjTt/O7fyXwaYRpa7wBgorda+sYiHWZoqUFnraabqqCqHuNQ0UNpe+PT3W /KKx+1aO7wrtOGW11Vmxzt0dPjzveSS8ygv/VApiSncczpzgqH/g== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 MtpnbE34nkaI for ; Thu, 20 Jan 2022 22:02:52 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg81N4ShPz1RvlN; Thu, 20 Jan 2022 22:02:48 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Richard Henderson , Alistair Francis Subject: [PULL 60/61] target/riscv: Enable uxl field write Date: Fri, 21 Jan 2022 15:58:29 +1000 Message-Id: <20220121055830.3164408-61-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-23-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 3 +++ target/riscv/csr.c | 28 ++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 5a6d49aa64..7c87433645 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -449,6 +449,9 @@ typedef enum { #define COUNTEREN_IR (1 << 2) #define COUNTEREN_HPM3 (1 << 3) +/* vsstatus CSR bits */ +#define VSSTATUS64_UXL 0x0000000300000000ULL + /* Privilege modes */ #define PRV_U 0 #define PRV_S 1 diff --git a/target/riscv/csr.c b/target/riscv/csr.c index b11d92b51b..523d07a95e 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -496,7 +496,7 @@ static const target_ulong vs_delegable_excps = DELEGABLE_EXCPS & (1ULL << (RISCV_EXCP_STORE_GUEST_AMO_ACCESS_FAULT))); static const target_ulong sstatus_v1_10_mask = SSTATUS_SIE | SSTATUS_SPIE | SSTATUS_UIE | SSTATUS_UPIE | SSTATUS_SPP | SSTATUS_FS | SSTATUS_XS | - SSTATUS_SUM | SSTATUS_MXR | SSTATUS_VS | (target_ulong)SSTATUS64_UXL; + SSTATUS_SUM | SSTATUS_MXR | SSTATUS_VS; static const target_ulong sip_writable_mask = SIP_SSIP | MIP_USIP | MIP_UEIP; static const target_ulong hip_writable_mask = MIP_VSSIP; static const target_ulong hvip_writable_mask = MIP_VSSIP | MIP_VSTIP | MIP_VSEIP; @@ -572,6 +572,7 @@ static RISCVException write_mstatus(CPURISCVState *env, int csrno, { uint64_t mstatus = env->mstatus; uint64_t mask = 0; + RISCVMXL xl = riscv_cpu_mxl(env); /* flush tlb on mstatus fields that affect VM */ if ((val ^ mstatus) & (MSTATUS_MXR | MSTATUS_MPP | MSTATUS_MPV | @@ -583,21 +584,22 @@ static RISCVException write_mstatus(CPURISCVState *env, int csrno, MSTATUS_MPP | MSTATUS_MXR | MSTATUS_TVM | MSTATUS_TSR | MSTATUS_TW | MSTATUS_VS; - if (riscv_cpu_mxl(env) != MXL_RV32) { + if (xl != MXL_RV32) { /* * RV32: MPV and GVA are not in mstatus. The current plan is to * add them to mstatush. For now, we just don't support it. */ mask |= MSTATUS_MPV | MSTATUS_GVA; + if ((val & MSTATUS64_UXL) != 0) { + mask |= MSTATUS64_UXL; + } } mstatus = (mstatus & ~mask) | (val & mask); - RISCVMXL xl = riscv_cpu_mxl(env); if (xl > MXL_RV32) { - /* SXL and UXL fields are for now read only */ + /* SXL field is for now read only */ mstatus = set_field(mstatus, MSTATUS64_SXL, xl); - mstatus = set_field(mstatus, MSTATUS64_UXL, xl); } env->mstatus = mstatus; env->xl = cpu_recompute_xl(env); @@ -898,6 +900,9 @@ static RISCVException read_sstatus_i128(CPURISCVState *env, int csrno, { uint64_t mask = sstatus_v1_10_mask; uint64_t sstatus = env->mstatus & mask; + if (env->xl != MXL_RV32) { + mask |= SSTATUS64_UXL; + } *val = int128_make128(sstatus, add_status_sd(MXL_RV128, sstatus)); return RISCV_EXCP_NONE; @@ -907,7 +912,9 @@ static RISCVException read_sstatus(CPURISCVState *env, int csrno, target_ulong *val) { target_ulong mask = (sstatus_v1_10_mask); - + if (env->xl != MXL_RV32) { + mask |= SSTATUS64_UXL; + } /* TODO: Use SXL not MXL. */ *val = add_status_sd(riscv_cpu_mxl(env), env->mstatus & mask); return RISCV_EXCP_NONE; @@ -917,6 +924,12 @@ static RISCVException write_sstatus(CPURISCVState *env, int csrno, target_ulong val) { target_ulong mask = (sstatus_v1_10_mask); + + if (env->xl != MXL_RV32) { + if ((val & SSTATUS64_UXL) != 0) { + mask |= SSTATUS64_UXL; + } + } target_ulong newval = (env->mstatus & ~mask) | (val & mask); return write_mstatus(env, CSR_MSTATUS, newval); } @@ -1380,6 +1393,9 @@ static RISCVException write_vsstatus(CPURISCVState *env, int csrno, target_ulong val) { uint64_t mask = (target_ulong)-1; + if ((val & VSSTATUS64_UXL) == 0) { + mask &= ~VSSTATUS64_UXL; + } env->vsstatus = (env->vsstatus & ~mask) | (uint64_t)val; return RISCV_EXCP_NONE; } From patchwork Fri Jan 21 05:58:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 12719539 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 907FCC433F5 for ; Fri, 21 Jan 2022 09:29:53 +0000 (UTC) Received: from localhost ([::1]:59996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAqEy-0005s0-I7 for qemu-devel@archiver.kernel.org; Fri, 21 Jan 2022 04:29:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1j-0000Zs-9k for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:59 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:60338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAn1h-0004AK-Jc for qemu-devel@nongnu.org; Fri, 21 Jan 2022 01:03:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1642745037; x=1674281037; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kTpQPSuY1qtuTV+1mq+AHYohvMuxfstaDsnFnRDkH6U=; b=Mi+hqSCMDpCkPypT7CUrgQ4d0eUSzKphKBnb9rLKGhbkyYqb4k97eINO UN4izKSfuuQ9x71rvRbm9xraV/eACm2I9qSgfwZf7+N4i9/sogET1OxBa 7855K/XHw6J4SqIWk3nEfkhRwGCeuARxPXbYZVuhS387oLdxNGtlvopmK Uwf+jGyYY82XVw5Hx54s4Nib11UNon2S2LlvQX8AFoY775NIBOnO/3rAD eQ3I/jsmEA1eyY1K61d9vpiQWXSYVikI/iBvXftldzazeL3Sc+lUxwB/G VWrIML1Zdtr059TpmO+/VQdrldZ7gXE429r4ES/x3bjdKK0EjpiZSJE6l Q==; X-IronPort-AV: E=Sophos;i="5.88,304,1635177600"; d="scan'208";a="295083178" 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; 21 Jan 2022 14:02:56 +0800 IronPort-SDR: e+XzDLdTn3QjImg6UIvXq+tkPQOLFWku/fOdKpO2HFudht2H4e0fdt9jweOM3gLh7Vs+O8Ly4U z7cqppDR9W/yfeQr6cxmDN/NsLleQ4w+XlS3+HiUfjB/kRFAjVOIx+iKAQWUWEi52kAdFUkuUS Z/PKZol4xqynhtLSJ2FeH6CpqkqMe++ynqSIeskDfSDGMONc2QCPphj16gTShdLhbEXxzHehy+ iHDtPZ21i4VTl+NwHopRvvQQLkNx8Q0SsK5yhGgVJZUbR/29PLQ6pT2hqsCNE9Q9vA30Yj31a/ eklrs+DNbxm3KchABX3ISFrY Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:36:23 -0800 IronPort-SDR: 2jtElZCECDwv+G1EhsjtmxgIyGmsjJo3+JLEhM9jvJZHaA5OlShYCu4V90pdKMWYRUTi/N0Dyq yK7l8mOUWVgUB6boXVeClx8CucSrkw5TcOXosIxo9qVT9cBM7ZbzUF92moU45N5pNWLOvpWRQD I9wX36I3xlYYZpvGLXJ8lZA7e2ovlj/SJ4KMGHQDK66KludXu1t4AmmCdT2HP+PNHrJlZBoWie GyFztG4Vlh7hIIseVVW8pORxnu72/5sSSxRGIsT1lr7INucAQ+DTho/SKBLJHkpMXt4Revvvqd LYI= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 22:02:56 -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 4Jg81X03n6z1SVp1 for ; Thu, 20 Jan 2022 22:02:56 -0800 (PST) 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=1642744975; x=1645336976; bh=kTpQPSuY1qtuTV+1mq +AHYohvMuxfstaDsnFnRDkH6U=; b=dT5TshaUuImWqoS9X1OrzodXoVUUaMJgzz 0gRSs8DyTHZIcLQ0W4NxxAIhaM2ohWZtD1ub4bzAwX2+Y7LCF/7IXRsdyYLy0mM0 SOzh4h5T7i8B+/z8+/qB+XVYkvgxePohhMl4I+NJtZsm1CyDKWPNjjbLcSLYSMtH M21Y5qcByS94GKCrTt9tqJV0FP99mDQTVjMypR9mXMvxhBFlajOoleMtTeJ8lE/I kVbITi2g5SSlbVW720yQaS6bYVIDP4iDUBhePak6WCuWcuLDQGWwcaZB5u5bzk13 6YdXDuphF7lcf7wllL8xWoFx41yNZ4QXMgwi4BgQPWjosxccNl9A== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com 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 KDIRQ0rDE8qy for ; Thu, 20 Jan 2022 22:02:55 -0800 (PST) Received: from toolbox.alistair23.me (unknown [10.225.165.80]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4Jg81T0JRcz1RvlN; Thu, 20 Jan 2022 22:02:52 -0800 (PST) From: Alistair Francis To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, LIU Zhiwei , Alistair Francis Subject: [PULL 61/61] target/riscv: Relax UXL field for debugging Date: Fri, 21 Jan 2022 15:58:30 +1000 Message-Id: <20220121055830.3164408-62-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> References: <20220121055830.3164408-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=0135fdaf6=alistair.francis@opensource.wdc.com; helo=esa2.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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: LIU Zhiwei Signed-off-by: LIU Zhiwei Reviewed-by: Alistair Francis Message-id: 20220120122050.41546-24-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis --- target/riscv/csr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 523d07a95e..e5f9d4ef93 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -584,7 +584,7 @@ static RISCVException write_mstatus(CPURISCVState *env, int csrno, MSTATUS_MPP | MSTATUS_MXR | MSTATUS_TVM | MSTATUS_TSR | MSTATUS_TW | MSTATUS_VS; - if (xl != MXL_RV32) { + if (xl != MXL_RV32 || env->debugger) { /* * RV32: MPV and GVA are not in mstatus. The current plan is to * add them to mstatush. For now, we just don't support it. @@ -900,7 +900,7 @@ static RISCVException read_sstatus_i128(CPURISCVState *env, int csrno, { uint64_t mask = sstatus_v1_10_mask; uint64_t sstatus = env->mstatus & mask; - if (env->xl != MXL_RV32) { + if (env->xl != MXL_RV32 || env->debugger) { mask |= SSTATUS64_UXL; } @@ -912,7 +912,7 @@ static RISCVException read_sstatus(CPURISCVState *env, int csrno, target_ulong *val) { target_ulong mask = (sstatus_v1_10_mask); - if (env->xl != MXL_RV32) { + if (env->xl != MXL_RV32 || env->debugger) { mask |= SSTATUS64_UXL; } /* TODO: Use SXL not MXL. */ @@ -925,7 +925,7 @@ static RISCVException write_sstatus(CPURISCVState *env, int csrno, { target_ulong mask = (sstatus_v1_10_mask); - if (env->xl != MXL_RV32) { + if (env->xl != MXL_RV32 || env->debugger) { if ((val & SSTATUS64_UXL) != 0) { mask |= SSTATUS64_UXL; }