From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
Artyom Tarasenko <atar4qemu@gmail.com>,
Eduardo Habkost <ehabkost@redhat.com>
Subject: [Qemu-devel] [PATCH for-2.11 03/27] sparc: convert cpu features to qdev properties
Date: Fri, 18 Aug 2017 12:08:35 +0200 [thread overview]
Message-ID: <1503050939-227939-4-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1503050939-227939-1-git-send-email-imammedo@redhat.com>
SPARC is the last target that uses legacy way of parsing
and initializing cpu features, drop legacy approach and
convert features to properties so that SPARC could as minimum
benefit from generic cpu_generic_init(), common with
x86 +-feat parser
PS:
the main purpose is to remove legacy way of cpu creation as
a blocker for unifying cpu creation code across targets.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
CC: Artyom Tarasenko <atar4qemu@gmail.com>
CC: Eduardo Habkost <ehabkost@redhat.com>
---
target/sparc/cpu.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index f4e7343..e735d73 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -22,6 +22,8 @@
#include "cpu.h"
#include "qemu/error-report.h"
#include "exec/exec-all.h"
+#include "hw/qdev-properties.h"
+#include "qapi/visitor.h"
//#define DEBUG_FEATURES
@@ -853,6 +855,69 @@ static void sparc_cpu_initfn(Object *obj)
}
}
+static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
+ void *opaque, Error **errp)
+{
+ SPARCCPU *cpu = SPARC_CPU(obj);
+ int64_t value = cpu->env.def.nwindows;
+
+ visit_type_int(v, name, &value, errp);
+}
+
+static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
+ void *opaque, Error **errp)
+{
+ const int64_t min = MIN_NWINDOWS;
+ const int64_t max = MAX_NWINDOWS;
+ SPARCCPU *cpu = SPARC_CPU(obj);
+ Error *err = NULL;
+ int64_t value;
+
+ visit_type_int(v, name, &value, &err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
+
+ if (value < min || value > max) {
+ error_setg(errp, "Property %s.%s doesn't take value %" PRId64
+ " (minimum: %" PRId64 ", maximum: %" PRId64 ")",
+ object_get_typename(obj), name ? name : "null",
+ value, min, max);
+ return;
+ }
+ cpu->env.def.nwindows = value;
+}
+
+static PropertyInfo qdev_prop_nwindows = {
+ .name = "int",
+ .get = sparc_get_nwindows,
+ .set = sparc_set_nwindows,
+};
+
+static Property sparc_cpu_properties[] = {
+ DEFINE_PROP_BIT("float", SPARCCPU, env.def.features, 0, false),
+ DEFINE_PROP_BIT("float128", SPARCCPU, env.def.features, 1, false),
+ DEFINE_PROP_BIT("swap", SPARCCPU, env.def.features, 2, false),
+ DEFINE_PROP_BIT("mul", SPARCCPU, env.def.features, 3, false),
+ DEFINE_PROP_BIT("div", SPARCCPU, env.def.features, 4, false),
+ DEFINE_PROP_BIT("flush", SPARCCPU, env.def.features, 5, false),
+ DEFINE_PROP_BIT("fsqrt", SPARCCPU, env.def.features, 6, false),
+ DEFINE_PROP_BIT("fmul", SPARCCPU, env.def.features, 7, false),
+ DEFINE_PROP_BIT("vis1", SPARCCPU, env.def.features, 8, false),
+ DEFINE_PROP_BIT("vis2", SPARCCPU, env.def.features, 9, false),
+ DEFINE_PROP_BIT("fsmuld", SPARCCPU, env.def.features, 10, false),
+ DEFINE_PROP_BIT("hypv", SPARCCPU, env.def.features, 11, false),
+ DEFINE_PROP_BIT("cmt", SPARCCPU, env.def.features, 12, false),
+ DEFINE_PROP_BIT("gl", SPARCCPU, env.def.features, 13, false),
+ DEFINE_PROP_UNSIGNED("iu-version", SPARCCPU, env.def.iu_version, 0,
+ qdev_prop_uint64, target_ulong),
+ DEFINE_PROP_UINT32("fpu-version", SPARCCPU, env.def.fpu_version, 0),
+ DEFINE_PROP_UINT32("mmu-version", SPARCCPU, env.def.mmu_version, 0),
+ { .name = "nwindows", .info = &qdev_prop_nwindows },
+ DEFINE_PROP_END_OF_LIST()
+};
+
static void sparc_cpu_class_init(ObjectClass *oc, void *data)
{
SPARCCPUClass *scc = SPARC_CPU_CLASS(oc);
@@ -861,6 +926,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, void *data)
scc->parent_realize = dc->realize;
dc->realize = sparc_cpu_realizefn;
+ dc->props = sparc_cpu_properties;
scc->parent_reset = cc->reset;
cc->reset = sparc_cpu_reset;
--
2.7.4
next prev parent reply other threads:[~2017-08-18 10:09 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-18 10:08 [Qemu-devel] [PATCH for-2.11 00/27] complete cpu QOMification and remove cpu_FOO_init() helpers Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 01/27] sparc: convert cpu models to SPARC cpu subclasses Igor Mammedov
2017-08-18 19:00 ` Philippe Mathieu-Daudé
2017-08-21 10:55 ` Igor Mammedov
2017-08-23 1:12 ` Philippe Mathieu-Daudé
2017-08-24 2:40 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 02/27] sparc: embed sparc_def_t into CPUSPARCState Igor Mammedov
2017-08-24 2:45 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` Igor Mammedov [this message]
2017-08-18 18:24 ` [Qemu-devel] [PATCH for-2.11 03/27] sparc: convert cpu features to qdev properties Eduardo Habkost
2017-08-21 11:03 ` Igor Mammedov
2017-08-23 13:07 ` Eduardo Habkost
2017-08-23 14:17 ` Igor Mammedov
2017-08-24 13:32 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 04/27] sparc: move adhoc CPUSPARCState initialization to realize time Igor Mammedov
2017-08-24 2:47 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 05/27] target-i386: cpu: convert plus/minus properties to global properties Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 06/27] x86: extract legacy cpu features format parser Igor Mammedov
2017-08-18 18:08 ` Eduardo Habkost
2017-08-21 11:06 ` Igor Mammedov
2017-08-23 14:34 ` Eduardo Habkost
2017-08-23 16:29 ` Igor Mammedov
2017-08-23 16:46 ` Eduardo Habkost
2017-08-23 17:37 ` Igor Mammedov
2017-08-23 17:58 ` Eduardo Habkost
2017-08-24 9:18 ` Igor Mammedov
2017-08-24 13:43 ` Igor Mammedov
2017-08-24 13:45 ` Eduardo Habkost
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 07/27] sparc: replace custom cpu feature parsing with cpu_legacy_parse_featurestr() Igor Mammedov
2017-08-24 13:27 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 08/27] sparc: replace cpu_sparc_init() with cpu_generic_init() Igor Mammedov
2017-08-18 19:57 ` Philippe Mathieu-Daudé
2017-08-21 11:11 ` Igor Mammedov
2017-08-24 2:51 ` Philippe Mathieu-Daudé
2017-08-24 2:49 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 09/27] s390x: replace cpu_s390x_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 10/27] alpha: replace cpu_alpha_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 11/27] hppa: replace cpu_hppa_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 12/27] m68k: replace cpu_m68k_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 13/27] microblaze: replace cpu_mb_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 14/27] nios2: replace cpu_nios2_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 15/27] tilegx: replace cpu_tilegx_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 16/27] xtensa: replace cpu_xtensa_init() " Igor Mammedov
2017-08-24 13:21 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 17/27] tricore: replace cpu_tricore_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 18/27] sh4: replace cpu_sh4_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 19/27] arm: replace cpu_arm_init() " Igor Mammedov
2017-08-24 13:26 ` Philippe Mathieu-Daudé
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 20/27] cris: replace cpu_cris_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 21/27] x86: replace cpu_x86_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 22/27] lm32: replace cpu_lm32_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 23/27] moxie: replace cpu_moxie_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 24/27] openrisc: replace cpu_openrisc_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 25/27] unicore32: replace uc32_cpu_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 26/27] ppc: replace cpu_ppc_init() " Igor Mammedov
2017-08-18 10:08 ` [Qemu-devel] [PATCH for-2.11 27/27] fix build failure in nbd_read_reply_entry() Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1503050939-227939-4-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=atar4qemu@gmail.com \
--cc=ehabkost@redhat.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).