target-tricore: introduce ISA v1.6.1 feature

The aurix platform contains of several different cpu models and uses
the 1.6.1 ISA. This patch changes the generic aurix model to the more
specific tc27x cpu model and sets specific features.

Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
Bastian Koppelmann 2015-05-06 20:18:41 +02:00
parent fd5ecf31d4
commit 6d2afc8a5e
2 changed files with 8 additions and 3 deletions

View file

@ -68,6 +68,10 @@ static void tricore_cpu_realizefn(DeviceState *dev, Error **errp)
CPUTriCoreState *env = &cpu->env; CPUTriCoreState *env = &cpu->env;
/* Some features automatically imply others */ /* Some features automatically imply others */
if (tricore_feature(env, TRICORE_FEATURE_161)) {
set_feature(env, TRICORE_FEATURE_16);
}
if (tricore_feature(env, TRICORE_FEATURE_16)) { if (tricore_feature(env, TRICORE_FEATURE_16)) {
set_feature(env, TRICORE_FEATURE_131); set_feature(env, TRICORE_FEATURE_131);
} }
@ -128,11 +132,11 @@ static void tc1797_initfn(Object *obj)
set_feature(&cpu->env, TRICORE_FEATURE_131); set_feature(&cpu->env, TRICORE_FEATURE_131);
} }
static void aurix_initfn(Object *obj) static void tc27x_initfn(Object *obj)
{ {
TriCoreCPU *cpu = TRICORE_CPU(obj); TriCoreCPU *cpu = TRICORE_CPU(obj);
set_feature(&cpu->env, TRICORE_FEATURE_16); set_feature(&cpu->env, TRICORE_FEATURE_161);
} }
typedef struct TriCoreCPUInfo { typedef struct TriCoreCPUInfo {
@ -144,7 +148,7 @@ typedef struct TriCoreCPUInfo {
static const TriCoreCPUInfo tricore_cpus[] = { static const TriCoreCPUInfo tricore_cpus[] = {
{ .name = "tc1796", .initfn = tc1796_initfn }, { .name = "tc1796", .initfn = tc1796_initfn },
{ .name = "tc1797", .initfn = tc1797_initfn }, { .name = "tc1797", .initfn = tc1797_initfn },
{ .name = "aurix", .initfn = aurix_initfn }, { .name = "tc27x", .initfn = tc27x_initfn },
{ .name = NULL } { .name = NULL }
}; };

View file

@ -254,6 +254,7 @@ enum tricore_features {
TRICORE_FEATURE_13, TRICORE_FEATURE_13,
TRICORE_FEATURE_131, TRICORE_FEATURE_131,
TRICORE_FEATURE_16, TRICORE_FEATURE_16,
TRICORE_FEATURE_161,
}; };
static inline int tricore_feature(CPUTriCoreState *env, int feature) static inline int tricore_feature(CPUTriCoreState *env, int feature)