aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2014-03-04 01:26:33 +0100
committerAndreas Färber <afaerber@suse.de>2014-03-13 19:20:45 +0100
commit247bf011f67c4037df7bfcd11ff0106e06f439c9 (patch)
treeb04ec11bc81519cb34225acb7e9fdd2d74733402
parent433ac7a968ccff83f0d0e9a3c3921bc208175239 (diff)
downloadqemu-247bf011f67c4037df7bfcd11ff0106e06f439c9.zip
qemu-247bf011f67c4037df7bfcd11ff0106e06f439c9.tar.gz
qemu-247bf011f67c4037df7bfcd11ff0106e06f439c9.tar.bz2
target-sparc: Defer SPARCCPU feature inference to QOM realize
Gets it out of cpu_sparc_register() and aligns with target-arm. Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r--target-sparc/cpu.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/target-sparc/cpu.c b/target-sparc/cpu.c
index c4ef204..9a315c8 100644
--- a/target-sparc/cpu.c
+++ b/target-sparc/cpu.c
@@ -96,11 +96,6 @@ static int cpu_sparc_register(SPARCCPU *cpu, const char *cpu_model)
return -1;
}
-#if defined(CONFIG_USER_ONLY)
- if ((env->def->features & CPU_FEATURE_FLOAT)) {
- env->def->features |= CPU_FEATURE_FLOAT128;
- }
-#endif
env->version = def->iu_version;
env->fsr = def->fpu_version;
env->nwindows = def->nwindows;
@@ -767,6 +762,14 @@ static bool sparc_cpu_has_work(CPUState *cs)
static void sparc_cpu_realizefn(DeviceState *dev, Error **errp)
{
SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(dev);
+#if defined(CONFIG_USER_ONLY)
+ SPARCCPU *cpu = SPARC_CPU(dev);
+ CPUSPARCState *env = &cpu->env;
+
+ if ((env->def->features & CPU_FEATURE_FLOAT)) {
+ env->def->features |= CPU_FEATURE_FLOAT128;
+ }
+#endif
qemu_init_vcpu(CPU(dev));