From patchwork Fri Oct 23 15:33:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302136 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 774A1C388F9 for ; Fri, 23 Oct 2020 16:23:29 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id D47B92192A for ; Fri, 23 Oct 2020 16:23:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="i3Z7GomT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D47B92192A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:49780 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzqh-0004W6-NU for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:23:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37008) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFA-00021a-KO; Fri, 23 Oct 2020 11:44:42 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6152) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzF8-0003gM-Sd; Fri, 23 Oct 2020 11:44:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467879; x=1635003879; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BUW2O3MQzdbWJXlqLo0/WE3+BwAoJgBRDfL3DEvuyg4=; b=i3Z7GomTiSermdqZNNGc7BoGFIs9KobiDyM08pY18dh4LrbgQ6SuSCNk WpzWrExUPo8v7Q9pvnv+urB9dBZIyQn+d3h1b7BDd0AqXcwNV+gM1NMO8 qI62YnsLQ93JJtjL7NLjZaFnMmOmQ3ucHPcQGaceEHzI/NIw1IMGpISam 5oGsmJfWc618xnqyqfpsMuO6Ye7eYJcSOtjTw+4E/y32TN9y6N3F+cTRm GO4Ek61fXkZGhT3NZw6jeSDbJOKehau3aghYyhdHNRi2Syj1gLRVO+fAY Cv1+XehEFEjZ6riOajd9vrUDZWttZOktLcAjMMsA4XW1MikdyIEL0LdKy A==; IronPort-SDR: 4jtoasyk9ithrbxQ33pELpXo/6cPoupWf61WUhJX6Pghm1k377LvOtfsboekUV3iyjDzoV5Tpk qXd/gzY+ARgxS01NlUAGY6hIAkRQJ901n34UWpuYlIlxE/4fMEiiW5fn/HzqDWWPIMY8oBnFk5 4ORYl4DWQCMfktMAkkYx3I1N27UmtxYDqqpJ3MPzBM9qEZd0pB1+79828e0+VpVnIzO3fANs0U rRSZfSvi9xVTtNZ3coo9mD5EsKzlWt70GRNSj822+Vkwh2avey22Vs5e3FZCrXuHQZUi4hyOHd NbQ= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960147" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:44:37 +0800 IronPort-SDR: C9jmEFCbWytfRAtiWbMH2oYXsaYTpsKS2RGqM4IoARnpU5ULSHZYi9v6v/qENur2TVMwwRQyQm Mg3va/E5NHpgsIHG4BCstCNBQcQPZ9Q4OWN4vuOm9cEztyJD0pl3hGOINdvK3O5H+GL3uGs2TJ XfD2oEKoqWdmLboojqZI0MAEzsejDkzz1O11ayfuu4N596BGl0TxScVwB7uLt4st1abNtz7mU2 nm9KOZhtgsY29DaKGY7AYFAMr5NX2Ppq+trcbK1tbD721caL3JRRMxc/8B240AeGCdsEotsAGh WbhRjyBuPD45NWzlXUUP201z Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:30:59 -0700 IronPort-SDR: rvdmG/UKbkExbWsfhTm88Wmvrasv4I/baScGhpc4uvcAk9clQYnfuA8pSU6SDXhVhx4M5hqLAM VpGo8GfmcAYw9aAm00EhMnpghFyg6oHMbPOSBrzOtx38GzjMqyynN1wyLTYhYkyMsWSv1nDmD7 CsUm0dXUiYcnwhFUpu7hoYJK3cPUa7y3iVKOHfAH8mfdVEg5zHGnpiHidSjYgDaODLfPd21a7d 9SYO+2nX6XYlZEzgOQ8wOrMzeq/N23HLBZzVjqah/EqZTCDUsBgJOCuXDn37p3vg4evfy7CDpu 0PQ= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:44:37 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 01/16] target/riscv: Add a TYPE_RISCV_CPU_BASE CPU Date: Fri, 23 Oct 2020 08:33:16 -0700 Message-Id: <67626d271ea0b75a3c5479f3aaf07c565b1d1d83.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- target/riscv/cpu.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index de4705bb57..74a236d4bc 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -44,6 +44,12 @@ #define TYPE_RISCV_CPU_SIFIVE_U34 RISCV_CPU_TYPE_NAME("sifive-u34") #define TYPE_RISCV_CPU_SIFIVE_U54 RISCV_CPU_TYPE_NAME("sifive-u54") +#if defined(TARGET_RISCV32) +# define TYPE_RISCV_CPU_BASE TYPE_RISCV_CPU_BASE32 +#elif defined(TARGET_RISCV64) +# define TYPE_RISCV_CPU_BASE TYPE_RISCV_CPU_BASE64 +#endif + #define RV32 ((target_ulong)1 << (TARGET_LONG_BITS - 2)) #define RV64 ((target_ulong)2 << (TARGET_LONG_BITS - 2)) From patchwork Fri Oct 23 15:33:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302135 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6D42C4363A for ; Fri, 23 Oct 2020 16:25:22 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 456E821D47 for ; Fri, 23 Oct 2020 16:25:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="prMEvlm5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 456E821D47 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:58378 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzsX-00085V-0m for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:25:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37024) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFC-00022t-HY; Fri, 23 Oct 2020 11:44:44 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6144) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFA-0003gF-HX; Fri, 23 Oct 2020 11:44:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467881; x=1635003881; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tVeLQH5d/2Mry1kB+Oc8jJWYNBfxFWaNX19V7lAW+bs=; b=prMEvlm5K7b4rjOEWn/jRsGMTXHz9XhZ0dnVCXwQBIRjSWjg2grp6ILP ey30X1ycSYlXJw/jNh2ifY4gFP2fidsMUeqqeEQOY7OiT8+n8qttLM6Pv CoxLJ4i1oVMIHYCsjpQFp+5vCujn9FvBN6ZTO1BrFF4Vduz2pqBs4rYOb sOLyRQTugVQFM0Lt4zCJjplCP3kxayxhtig1s8DxsQTsy7wpwYOFl+v+p zCQiInUXthzgaHH688hG4+bSXMgJeEfitUz49pVvjD89lw8YzWVGGV3ju f6pgEP6Y3MDXWSGtuRJXRea3V2WGyVDUL6YUCFFmbbmmjskMbuIYxfa0u w==; IronPort-SDR: d3xymO1EL4XrqP1P/qbJre2UcUDawZ2ZPJ4k86/IcksfJ3D4RqPMsv2EamAsnBM05P4YBRQ5XT M+gZZY+qXt07eOVpCzqQYOuFV4DkjMO2HBHPU1eRgPdYrpt0Y3Z5+OYtiqEmZk6mm6KwfrLdmh H8Q9MS/XORQBMCc9LDluAWxkq/nRpUqNFe2XLqhstyjuhhrP070MKUWYbpPMQQolXTQjA8aEcZ nYooaTLtABI/Ufc7f+IyLltluDuSZrWmYL+RT7VLa65U94lc1svQ+wD3KUms1PDL3rb0fnUlDA PgI= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960153" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:44:40 +0800 IronPort-SDR: FZ0U56zvdIWhzJXm7DzBj4hqc3NKH7+SdZ0THwvlSSx4txJULuwQrkaa6tIoyRPg7t/eP0yrMO AEr628ObRUHDWggS1+Vimds4EvMz2JD/dvK3oUkoUPW+MqGgfmf4CdRCb2OCrveCh1dD4PF0F7 BhIdEeHhH2zaBRB1mCdz1p//0GXTACN0LFBXGnw0PuU4WSS2dkubHpNXclMOMvRYNJNIs9q6ww Vpt6EdKDewzFaxC+YImcM/FCP0mb6NlP5/XwVOhVIjAoza16Ap1+V+D89DdKDPAoz+kkV/zlq+ X+kviG/9hXCB/w9Gk9aapa86 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:01 -0700 IronPort-SDR: uyjIx8T53X8w1vm+0Md1+RQdsr9PyE/420kgkdvHtoYLlotvazEzKm50oari98EuMlz2mycAPp hANlagEvjABGhk0DiGUKMEPc9oinD9z/Ym3mp5AjdcSOs2Dzj1Ullxnn5l/h25/efUwYZQ/hSt BhDg+5VO9X2hguzZXuw7z/eJWx8D1S3vAIq+qRf4L3B9DrAkWZDMjCS+WM9iWf0xd8rMFiDzKB Mf+OBA2uB8E84fMjNFqlHb4gmmU5DSnt5mfivpMY/nvvltC/dwGxk5vA9btbjAl0yw/Yno1EmU fao= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:44:39 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 02/16] riscv: spike: Remove target macro conditionals Date: Fri, 23 Oct 2020 08:33:18 -0700 Message-Id: <2f7f2621dda197492b848fcf186f1cb6fb3eb53d.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- include/hw/riscv/spike.h | 6 ------ hw/riscv/spike.c | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h index cddeca2e77..cdd1a13011 100644 --- a/include/hw/riscv/spike.h +++ b/include/hw/riscv/spike.h @@ -47,10 +47,4 @@ enum { SPIKE_DRAM }; -#if defined(TARGET_RISCV32) -#define SPIKE_V1_10_0_CPU TYPE_RISCV_CPU_BASE32 -#elif defined(TARGET_RISCV64) -#define SPIKE_V1_10_0_CPU TYPE_RISCV_CPU_BASE64 -#endif - #endif diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index facac6e7d2..29f07f47b1 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -317,7 +317,7 @@ static void spike_machine_class_init(ObjectClass *oc, void *data) mc->init = spike_board_init; mc->max_cpus = SPIKE_CPUS_MAX; mc->is_default = true; - mc->default_cpu_type = SPIKE_V1_10_0_CPU; + mc->default_cpu_type = TYPE_RISCV_CPU_BASE; mc->possible_cpu_arch_ids = riscv_numa_possible_cpu_arch_ids; mc->cpu_index_to_instance_props = riscv_numa_cpu_index_to_props; mc->get_default_cpu_node_id = riscv_numa_get_default_cpu_node_id; From patchwork Fri Oct 23 15:33:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302133 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 436ECC388F9 for ; Fri, 23 Oct 2020 16:27:49 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A513A21D47 for ; Fri, 23 Oct 2020 16:27:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="gwB+N8uO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A513A21D47 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:37980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzut-00039M-HT for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:27:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFG-00024v-9a; Fri, 23 Oct 2020 11:44:47 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:43662) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFE-0003gp-DR; Fri, 23 Oct 2020 11:44:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467884; x=1635003884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mO2KDDBwgipSRnDouZyuQauB4BvzjCpnifeQek8HSUw=; b=gwB+N8uOGX8LXNCTaKG+DhY3y70QQdlfOZY8RBdUMUeDp86dcw6YI9y9 ZJQ4bTzP0YR08MJl0v5PkVmgMjS0XXu85IdOpjqUDYJXNRezVabCGf43p vDqZY4P69+BlpFO4+/JEpqDtxrL3Pk/1emWS6QrtTbbz2sh7H/1CCTS5C zpfllFM/HMlJqE/49izyA5s9nVBl34ITdpDGlY+0LmU4+L2PHnnVD9Vre c/3+WB4rHIUV+PfLA/Uh1Yj5fCNLgtwx1EFYGw+erEtKRwdcKecUP/IKJ C4AFALR+pKwbBNxhfZydu9npW5f/GxQzoaRkXuSbviv4KtHdkmu0WZy7h A==; IronPort-SDR: XmUK2ZMPxSlvQtw/O/cCpLZ5qTLVkJ54xDLdoUdg+dnIJ0JGtPG9oeuqV3OWqwdXd7LeGpSL0q ND7gTm3s/3f3vWa3wbTeQBS/D8gEZxUD7BlmKfj1nmbHusntpXu5OLT7/2deRPCylefI0BFzar I61xyEv92NBntWg9ehleDi19pQQxkZY8a+pmCeOxp3Hd0o6lO2iPI8d/vfd21mbgfQTCKvRLdG cAr40i3FWJjjrb9QaCijbI7GxVB9x5Y+rX7aNfqoDHpg1P2qN8v84TJO0YTqjqwPRQHy6kWPYI MtE= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="150812572" 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; 23 Oct 2020 23:44:42 +0800 IronPort-SDR: XyNvr5gYUPKDB2zY+GKE9voYnvcHG59slZkwkqMble4rx3JdvQhyVVVFKO7IW24KCs5tYHMC3p QS03QoqF6rl5h3xJY4JiS0WAd8DYMksbGuzYmUGiDhkMhMhYOn6LWqdu9TqNSIaIHQOUH4Fd1D B0K9nx+uTDfkZ53ofb92XcyCKfflnTwQA++UPE1vvT8iFM4AcPkEVHYpiuMkO3ffA9RGceg9m0 /52fLVFtyG4zy3F4k5A9PA9ggE1JXZ7QfP69cx3NoZXErcEN3LS2yNtpNjUdvGBGiwEOblbpT2 66+b9QbiT0JVnOd3QXBtbVCF 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; 23 Oct 2020 08:29:57 -0700 IronPort-SDR: UZkSApcc2+K/I5TtgOdQXy8kX025DKJPNpVAB9NfwyGdHepyLZYfLxvpxWgrmSUYcHy4NRJjxa 8B2lyXL/RYROEkM6bs2dy9/6MjmjI2B/zrGi+CntNIKNSGlgz61faxxegDdCOTHZU8YZ74rAjL DwQJdxiQmGCnxXaRgId50Jy7aSFJz0U5PR3FqTWYwL6Zij/rLu0nCBNDMgOATEOxcRRtG7SQzR 4NxSdrJu3ukKjxDKyl+VS0zFK3fpsJMoXzfdv3toKvmx1eb/g2Yk2ZnGpJMCGTNfeMc4geriiR HqQ= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:44:42 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 03/16] riscv: virt: Remove target macro conditionals Date: Fri, 23 Oct 2020 08:33:21 -0700 Message-Id: <9710f7917b7a1fcffce2d926005efc3bb84c0152.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa5.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:42 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- include/hw/riscv/virt.h | 6 ------ hw/riscv/virt.c | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index b4ed9a32eb..84b7a3848f 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -89,10 +89,4 @@ enum { #define FDT_INT_MAP_WIDTH (FDT_PCI_ADDR_CELLS + FDT_PCI_INT_CELLS + 1 + \ FDT_PLIC_ADDR_CELLS + FDT_PLIC_INT_CELLS) -#if defined(TARGET_RISCV32) -#define VIRT_CPU TYPE_RISCV_CPU_BASE32 -#elif defined(TARGET_RISCV64) -#define VIRT_CPU TYPE_RISCV_CPU_BASE64 -#endif - #endif diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 6bfd10dfc7..5f1fcebdc6 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -693,7 +693,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) mc->desc = "RISC-V VirtIO board"; mc->init = virt_machine_init; mc->max_cpus = VIRT_CPUS_MAX; - mc->default_cpu_type = VIRT_CPU; + mc->default_cpu_type = TYPE_RISCV_CPU_BASE; mc->pci_allow_0_address = true; mc->possible_cpu_arch_ids = riscv_numa_possible_cpu_arch_ids; mc->cpu_index_to_instance_props = riscv_numa_cpu_index_to_props; From patchwork Fri Oct 23 15:33:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302134 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59E21C4363A for ; Fri, 23 Oct 2020 16:25:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A066E2192A for ; Fri, 23 Oct 2020 16:25:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="pJws9cGj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A066E2192A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:60836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzt3-0000oO-I7 for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:25:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37062) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFJ-00025j-Ca; Fri, 23 Oct 2020 11:44:49 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:42257) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFG-0003gw-Pt; Fri, 23 Oct 2020 11:44:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467886; x=1635003886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hkNsI+YDI8tyMdNWEckMB4IbaSMOZO66j406BQuoebQ=; b=pJws9cGjY5ZcHbqPAoodD8fH+jcM/8NmXuPbklF072ZruxPikeQsOcUI kqX3KEdPXo5ejQ+K2fX1g8NuZGwCNT7GKuBnlMRwtvcA0SmCjXG9wM4nF Amd3jICqGw9hc5NpxoQTBm7s/k8B4qUnCQ7UcLP5etcE3fkZb/9oABAVo Dfsx81Zf0Yzq2SuQmsznpkHgO7ysDiCu5IJ/XXkqYIsJyEccQP9WWJwaf IDdaEGM6qPTAshyLpnZ1c3kr3TXJUIDvRlHLQ7AHM+vuBRylov6wWgd/J 6O3lRCmSnT5fKzf/UPi8yIduckZEgd2w4M+kJop1Et+hUiATFcTMZtuH4 g==; IronPort-SDR: IqCUjowioS2MsV39bg1p8gUTWLNQvUuAx1UgfAFRWZ2A4bfOtxEy8hINICndIY+O2UUqBg7M/I Hvtg6ozINHWMOUQqh9axx6UDKeacfMK20pFf+zlnFBpQVqEwbxvbH2Sfa02P9H2W1EsgK9+wGN T3zeSFtS+61iV0Q0cO8SiMkeuBGgyCVcT41M2Jq0sF0zJdGkKiVvdcQmrD/FZmGxPmuUzFwgha RMWJ6jNbHDJHx5kWMNLNKxJQeQgcQ2LDMPNvKfPO4ziyDN4TPkEddA/2R7S5+Zf6cGms4G4az4 bCA= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="260636792" 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; 23 Oct 2020 23:44:44 +0800 IronPort-SDR: rw+eqrjJYgckri17AmccVmp1qMZUBo/Y0BAMzfUzprNVtk/hePypjC+F3ODB90hkuohsF9Osik V866IyuzeX67gUJcr1cpE29FyckTUtZ8/wMMhh6XdOUQbK4eJo0gmA8d6QGpnnDmYFTjL2X5d3 R5v2BnX78MSyQJHBkBhI/TgDUkKq1kmgnAb/LCkrGCQbFaB359ISVtoXAzRzoWYqMUDLg/JSew VB3rh23/entgUywfDbncsMCWBTJo99XEEVf2GCLeGk/XXvzbq7QPU/gCJaEmw61xOWIpQ0gERg em0Aw30vU0iFOqjgzdMim4WJ Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:07 -0700 IronPort-SDR: jf0gfAFT/17HChI6nOOAPRqAf9P9vfIxtl5X+xuJD0+7c2SNe6P5/ENQcioduLZRlCRDtcz9wZ LN9xtNo0mK5bA20t9haBSrlb+sxu/LgZA0Sw3VkXaEQpPhHTcKY91x8GOOqmR1MvrQqIN9jEzN BCvF/Sv3ZMcljDBwEFSjhA6BBcpLP+gL09PyKpdIctTFz5ykSWMIonG9cq3Ux5BIskW3+F2Cvt Dl+17nB58oFTQOB3xCcZ9C3htsBPTRZuKKR/yhwVTXBEZ1bOWdXk9iv0V1rQaczsxxSdVHAA4V P/w= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:44:45 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 04/16] hw/riscv: boot: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:24 -0700 Message-Id: <9ac707eccfca0158a851cecfd83f90ab124cded3.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.141.245; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa1.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:37:20 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- include/hw/riscv/boot.h | 8 +++--- hw/riscv/boot.c | 55 ++++++++++++++++++++++------------------- hw/riscv/sifive_u.c | 2 +- hw/riscv/spike.c | 3 ++- hw/riscv/virt.c | 2 +- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h index 0b01988727..b6d37a91d6 100644 --- a/include/hw/riscv/boot.h +++ b/include/hw/riscv/boot.h @@ -41,10 +41,12 @@ target_ulong riscv_load_kernel(const char *kernel_filename, hwaddr riscv_load_initrd(const char *filename, uint64_t mem_size, uint64_t kernel_entry, hwaddr *start); uint32_t riscv_load_fdt(hwaddr dram_start, uint64_t dram_size, void *fdt); -void riscv_setup_rom_reset_vec(hwaddr saddr, hwaddr rom_base, - hwaddr rom_size, uint64_t kernel_entry, +void riscv_setup_rom_reset_vec(MachineState *machine, hwaddr saddr, + hwaddr rom_base, hwaddr rom_size, + uint64_t kernel_entry, uint32_t fdt_load_addr, void *fdt); -void riscv_rom_copy_firmware_info(hwaddr rom_base, hwaddr rom_size, +void riscv_rom_copy_firmware_info(MachineState *machine, hwaddr rom_base, + hwaddr rom_size, uint32_t reset_vec_size, uint64_t kernel_entry); diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 9b3fe3fb1e..a6e4e52b32 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -32,12 +32,6 @@ #include -#if defined(TARGET_RISCV32) -#define fw_dynamic_info_data(__val) cpu_to_le32(__val) -#else -#define fw_dynamic_info_data(__val) cpu_to_le64(__val) -#endif - bool riscv_is_32_bit(MachineState *machine) { if (!strncmp(machine->cpu_type, "rv32", 4)) { @@ -216,16 +210,24 @@ uint32_t riscv_load_fdt(hwaddr dram_base, uint64_t mem_size, void *fdt) return fdt_addr; } -void riscv_rom_copy_firmware_info(hwaddr rom_base, hwaddr rom_size, - uint32_t reset_vec_size, uint64_t kernel_entry) +void riscv_rom_copy_firmware_info(MachineState *machine, hwaddr rom_base, + hwaddr rom_size, uint32_t reset_vec_size, + uint64_t kernel_entry) { struct fw_dynamic_info dinfo; size_t dinfo_len; - dinfo.magic = fw_dynamic_info_data(FW_DYNAMIC_INFO_MAGIC_VALUE); - dinfo.version = fw_dynamic_info_data(FW_DYNAMIC_INFO_VERSION); - dinfo.next_mode = fw_dynamic_info_data(FW_DYNAMIC_INFO_NEXT_MODE_S); - dinfo.next_addr = fw_dynamic_info_data(kernel_entry); + if (riscv_is_32_bit(machine)) { + dinfo.magic = cpu_to_le32(FW_DYNAMIC_INFO_MAGIC_VALUE); + dinfo.version = cpu_to_le32(FW_DYNAMIC_INFO_VERSION); + dinfo.next_mode = cpu_to_le32(FW_DYNAMIC_INFO_NEXT_MODE_S); + dinfo.next_addr = cpu_to_le32(kernel_entry); + } else { + dinfo.magic = cpu_to_le64(FW_DYNAMIC_INFO_MAGIC_VALUE); + dinfo.version = cpu_to_le64(FW_DYNAMIC_INFO_VERSION); + dinfo.next_mode = cpu_to_le64(FW_DYNAMIC_INFO_NEXT_MODE_S); + dinfo.next_addr = cpu_to_le64(kernel_entry); + } dinfo.options = 0; dinfo.boot_hart = 0; dinfo_len = sizeof(dinfo); @@ -245,28 +247,24 @@ void riscv_rom_copy_firmware_info(hwaddr rom_base, hwaddr rom_size, &address_space_memory); } -void riscv_setup_rom_reset_vec(hwaddr start_addr, hwaddr rom_base, - hwaddr rom_size, uint64_t kernel_entry, +void riscv_setup_rom_reset_vec(MachineState *machine, hwaddr start_addr, + hwaddr rom_base, hwaddr rom_size, + uint64_t kernel_entry, uint32_t fdt_load_addr, void *fdt) { int i; uint32_t start_addr_hi32 = 0x00000000; - #if defined(TARGET_RISCV64) - start_addr_hi32 = start_addr >> 32; - #endif + if (!riscv_is_32_bit(machine)) { + start_addr_hi32 = start_addr >> 32; + } /* reset vector */ uint32_t reset_vec[10] = { 0x00000297, /* 1: auipc t0, %pcrel_hi(fw_dyn) */ 0x02828613, /* addi a2, t0, %pcrel_lo(1b) */ 0xf1402573, /* csrr a0, mhartid */ -#if defined(TARGET_RISCV32) - 0x0202a583, /* lw a1, 32(t0) */ - 0x0182a283, /* lw t0, 24(t0) */ -#elif defined(TARGET_RISCV64) - 0x0202b583, /* ld a1, 32(t0) */ - 0x0182b283, /* ld t0, 24(t0) */ -#endif + 0, + 0, 0x00028067, /* jr t0 */ start_addr, /* start: .dword */ start_addr_hi32, @@ -274,6 +272,13 @@ void riscv_setup_rom_reset_vec(hwaddr start_addr, hwaddr rom_base, 0x00000000, /* fw_dyn: */ }; + if (riscv_is_32_bit(machine)) { + reset_vec[3] = 0x0202a583; /* lw a1, 32(t0) */ + reset_vec[4] = 0x0182a283; /* lw t0, 24(t0) */ + } else { + reset_vec[3] = 0x0202b583; /* ld a1, 32(t0) */ + reset_vec[4] = 0x0182b283; /* ld t0, 24(t0) */ + } /* copy in the reset vector in little_endian byte order */ for (i = 0; i < ARRAY_SIZE(reset_vec); i++) { @@ -281,7 +286,7 @@ void riscv_setup_rom_reset_vec(hwaddr start_addr, hwaddr rom_base, } rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), rom_base, &address_space_memory); - riscv_rom_copy_firmware_info(rom_base, rom_size, sizeof(reset_vec), + riscv_rom_copy_firmware_info(machine, rom_base, rom_size, sizeof(reset_vec), kernel_entry); return; diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index b2472c6627..978cfedd24 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -538,7 +538,7 @@ static void sifive_u_machine_init(MachineState *machine) rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), memmap[SIFIVE_U_DEV_MROM].base, &address_space_memory); - riscv_rom_copy_firmware_info(memmap[SIFIVE_U_DEV_MROM].base, + riscv_rom_copy_firmware_info(machine, memmap[SIFIVE_U_DEV_MROM].base, memmap[SIFIVE_U_DEV_MROM].size, sizeof(reset_vec), kernel_entry); } diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 29f07f47b1..875f371f0f 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -296,7 +296,8 @@ static void spike_board_init(MachineState *machine) fdt_load_addr = riscv_load_fdt(memmap[SPIKE_DRAM].base, machine->ram_size, s->fdt); /* load the reset vector */ - riscv_setup_rom_reset_vec(memmap[SPIKE_DRAM].base, memmap[SPIKE_MROM].base, + riscv_setup_rom_reset_vec(machine, memmap[SPIKE_DRAM].base, + memmap[SPIKE_MROM].base, memmap[SPIKE_MROM].size, kernel_entry, fdt_load_addr, s->fdt); diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 5f1fcebdc6..192138cc76 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -643,7 +643,7 @@ static void virt_machine_init(MachineState *machine) fdt_load_addr = riscv_load_fdt(memmap[VIRT_DRAM].base, machine->ram_size, s->fdt); /* load the reset vector */ - riscv_setup_rom_reset_vec(start_addr, virt_memmap[VIRT_MROM].base, + riscv_setup_rom_reset_vec(machine, start_addr, virt_memmap[VIRT_MROM].base, virt_memmap[VIRT_MROM].size, kernel_entry, fdt_load_addr, s->fdt); From patchwork Fri Oct 23 15:33:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302132 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 011B4C4363A for ; Fri, 23 Oct 2020 16:28:30 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 4CAB421D47 for ; Fri, 23 Oct 2020 16:28:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="jquRFi6o" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4CAB421D47 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:41060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzvY-0004U7-7N for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:28:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37076) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFL-0002AO-EM; Fri, 23 Oct 2020 11:44:51 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:3951) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFJ-0003h7-IN; Fri, 23 Oct 2020 11:44:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467889; x=1635003889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/smQkHEQ02cPvnJeFsp8cH82tHAXNAZPq9pGxFHQWBk=; b=jquRFi6ozdt80PaS5cMCDzUT9JXGfTdofDWWR1wOnEmdeUCEys++vwVd JnYLs/MdxHBdOzQRdXyon8ZZu0AT3D1+Uwlf03+Do/Ec6OeogIXqGJp6r d9SFn1NdUUyLcwvgKzjqpdpPZkYA5iLH/ML1IBFIHQo+qdP3u9OA5hGix CJq7V33uMUrG5spl+/lqPw4A2+LWKJ0YFp9hCtJJd88pSTp2SL8x39lKx tUU0HmUk3LnPraiFPaEYU3h/qbtn1oaw09rN0z6b29ipG0zSe6DDSidBG robLk1GTWR0NaRvZobQeJCCBgbl3Wbm2hiRufqiD6yaADbWg/Pw7tlY5u g==; IronPort-SDR: 2rZY9ppoVtyWgt8n5CFvHz0yDTvyliiNPjPmbks3/kigAt9ZelL3Fw16aYXGVqYEeJFAsH7SS3 MMoMl3zvuusjE22OGX92tae8w/gD2IfNp02BPhV9FZm8azwAg4u9Tez1LE68H4YwXiXmrrg/1G plz+gbZVb+CyQUQJRItVBi2fK/Gbtb9HqSYbiDJC4du+OcYZupQknbhBSFbU92lui0UebRjGKw 0qHDOep+4ybTpeO1F65qq6nv7seoWJhknqXz0/xBdJRSUub6oJQ1wbe6ScTFvpf6txwSBUUtbx +VA= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="155168720" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:44:47 +0800 IronPort-SDR: 7IiLzuDZS1EspGlxGLMBV/OewB46cjh0MhUsaDxhpxgAHPJXhKQm8Uv5IN75fuGmPpM7b1uUZa /OEYuBbxTtLszqYkuyK4p+oKGl/G1IUWMeR6Jacrot0+WROmWB3Szzie057HoUb+JikOKAaij6 ISZz6RbYbRYHkktcFB3H7g8rtU7bRGuFmmKx/3wzRO7UHqRry5t2JZ94cJbxsfSkp2XgA3ivw6 G+vekff/z5aw+OwdeGUw85CfyxXYVI6b0UfxXP5CIlfOZ8PH8/rKyuhHDTNY4OrpDGdHdDSknS F91Gxog5jhvGB7AdPSXY3u6n 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; 23 Oct 2020 08:30:02 -0700 IronPort-SDR: S4Mr4Mozst6bZSAPIbd5qOe+y+3vliysa/gtUBoMO29uwsyGVg425uZ0GvL0TjTqUCv8E4aGOw n/qFkVrDcyEflzMEFYwausZYBiB3OGP5IPBm4MWqtqr50zXlCpfz1cbLh5bRp7vkk4TWMF3Alw D5ZBg0Vv7UoYmdEdNA8JF0nmGTKGAYsZj5KzGZxF+xzm6uX1zvPpcOWllM1L+th0441EKlf6cT RDsUJdiYs7xO27JyvdQPN7lqhYh5rlLyuYyFCYu5TPzJC38rMN0xcDfDdEhS6wvKVBloVXUrKe GXU= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:44:47 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 05/16] hw/riscv: virt: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:26 -0700 Message-Id: X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.153.141; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa3.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:48 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/riscv/virt.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 192138cc76..e76c0a32b9 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -43,12 +43,6 @@ #include "hw/pci/pci.h" #include "hw/pci-host/gpex.h" -#if defined(TARGET_RISCV32) -# define BIOS_FILENAME "opensbi-riscv32-generic-fw_dynamic.bin" -#else -# define BIOS_FILENAME "opensbi-riscv64-generic-fw_dynamic.bin" -#endif - static const struct MemmapEntry { hwaddr base; hwaddr size; @@ -177,7 +171,7 @@ static void create_pcie_irq_map(void *fdt, char *nodename, } static void create_fdt(RISCVVirtState *s, const struct MemmapEntry *memmap, - uint64_t mem_size, const char *cmdline) + uint64_t mem_size, const char *cmdline, bool is_32_bit) { void *fdt; int i, cpu, socket; @@ -231,11 +225,11 @@ static void create_fdt(RISCVVirtState *s, const struct MemmapEntry *memmap, cpu_name = g_strdup_printf("/cpus/cpu@%d", s->soc[socket].hartid_base + cpu); qemu_fdt_add_subnode(fdt, cpu_name); -#if defined(TARGET_RISCV32) - qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv32"); -#else - qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv48"); -#endif + if (is_32_bit) { + qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv32"); + } else { + qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv48"); + } name = riscv_isa_string(&s->soc[socket].harts[cpu]); qemu_fdt_setprop_string(fdt, cpu_name, "riscv,isa", name); g_free(name); @@ -595,7 +589,8 @@ static void virt_machine_init(MachineState *machine) main_mem); /* create device tree */ - create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline); + create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline, + riscv_is_32_bit(machine)); /* boot rom */ memory_region_init_rom(mask_rom, NULL, "riscv_virt_board.mrom", @@ -603,8 +598,15 @@ static void virt_machine_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[VIRT_MROM].base, mask_rom); - firmware_end_addr = riscv_find_and_load_firmware(machine, BIOS_FILENAME, - start_addr, NULL); + if (riscv_is_32_bit(machine)) { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv32-generic-fw_dynamic.bin", + start_addr, NULL); + } else { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv64-generic-fw_dynamic.bin", + start_addr, NULL); + } if (machine->kernel_filename) { kernel_start_addr = riscv_calc_kernel_start_addr(machine, From patchwork Fri Oct 23 15:33:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270521 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6F8DC4363A for ; Fri, 23 Oct 2020 16:29:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 33A5A208B6 for ; Fri, 23 Oct 2020 16:29:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="mZlCrl/+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33A5A208B6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:45094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzwy-00067s-3P for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:29:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37102) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFP-0002Jy-3j; Fri, 23 Oct 2020 11:44:55 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:21438) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFM-0003hI-TS; Fri, 23 Oct 2020 11:44:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603468976; x=1635004976; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WpK3XmAiAkZyO6onzUNBTt/mHHzAqf1GbEUIDuYLeGQ=; b=mZlCrl/+VOWGJA3foTDVHkjfiIUMhnkJGO952HkhIy6mEQLOFres1yj/ UZpGXC+zBiEm9PIDTnwj9SkUZlvZh/ipSTqeJm6Z0tjkG06cmoVb+vBUX JekEYDhm80hSf/hscyJygv2LfIjgTG6pHjmBTiIgwPe7vNDwt7XZE7iH6 1BwlvsGTWB40UYXHv3M5Ig/+aqTGEjkp8lINZExbX+qxz15yUvh9bQ4fW 2aT0eNuIgVji2A8m3TbrfAgHgrqyk7SJSnUY5diWAuCQCiM2YHqNp/93z Gmx+0grJ3tIA2Du5f9999VOyjlqLeH9X8rf/JLN3hTeJV/lwGV3q7GQnU Q==; IronPort-SDR: vt7CPJKDpFpGClGIiIOaRYQ17l1yBoUqoVuPLdS/bZjJbRJoOs25BBHewnsN5wavLwu050Bzdh QlVUEXNqnqjbn9i+anV2xPmCIXI9x1nsL6qKKkI/UEaRjDIej5WobCdadGfLiEzbF1Snf3qmBU 9U4jmTOAFkL4kzhXwUtpso6KTyx0k0NwBc4/PjU8yIFCAB8J5d8CCctt15fonFrs0OxSEK18y3 JS5RQRm/7qaj8Z+HBLbQ7tqXM12T3qNwUB1w/cjKtucd2l2qbMuQaychLfakzDmnYUHbyMTnI0 8XM= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="254245088" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 24 Oct 2020 00:02:52 +0800 IronPort-SDR: E+RFlg87rCDv1oiN/GGj63/jim0jLKo3+iur0k+d+JIJIlfKJZIyFpAPX37rDPzXU8ONvR22Ut +CuLWqClFC6XbnAwIKMiU8FF1II1hnLbyOcZoykb1VQH1sAQcclLhObQMyxoFixJWhetSO6XU1 lqvHuBTKVAfTuh5F3UJrCUc1JtScouPzY0JNYEmtVmMPryQW2aRw3M6+UV0qbet8a6oYoXI2aA gaug2gEcdehbuK+U83TJgVVZpt5bUyGnbYwnTb25ENJxeFpitGyMcH0qDkRNdwFyywU7t+q9b7 hsNL8dswUqOF7V0IsicPErJi Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:12 -0700 IronPort-SDR: 2WRvrvRsHYbYy2KXg3Mggc1HAbaCyd4Dp9jJnAL9miVrWu6rgQVQlxak8Xg3r2By3V7rCVvmLt ZI+yYpQQxp5FhhmbMrRPQ8FOLHmUKuzdJrzCIQCcT4MtcsVs7ybdgiDntp5fh+xKT5bPyfyxog rqx9Td5jyjHgf0Y6hNuxOv9oUu+qBYmJK4Wl1FhigjMlPnRUF/zb8aCXvBQ3O8yMs1LVjHvgVg vJsC2caXrubBvoFaTXOvQCpj6BTt0oZbSBgMrQELUmdMW1/G45fO69ZC27RlnivRzIp/dYhLSp uIo= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:44:50 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 06/16] hw/riscv: spike: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:29 -0700 Message-Id: <82ea05de42d429e1bf572cc134d4571d87a4cfc7.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa2.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:50 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- hw/riscv/spike.c | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 875f371f0f..3e47e4579d 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -43,17 +43,6 @@ #include "sysemu/qtest.h" #include "sysemu/sysemu.h" -/* - * Not like other RISC-V machines that use plain binary bios images, - * keeping ELF files here was intentional because BIN files don't work - * for the Spike machine as HTIF emulation depends on ELF parsing. - */ -#if defined(TARGET_RISCV32) -# define BIOS_FILENAME "opensbi-riscv32-generic-fw_dynamic.elf" -#else -# define BIOS_FILENAME "opensbi-riscv64-generic-fw_dynamic.elf" -#endif - static const struct MemmapEntry { hwaddr base; hwaddr size; @@ -64,7 +53,7 @@ static const struct MemmapEntry { }; static void create_fdt(SpikeState *s, const struct MemmapEntry *memmap, - uint64_t mem_size, const char *cmdline) + uint64_t mem_size, const char *cmdline, bool is_32_bit) { void *fdt; uint64_t addr, size; @@ -115,11 +104,11 @@ static void create_fdt(SpikeState *s, const struct MemmapEntry *memmap, cpu_name = g_strdup_printf("/cpus/cpu@%d", s->soc[socket].hartid_base + cpu); qemu_fdt_add_subnode(fdt, cpu_name); -#if defined(TARGET_RISCV32) - qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv32"); -#else - qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv48"); -#endif + if (is_32_bit) { + qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv32"); + } else { + qemu_fdt_setprop_string(fdt, cpu_name, "mmu-type", "riscv,sv48"); + } name = riscv_isa_string(&s->soc[socket].harts[cpu]); qemu_fdt_setprop_string(fdt, cpu_name, "riscv,isa", name); g_free(name); @@ -254,7 +243,8 @@ static void spike_board_init(MachineState *machine) main_mem); /* create device tree */ - create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline); + create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline, + riscv_is_32_bit(machine)); /* boot rom */ memory_region_init_rom(mask_rom, NULL, "riscv.spike.mrom", @@ -262,9 +252,22 @@ static void spike_board_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[SPIKE_MROM].base, mask_rom); - firmware_end_addr = riscv_find_and_load_firmware(machine, BIOS_FILENAME, - memmap[SPIKE_DRAM].base, - htif_symbol_callback); + /* + * Not like other RISC-V machines that use plain binary bios images, + * keeping ELF files here was intentional because BIN files don't work + * for the Spike machine as HTIF emulation depends on ELF parsing. + */ + if (riscv_is_32_bit(machine)) { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv32-generic-fw_dynamic.elf", + memmap[SPIKE_DRAM].base, + htif_symbol_callback); + } else { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv64-generic-fw_dynamic.elf", + memmap[SPIKE_DRAM].base, + htif_symbol_callback); + } if (machine->kernel_filename) { kernel_start_addr = riscv_calc_kernel_start_addr(machine, From patchwork Fri Oct 23 15:33:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270520 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DCFFDC55179 for ; Fri, 23 Oct 2020 16:31:00 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 115D2208B6 for ; Fri, 23 Oct 2020 16:30:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="fqoWgvND" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 115D2208B6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:47942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzxy-0007IT-TK for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:30:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37112) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFQ-0002No-Ii; Fri, 23 Oct 2020 11:44:56 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:42257) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFO-0003gw-Fz; Fri, 23 Oct 2020 11:44:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467894; x=1635003894; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8IJlnM52JuNc6/yoyV6TcAJmVKmUjdDk983+CGD0WTM=; b=fqoWgvNDM/EQEzFXIGCV/LmO4u6wviP1ui5B1/I7jcOKwVlLqfyIj5cz iMXN9FdgD+USPPof92mJglKW47sFmYqnae4VAFronB84ig+O03mjcX67W 3zG5s57g+HBQ0PtAofYyMbyJXOxDxzT5EeYDnwCCmnwecDZkvNKQCERib yds026B5f4HPD3IXkVmxms2+cmEhKEj7I9y48E7xnHgk84UBf7ec0lAu+ ubHNybsicx0Uy7oTBTvzsaxUFQH3B0TpZ9bmhVDArPFlFLps1aUOIAara SW8n0bhQzRrBYlPlFcmZY6/83EUWDCy8uIP0sSrrEL22AlJfUF9w97dRd A==; IronPort-SDR: Q967hIHxj72/6oJxVyCqA2mCoOocpIi29X7LYA4jzJ4/fK1sVvI+wdVSD3lSv/gdpgFUv2t+Bh lte6cpzNWuQPBMtGVsO/Z2OIC/4ityAIu9TFiFw9SNVw+m3AJkAmqPqudmGmdGETzpORhZO8vx +spB3MMo2Eq/7fjDmGmA8LvRr8UOJEJ9BsmMQP0ptrMTo70xERd2iKpSPxF5TQWw41rJwCbuLM 2cZAQXWzdX/fh/THcM/du5u52WEtedxgm3clwu60m23spC/SC+y4Eegq2Xk96FQSZbNTIBU7TN Rck= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="260636800" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:44:52 +0800 IronPort-SDR: UDOOwRxj8Gl/dAPrB24t+ds5J0OQQu3jfIE6p0M0XWNVqar7yPe79BhFLeQ9CzGolx7BLuWcG7 mwbGYXAyfRmaGx07ti6b/DtwGSPzxpNECTHHc2TVYuA+noQmRrMaEM3n+4ZILV7npAy+NjpUJP Mp70gjw3XQOxWIcaBfvJNc+u3bYHCg+WqqsuROb0J9WstYv4G+QO/1dxxteIMhvIMTWhmcBO07 em9uyfv1MHyF3/6xj76J4/6h2ntnt1jEhLEXtUXEpa2raMqJ2XYdLVYfDho9QljO9w/8cZVkso cMSYS1c46cIOcl+SknJVY8jY 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; 23 Oct 2020 08:30:08 -0700 IronPort-SDR: LEtKkO73QYNwZl5tkmtc6sKhduAthn8hiBiQ2ESMmKvtUk86nQwnjoMsEd5TuXNZZRzKJVSf0d Z6VzXUdKR3JjgX/JEjElMKN+NAmKJjJY8/85ZtPQM9NKa585j5osaEgmOaLglYjeNrkZPxuMGZ i8Vq2djPz/EJGHvJ8I+eTDjlYOR6vxiRVeDNDtOK2xBmkon6cZOVc3lK1hk5M7LUAOhaaYGcFP LB9k+81LmDE3Jou3Wh5IEMnSTbhga+GnKW+m/ZNb0jNaxr9kMGzDORztZPZaR7R0dwvfTXkNZu OWY= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:44:53 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 07/16] hw/riscv: sifive_u: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:32 -0700 Message-Id: <7ce5ff70057b2fad2d455887d048c419a7e42746.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.141.245; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa1.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:37:20 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- hw/riscv/sifive_u.c | 57 ++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 978cfedd24..3bc32c9225 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -60,12 +60,6 @@ #include -#if defined(TARGET_RISCV32) -# define BIOS_FILENAME "opensbi-riscv32-generic-fw_dynamic.bin" -#else -# define BIOS_FILENAME "opensbi-riscv64-generic-fw_dynamic.bin" -#endif - static const struct MemmapEntry { hwaddr base; hwaddr size; @@ -93,7 +87,7 @@ static const struct MemmapEntry { #define GEM_REVISION 0x10070109 static void create_fdt(SiFiveUState *s, const struct MemmapEntry *memmap, - uint64_t mem_size, const char *cmdline) + uint64_t mem_size, const char *cmdline, bool is_32_bit) { MachineState *ms = MACHINE(qdev_get_machine()); void *fdt; @@ -167,11 +161,11 @@ static void create_fdt(SiFiveUState *s, const struct MemmapEntry *memmap, qemu_fdt_add_subnode(fdt, nodename); /* cpu 0 is the management hart that does not have mmu */ if (cpu != 0) { -#if defined(TARGET_RISCV32) - qemu_fdt_setprop_string(fdt, nodename, "mmu-type", "riscv,sv32"); -#else - qemu_fdt_setprop_string(fdt, nodename, "mmu-type", "riscv,sv48"); -#endif + if (is_32_bit) { + qemu_fdt_setprop_string(fdt, nodename, "mmu-type", "riscv,sv32"); + } else { + qemu_fdt_setprop_string(fdt, nodename, "mmu-type", "riscv,sv48"); + } isa = riscv_isa_string(&s->soc.u_cpus.harts[cpu - 1]); } else { isa = riscv_isa_string(&s->soc.e_cpus.harts[0]); @@ -414,7 +408,7 @@ static void sifive_u_machine_init(MachineState *machine) MemoryRegion *system_memory = get_system_memory(); MemoryRegion *main_mem = g_new(MemoryRegion, 1); MemoryRegion *flash0 = g_new(MemoryRegion, 1); - target_ulong start_addr = memmap[SIFIVE_U_DEV_DRAM].base; + uint64_t start_addr = memmap[SIFIVE_U_DEV_DRAM].base; target_ulong firmware_end_addr, kernel_start_addr; uint32_t start_addr_hi32 = 0x00000000; int i; @@ -446,7 +440,8 @@ static void sifive_u_machine_init(MachineState *machine) qemu_allocate_irq(sifive_u_machine_reset, NULL, 0)); /* create device tree */ - create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline); + create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline, + riscv_is_32_bit(machine)); if (s->start_in_flash) { /* @@ -475,8 +470,15 @@ static void sifive_u_machine_init(MachineState *machine) break; } - firmware_end_addr = riscv_find_and_load_firmware(machine, BIOS_FILENAME, - start_addr, NULL); + if (riscv_is_32_bit(machine)) { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv32-generic-fw_dynamic.bin", + start_addr, NULL); + } else { + firmware_end_addr = riscv_find_and_load_firmware(machine, + "opensbi-riscv64-generic-fw_dynamic.bin", + start_addr, NULL); + } if (machine->kernel_filename) { kernel_start_addr = riscv_calc_kernel_start_addr(machine, @@ -506,9 +508,9 @@ static void sifive_u_machine_init(MachineState *machine) /* Compute the fdt load address in dram */ fdt_load_addr = riscv_load_fdt(memmap[SIFIVE_U_DEV_DRAM].base, machine->ram_size, s->fdt); - #if defined(TARGET_RISCV64) - start_addr_hi32 = start_addr >> 32; - #endif + if (!riscv_is_32_bit(machine)) { + start_addr_hi32 = start_addr >> 32; + } /* reset vector */ uint32_t reset_vec[11] = { @@ -516,13 +518,8 @@ static void sifive_u_machine_init(MachineState *machine) 0x00000297, /* 1: auipc t0, %pcrel_hi(fw_dyn) */ 0x02828613, /* addi a2, t0, %pcrel_lo(1b) */ 0xf1402573, /* csrr a0, mhartid */ -#if defined(TARGET_RISCV32) - 0x0202a583, /* lw a1, 32(t0) */ - 0x0182a283, /* lw t0, 24(t0) */ -#elif defined(TARGET_RISCV64) - 0x0202b583, /* ld a1, 32(t0) */ - 0x0182b283, /* ld t0, 24(t0) */ -#endif + 0, + 0, 0x00028067, /* jr t0 */ start_addr, /* start: .dword */ start_addr_hi32, @@ -530,6 +527,14 @@ static void sifive_u_machine_init(MachineState *machine) 0x00000000, /* fw_dyn: */ }; + if (riscv_is_32_bit(machine)) { + reset_vec[4] = 0x0202a583; /* lw a1, 32(t0) */ + reset_vec[5] = 0x0182a283; /* lw t0, 24(t0) */ + } else { + reset_vec[4] = 0x0202b583; /* ld a1, 32(t0) */ + reset_vec[5] = 0x0182b283; /* ld t0, 24(t0) */ + } + /* copy in the reset vector in little_endian byte order */ for (i = 0; i < ARRAY_SIZE(reset_vec); i++) { From patchwork Fri Oct 23 15:33:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270519 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E7E59C5517A for ; Fri, 23 Oct 2020 16:33:15 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 555E122254 for ; Fri, 23 Oct 2020 16:33:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="n5hSvp4q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 555E122254 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:54770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kW00A-0001rv-Bl for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:33:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37126) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFS-0002TU-TW; Fri, 23 Oct 2020 11:44:58 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:21438) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFQ-0003hI-W0; Fri, 23 Oct 2020 11:44:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603468982; x=1635004982; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vTHanwPQHpUU4UIL54mFbOGiG50hWJKmpPnONYHIZGU=; b=n5hSvp4qiUlaJ0RrV/FOou+5GjOfvzictOgvETU61LbMoOH9y4YBFtHt 6gP02aQlZYpuV1L1m1KsiJGQ87UQ61E9YgJ855vPU2LyOhp52Z0brBILo OLDvhjDXOdLdnRgvTHYFNmJLvRfgolSrsRMfwbaoxKvqL4YLPh4CWhGUP u6KA0iEW9kFSfbB4dPNTWtzg//mpq/eJKPXtZ6I0xlq1f50ylFNVjIK00 I5EaMH/VUjpgTHqFeVG7pa9Zyrp2vAKGU9nn3rFEKRl+1JtVfCARPiWN0 fgPNvqLb1VHt1CAfIGhTaX3LU10Bj7hb3UfTw2Xn4RSCcpg94YD0SJX39 Q==; IronPort-SDR: K6zSXinnUANiXm5d71uhgjE6xcWiXvLskQSv1N7a9wL5EkONnTRkWq0dYEfqZdAGEvUXOwmxxp tanbIEkRStEy1MXKdkYghnBVME9XbXTLViKS+Jg4mS90xZvb5MLpzfHe6aWN/bDDex6WB28XSG +LEHlnGaa37wS0FSdxvyAiFW1u23CDk6Ant2AvqRfM/DnE9p3p3lwQpMXUnLOM6tWemdPrGvbe 8n5R4/zKyMupUGB2SbV/x0R01TOcofxiYnAXLHBfSZBlfGwGv9zXcKuWCDrwUHgMgYZtCcikrG 0sk= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="254245090" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 24 Oct 2020 00:03:01 +0800 IronPort-SDR: aCl1VED6W3W2QJ0vuF0AfEBS0kFUDCIwbvsNKIBFWFKWUYxkhEmT0tzs2C/fQCZiL3RHmieJgf rptM67s6LZsrAyLiHBTR01rq3DWeHSybBL1shyZSxUFQ7ShEjZNgFQRKnJgfjsKWmY5tgLOGTo R9YYY+DcFW3cMNh6hdAT7aOP8rnlz56d8dWCwmkoQG3UfJxq+BzbXPehIH7ezpsXqoWOHlIFwe Gclvzahet9HMAtT6mlvolReIagSSGUp0LIoFHCzL/HZ8/5iQj9m9E7oM4RprPeN5nLT7wc/9B0 MDmkIh7QxSu4iVEo7Y/m4uqd Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:18 -0700 IronPort-SDR: 7s8sa0mq/kdQ4M27qo0PuY2NuAP25ua82pE40uxNSqFqHdXrXjuDHxCW/NEG7aGxzzSOAvggTR mC4wxGTIus5izNQziIg26aaJ54tbjvTDfAaDPHJyM0qJ944v8b+WKCeBBmzNmmEtQQgCgssr77 9zo+gJtvgd4WUWT8/MY28/g4VVU24z0dd+O0s9VMfQIPirbdk7fUKUm24OPbBQJ6UR/7cuzmjQ 6bhg73ZOcdcEPnawToKYPAASQgOHXhCGUKPYOQA8dkFZ/3KFxMkvqmeKjNDqTM8PKgKOOKVwB7 hq8= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:44:56 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 08/16] target/riscv: fpu_helper: Match function defs in HELPER macros Date: Fri, 23 Oct 2020 08:33:35 -0700 Message-Id: <8786fd77439c26f677eeac2eccedf75ba3b68bb4.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa2.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:50 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/fpu_helper.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/target/riscv/fpu_helper.c b/target/riscv/fpu_helper.c index bb346a8249..507d7fe7fa 100644 --- a/target/riscv/fpu_helper.c +++ b/target/riscv/fpu_helper.c @@ -224,13 +224,13 @@ target_ulong helper_fcvt_wu_s(CPURISCVState *env, uint64_t rs1) } #if defined(TARGET_RISCV64) -uint64_t helper_fcvt_l_s(CPURISCVState *env, uint64_t rs1) +target_ulong helper_fcvt_l_s(CPURISCVState *env, uint64_t rs1) { float32 frs1 = check_nanbox_s(rs1); return float32_to_int64(frs1, &env->fp_status); } -uint64_t helper_fcvt_lu_s(CPURISCVState *env, uint64_t rs1) +target_ulong helper_fcvt_lu_s(CPURISCVState *env, uint64_t rs1) { float32 frs1 = check_nanbox_s(rs1); return float32_to_uint64(frs1, &env->fp_status); @@ -248,12 +248,12 @@ uint64_t helper_fcvt_s_wu(CPURISCVState *env, target_ulong rs1) } #if defined(TARGET_RISCV64) -uint64_t helper_fcvt_s_l(CPURISCVState *env, uint64_t rs1) +uint64_t helper_fcvt_s_l(CPURISCVState *env, target_ulong rs1) { return nanbox_s(int64_to_float32(rs1, &env->fp_status)); } -uint64_t helper_fcvt_s_lu(CPURISCVState *env, uint64_t rs1) +uint64_t helper_fcvt_s_lu(CPURISCVState *env, target_ulong rs1) { return nanbox_s(uint64_to_float32(rs1, &env->fp_status)); } @@ -337,12 +337,12 @@ target_ulong helper_fcvt_wu_d(CPURISCVState *env, uint64_t frs1) } #if defined(TARGET_RISCV64) -uint64_t helper_fcvt_l_d(CPURISCVState *env, uint64_t frs1) +target_ulong helper_fcvt_l_d(CPURISCVState *env, uint64_t frs1) { return float64_to_int64(frs1, &env->fp_status); } -uint64_t helper_fcvt_lu_d(CPURISCVState *env, uint64_t frs1) +target_ulong helper_fcvt_lu_d(CPURISCVState *env, uint64_t frs1) { return float64_to_uint64(frs1, &env->fp_status); } @@ -359,12 +359,12 @@ uint64_t helper_fcvt_d_wu(CPURISCVState *env, target_ulong rs1) } #if defined(TARGET_RISCV64) -uint64_t helper_fcvt_d_l(CPURISCVState *env, uint64_t rs1) +uint64_t helper_fcvt_d_l(CPURISCVState *env, target_ulong rs1) { return int64_to_float64(rs1, &env->fp_status); } -uint64_t helper_fcvt_d_lu(CPURISCVState *env, uint64_t rs1) +uint64_t helper_fcvt_d_lu(CPURISCVState *env, target_ulong rs1) { return uint64_to_float64(rs1, &env->fp_status); } From patchwork Fri Oct 23 15:33:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270524 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE6B4C388F9 for ; Fri, 23 Oct 2020 16:25:32 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 2EE542192A for ; Fri, 23 Oct 2020 16:25:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="Q5s2JV+h" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2EE542192A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:58874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzsh-0008JF-4U for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:25:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37142) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFW-0002b5-4l; Fri, 23 Oct 2020 11:45:02 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:17148) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFU-0003hs-6n; Fri, 23 Oct 2020 11:45:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467900; x=1635003900; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YLxMCvSaaacd6zqMTliOHR4YoYXTbdCac9rZmNQyna4=; b=Q5s2JV+hJYkR1Inud8/AEWGSVLYlt6a4SOTUs5nvYeh9h7Wlyo8+8hph kOUgtSt4Qd9bAtVxRme7B1T1DMaOipKJ/cZNFn8NnNxctyTD9Sk3rlySY hEmx9qPh/pMk6+NIUGXWXlll3hi2E9ooTjk4S6wk2WLkpVjyuQn25hc5y DGwurvS2QkJliq+Ak51O4W+DaXtPtrqz3pmCFwxKoftpJGWz7u7mRP+pz gm+xaCVkAwJiV7HApmL5yUD7j082vvGhYsY2nxZZKLvbraIJwWGMPnlnD cvVOZihUrdoO7kirK1aTs8od3xAnZqLBCODxin5E5BgFwrDVgCFyJ2/ud Q==; IronPort-SDR: QFL1dtSfIIgvrJ+MklPugQBENVwwe+lT2J96oLGBTDcOV8F7A4o4kPX1/WwZVmyoNPDwYMtRr4 otd0p1WqNPDyiqcPhCQo9GeagQs7+S/m1eOi49PuInLmuX77ZWeZYjVNoyLolCWpU7QwpHmCIQ 7J0t+dgoL0tgyHMUjBc2VG2KE2218V2uJBx9bnju/IJo3jak6vR7wIbtKtNs26iaBrdSD99gOc 60ssCtXcIJ7oEIwyf7cJIMCwsrU0GUOhqTyIR5Pes1FuJz5awsHRKgGzAsTLk98BJXPmGbsGw0 cQo= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="150653285" 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; 23 Oct 2020 23:44:58 +0800 IronPort-SDR: 8cLqfF6zPaOqDCSvaAdnPmaPnYQGLDKUv8L0CbA9Bk9jGdZW8CxeWp6N0AYq474bGx/HZEjpxU eXz9Ju2k33S36qwBf2z1CDW1vXWGZRwfUkYv/3ryNeRRhCbnGqbSEBqv/8jEf0R+XhN71QBYgH TeQo07etanXezf/pUETvbPs6BLPgLK9A6WkU1l0Rq5zURdKIIAzIjKuMbKa58pxCanFraYDJYD BpGlolUQwTBa8rmcQBJxRvcB6XO9S6tlCj2aMWGQPCyuQhgtKk5011d08Wrx+ursavjrvAm12x xBqXMyit0V/8NmTXwLpj5+ix 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; 23 Oct 2020 08:30:13 -0700 IronPort-SDR: sFpvcQ47bR0fW9UDcqxO5jmzd+wOMD1kGGwXwgNfuXjV/s1C8PUjMKA8ymktzmgHOV0RuVRZIy 0+09W+OQWGVQ4uqnN6iFZcJyaakdpQ6ggwjzPsjtwqZ0sO3295LCXwBKLrxhbROscvHSf6ozWC D4kav14ryctqhaR/szPQMhhVtEILLQ/wLjrZMy5JN3i5jfvPWAkooa/CV2hlUHSTTBeDjDdzvC jcXe4350r7y4fUNJ6m7S2T9Z5LObghLqXVQ8lbc6b2PCsxZQ+vipIF1cpzlJI8B/PcEX0rlQ/f 6jw= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:44:58 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 09/16] target/riscv: Add a riscv_cpu_is_32bit() helper function Date: Fri, 23 Oct 2020 08:33:37 -0700 Message-Id: <6adfabd1e61f13932b99d7a9f6839a5c87ad8ce7.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:27:42 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- target/riscv/cpu.h | 2 ++ target/riscv/cpu.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 74a236d4bc..86b063543d 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -383,6 +383,8 @@ FIELD(TB_FLAGS, LMUL, 3, 2) FIELD(TB_FLAGS, SEW, 5, 3) FIELD(TB_FLAGS, VILL, 8, 1) +bool riscv_cpu_is_32bit(CPURISCVState *env); + /* * A simplification for VLMAX * = (1 << LMUL) * VLEN / (8 * (1 << SEW)) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 0bbfd7f457..32234d4a70 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -107,6 +107,15 @@ const char *riscv_cpu_get_trap_name(target_ulong cause, bool async) } } +bool riscv_cpu_is_32bit(CPURISCVState *env) +{ + if (env->misa & RV64) { + return false; + } + + return true; +} + static void set_misa(CPURISCVState *env, target_ulong misa) { env->misa_mask = env->misa = misa; From patchwork Fri Oct 23 15:33:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270535 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D909C4363A for ; Fri, 23 Oct 2020 16:05:17 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id EBA642168B for ; Fri, 23 Oct 2020 16:05:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="OjF+RzNF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EBA642168B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:45414 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzZ5-0003Xq-Ru for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:05:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37186) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFZ-0002jQ-UP; Fri, 23 Oct 2020 11:45:05 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:17148) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFW-0003hs-SO; Fri, 23 Oct 2020 11:45:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467902; x=1635003902; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jVXGCX52Qg+Wgh+2b8CgSjw05597PjIzpeo/Pxlh5yY=; b=OjF+RzNFtNQz8EC2OAnWHabMqktpCHh4UX+LKXX9OzejycQDiT4JwKID 4HR3t3YlAPrRkovlAswElMoQ9W8si3lHpMVWeBTdKmheBpjgjpDTcf6IH CVmWT6qRw+sLODOHRg0d7yFRjG9ogrU/f7mmppFnePLtEMVkUcKVyZ4Ca 874Bwae6cC8i2PEubsJ82hz6QegV5yi/Jp3uvmhF9sRPv4LLt7LtGP/nx 6zyYripCy/fwaNVlfFd1mDrZNhmFWEsYFUN3/LQXWycf+Q1N1GHgRUAVb cIJiTLcVcpuMBFYeB+v0Kk+Hnuc8fChLUG0+CNDeYhIafJahxYiGWEsBY g==; IronPort-SDR: jW7EHOBKJlL/zm0VB2IGNNmDPYXplAMCjSPuVhLhbO8+YrmW6F5cZPyADMn9dO/PtS1Zed7jO9 e4W5Fi+Iu+q5ugW0G43Eslm0PLQi45M3KnHjr2qCZ0JlUU+uLtINAMkI3/MSOGAYTn7hmrC0KO vYcO0C3ZeWmAvzngxQy59iM9Qs3lq85Zj+4bggX767X+Rhlh47bupu9DcDw7yPKrgWKFsSDPRZ UWCkqquzGzqsPDJo89pFP9hsrGdJ3W/GM/F/2HzLuxIsbaUJ9lhJY1g+2rCNmddPKgYsnxNuuD gCU= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="150653291" 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; 23 Oct 2020 23:45:01 +0800 IronPort-SDR: 0Z//29Dfka7e6Vf+GKRw3OriJyH3eXPeIgk5ty6GV72JXbnaqDyhGAikdLYBHyXLmlKz0kLjug GN6SVc8rq9VczRCoKWD8t8QMwYLlq8ky47FJqyON5CPTe5hHKAPbhp4dbo0rgu3HVDVM6l1Vgb qo7rUzI7A0nztDRnmZM2UjuXO0yQyfW5PyuOLJKj0mHgKAj0U7xD1y9mYXnEKI6sy7cD+GC1aP MIUX/cmMjV9fFwxiyc+VkHb8Hzfs8UBT1HFPRdhiYl9uYRZ8iLWx9NEmvIs2+NSvznwivPejuL GOhEa/Gh1xKDD6FAjsDIg+6i 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; 23 Oct 2020 08:30:16 -0700 IronPort-SDR: FLzR4j8FIzSH1g9RAeuRHVSquubj5GuEyGt9z3KVLcCbAM5SDONXP2REUZGepe4vH+dEyHe+OJ wl9v5/Oa6a5ylXoeCjWOgBYQPlME8Barvc5nd6piWrQO8/ujxvkNc580xP3qcVUBXb2Rduzgf2 FCg9T3rgeMelHUFUIl+uFOE3kFvjUhjUk7BrvrGujP0KB6dck9Ky5fBemY0D+otoGqnxTz4/aQ 7PnvM8JgqHYglLjTK7BBqwYM766uX5pXDzOaSUUWHI6FUNFYdgwt2B561E1TYzM0XHtVcwBXBe /zY= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:45:01 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 10/16] target/riscv: Specify the XLEN for CPUs Date: Fri, 23 Oct 2020 08:33:40 -0700 Message-Id: X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:27:42 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- target/riscv/cpu.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 32234d4a70..8f8c568974 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -157,22 +157,36 @@ static void riscv_base_cpu_init(Object *obj) set_misa(env, 0); } -static void rvxx_sifive_u_cpu_init(Object *obj) +#ifdef TARGET_RISCV64 +static void rv64_sifive_u_cpu_init(Object *obj) { CPURISCVState *env = &RISCV_CPU(obj)->env; - set_misa(env, RVXLEN | RVI | RVM | RVA | RVF | RVD | RVC | RVS | RVU); + set_misa(env, RV64 | RVI | RVM | RVA | RVF | RVD | RVC | RVS | RVU); set_priv_version(env, PRIV_VERSION_1_10_0); } -static void rvxx_sifive_e_cpu_init(Object *obj) +static void rv64_sifive_e_cpu_init(Object *obj) { CPURISCVState *env = &RISCV_CPU(obj)->env; - set_misa(env, RVXLEN | RVI | RVM | RVA | RVC | RVU); + set_misa(env, RV64 | RVI | RVM | RVA | RVC | RVU); set_priv_version(env, PRIV_VERSION_1_10_0); qdev_prop_set_bit(DEVICE(obj), "mmu", false); } +#else +static void rv32_sifive_u_cpu_init(Object *obj) +{ + CPURISCVState *env = &RISCV_CPU(obj)->env; + set_misa(env, RV32 | RVI | RVM | RVA | RVF | RVD | RVC | RVS | RVU); + set_priv_version(env, PRIV_VERSION_1_10_0); +} -#if defined(TARGET_RISCV32) +static void rv32_sifive_e_cpu_init(Object *obj) +{ + CPURISCVState *env = &RISCV_CPU(obj)->env; + set_misa(env, RV32 | RVI | RVM | RVA | RVC | RVU); + set_priv_version(env, PRIV_VERSION_1_10_0); + qdev_prop_set_bit(DEVICE(obj), "mmu", false); +} static void rv32_ibex_cpu_init(Object *obj) { @@ -190,7 +204,6 @@ static void rv32_imafcu_nommu_cpu_init(Object *obj) set_resetvec(env, DEFAULT_RSTVEC); qdev_prop_set_bit(DEVICE(obj), "mmu", false); } - #endif static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) @@ -647,13 +660,13 @@ static const TypeInfo riscv_cpu_type_infos[] = { #if defined(TARGET_RISCV32) DEFINE_CPU(TYPE_RISCV_CPU_BASE32, riscv_base_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_IBEX, rv32_ibex_cpu_init), - DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E31, rvxx_sifive_e_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E31, rv32_sifive_e_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E34, rv32_imafcu_nommu_cpu_init), - DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U34, rvxx_sifive_u_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U34, rv32_sifive_u_cpu_init), #elif defined(TARGET_RISCV64) DEFINE_CPU(TYPE_RISCV_CPU_BASE64, riscv_base_cpu_init), - DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E51, rvxx_sifive_e_cpu_init), - DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U54, rvxx_sifive_u_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E51, rv64_sifive_e_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U54, rv64_sifive_u_cpu_init), #endif }; From patchwork Fri Oct 23 15:33:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270533 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F121C388F9 for ; Fri, 23 Oct 2020 16:07:31 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 7E519206DD for ; Fri, 23 Oct 2020 16:07:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="NesXrZOP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E519206DD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:54110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzbF-00078I-FN for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:07:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37218) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFb-0002mI-5E; Fri, 23 Oct 2020 11:45:07 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:17151) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFZ-0003iH-2N; Fri, 23 Oct 2020 11:45:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467905; x=1635003905; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Nll3ROIasLA0w7pHwZzYDjAzssHrWwVoYu35/PADsoY=; b=NesXrZOPlm79hA4wfczNbAIGVDrvFzsS2V/RqDxcarZj8Alppr+TKqnY 9R610rJtF5wp1kgPAJ1ycWXwsLNL2NTvSRNBz+Yt3RHL/z9Qa1mkbjxcq nZu9VNifRNrg+lKyP8ieXvlrDdHK5WabfeSjHiNl3qia6nJiK5OlE7hq3 xztxkrurQq9+GB8Pnfo7nwt8Kj/CMhiKdumYRSPQ+CGo8ihU7BOIoaVJC nKo0XWByA2Tlv06nCLbbh33RZ0MdXuqigrnQ0JxU86T8PD4alVeqWeyPl Y18c0r/DtnbcXNfl0WjbrAbhKwKpnB/5VW/sA0iPOM+mzHiPH6S2Bvxo9 Q==; IronPort-SDR: y+FXa0bwOzae8LtcbTOOC2pE97OuHoS6WiliwLnO7o85DiHpYt59crMUjOW99zmJq952kQ/3nO KsZVhQTU29aX6wTqPfV37hq3RI3L6u8UG9G3DRGc0aY3/ieqA/onhE76hnrfXWiENqWsuZ6Lqb iW/j4dL4yKhUxqN5/5FTtUotuxyda8UcU60EWm9ik4kgfaO8d7aWQL+UBujOapAGYPJCn+4nFt l43zXVAIfOYFVXb+taRdkEQsCDYhNjCWEwWfOD0Q3NEw9z+jfBY6lK9scgaAWnr98eHxeNAmdp Ij0= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="150653297" 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; 23 Oct 2020 23:45:03 +0800 IronPort-SDR: QQ0Npu7BZGnC9y01cuTMxjk7zRX79XiObfmIqOFEJcaH53giGocrSzxjn5Ij+O+acBgTWoTYf5 r4pPDQeAtzpioaqj3SsOaZajTjPpnhKp+VphnrXgLLg2S93tRpxcbBIR7T3nF9q2vymB8Jg0qp yA+l8+3+KzmSFADJAx50Ul8Ab6sJiCDw3PECW+bwdARnAt67xDzcBth/iA8Lf72ukdTm7tLG8O odrvB4FyRSIqvgSSSFLeUfZgWSimnuyR36ZCq1+UsUXbyoWwg5h+57tpLPNhMr8xpctZHFcttp A8MK7SW7C+3tzBr1PqKzvKxe 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; 23 Oct 2020 08:30:19 -0700 IronPort-SDR: v+8TVM8ccG/4b8FjfGreq6QFHcyqPVuwR28Cz5wxCXUe+79+f48QF8/dgHHycNvjDU0XLoCaXh FS+qHQGW9c8wCfVQodRmnmnkYXjLJud43nt9Utu5pc9Ss3xNQjGuzdoUDKdx13NUwqNqlULKPW RKygJR0ftCXWzf9WtsKDPVeMwobXwz3GaznG0PoH9AnGAU1NUHR8Re7F3psYXtNVmFGpokn/j2 AHv2fGCmWQxyN1fRmv+kW3OYK4/pO6jwGYH9DYXDoUA2zPZQGsbsXNAoaiDbP2b9G9s4umUotI BvQ= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:45:04 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 11/16] target/riscv: cpu: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:43 -0700 Message-Id: <594ed654cb36645d4c1b0aa3596f3e70d2ec5f7f.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:27:42 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.h | 6 ++---- target/riscv/cpu.c | 17 +++++++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 86b063543d..6096243aed 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -151,13 +151,11 @@ struct CPURISCVState { target_ulong mhartid; target_ulong mstatus; + /* This is RV32 only */ + target_ulong mstatush; target_ulong mip; -#ifdef TARGET_RISCV32 - target_ulong mstatush; -#endif - uint32_t miclaim; target_ulong mie; diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 8f8c568974..1b3efc1c81 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -239,9 +239,9 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f, int flags) #ifndef CONFIG_USER_ONLY qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus); -#ifdef TARGET_RISCV32 - qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatush ", env->mstatush); -#endif + if (riscv_cpu_is_32bit(env)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatush ", env->mstatush); + } if (riscv_has_ext(env, RVH)) { qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "hstatus ", env->hstatus); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "vsstatus ", env->vsstatus); @@ -353,11 +353,12 @@ static void riscv_cpu_reset(DeviceState *dev) static void riscv_cpu_disas_set_info(CPUState *s, disassemble_info *info) { -#if defined(TARGET_RISCV32) - info->print_insn = print_insn_riscv32; -#elif defined(TARGET_RISCV64) - info->print_insn = print_insn_riscv64; -#endif + RISCVCPU *cpu = RISCV_CPU(s); + if (riscv_cpu_is_32bit(&cpu->env)) { + info->print_insn = print_insn_riscv32; + } else { + info->print_insn = print_insn_riscv64; + } } static void riscv_cpu_realize(DeviceState *dev, Error **errp) From patchwork Fri Oct 23 15:33:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270531 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A9ADC4363A for ; Fri, 23 Oct 2020 16:09:55 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id AE1EE2168B for ; Fri, 23 Oct 2020 16:09:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="mup447R+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AE1EE2168B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:33968 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzdZ-00024a-JV for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:09:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37274) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFi-0002uC-Gp; Fri, 23 Oct 2020 11:45:18 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6188) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFc-0003kI-Dd; Fri, 23 Oct 2020 11:45:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467909; x=1635003909; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=myXjNQiOt7ti2QSW3Dswf5jD8xRwo2yguEV3vPAYFhY=; b=mup447R+ZcNb5MO1YCB3rbaH2NyOoayxrKZtLXIhIom6fS+Y/4HkTTmI rD7Jh42ei6JjS3hNjOV/irLkQvNlGDlAx8Yl8h+uxzi0quLf1aObMVcVp T+sjORvBho0iHgs0TSzrfOcRVLcqDmSrN9PGH0j9co5jxXJkQoP/OgBZn TKbVupQwZSoXrK21Ee19EKg3naDDI0JpcN3cQU0bj9xL6bE48s6HSUTqa nzlbfUODZ3xmPbqpOjGG2jf6dUlu+Qm633NwxdIPOUigiPRlwIF7gPrN9 OhsAenTDL1EXFeJd62PhsubLz7pvtiDrcN7FJlIz4j/I2pD2bVg3Qzb/8 Q==; IronPort-SDR: 7Z1OF8oVfprqs5hUNh8v8MYkYUx5spoYQiqzYLkggfEQxyfhKz6IyNziF5jFPqT3xNbTRmUgho sIqiDaYsOC/oRAAEu5agBiLLHf+IgAryP7PIlElyNEgy9aAo5ddWjbKzzoFq7v6e9TGzjchhCY 9L6gqXxqO6OwZCh3TqP3Kw+6GivvA6RqYgOaCH6narNk0QyzjcydcpX3wvABQoFjyeQEiCLFZ3 MQnI8oGJh1iieGVbRJi/CLWsn4uTEVe5z4QpWbO/y1jl3XgSCi/gCkAYF80b1OzVlvGSyWbBBa bzY= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960172" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:45:07 +0800 IronPort-SDR: rjXeMbUaL2bCCtFp/h5iNOqreMK/vxefmYhninL6LkuVrcilG8b3VmtyGFsUUEOBkUnLwza+G3 kcmTvLFEgnHAKTtJAFOuTK76eJi/bLj7+jbGNRmwY6j/Ia2/NT6sWqDcgv38fUSlunQZgP0vcl yufWHsXNwwmbtUufF8zWCkiUhujvN+8uYipkD0qJx/0/3TomzzdTzvS/wiqj7URUIFfCPB3j58 ECJF+i3eRpvVREpuSW01XlChxN7HJUIV8u+vPqnCrVSjKjM9x201D7k/HQidG2LtO7a4YyrYc9 PT02jrvj3mPkRvbi0u2GEz9H 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; 23 Oct 2020 08:31:29 -0700 IronPort-SDR: kZLY2Hna68zkPnt2QHdGgRxJmmyuClQZWxAVw/8L1n/IjfdqJApvhutWK6CNdVfoEwIUv6R6Ga wkbz2fWP3pTA7nyTixV4un5thLmVTwG94xTXpSEoqC1xKjKNIk0TIvBEix0+2AkzRmXjy9wJZh +YX0Unh22LhCzHI69E8YX1awjkiwJhQz0OBS2hNvPvyfQ+ND6oh9c8jtTfu5z4vfFeGVk4/+M6 dvIvRIjVtD7EpuDrwQk8c2l/BPz//gfDDcib+ifiENpBlVESmeHQuP4+nV4u/gQ2kjxaEjGcb2 bQg= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:45:06 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 12/16] target/riscv: cpu_helper: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:46 -0700 Message-Id: <6b17e9aff7bd6823574a94dc0d615117ce6edef6.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 6 ++--- target/riscv/cpu_helper.c | 52 ++++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6096243aed..8bde15544d 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -194,9 +194,8 @@ struct CPURISCVState { target_ulong vscause; target_ulong vstval; target_ulong vsatp; -#ifdef TARGET_RISCV32 + /* This is RV32 only */ target_ulong vsstatush; -#endif target_ulong mtval2; target_ulong mtinst; @@ -209,9 +208,8 @@ struct CPURISCVState { target_ulong stval_hs; target_ulong satp_hs; target_ulong mstatus_hs; -#ifdef TARGET_RISCV32 + /* This is RV32 only */ target_ulong mstatush_hs; -#endif target_ulong scounteren; target_ulong mcounteren; diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 4652082df1..62aed24feb 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -126,10 +126,10 @@ void riscv_cpu_swap_hypervisor_regs(CPURISCVState *env) env->mstatus &= ~mstatus_mask; env->mstatus |= env->mstatus_hs; -#if defined(TARGET_RISCV32) - env->vsstatush = env->mstatush; - env->mstatush |= env->mstatush_hs; -#endif + if (riscv_cpu_is_32bit(env)) { + env->vsstatush = env->mstatush; + env->mstatush |= env->mstatush_hs; + } env->vstvec = env->stvec; env->stvec = env->stvec_hs; @@ -154,10 +154,10 @@ void riscv_cpu_swap_hypervisor_regs(CPURISCVState *env) env->mstatus &= ~mstatus_mask; env->mstatus |= env->vsstatus; -#if defined(TARGET_RISCV32) - env->mstatush_hs = env->mstatush; - env->mstatush |= env->vsstatush; -#endif + if (riscv_cpu_is_32bit(env)) { + env->mstatush_hs = env->mstatush; + env->mstatush |= env->vsstatush; + } env->stvec_hs = env->stvec; env->stvec = env->vstvec; @@ -472,11 +472,13 @@ restart: return TRANSLATE_PMP_FAIL; } -#if defined(TARGET_RISCV32) - target_ulong pte = address_space_ldl(cs->as, pte_addr, attrs, &res); -#elif defined(TARGET_RISCV64) - target_ulong pte = address_space_ldq(cs->as, pte_addr, attrs, &res); -#endif + target_ulong pte; + if (riscv_cpu_is_32bit(env)) { + pte = address_space_ldl(cs->as, pte_addr, attrs, &res); + } else { + pte = address_space_ldq(cs->as, pte_addr, attrs, &res); + } + if (res != MEMTX_OK) { return TRANSLATE_FAIL; } @@ -995,19 +997,19 @@ void riscv_cpu_do_interrupt(CPUState *cs) if (riscv_cpu_virt_enabled(env)) { riscv_cpu_swap_hypervisor_regs(env); } -#ifdef TARGET_RISCV32 - env->mstatush = set_field(env->mstatush, MSTATUS_MPV, - riscv_cpu_virt_enabled(env)); - if (riscv_cpu_virt_enabled(env) && tval) { - env->mstatush = set_field(env->mstatush, MSTATUS_GVA, 1); - } -#else - env->mstatus = set_field(env->mstatus, MSTATUS_MPV, - riscv_cpu_virt_enabled(env)); - if (riscv_cpu_virt_enabled(env) && tval) { - env->mstatus = set_field(env->mstatus, MSTATUS_GVA, 1); + if (riscv_cpu_is_32bit(env)) { + env->mstatush = set_field(env->mstatush, MSTATUS_MPV, + riscv_cpu_virt_enabled(env)); + if (riscv_cpu_virt_enabled(env) && tval) { + env->mstatush = set_field(env->mstatush, MSTATUS_GVA, 1); + } + } else { + env->mstatus = set_field(env->mstatus, MSTATUS_MPV, + riscv_cpu_virt_enabled(env)); + if (riscv_cpu_virt_enabled(env) && tval) { + env->mstatus = set_field(env->mstatus, MSTATUS_GVA, 1); + } } -#endif mtval2 = env->guest_phys_fault_addr; From patchwork Fri Oct 23 15:33:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270522 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BF08C4363A for ; Fri, 23 Oct 2020 16:28:12 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 7B4CA208B6 for ; Fri, 23 Oct 2020 16:28:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="DuOscd6t" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7B4CA208B6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:39142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzvG-0003e2-9k for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:28:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37358) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFq-0002wZ-Iw; Fri, 23 Oct 2020 11:45:25 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6193) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFi-0003ka-AE; Fri, 23 Oct 2020 11:45:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467915; x=1635003915; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6mVHo6Kdkm96p8Am08pHcF5AEniGKNySN6PQr2zd9l0=; b=DuOscd6t5dndHBRGsnTAUtOaPAACNgzNhldbMjlRdKO++fkpScFHwG06 WOLFbCV+IHZ38PK+L6bN7p4ZRomoc5VBViUCGtGpP6Ayl5KzQiS2l2oRc juHiYp1Gu7PQFevekl/WkMe4HauF4WKL9FcOGH8qJp3kNWQIcD0QMcAUk MURLp2Mo5nhL5Sj7oqVEFza4aB4VRT50Jb0kLUrCgyBs+g1yKf3+WtbHl HZQyb2R/nU0RippJSJBlCzdzupH2iBa4SWG57gI4dWXdqaJ1/McLVYQuX es2rb0KgxB9DmpIjJptlNGSkE1o/GDHRycchDr2ZlWMBcx+f/0GVe9zBh Q==; IronPort-SDR: /ZrAAkG3k/p8+va3EVksXPt9/gVPrFCJv7Mh9SRR1pNy1xICg1yKKLEZ5PyjVBFBbdDauWve36 WtW1plk0tjjJqFO+LthmIi/Imz4fN28DTlSfBzN2cGTzLlnI37OWFEcXkXQRRgFy3TJq7j2Rn2 7CExLDCZjGo0WDgKVUtIwgHtauPZJEpx8Yk8Nv/BOpwKd2zmSngUuU0hXMCygvwi+xV2LSkLI3 0Fj5kZEvR/Eu2BmOoU/WnaTB/Z7hrnIx/lqo8L8Wj1IXplAgcHuXWb1ZA7odx8gfWSxBII5flN 2BA= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960174" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:45:10 +0800 IronPort-SDR: LD3DumCvpAN26yEOhlh+4uUePbso6sOHAyCfWMgOTSYP5QBBAlHclXAf+R0bE1W2NWTIeYz55/ IeWPAozWumKK8ojuH4oHPapvX2MyJRENTDW+ma6R9uVOTWJ+SUMwhvTM4m2RpMB5Zs8ahLYoMe Tt7krIcUkwdE9vZAZrur8ZCmYDTOUr6i52zJqri/C45jH/dnZe7EQcH8Ip0FCm2CQuCvx8rqH2 BwW3gBpkhqTr/GabQYr0VPP1LJAnRhBftIq5YqtFTtrx5gOmy9+fyxB6t4BKW3MFfXvEy+P/ii 3V3h53maISyY3OUjhxoYIRfB 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; 23 Oct 2020 08:31:31 -0700 IronPort-SDR: LM8Zf6Q8OWuCxE/GYKq3Hhj5bkKcS8ogbJhBA/9bAIizd83rXKqVCDZ1G/f4iKQmEHHddJIOg2 T6IERRzah2QbLUPRr+NbVnV3m1s8motT/2BA5AixYjf8ATtDYnyIA8EO9JuKSjG1sg7JMwGf9U dluliKd2MSXJ07TBLZUvqdEmZ/akeyPegSj3xh2FQGBI6SZorJcTjVEhZdM/b0ihZGEwjSVuiI lPugNslh4vjP2DPMms9zFFkjGUJvg4TdhdcAvKaq6Y/G0eZW2k/wNTvjGNYeyo+KfObEgVI4u1 d6s= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:45:09 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 13/16] target/riscv: csr: Remove compile time XLEN checks Date: Fri, 23 Oct 2020 08:33:48 -0700 Message-Id: <59e2196b8d86ab6b234db1a54c80a0149dcd1598.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 2 - target/riscv/csr.c | 182 +++++++++++++++++++++------------------- 2 files changed, 96 insertions(+), 88 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index bd36062877..d9ad694b3f 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -448,9 +448,7 @@ #define HSTATUS_VGEIN 0x0003F000 #define HSTATUS_VTVM 0x00100000 #define HSTATUS_VTSR 0x00400000 -#if defined(TARGET_RISCV64) #define HSTATUS_VSXL 0x300000000 -#endif #define HSTATUS32_WPRI 0xFF8FF87E #define HSTATUS64_WPRI 0xFFFFFFFFFF8FF87EULL diff --git a/target/riscv/csr.c b/target/riscv/csr.c index aaef6c6f20..b153cdfec3 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -102,44 +102,65 @@ static int ctr(CPURISCVState *env, int csrno) return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; } break; -#if defined(TARGET_RISCV32) - case CSR_CYCLEH: - if (!get_field(env->hcounteren, HCOUNTEREN_CY) && - get_field(env->mcounteren, HCOUNTEREN_CY)) { - return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; - } - break; - case CSR_TIMEH: - if (!get_field(env->hcounteren, HCOUNTEREN_TM) && - get_field(env->mcounteren, HCOUNTEREN_TM)) { - return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; - } - break; - case CSR_INSTRETH: - if (!get_field(env->hcounteren, HCOUNTEREN_IR) && - get_field(env->mcounteren, HCOUNTEREN_IR)) { - return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; - } - break; - case CSR_HPMCOUNTER3H...CSR_HPMCOUNTER31H: - if (!get_field(env->hcounteren, 1 << (csrno - CSR_HPMCOUNTER3H)) && - get_field(env->mcounteren, 1 << (csrno - CSR_HPMCOUNTER3H))) { - return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; + } + if (riscv_cpu_is_32bit(env)) { + switch (csrno) { + case CSR_CYCLEH: + if (!get_field(env->hcounteren, HCOUNTEREN_CY) && + get_field(env->mcounteren, HCOUNTEREN_CY)) { + return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; + } + break; + case CSR_TIMEH: + if (!get_field(env->hcounteren, HCOUNTEREN_TM) && + get_field(env->mcounteren, HCOUNTEREN_TM)) { + return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; + } + break; + case CSR_INSTRETH: + if (!get_field(env->hcounteren, HCOUNTEREN_IR) && + get_field(env->mcounteren, HCOUNTEREN_IR)) { + return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; + } + break; + case CSR_HPMCOUNTER3H...CSR_HPMCOUNTER31H: + if (!get_field(env->hcounteren, 1 << (csrno - CSR_HPMCOUNTER3H)) && + get_field(env->mcounteren, 1 << (csrno - CSR_HPMCOUNTER3H))) { + return -RISCV_EXCP_VIRT_INSTRUCTION_FAULT; + } + break; } - break; -#endif } } #endif return 0; } +static int ctr32(CPURISCVState *env, int csrno) +{ + if (!riscv_cpu_is_32bit(env)) { + return 0; + } + + return ctr(env, csrno); +} + #if !defined(CONFIG_USER_ONLY) static int any(CPURISCVState *env, int csrno) { return 0; } +static int any32(CPURISCVState *env, int csrno) +{ + if (!riscv_cpu_is_32bit(env)) { + return 0; + } + + return any(env, csrno); + +} + static int smode(CPURISCVState *env, int csrno) { return -!riscv_has_ext(env, RVS); @@ -161,6 +182,16 @@ static int hmode(CPURISCVState *env, int csrno) return -RISCV_EXCP_ILLEGAL_INST; } +static int hmode32(CPURISCVState *env, int csrno) +{ + if (!riscv_cpu_is_32bit(env)) { + return 0; + } + + return hmode(env, csrno); + +} + static int pmp(CPURISCVState *env, int csrno) { return -!riscv_feature(env, RISCV_FEATURE_PMP); @@ -310,7 +341,6 @@ static int read_instret(CPURISCVState *env, int csrno, target_ulong *val) return 0; } -#if defined(TARGET_RISCV32) static int read_instreth(CPURISCVState *env, int csrno, target_ulong *val) { #if !defined(CONFIG_USER_ONLY) @@ -324,7 +354,6 @@ static int read_instreth(CPURISCVState *env, int csrno, target_ulong *val) #endif return 0; } -#endif /* TARGET_RISCV32 */ #if defined(CONFIG_USER_ONLY) static int read_time(CPURISCVState *env, int csrno, target_ulong *val) @@ -333,13 +362,11 @@ static int read_time(CPURISCVState *env, int csrno, target_ulong *val) return 0; } -#if defined(TARGET_RISCV32) static int read_timeh(CPURISCVState *env, int csrno, target_ulong *val) { *val = cpu_get_host_ticks() >> 32; return 0; } -#endif #else /* CONFIG_USER_ONLY */ @@ -355,7 +382,6 @@ static int read_time(CPURISCVState *env, int csrno, target_ulong *val) return 0; } -#if defined(TARGET_RISCV32) static int read_timeh(CPURISCVState *env, int csrno, target_ulong *val) { uint64_t delta = riscv_cpu_virt_enabled(env) ? env->htimedelta : 0; @@ -367,7 +393,6 @@ static int read_timeh(CPURISCVState *env, int csrno, target_ulong *val) *val = (env->rdtime_fn(env->rdtime_fn_arg) + delta) >> 32; return 0; } -#endif /* Machine constants */ @@ -406,19 +431,17 @@ static const target_ulong sip_writable_mask = SIP_SSIP | MIP_USIP | MIP_UEIP; static const target_ulong hip_writable_mask = MIP_VSSIP | MIP_VSTIP | MIP_VSEIP; static const target_ulong vsip_writable_mask = MIP_VSSIP; -#if defined(TARGET_RISCV32) -static const char valid_vm_1_10[16] = { +static const char valid_vm_1_10_32[16] = { [VM_1_10_MBARE] = 1, [VM_1_10_SV32] = 1 }; -#elif defined(TARGET_RISCV64) -static const char valid_vm_1_10[16] = { + +static const char valid_vm_1_10_64[16] = { [VM_1_10_MBARE] = 1, [VM_1_10_SV39] = 1, [VM_1_10_SV48] = 1, [VM_1_10_SV57] = 1 }; -#endif /* CONFIG_USER_ONLY */ /* Machine Information Registers */ static int read_zero(CPURISCVState *env, int csrno, target_ulong *val) @@ -441,7 +464,11 @@ static int read_mstatus(CPURISCVState *env, int csrno, target_ulong *val) static int validate_vm(CPURISCVState *env, target_ulong vm) { - return valid_vm_1_10[vm & 0xf]; + if (riscv_cpu_is_32bit(env)) { + return valid_vm_1_10_32[vm & 0xf]; + } else { + return valid_vm_1_10_64[vm & 0xf]; + } } static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) @@ -459,13 +486,14 @@ static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) MSTATUS_SPP | MSTATUS_FS | MSTATUS_MPRV | MSTATUS_SUM | MSTATUS_MPP | MSTATUS_MXR | MSTATUS_TVM | MSTATUS_TSR | MSTATUS_TW; -#if defined(TARGET_RISCV64) - /* - * 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; -#endif + + if (!riscv_cpu_is_32bit(env)) { + /* + * 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; + } mstatus = (mstatus & ~mask) | (val & mask); @@ -477,7 +505,6 @@ static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) return 0; } -#ifdef TARGET_RISCV32 static int read_mstatush(CPURISCVState *env, int csrno, target_ulong *val) { *val = env->mstatush; @@ -496,7 +523,6 @@ static int write_mstatush(CPURISCVState *env, int csrno, target_ulong val) return 0; } -#endif static int read_misa(CPURISCVState *env, int csrno, target_ulong *val) { @@ -894,10 +920,10 @@ static int write_satp(CPURISCVState *env, int csrno, target_ulong val) static int read_hstatus(CPURISCVState *env, int csrno, target_ulong *val) { *val = env->hstatus; -#ifdef TARGET_RISCV64 - /* We only support 64-bit VSXL */ - *val = set_field(*val, HSTATUS_VSXL, 2); -#endif + if (!riscv_cpu_is_32bit(env)) { + /* We only support 64-bit VSXL */ + *val = set_field(*val, HSTATUS_VSXL, 2); + } /* We only support little endian */ *val = set_field(*val, HSTATUS_VSBE, 0); return 0; @@ -906,11 +932,9 @@ static int read_hstatus(CPURISCVState *env, int csrno, target_ulong *val) static int write_hstatus(CPURISCVState *env, int csrno, target_ulong val) { env->hstatus = val; -#ifdef TARGET_RISCV64 - if (get_field(val, HSTATUS_VSXL) != 2) { + if (!riscv_cpu_is_32bit(env) && get_field(val, HSTATUS_VSXL) != 2) { qemu_log_mask(LOG_UNIMP, "QEMU does not support mixed HSXLEN options."); } -#endif if (get_field(val, HSTATUS_VSBE) != 0) { qemu_log_mask(LOG_UNIMP, "QEMU does not support big endian guests."); } @@ -1052,11 +1076,11 @@ static int read_htimedelta(CPURISCVState *env, int csrno, target_ulong *val) return -RISCV_EXCP_ILLEGAL_INST; } -#if defined(TARGET_RISCV32) - *val = env->htimedelta & 0xffffffff; -#else - *val = env->htimedelta; -#endif + if (riscv_cpu_is_32bit(env)) { + *val = env->htimedelta & 0xffffffff; + } else { + *val = env->htimedelta; + } return 0; } @@ -1066,15 +1090,14 @@ static int write_htimedelta(CPURISCVState *env, int csrno, target_ulong val) return -RISCV_EXCP_ILLEGAL_INST; } -#if defined(TARGET_RISCV32) - env->htimedelta = deposit64(env->htimedelta, 0, 32, (uint64_t)val); -#else - env->htimedelta = val; -#endif + if (riscv_cpu_is_32bit(env)) { + env->htimedelta = deposit64(env->htimedelta, 0, 32, (uint64_t)val); + } else { + env->htimedelta = val; + } return 0; } -#if defined(TARGET_RISCV32) static int read_htimedeltah(CPURISCVState *env, int csrno, target_ulong *val) { if (!env->rdtime_fn) { @@ -1094,7 +1117,6 @@ static int write_htimedeltah(CPURISCVState *env, int csrno, target_ulong val) env->htimedelta = deposit64(env->htimedelta, 32, 32, (uint64_t)val); return 0; } -#endif /* Virtual CSR Registers */ static int read_vsstatus(CPURISCVState *env, int csrno, target_ulong *val) @@ -1372,26 +1394,20 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { /* User Timers and Counters */ [CSR_CYCLE] = { ctr, read_instret }, [CSR_INSTRET] = { ctr, read_instret }, -#if defined(TARGET_RISCV32) - [CSR_CYCLEH] = { ctr, read_instreth }, - [CSR_INSTRETH] = { ctr, read_instreth }, -#endif + [CSR_CYCLEH] = { ctr32, read_instreth }, + [CSR_INSTRETH] = { ctr32, read_instreth }, /* In privileged mode, the monitor will have to emulate TIME CSRs only if * rdtime callback is not provided by machine/platform emulation */ [CSR_TIME] = { ctr, read_time }, -#if defined(TARGET_RISCV32) - [CSR_TIMEH] = { ctr, read_timeh }, -#endif + [CSR_TIMEH] = { ctr32, read_timeh }, #if !defined(CONFIG_USER_ONLY) /* Machine Timers and Counters */ [CSR_MCYCLE] = { any, read_instret }, [CSR_MINSTRET] = { any, read_instret }, -#if defined(TARGET_RISCV32) - [CSR_MCYCLEH] = { any, read_instreth }, - [CSR_MINSTRETH] = { any, read_instreth }, -#endif + [CSR_MCYCLEH] = { any32, read_instreth }, + [CSR_MINSTRETH] = { any32, read_instreth }, /* Machine Information Registers */ [CSR_MVENDORID] = { any, read_zero }, @@ -1408,9 +1424,7 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { [CSR_MTVEC] = { any, read_mtvec, write_mtvec }, [CSR_MCOUNTEREN] = { any, read_mcounteren, write_mcounteren }, -#if defined(TARGET_RISCV32) - [CSR_MSTATUSH] = { any, read_mstatush, write_mstatush }, -#endif + [CSR_MSTATUSH] = { any32, read_mstatush, write_mstatush }, [CSR_MSCOUNTEREN] = { any, read_mscounteren, write_mscounteren }, @@ -1450,9 +1464,7 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { [CSR_HGEIP] = { hmode, read_hgeip, write_hgeip }, [CSR_HGATP] = { hmode, read_hgatp, write_hgatp }, [CSR_HTIMEDELTA] = { hmode, read_htimedelta, write_htimedelta }, -#if defined(TARGET_RISCV32) - [CSR_HTIMEDELTAH] = { hmode, read_htimedeltah, write_htimedeltah}, -#endif + [CSR_HTIMEDELTAH] = { hmode32, read_htimedeltah, write_htimedeltah}, [CSR_VSSTATUS] = { hmode, read_vsstatus, write_vsstatus }, [CSR_VSIP] = { hmode, NULL, NULL, rmw_vsip }, @@ -1475,9 +1487,7 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = { [CSR_HPMCOUNTER3 ... CSR_HPMCOUNTER31] = { ctr, read_zero }, [CSR_MHPMCOUNTER3 ... CSR_MHPMCOUNTER31] = { any, read_zero }, [CSR_MHPMEVENT3 ... CSR_MHPMEVENT31] = { any, read_zero }, -#if defined(TARGET_RISCV32) - [CSR_HPMCOUNTER3H ... CSR_HPMCOUNTER31H] = { ctr, read_zero }, - [CSR_MHPMCOUNTER3H ... CSR_MHPMCOUNTER31H] = { any, read_zero }, -#endif + [CSR_HPMCOUNTER3H ... CSR_HPMCOUNTER31H] = { ctr32, read_zero }, + [CSR_MHPMCOUNTER3H ... CSR_MHPMCOUNTER31H] = { any32, read_zero }, #endif /* !CONFIG_USER_ONLY */ }; From patchwork Fri Oct 23 15:33:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 270529 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50CE8C388F9 for ; Fri, 23 Oct 2020 16:12:47 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A9E5C208B3 for ; Fri, 23 Oct 2020 16:12:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="lfJ9H/Jv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A9E5C208B3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzgL-0005gh-DB for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:12:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37410) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFy-00031L-1Y; Fri, 23 Oct 2020 11:45:32 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6195) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFi-0003lZ-T7; Fri, 23 Oct 2020 11:45:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467915; x=1635003915; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dA/j7k0iZxbv9GK+9DV55QACBClboYEOT9u77fvDdZA=; b=lfJ9H/JvTYuv6uE8MZqzo81B6qDPzn4ketyH5+prtKj8cURoIBLK5kFd P91PoHXxsD8Oh+nZihkpcp95GewdjhxtoUWKnohDaOuoUxqdiqanqrR3b 4sTAfZUeWxyp1j2QjCdDdvTu27/eQR9pqIGGI5/Nxir89GMTxbwBbHFCs rkqv7D9J20c9XI2NsktPCRnfgYXZRgF9LcoDrvwF00LQykw0Q8wiemkZh 32BNl90wD0xTIaSVf8GGaVjAD3f6qAOEmhboEP0JS2nKmrWFfWOHXUkQx Gfy+LK6DR/ZYFSCSii6kp6S295icnnriU6kdNyUQlrDmkMNfjeUyyrTJf A==; IronPort-SDR: tLQlkx0hd4BduWbo8B+moMV2vUAs6kOLCJXpHdCU3n5NcMWFA+mb/RPcDKiZmaEX9kZsyT8tNT DoSp7LTP90jUxaxoEn5XZl8t6FZez8asQVOdPns6kstCl/Dh6HFdB++pXGOGTIMPmAooqWRbcI mAzFFBJz+ney3DhSiQW7zPAGejqCojIbXFVJxy8W97qus0EvHewHRmv77SU4D6E0P5VoUOzYM6 t+bJS/QUvLrb39sIMMKxGZNN9Qkl9TseQuTfiMireCW+4rreiGMRoa0Lgyya/Pft6CJaM7sndd nGc= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960175" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:45:13 +0800 IronPort-SDR: iJ3wJ4M4QlsE5GAUMpS6lJqSuta7I7/lVPJowuMOk9GYCDEwu7jTKHMO1++SQrbD8RnZNwY6hi QnHyRGNqxv/K1nwIpK6+UgcDvVqNkg8N6mOVpwOAlPuYh5oT10WwD7XeXQM44srn7AFrP8Aqox 5u3ihb9OJlMV3JwQ5OLC751+FQd5VQBx02GQnG/1jRj63+hMkamGnOQNNt/B0wDv7l0ksiax8/ DGKbz7/IJGnY3Y5pRHzO9X54P6Rhri7IR/yopLd6d6iDLPYhHjclFzBEFK55wAsbj37HCzjpC+ 9mw2T09ezbH0eU+kUqQPrrjC Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:34 -0700 IronPort-SDR: jWPZWx1Z53PMeQvAJK++JyFPFpbODe+kXVSswPeMRMpa+kaDFDK3Z64dbPVTi4pzvdmHqYGfvA SuErD4Um9+3WJmXXwYNgFEVL1LTtGAXaVOCWfF1Pu1a2jlAoCg415IJaWLv0YhQfrqeceI+CTy gPvv7voUK0Jh2E9GI6bF+mEFmw9Jou01OmiItaIPE8VCMho4CVNMQLpvX2Vz2eYeJzftJaF4/m nkoIQPmaKf5DxNGSRuj4Mo4DjaQDZ8z4DJxVyvw11qMzdwetJpjHWkcuUOHhzEsMZvilWyDhZJ y0E= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:45:12 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 14/16] target/riscv: cpu: Set XLEN independently from target Date: Fri, 23 Oct 2020 08:33:51 -0700 Message-Id: <0316e1e7b7d81d1e6265fc125983a1e2872c0fe1.1603467169.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- target/riscv/cpu.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 1b3efc1c81..c77687ccb2 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -150,14 +150,14 @@ static void riscv_any_cpu_init(Object *obj) set_priv_version(env, PRIV_VERSION_1_11_0); } -static void riscv_base_cpu_init(Object *obj) +#if defined(TARGET_RISCV64) +static void rv64_base_cpu_init(Object *obj) { CPURISCVState *env = &RISCV_CPU(obj)->env; /* We set this in the realise function */ - set_misa(env, 0); + set_misa(env, RV64); } -#ifdef TARGET_RISCV64 static void rv64_sifive_u_cpu_init(Object *obj) { CPURISCVState *env = &RISCV_CPU(obj)->env; @@ -173,6 +173,13 @@ static void rv64_sifive_e_cpu_init(Object *obj) qdev_prop_set_bit(DEVICE(obj), "mmu", false); } #else +static void rv32_base_cpu_init(Object *obj) +{ + CPURISCVState *env = &RISCV_CPU(obj)->env; + /* We set this in the realise function */ + set_misa(env, RV32); +} + static void rv32_sifive_u_cpu_init(Object *obj) { CPURISCVState *env = &RISCV_CPU(obj)->env; @@ -369,7 +376,7 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) RISCVCPUClass *mcc = RISCV_CPU_GET_CLASS(dev); int priv_version = PRIV_VERSION_1_11_0; int vext_version = VEXT_VERSION_0_07_1; - target_ulong target_misa = 0; + target_ulong target_misa = env->misa; Error *local_err = NULL; cpu_exec_realizefn(cs, &local_err); @@ -404,8 +411,8 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) set_resetvec(env, cpu->cfg.resetvec); - /* If misa isn't set (rv32 and rv64 machines) set it here */ - if (!env->misa) { + /* If only XLEN is set for misa, then set misa from properties */ + if (env->misa == RV32 || env->misa == RV64) { /* Do some ISA extension error checking */ if (cpu->cfg.ext_i && cpu->cfg.ext_e) { error_setg(errp, @@ -501,7 +508,7 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) set_vext_version(env, vext_version); } - set_misa(env, RVXLEN | target_misa); + set_misa(env, target_misa); } riscv_cpu_register_gdb_regs_for_features(cs); @@ -659,13 +666,13 @@ static const TypeInfo riscv_cpu_type_infos[] = { }, DEFINE_CPU(TYPE_RISCV_CPU_ANY, riscv_any_cpu_init), #if defined(TARGET_RISCV32) - DEFINE_CPU(TYPE_RISCV_CPU_BASE32, riscv_base_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_BASE32, rv32_base_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_IBEX, rv32_ibex_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E31, rv32_sifive_e_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E34, rv32_imafcu_nommu_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U34, rv32_sifive_u_cpu_init), #elif defined(TARGET_RISCV64) - DEFINE_CPU(TYPE_RISCV_CPU_BASE64, riscv_base_cpu_init), + DEFINE_CPU(TYPE_RISCV_CPU_BASE64, rv64_base_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_E51, rv64_sifive_e_cpu_init), DEFINE_CPU(TYPE_RISCV_CPU_SIFIVE_U54, rv64_sifive_u_cpu_init), #endif From patchwork Fri Oct 23 15:33:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302131 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50925C4363A for ; Fri, 23 Oct 2020 16:30:11 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 9FB03208B6 for ; Fri, 23 Oct 2020 16:30:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="dxtlUfDR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FB03208B6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:46086 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVzxB-0006Wk-BA for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:30:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37374) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFu-0002yj-9y; Fri, 23 Oct 2020 11:45:27 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6188) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFl-0003kI-3e; Fri, 23 Oct 2020 11:45:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467917; x=1635003917; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=O3sfZ2KzydHNy1g6w/eUT+Fc1jPN29GudGPR1+ohh/U=; b=dxtlUfDRhzlP8GEip96j4Vh9GQB4wOErBIqSF3B5ZXlML4Ezb7h6345P bNII8BkO+VjNpwwJN444q4IhHmNwzTX1NGhe96/WjxTKlLzmNxXc8pH0b V31oE8MyMNeKcVVRMfBSsFLStjqIR/xT3x3bV/pSajJJ90+JJomyUO07L jv51hta6MBdaenKowzuJRRaGR+o7pA/juwv00IKt9jIyIsNxVP30JlLJp gJtpHwwbKmSyu7t5F7cj4+XCeDvSoVb+6XJmA00ac934jkyqdivmrMFKf xOmqeljogFG5sTEi7NoLFapOAMUO6HTkYyrqhvUJUhfLZOBd0CL7+Rjc4 g==; IronPort-SDR: UUC7FZCjz5revNemiNGnSEhq9GIOHN4ZvubZIKpERdb4mK9iC8JoBI6L04qVNtvKZ+B+BPmFu6 4BXgkqg0MzccNvys51eaEZ4UB6iYi8baCjoEoxqRy19yxnSvZ5h9zacfjz948SrR6sWN+DY8VC RQlizlGqbbKC4HhRiAgwb2wLv154LVy9/S+8b70YNCjAwxxoae+vjNjGnSIPzClRyBVDqPSV1L gGce3pCjsIQzRn207Bk/Wyjbn4pOx2Fiea/Q+B31Ax3d9N9nOkBjK9iSt+eKJvJa55Y9Rnsuuv aC4= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960178" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:45:15 +0800 IronPort-SDR: zkVkEUPiNQ5aiYWrclyzHCLRTCFm7ijOUva5nqNJc3pLsa2XTjzCvNu04gmdP1cip44/+gGYnN VrPWxnnsr6l2V76jb/Dex0rH0ISID4tl1GA7UHYfv+AI09KV0+wn3yK/S1E8JkQpU197p8bVYy QUhfJuq2Ut/1abVfJl/cw7cRXDAwJXzpSojPAgAM5g5gayNQ266N4INSydmyJ4irjPYeIpWvKs Clld3YAdBPeI8PKLO400LWLM2BpYKasSgHQUI56rlij6zp23woUVsEtaczWUee0Q++4yzE/J9F pzFz/ImBqrEeODpHWMxbHvk5 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 08:31:37 -0700 IronPort-SDR: mhye8snEVw+tCpwrYf2DWCtoGdjkDEukkz9JFm1qRmwELw1v0BuG/d2UlTr2bQCNFK4xhLhkfu bZtyGYkspua8IoruSWxf325mUXi8nTtlzschfNd4I5JpWUZE02QYCUCOQ5bgxSLdLAr+PqZ2xP 5vQj0CGRGPRT1fGA9DatBT2VgTlBIMTk79IwuXChnssIVI1gXSG68agxV8+EciyZO9M+4wG7Z6 B/aRDMpZoGRw2y7x04uwYPfFByXmwpiqY3ClCT5gEqaf6VBRG40ewdNLrim8pINOx7HddQwCxp O00= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip02.wdc.com with ESMTP; 23 Oct 2020 08:45:15 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 15/16] target/riscv: Convert the get/set_field() to support 64-bit values Date: Fri, 23 Oct 2020 08:33:54 -0700 Message-Id: X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Allow the get_field() and set_field() macros to work on 64-bit values even on 32-bit RISC-V. Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index d9ad694b3f..db46739b1c 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -4,10 +4,10 @@ #define TARGET_RISCV_CPU_BITS_H #define get_field(reg, mask) (((reg) & \ - (target_ulong)(mask)) / ((mask) & ~((mask) << 1))) -#define set_field(reg, mask, val) (((reg) & ~(target_ulong)(mask)) | \ - (((target_ulong)(val) * ((mask) & ~((mask) << 1))) & \ - (target_ulong)(mask))) + (uint64_t)(mask)) / ((mask) & ~((mask) << 1))) +#define set_field(reg, mask, val) (((reg) & ~(uint64_t)(mask)) | \ + (((uint64_t)(val) * ((mask) & ~((mask) << 1))) & \ + (uint64_t)(mask))) /* Floating point round mode */ #define FSR_RD_SHIFT 5 From patchwork Fri Oct 23 15:33:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 302130 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77D41C4363A for ; Fri, 23 Oct 2020 16:35:31 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A0CF4208C3 for ; Fri, 23 Oct 2020 16:35:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="rza2IUJL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A0CF4208C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:34296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kW02L-00050Q-FX for qemu-devel@archiver.kernel.org; Fri, 23 Oct 2020 12:35:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFz-00032F-6w; Fri, 23 Oct 2020 11:45:32 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:6193) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVzFu-0003ka-1n; Fri, 23 Oct 2020 11:45:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1603467926; x=1635003926; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jda6uFyOihTzKaAVgRYuX/hf6RU8mxfJGD/+tT4Ywhs=; b=rza2IUJLWd7pRBQyH7EtDkHBEOZLmZyqavSOcLoLAVEanu4rae7MOBF0 vBVfBE7Dci2TjFk8ewQmEAwT8849S5Kr3U19tanWU3urP97C8FpceEjO9 cbg6xoPZ7tIlYh6M/KfjJc4fW8FcvPOIGLNDl8J0FUcmWfAPC8zPppSfO /vmUBPshuoYnkDYrgI3JwK4EXY2xF7YTbgIfPLEJIAnE/WCIn1EaRsTYv 2cpmqpjFu6YdsXo6RBoiwUXtH89k8xB9qBRmFpzwbnpg90wZrznQ8h2GZ ilc1LYvwq5neiV0DqEdrFOW1FrNxn3gD3xpVO8WRg3AodcBBrApdFdgaG Q==; IronPort-SDR: gzy9iNYFddtqeyYnTOAIqiUQ9WCu3nYP9qv3DZSz+PyEpjOtI9OpmsFCOpuM0sMntXTReflH15 DdoGs1aFtsoNIvFo7lpQhhwsXUaM/6b9hwnDfL/X7ErZVG8AtMmyBt/ykwsTpRMP7Y4Z2VOgGC +EP/55XM9Y3PfebuVkiJNa8p98Z5Fzl0QdvHjerzfHBMERdYS3CaR+aeYGiBY1Y5lWltFoKifg JKq1DY4zF3DtHlaPXXztgfZfXizB3Wq8lSEEnjH4zB3R/AgpfTS2MhTHDQzAZrYPmAhbHPoM4e E8c= X-IronPort-AV: E=Sophos;i="5.77,408,1596470400"; d="scan'208";a="151960182" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 23 Oct 2020 23:45:18 +0800 IronPort-SDR: izfu8yR+CLTCf0+zAqdC9ltaSufhP6UBPEw9F/ECVp8ivsxNZca8AN7o91ebhrorAWNHDa2dMB /7Tt/tt9+eiE76+MJjFgrFmSlkMNa7RpRDCEfl0LK/LMJ5jqVfpV5rTEBuFrRR7F2z+PoadfYq bGbGI8GVKP+teMtyTB1oG//VOOYS3Qou2U56v71bU1TDUZ18ty2WR6xA2srFLVyw3QOHc94Fax /OUMXSUhcAHiW+R/pWkO0SjkfziuCVQg8WrdZZKszimK8C6irmiBOHz2qbWzqD3hX7/UEoiSry SqMmBMUnDgfTOKaPX601eRyo 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; 23 Oct 2020 08:31:40 -0700 IronPort-SDR: XzTyfU6IdPRk8is2Opukr4FD1ubWonGCfqPowhLY67Hq5q8wb+BRjZvC06hJ0d4QobB3/xNV2j 6RM6SFbx7dmxFZorA/N5juzmKolh35xgLfEDNghR8AXfB3C6SF5SohL3Z8J37YBwTHAltcc9vw XfiYeCmpb1vyqC9We7W1U87vNPCqKvLriuHg8LJCIdsF3dmkyqr7Q35hRUv1xEoMs93fcTAOYx kb9Yjc2N0nEcpVKP6kKb+lwe8DaK90VU5dlfqUFmp71+u15/CPnfpWq18aK17OpRKConLiznLG xA4= WDCIronportException: Internal Received: from cnf006900.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.60.46]) by uls-op-cesaip01.wdc.com with ESMTP; 23 Oct 2020 08:45:17 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 16/16] target/riscv: Consolidate *statush registers Date: Fri, 23 Oct 2020 08:33:56 -0700 Message-Id: X-Mailer: git-send-email 2.28.0 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=558518344=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/23 11:44:34 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, bmeng.cn@gmail.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 24 ++++++++++++++--------- target/riscv/cpu_bits.h | 14 ++----------- target/riscv/cpu.c | 7 ++----- target/riscv/cpu_helper.c | 41 ++++++++++----------------------------- target/riscv/csr.c | 15 ++++++++------ target/riscv/op_helper.c | 11 ++++------- 6 files changed, 42 insertions(+), 70 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 8bde15544d..de864a947b 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -150,9 +150,11 @@ struct CPURISCVState { target_ulong resetvec; target_ulong mhartid; - target_ulong mstatus; - /* This is RV32 only */ - target_ulong mstatush; + /* + * For RV32 this is 32-bit mstatus and 32-bit mstatush. + * For RV64 this is a 64-bit mstatus. + */ + uint64_t mstatus; target_ulong mip; @@ -187,15 +189,17 @@ struct CPURISCVState { uint64_t htimedelta; /* Virtual CSRs */ - target_ulong vsstatus; target_ulong vstvec; target_ulong vsscratch; target_ulong vsepc; target_ulong vscause; target_ulong vstval; target_ulong vsatp; - /* This is RV32 only */ - target_ulong vsstatush; + /* + * For RV32 this is 32-bit mstatus and 32-bit mstatush. + * For RV64 this is a 64-bit mstatus. + */ + uint64_t vsstatus; target_ulong mtval2; target_ulong mtinst; @@ -207,9 +211,11 @@ struct CPURISCVState { target_ulong scause_hs; target_ulong stval_hs; target_ulong satp_hs; - target_ulong mstatus_hs; - /* This is RV32 only */ - target_ulong mstatush_hs; + /* + * For RV32 this is 32-bit mstatus and 32-bit mstatush. + * For RV64 this is a 64-bit mstatus. + */ + uint64_t mstatus_hs; target_ulong scounteren; target_ulong mcounteren; diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index db46739b1c..4b75d2766e 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -381,19 +381,9 @@ #define MSTATUS_TVM 0x00100000 /* since: priv-1.10 */ #define MSTATUS_TW 0x20000000 /* since: priv-1.10 */ #define MSTATUS_TSR 0x40000000 /* since: priv-1.10 */ -#if defined(TARGET_RISCV64) -#define MSTATUS_GVA 0x4000000000ULL -#define MSTATUS_MPV 0x8000000000ULL -#elif defined(TARGET_RISCV32) -#define MSTATUS_GVA 0x00000040 -#define MSTATUS_MPV 0x00000080 -#endif -#ifdef TARGET_RISCV32 -# define MSTATUS_MPV_ISSET(env) get_field(env->mstatush, MSTATUS_MPV) -#else -# define MSTATUS_MPV_ISSET(env) get_field(env->mstatus, MSTATUS_MPV) -#endif +#define MSTATUS_GVA 0x4000000000ULL +#define MSTATUS_MPV 0x8000000000ULL #define MSTATUS64_UXL 0x0000000300000000ULL #define MSTATUS64_SXL 0x0000000C00000000ULL diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index c77687ccb2..74c5ac5777 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -245,13 +245,10 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f, int flags) qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "pc ", env->pc); #ifndef CONFIG_USER_ONLY qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid); - qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus); - if (riscv_cpu_is_32bit(env)) { - qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatush ", env->mstatush); - } + qemu_fprintf(f, " %s %016lx\n", "mstatus ", env->mstatus); if (riscv_has_ext(env, RVH)) { qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "hstatus ", env->hstatus); - qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "vsstatus ", env->vsstatus); + qemu_fprintf(f, " %s %016lx\n", "vsstatus ", env->vsstatus); } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mip ", env->mip); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mie ", env->mie); diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 62aed24feb..b109529ace 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -110,27 +110,19 @@ bool riscv_cpu_fp_enabled(CPURISCVState *env) void riscv_cpu_swap_hypervisor_regs(CPURISCVState *env) { - target_ulong mstatus_mask = MSTATUS_MXR | MSTATUS_SUM | MSTATUS_FS | - MSTATUS_SPP | MSTATUS_SPIE | MSTATUS_SIE; + uint64_t mstatus_mask = MSTATUS_MXR | MSTATUS_SUM | MSTATUS_FS | + MSTATUS_SPP | MSTATUS_SPIE | MSTATUS_SIE | + MSTATUS64_UXL; bool current_virt = riscv_cpu_virt_enabled(env); g_assert(riscv_has_ext(env, RVH)); -#if defined(TARGET_RISCV64) - mstatus_mask |= MSTATUS64_UXL; -#endif - if (current_virt) { /* Current V=1 and we are about to change to V=0 */ env->vsstatus = env->mstatus & mstatus_mask; env->mstatus &= ~mstatus_mask; env->mstatus |= env->mstatus_hs; - if (riscv_cpu_is_32bit(env)) { - env->vsstatush = env->mstatush; - env->mstatush |= env->mstatush_hs; - } - env->vstvec = env->stvec; env->stvec = env->stvec_hs; @@ -154,11 +146,6 @@ void riscv_cpu_swap_hypervisor_regs(CPURISCVState *env) env->mstatus &= ~mstatus_mask; env->mstatus |= env->vsstatus; - if (riscv_cpu_is_32bit(env)) { - env->mstatush_hs = env->mstatush; - env->mstatush |= env->vsstatush; - } - env->stvec_hs = env->stvec; env->stvec = env->vstvec; @@ -729,7 +716,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, if (riscv_has_ext(env, RVH) && env->priv == PRV_M && access_type != MMU_INST_FETCH && get_field(env->mstatus, MSTATUS_MPRV) && - MSTATUS_MPV_ISSET(env)) { + get_field(env->mstatus, MSTATUS_MPV)) { riscv_cpu_set_two_stage_lookup(env, true); } @@ -801,7 +788,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, if (riscv_has_ext(env, RVH) && env->priv == PRV_M && access_type != MMU_INST_FETCH && get_field(env->mstatus, MSTATUS_MPRV) && - MSTATUS_MPV_ISSET(env)) { + get_field(env->mstatus, MSTATUS_MPV)) { riscv_cpu_set_two_stage_lookup(env, false); } @@ -864,7 +851,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; bool force_hs_execp = riscv_cpu_force_hs_excep_enabled(env); - target_ulong s; + uint64_t s; /* cs->exception is 32-bits wide unlike mcause which is XLEN-bits wide * so we mask off the MSB and separate into trap type and cause. @@ -997,18 +984,10 @@ void riscv_cpu_do_interrupt(CPUState *cs) if (riscv_cpu_virt_enabled(env)) { riscv_cpu_swap_hypervisor_regs(env); } - if (riscv_cpu_is_32bit(env)) { - env->mstatush = set_field(env->mstatush, MSTATUS_MPV, - riscv_cpu_virt_enabled(env)); - if (riscv_cpu_virt_enabled(env) && tval) { - env->mstatush = set_field(env->mstatush, MSTATUS_GVA, 1); - } - } else { - env->mstatus = set_field(env->mstatus, MSTATUS_MPV, - riscv_cpu_virt_enabled(env)); - if (riscv_cpu_virt_enabled(env) && tval) { - env->mstatus = set_field(env->mstatus, MSTATUS_GVA, 1); - } + env->mstatus = set_field(env->mstatus, MSTATUS_MPV, + riscv_cpu_virt_enabled(env)); + if (riscv_cpu_virt_enabled(env) && tval) { + env->mstatus = set_field(env->mstatus, MSTATUS_GVA, 1); } mtval2 = env->guest_phys_fault_addr; diff --git a/target/riscv/csr.c b/target/riscv/csr.c index b153cdfec3..7132a9bcd0 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -473,8 +473,8 @@ static int validate_vm(CPURISCVState *env, target_ulong vm) static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) { - target_ulong mstatus = env->mstatus; - target_ulong mask = 0; + uint64_t mstatus = env->mstatus; + uint64_t mask = 0; int dirty; /* flush tlb on mstatus fields that affect VM */ @@ -507,19 +507,22 @@ static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) static int read_mstatush(CPURISCVState *env, int csrno, target_ulong *val) { - *val = env->mstatush; + *val = env->mstatus >> 32; return 0; } static int write_mstatush(CPURISCVState *env, int csrno, target_ulong val) { - if ((val ^ env->mstatush) & (MSTATUS_MPV)) { + uint64_t val64 = (uint64_t) val << 32; + + if ((val64 ^ env->mstatus) & (MSTATUS_MPV)) { tlb_flush(env_cpu(env)); } - val &= MSTATUS_MPV | MSTATUS_GVA; + val64 &= MSTATUS_MPV | MSTATUS_GVA; - env->mstatush = val; + env->mstatus &= 0xFFFFFFFF; + env->mstatus |= val64; return 0; } diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 4ce73575a7..f9361e3af8 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -78,7 +78,8 @@ target_ulong helper_csrrc(CPURISCVState *env, target_ulong src, target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) { - target_ulong prev_priv, prev_virt, mstatus; + target_ulong prev_priv, prev_virt; + uint64_t mstatus; if (!(env->priv >= PRV_S)) { riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, GETPC()); @@ -147,18 +148,14 @@ target_ulong helper_mret(CPURISCVState *env, target_ulong cpu_pc_deb) riscv_raise_exception(env, RISCV_EXCP_INST_ADDR_MIS, GETPC()); } - target_ulong mstatus = env->mstatus; + uint64_t mstatus = env->mstatus; target_ulong prev_priv = get_field(mstatus, MSTATUS_MPP); - target_ulong prev_virt = MSTATUS_MPV_ISSET(env); + target_ulong prev_virt = !!get_field(env->mstatus, MSTATUS_MPV); mstatus = set_field(mstatus, MSTATUS_MIE, get_field(mstatus, MSTATUS_MPIE)); mstatus = set_field(mstatus, MSTATUS_MPIE, 1); mstatus = set_field(mstatus, MSTATUS_MPP, PRV_U); -#ifdef TARGET_RISCV32 - env->mstatush = set_field(env->mstatush, MSTATUS_MPV, 0); -#else mstatus = set_field(mstatus, MSTATUS_MPV, 0); -#endif env->mstatus = mstatus; riscv_cpu_set_mode(env, prev_priv);