From nobody Wed Nov 27 07:40:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1700765641; cv=none; d=zohomail.com; s=zohoarc; b=AWwHLJveyJZDkRBp/K2A4AemlovRhb+5CgBoIrm+YmXvS7ugabpfFhEV2mRynZOJKXcDlXNFxOepUj484zXi9QCoQfjLRlh65LAO1dK/GV87kjSOwalH6RswnZd6PPA8wTmX6zQ2N9hz9qBvP0bJS9giAR0REbdUvdpTjbCzS2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700765641; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wLvppxrHlugfax1BmTiiJZtjsEJqto80RCKzfZuCGnM=; b=iQO8iXlb2AYC+P292HrrN9GgZzADsZOzKLyEEO6fLi+hFX7VvG/nwUGxElbGiHpSpRN1hkgFA5wp6NvVOX7wtGfS0NBCxmdxbQA99V7DjI5O1F3zQzHF4go6uFXRySObxFH6k065UwgaV4Yii6xM0rWvc81gvHChVKEf3ctLnsI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17007656411521000.7913067232492; Thu, 23 Nov 2023 10:54:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r6EoG-00007I-2w; Thu, 23 Nov 2023 13:52:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r6Eo8-0008Gp-Ho for qemu-devel@nongnu.org; Thu, 23 Nov 2023 13:52:13 -0500 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r6Eo1-0000Aq-An for qemu-devel@nongnu.org; Thu, 23 Nov 2023 13:52:07 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1cf98ffc257so3906875ad.3 for ; Thu, 23 Nov 2023 10:52:03 -0800 (PST) Received: from grind.. ([2804:7f0:bdcd:fb00:6501:2693:db52:c621]) by smtp.gmail.com with ESMTPSA id u4-20020a17090282c400b001bb1f0605b2sm1662638plz.214.2023.11.23.10.52.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 10:52:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1700765522; x=1701370322; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wLvppxrHlugfax1BmTiiJZtjsEJqto80RCKzfZuCGnM=; b=WzYXsqcq6BSu67Uc047VXtWPzLDIxG0RArvYfZgk2vFmLe68SDhJolycc2UPBgXKPa SDdRwb0PmhJV1fus3nRIe8soUf8xfyPIJPrgbegInEEdI6bMp1f2gCd/LMYSe08lCOcK C62X2WRM0yVtqHv/soeS7HGDuFoIm4rSaOlvsRbFTGhkHC9EK9gOWWB1FbYAkoSj4b5w pOWsMrpToZ75geVo+0oGnKJ/aWcKH0sTfuBX+cqgSWrhUue2sjRRGUE9QacKLRhdWG4I uI26L/ZKw7pZC/Eb2SoycUNKCsZjQ5u3YsMTUK8f/Hp9Lf4/Dxox+XQ4EBdYZ50jCkLE WbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700765522; x=1701370322; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wLvppxrHlugfax1BmTiiJZtjsEJqto80RCKzfZuCGnM=; b=jm7uVxIxtzDVrpN6ayE7d/eJvnCLki3ND/fYCXo5ULFyz2wqPlMJHVju7jXOgidq4T QnEcY9hQdd/iPByYS/j6eIahKm0bBmxHmFCQk3DlaY5utVHDf7lyU4ZqP3zoBJoQjRKo S5IQXEXwukXqPstzJKD3LiedqylcUvd3h9XcswA9PCbOt9CGCemU8Z8c/fEF34X87+u2 kC7XfGvoWmV4kW0I5EuVc+bkD6Hm1YlnfXPtAsCWywq5wUl/urV+Va0CtczbQ7hTTnKx uaTKZVMELfjjTDFKxaQo15ywpGMxSkQJi4EgDKJgscJ3wA4GbI+i4LIh5k/YcPWBf0/z FxZg== X-Gm-Message-State: AOJu0YyHTSsJDYBmnkgor4AIVO9oHkiYihE4NjRetXxKHa0xgB/6OmX/ 7a3LveMZxKaETN1t4ZXUluafpEwssaP3gvqU6Zc= X-Google-Smtp-Source: AGHT+IE1vAT+MMmIW0LA0ucxG3+349nBFTkh2RjmJGM0wry4g0p4N1RQULVUfbR86UXQ+O/EEI6lNw== X-Received: by 2002:a17:902:c78b:b0:1cf:8c7a:ed20 with SMTP id w11-20020a170902c78b00b001cf8c7aed20mr323269pla.27.1700765522703; Thu, 23 Nov 2023 10:52:02 -0800 (PST) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, bmeng@tinylab.org, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, Daniel Henrique Barboza Subject: [PATCH for-9.0 v11 11/18] target/riscv/tcg: add MISA user options hash Date: Thu, 23 Nov 2023 15:51:15 -0300 Message-ID: <20231123185122.1100436-12-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231123185122.1100436-1-dbarboza@ventanamicro.com> References: <20231123185122.1100436-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=dbarboza@ventanamicro.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1700765641790100005 Content-Type: text/plain; charset="utf-8" We already track user choice for multi-letter extensions because we needed to honor user choice when enabling/disabling extensions during realize(). We refrained from adding the same mechanism for MISA extensions since we didn't need it. Profile support requires tne need to check for user choice for MISA extensions, so let's add the corresponding hash now. It works like the existing multi-letter hash (multi_ext_user_opts) but tracking MISA bits options in the cpu_set_misa_ext_cfg() callback. Note that we can't re-use the same hash from multi-letter extensions because that hash uses cpu->cfg offsets as keys, while for MISA extensions we're using MISA bits as keys. After adding the user hash in cpu_set_misa_ext_cfg(), setting default values with object_property_set_bool() in add_misa_properties() will end up marking the user choice hash with them. Set the default value manually to avoid it. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: LIU Zhiwei Reviewed-by: Andrew Jones --- target/riscv/tcg/tcg-cpu.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index f26dc7748d..930aa7465b 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -34,6 +34,7 @@ =20 /* Hash that stores user set extensions */ static GHashTable *multi_ext_user_opts; +static GHashTable *misa_ext_user_opts; =20 static bool cpu_cfg_ext_is_user_set(uint32_t ext_offset) { @@ -807,6 +808,10 @@ static void cpu_set_misa_ext_cfg(Object *obj, Visitor = *v, const char *name, return; } =20 + g_hash_table_insert(misa_ext_user_opts, + GUINT_TO_POINTER(misa_bit), + (gpointer)value); + prev_val =3D env->misa_ext & misa_bit; =20 if (value =3D=3D prev_val) { @@ -878,6 +883,7 @@ static const RISCVCPUMisaExtConfig misa_ext_cfgs[] =3D { */ static void riscv_cpu_add_misa_properties(Object *cpu_obj) { + CPURISCVState *env =3D &RISCV_CPU(cpu_obj)->env; bool use_def_vals =3D riscv_cpu_is_generic(cpu_obj); int i; =20 @@ -898,7 +904,13 @@ static void riscv_cpu_add_misa_properties(Object *cpu_= obj) NULL, (void *)misa_cfg); object_property_set_description(cpu_obj, name, desc); if (use_def_vals) { - object_property_set_bool(cpu_obj, name, misa_cfg->enabled, NUL= L); + if (misa_cfg->enabled) { + env->misa_ext |=3D bit; + env->misa_ext_mask |=3D bit; + } else { + env->misa_ext &=3D ~bit; + env->misa_ext_mask &=3D ~bit; + } } } } @@ -1147,6 +1159,7 @@ static void tcg_cpu_instance_init(CPUState *cs) RISCVCPU *cpu =3D RISCV_CPU(cs); Object *obj =3D OBJECT(cpu); =20 + misa_ext_user_opts =3D g_hash_table_new(NULL, g_direct_equal); multi_ext_user_opts =3D g_hash_table_new(NULL, g_direct_equal); riscv_cpu_add_user_properties(obj); =20 --=20 2.41.0