[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/7] target-unicore32: Store feature flags in UniCor
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH 6/7] target-unicore32: Store feature flags in UniCore32CPUClass |
Date: |
Wed, 14 Mar 2012 02:39:57 +0100 |
Contributed under GPLv2+.
Signed-off-by: Andreas Färber <address@hidden>
---
target-unicore32/cpu-qom.h | 3 +++
target-unicore32/cpu.c | 9 +++++++++
target-unicore32/helper.c | 9 ---------
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/target-unicore32/cpu-qom.h b/target-unicore32/cpu-qom.h
index 4d730f0..c8178a5 100644
--- a/target-unicore32/cpu-qom.h
+++ b/target-unicore32/cpu-qom.h
@@ -34,6 +34,7 @@
/**
* UniCore32CPUClass:
+ * @features: Internal CPU feature flags.
*
* A UniCore32 CPU model.
*/
@@ -47,6 +48,8 @@ typedef struct UniCore32CPUClass {
uint32_t c0_cachetype;
uint32_t c1_sys;
} cp0;
+
+ uint32_t features;
} UniCore32CPUClass;
/**
diff --git a/target-unicore32/cpu.c b/target-unicore32/cpu.c
index fa5c280..d4b47d6 100644
--- a/target-unicore32/cpu.c
+++ b/target-unicore32/cpu.c
@@ -19,18 +19,25 @@ typedef struct UniCore32CPUInfo {
uint32_t cp0_c0_cpuid;
uint32_t cp0_c0_cachetype;
uint32_t cp0_c1_sys;
+ uint32_t features;
} UniCore32CPUInfo;
+#define UC32_FEATURE(feature) (1u << feature)
+
static const UniCore32CPUInfo uc32_cpus[] = {
{
.name = "UniCore-II",
.cp0_c0_cpuid = 0x40010863,
.cp0_c0_cachetype = 0x1dd20d2,
.cp0_c1_sys = 0x00090078,
+ .features = UC32_FEATURE(UC32_HWCAP_CMOV) |
+ UC32_FEATURE(UC32_HWCAP_UCF64),
},
{
.name = "any",
.cp0_c0_cpuid = 0xffffffff,
+ .features = UC32_FEATURE(UC32_HWCAP_CMOV) |
+ UC32_FEATURE(UC32_HWCAP_UCF64),
}
};
@@ -46,6 +53,7 @@ static void uc32_cpu_initfn(Object *obj)
env->cp0.c0_cpuid = klass->cp0.c0_cpuid;
env->cp0.c0_cachetype = klass->cp0.c0_cachetype;
env->cp0.c1_sys = klass->cp0.c1_sys;
+ env->features = klass->features;
env->uncached_asr = ASR_MODE_USER;
env->regs[31] = 0;
@@ -61,6 +69,7 @@ static void uc32_cpu_class_init(ObjectClass *klass, void
*data)
k->cp0.c0_cpuid = info->cp0_c0_cpuid;
k->cp0.c0_cachetype = info->cp0_c0_cachetype;
k->cp0.c1_sys = info->cp0_c1_sys;
+ k->features = info->features;
}
static void uc32_register_cpu(const UniCore32CPUInfo *info)
diff --git a/target-unicore32/helper.c b/target-unicore32/helper.c
index ba9318b..fb6713c 100644
--- a/target-unicore32/helper.c
+++ b/target-unicore32/helper.c
@@ -11,11 +11,6 @@
#include "helper.h"
#include "host-utils.h"
-static inline void set_feature(CPUUniCore32State *env, int feature)
-{
- env->features |= feature;
-}
-
CPUUniCore32State *uc32_cpu_init(const char *cpu_model)
{
UniCore32CPU *cpu;
@@ -32,13 +27,9 @@ CPUUniCore32State *uc32_cpu_init(const char *cpu_model)
id = env->cp0.c0_cpuid;
switch (id) {
case UC32_CPUID_UCV2:
- set_feature(env, UC32_HWCAP_CMOV);
- set_feature(env, UC32_HWCAP_UCF64);
env->ucf64.xregs[UC32_UCF64_FPSCR] = 0;
break;
case UC32_CPUID_ANY: /* For userspace emulation. */
- set_feature(env, UC32_HWCAP_CMOV);
- set_feature(env, UC32_HWCAP_UCF64);
break;
default:
cpu_abort(env, "Bad CPU ID: %x\n", id);
--
1.7.7
- Re: [Qemu-devel] [PATCH 2/7] target-unicore32: Relicense to GPLv2+, (continued)
[Qemu-devel] [PATCH 1/7] MAINTAINERS: Add entry for UniCore32, Andreas Färber, 2012/03/13
[Qemu-devel] [PATCH 3/7] target-unicore32: QOM'ify CPU, Andreas Färber, 2012/03/13
[Qemu-devel] [PATCH 5/7] target-unicore32: Store cp0 c1_sys in UniCore32CPUClass, Andreas Färber, 2012/03/13
[Qemu-devel] [PATCH 7/7] target-unicore32: Store ucf64 fpscr in UniCore32CPUClass, Andreas Färber, 2012/03/13
[Qemu-devel] [PATCH 6/7] target-unicore32: Store feature flags in UniCore32CPUClass,
Andreas Färber <=
Re: [Qemu-devel] [PATCH 0/7] QOM'ify UniCore32 CPU, Guan Xuetao, 2012/03/14
Re: [Qemu-devel] [PATCH 0/7] QOM'ify UniCore32 CPU, Blue Swirl, 2012/03/14
[Qemu-devel] [PATCH 00/12] QOM'ify SuperH CPU and SH7750 SoC, Andreas Färber, 2012/03/14
- [Qemu-devel] [PATCH 02/12] target-sh4: Do not reset features on reset, Andreas Färber, 2012/03/14
- [Qemu-devel] [PATCH 10/12] target-sh4: Make update_itlb_use() take SuperHCPU, Andreas Färber, 2012/03/14
- [Qemu-devel] [PATCH 09/12] target-sh4: Make copy_utlb_entry_itlb() take SuperHCPU, Andreas Färber, 2012/03/14
- [Qemu-devel] [PATCH 11/12] target-sh4: Make itlb_replacement() use SuperHCPU, Andreas Färber, 2012/03/14
- [Qemu-devel] [PATCH 04/12] target-sh4: Make cpu_sh4_invalidate_tlb() take SuperHCPU, Andreas Färber, 2012/03/14