From nobody Tue Feb 10 10:19:37 2026 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1555727198; cv=none; d=zoho.com; s=zohoarc; b=dGWT99oF2MlEtDQzxma5tUAG6tTffnOKnuonxNwRy4qjx25C+YcrHyTjBznVFmjz8YNwyKXWqmNFfyGyyGRQVsHkeDnboKZqMIKyV5Su8Ss5+gljcilKTuv/rCXZ0vJpb/fSoJRlzixE3rl0QEOLlI1klf2yWBVBD+eLgmvmwdI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1555727198; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=1gn9wSg2UBktimUbFrZvmmomEWaUXQomWIeKjSp4d7g=; b=iAGyunoHta1su+nm+YQgp/LIMJmM3FYILws6U9Ho1Qadczfgl4wv9p63WhSa+/mcMfjhp5YP1gTsvLQ0ydAdij03LXKY7nbbJIiD3Z6dQMUBg2bt97qPxrYlYSYIaBmSWyavtVxngPoD1U+3BTDGFCitQuNazsZag+UFrbBvhHM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1555727198359745.1454039272766; Fri, 19 Apr 2019 19:26:38 -0700 (PDT) Received: from localhost ([127.0.0.1]:35770 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHfhu-0004iS-BU for importer@patchew.org; Fri, 19 Apr 2019 22:26:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49351) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHffx-0003O2-Qj for qemu-devel@nongnu.org; Fri, 19 Apr 2019 22:24:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hHffj-0002MV-B7 for qemu-devel@nongnu.org; Fri, 19 Apr 2019 22:24:08 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:38653) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hHffh-0002Lj-R8; Fri, 19 Apr 2019 22:24:06 -0400 Received: from mail-bn3nam04lp2055.outbound.protection.outlook.com (HELO NAM04-BN3-obe.outbound.protection.outlook.com) ([104.47.46.55]) by ob1.hgst.iphmx.com with ESMTP; 20 Apr 2019 10:24:02 +0800 Received: from BYAPR04MB4901.namprd04.prod.outlook.com (52.135.232.206) by BYAPR04MB3943.namprd04.prod.outlook.com (52.135.215.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.12; Sat, 20 Apr 2019 02:24:01 +0000 Received: from BYAPR04MB4901.namprd04.prod.outlook.com ([fe80::44e8:bd21:17b:348c]) by BYAPR04MB4901.namprd04.prod.outlook.com ([fe80::44e8:bd21:17b:348c%4]) with mapi id 15.20.1813.011; Sat, 20 Apr 2019 02:24:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1555727046; x=1587263046; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=1gn9wSg2UBktimUbFrZvmmomEWaUXQomWIeKjSp4d7g=; b=hYtm8+iCUoRXk/XF6or5m2G7iUNjOI76FUzBes3J3g3DtIY+15+m31Tg Y22DhOHzhM+EXsZKGzjgpf4SQTTQRC6t2PbaafGb1iyT4kMBXa0WJnzma x4xV5V/8Gjtqz2TILVDFV9jLQtbzztI8pj0T9IBYfyJCwZS23OM7per3T XAxAIj6ZDejt/W+v8+mYLvX29+Tw+eXRu7HCjmCs5Ym9VCThOPvX4NIWV bOi7bJRO3J1I0cpv5VZctKkc0ollilZ9oGn+0LpnoK+XpJNBRure82F/4 0KAmIpZDLi+OjT8H4xG7yJcJSDFxZkT9YfnYBGdAJhm5ZCvG77vzjTmWE Q==; X-IronPort-AV: E=Sophos;i="5.60,372,1549900800"; d="scan'208";a="111349338" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1gn9wSg2UBktimUbFrZvmmomEWaUXQomWIeKjSp4d7g=; b=DHsFMxulUJY4BhWStUWHjKjcbYyS4+S3lLaOnIBkQR90hD1bXBra2HWJnDtPY6lYABVmeI3/nfIRxA0Xdg9glcZVraN1glkNv9ucH+T2B9djV0WT1FeS2zniBsHDPUBQyqpTXXZVZYyrRuiNU3e8tWZOdWpAeSSbSwZy4TlurMc= From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 3/6] target/riscv: Create settable CPU properties Thread-Index: AQHU9yAdZ6R2Nezjh0+0qUGEnhK5Jw== Date: Sat, 20 Apr 2019 02:24:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-clientproxiedby: BYAPR02CA0041.namprd02.prod.outlook.com (2603:10b6:a03:54::18) To BYAPR04MB4901.namprd04.prod.outlook.com (2603:10b6:a03:4f::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.172] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8b5dd19e-ec4a-457b-e1bf-08d6c5374034 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:BYAPR04MB3943; x-ms-traffictypediagnostic: BYAPR04MB3943: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-forefront-prvs: 0013079544 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(366004)(376002)(396003)(136003)(39860400002)(346002)(199004)(189003)(14454004)(446003)(2501003)(6486002)(53936002)(6436002)(50226002)(97736004)(5660300002)(4326008)(305945005)(71200400001)(86362001)(81166006)(8936002)(7736002)(8676002)(71190400001)(73956011)(68736007)(6512007)(25786009)(66946007)(81156014)(66446008)(64756008)(66476007)(66556008)(2906002)(256004)(6116002)(3846002)(36756003)(478600001)(72206003)(99286004)(44832011)(52116002)(66066001)(76176011)(110136005)(386003)(6506007)(102836004)(26005)(186003)(316002)(118296001)(54906003)(2616005)(486006)(476003)(11346002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:BYAPR04MB3943; H:BYAPR04MB4901.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: BLITDjVj+TFME0F7W9rGbqYFFyYbMKB/PLTauU1UUFOrHntEd7tnNBzwgOpY0SHkQwtVLz+dtY9M5dUbG52LE7jf/DE4s53GXOHNfZpHbIwD5jIQ7cOU3NM5g8hCGwsNvh+xBGR3k4jinE2Bjdq4lS6sw07MXrCODyNrP5MULTcaHgj+QgDfYCwo/UMPlgLMk3czGoFb84oXysiGrsFrCy0Hsn2zzEPm/+PQ6T9bBD+UgalkAfBEFO9WOJgw2yLkevArjNbcosICq8zJ3hxA1urvtcd59rQXCX5GFxqf289fIXGkLWwWaIyHx81BRrrdVJWgnKg8czhLP6xukwX4kzF8zWhA6tcIfiC92JJyE0OBcJUl5xthsQDEtbVTcTnAWrA6seyMQ4sRYXhrN6B3GDb2XLwfw0+6BCZWnCXDG6g= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b5dd19e-ec4a-457b-e1bf-08d6c5374034 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2019 02:24:01.3876 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR04MB3943 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 3/6] target/riscv: Create settable CPU properties X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "alistair23@gmail.com" , "palmer@sifive.com" , Alistair Francis , "imammedo@redhat.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++ target/riscv/cpu.h | 8 ++++++++ 2 files changed, 57 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index d61bce6d55..8f14fb8a1f 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -22,6 +22,7 @@ #include "cpu.h" #include "exec/exec-all.h" #include "qapi/error.h" +#include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 /* RISC-V CPU definitions */ @@ -296,7 +297,11 @@ static void riscv_cpu_disas_set_info(CPUState *s, disa= ssemble_info *info) static void riscv_cpu_realize(DeviceState *dev, Error **errp) { CPUState *cs =3D CPU(dev); + RISCVCPU *cpu =3D RISCV_CPU(dev); + CPURISCVState *env =3D &cpu->env; RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(dev); + int priv_version =3D PRIV_VERSION_1_10_0; + int user_version =3D USER_VERSION_2_02_0; Error *local_err =3D NULL; =20 cpu_exec_realizefn(cs, &local_err); @@ -305,6 +310,41 @@ static void riscv_cpu_realize(DeviceState *dev, Error = **errp) return; } =20 + if (cpu->cfg.priv_spec) { + if (!g_strcmp0(cpu->cfg.priv_spec, "v1.10.0")) { + priv_version =3D PRIV_VERSION_1_10_0; + } else if (!g_strcmp0(cpu->cfg.priv_spec, "v1.9.1")) { + priv_version =3D PRIV_VERSION_1_09_1; + } else { + error_setg(errp, + "Unsupported privilege spec version '%s'", + cpu->cfg.priv_spec); + return; + } + } + + if (cpu->cfg.user_spec) { + if (!g_strcmp0(cpu->cfg.user_spec, "v2.02.0")) { + user_version =3D USER_VERSION_2_02_0; + } else { + error_setg(errp, + "Unsupported user spec version '%s'", + cpu->cfg.user_spec); + return; + } + } + + set_versions(env, user_version, priv_version); + set_resetvec(env, DEFAULT_RSTVEC); + + if (cpu->cfg.mmu) { + set_feature(env, RISCV_FEATURE_MMU); + } + + if (cpu->cfg.pmp) { + set_feature(env, RISCV_FEATURE_PMP); + } + riscv_cpu_register_gdb_regs_for_features(cs); =20 qemu_init_vcpu(cs); @@ -326,6 +366,14 @@ static const VMStateDescription vmstate_riscv_cpu =3D { .unmigratable =3D 1, }; =20 +static Property riscv_cpu_properties[] =3D { + DEFINE_PROP_STRING("priv_spec", RISCVCPU, cfg.priv_spec), + DEFINE_PROP_STRING("user_spec", RISCVCPU, cfg.user_spec), + DEFINE_PROP_BOOL("mmu", RISCVCPU, cfg.mmu, true), + DEFINE_PROP_BOOL("pmp", RISCVCPU, cfg.pmp, true), + DEFINE_PROP_END_OF_LIST(), +}; + static void riscv_cpu_class_init(ObjectClass *c, void *data) { RISCVCPUClass *mcc =3D RISCV_CPU_CLASS(c); @@ -366,6 +414,7 @@ static void riscv_cpu_class_init(ObjectClass *c, void *= data) #endif /* For now, mark unmigratable: */ cc->vmsd =3D &vmstate_riscv_cpu; + dc->props =3D riscv_cpu_properties; } =20 char *riscv_isa_string(RISCVCPU *cpu) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 20bce8742e..6321983584 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -224,6 +224,14 @@ typedef struct RISCVCPU { CPUState parent_obj; /*< public >*/ CPURISCVState env; + + /* Configuration Settings */ + struct { + char *priv_spec; + char *user_spec; + bool mmu; + bool pmp; + } cfg; } RISCVCPU; =20 static inline RISCVCPU *riscv_env_get_cpu(CPURISCVState *env) --=20 2.21.0