[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 29/37] target-i386: convert "stepping" to static pro
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 29/37] target-i386: convert "stepping" to static property |
Date: |
Mon, 22 Oct 2012 17:03:15 +0200 |
Signed-off-by: Igor Mammedov <address@hidden>
---
- in addition use error_setg() instead of error_set()
---
target-i386/cpu.c | 85 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 46 insertions(+), 39 deletions(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 6cbdde1..69c179a 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -441,6 +441,51 @@ PropertyInfo qdev_prop_model_id = {
#define DEFINE_PROP_MODEL_ID(_n)
\
DEFINE_ABSTRACT_PROP(_n, qdev_prop_model_id)
+static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
+ void *opaque, const char *name,
+ Error **errp)
+{
+ X86CPU *cpu = X86_CPU(obj);
+ CPUX86State *env = &cpu->env;
+ int64_t value;
+
+ value = env->cpuid_version & 0xf;
+ visit_type_int(v, &value, name, errp);
+}
+
+static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
+ void *opaque, const char *name,
+ Error **errp)
+{
+ X86CPU *cpu = X86_CPU(obj);
+ CPUX86State *env = &cpu->env;
+ const int64_t min = 0;
+ const int64_t max = 0xf;
+ int64_t value;
+
+ visit_type_int(v, &value, name, errp);
+ if (error_is_set(errp)) {
+ return;
+ }
+ if (value < min || value > max) {
+ error_setg(errp, "Property %s.%s doesn't take value %" PRId64 " (min"
+ "imum: %" PRId64 ", maximum: %" PRId64,
+ object_get_typename(obj), name, value, min, max);
+ return;
+ }
+
+ env->cpuid_version &= ~0xf;
+ env->cpuid_version |= value & 0xf;
+}
+
+PropertyInfo qdev_prop_stepping = {
+ .name = "uint32",
+ .get = x86_cpuid_version_get_stepping,
+ .set = x86_cpuid_version_set_stepping,
+};
+#define DEFINE_PROP_STEPPING(_n, _s, _f)
\
+ DEFINE_PROP(_n, _s, _f, qdev_prop_stepping, uint32_t)
+
static Property cpu_x86_properties[] = {
DEFINE_PROP_BIT("f-fpu", X86CPU, env.cpuid_features, 0, false),
DEFINE_PROP_BIT("f-vme", X86CPU, env.cpuid_features, 1, false),
@@ -563,6 +608,7 @@ static Property cpu_x86_properties[] = {
DEFINE_PROP_VENDOR("vendor", X86CPU, env.cpuid_vendor1),
DEFINE_PROP_TSC_FREQ("tsc-frequency", X86CPU, env.tsc_khz),
DEFINE_PROP_MODEL_ID("model-id"),
+ DEFINE_PROP_STEPPING("stepping", X86CPU, env.cpuid_version),
DEFINE_PROP_END_OF_LIST(),
};
@@ -1348,42 +1394,6 @@ static void x86_cpuid_version_set_model(Object *obj,
Visitor *v, void *opaque,
env->cpuid_version |= ((value & 0xf) << 4) | ((value >> 4) << 16);
}
-static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
- void *opaque, const char *name,
- Error **errp)
-{
- X86CPU *cpu = X86_CPU(obj);
- CPUX86State *env = &cpu->env;
- int64_t value;
-
- value = env->cpuid_version & 0xf;
- visit_type_int(v, &value, name, errp);
-}
-
-static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
- void *opaque, const char *name,
- Error **errp)
-{
- X86CPU *cpu = X86_CPU(obj);
- CPUX86State *env = &cpu->env;
- const int64_t min = 0;
- const int64_t max = 0xf;
- int64_t value;
-
- visit_type_int(v, &value, name, errp);
- if (error_is_set(errp)) {
- return;
- }
- if (value < min || value > max) {
- error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, "",
- name ? name : "null", value, min, max);
- return;
- }
-
- env->cpuid_version &= ~0xf;
- env->cpuid_version |= value & 0xf;
-}
-
static void cpudef_2_x86_cpu(X86CPU *cpu, x86_def_t *def, Error **errp)
{
CPUX86State *env = &cpu->env;
@@ -2254,9 +2264,6 @@ static void x86_cpu_initfn(Object *obj)
object_property_add(obj, "model", "int",
x86_cpuid_version_get_model,
x86_cpuid_version_set_model, NULL, NULL, NULL);
- object_property_add(obj, "stepping", "int",
- x86_cpuid_version_get_stepping,
- x86_cpuid_version_set_stepping, NULL, NULL, NULL);
env->cpuid_apic_id = env->cpu_index;
--
1.7.11.7
- [Qemu-devel] [PATCH 09/37] qdev: export qdev_prop_find() and allow it to be used with DeviceClass instead of Object, (continued)
- [Qemu-devel] [PATCH 09/37] qdev: export qdev_prop_find() and allow it to be used with DeviceClass instead of Object, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 27/37] target-i386: convert "tsc-frequency" to static property, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 15/37] target-i386: set default value of "hypervisor" feature using static property, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 22/37] target-i386: convert 'hv_vapic' to static property, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 05/37] target-i386: move out CPU features initialization in separate func, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 32/37] target-i386: use static properties for setting cpuid features, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 29/37] target-i386: convert "stepping" to static property,
Igor Mammedov <=
- [Qemu-devel] [PATCH 12/37] target-i386: convert "xlevel" to static property, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 17/37] target-i386: make 'f-kvmclock' compatible with legacy behaviour, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 31/37] target-i386: convert "family" to static property, Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 18/37] target-i386: add stubs for hyperv_(vapic_recommended|relaxed_timing_enabled|get_spinlock_retries)(), Igor Mammedov, 2012/10/22
- [Qemu-devel] [PATCH 35/37] target-i386: use static properties in check_features_against_host() to print CPUID feature names, Igor Mammedov, 2012/10/22