[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/4] target-tricore: Make TRICORE_FEATURES implying
From: |
Bastian Koppelmann |
Subject: |
[Qemu-devel] [PATCH 1/4] target-tricore: Make TRICORE_FEATURES implying others. |
Date: |
Thu, 13 Nov 2014 15:06:11 +0000 |
Since all the TriCore instructionsets are subsets of each other (1.3 C 1.3.1 C
1.6),
make the features implying each other, e.g 1.6 also has 1.3.1 and 1.3. This way
we only need to check our features for the instructionset, where a instruction
was first introduced.
Signed-off-by: Bastian Koppelmann <address@hidden>
---
target-tricore/cpu.c | 9 +++++++++
target-tricore/translate.c | 6 +++---
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/target-tricore/cpu.c b/target-tricore/cpu.c
index 7bf041a..abe16fa 100644
--- a/target-tricore/cpu.c
+++ b/target-tricore/cpu.c
@@ -63,8 +63,17 @@ static bool tricore_cpu_has_work(CPUState *cs)
static void tricore_cpu_realizefn(DeviceState *dev, Error **errp)
{
CPUState *cs = CPU(dev);
+ TriCoreCPU *cpu = TRICORE_CPU(dev);
TriCoreCPUClass *tcc = TRICORE_CPU_GET_CLASS(dev);
+ CPUTriCoreState *env = &cpu->env;
+ /* Some features automatically imply others */
+ if (tricore_feature(env, TRICORE_FEATURE_16)) {
+ set_feature(env, TRICORE_FEATURE_131);
+ }
+ if (tricore_feature(env, TRICORE_FEATURE_131)) {
+ set_feature(env, TRICORE_FEATURE_13);
+ }
cpu_reset(cs);
qemu_init_vcpu(cs);
diff --git a/target-tricore/translate.c b/target-tricore/translate.c
index 1daf26d..3775374 100644
--- a/target-tricore/translate.c
+++ b/target-tricore/translate.c
@@ -2206,17 +2206,17 @@ static void
decode_bo_addrmode_post_pre_base(CPUTriCoreState *env,
case OPC2_32_BO_CACHEI_WI_SHORTOFF:
case OPC2_32_BO_CACHEI_W_SHORTOFF:
/* TODO: Raise illegal opcode trap,
- if tricore_feature(TRICORE_FEATURE_13) */
+ if !tricore_feature(TRICORE_FEATURE_131) */
break;
case OPC2_32_BO_CACHEI_W_POSTINC:
case OPC2_32_BO_CACHEI_WI_POSTINC:
- if (!tricore_feature(env, TRICORE_FEATURE_13)) {
+ if (tricore_feature(env, TRICORE_FEATURE_131)) {
tcg_gen_addi_tl(cpu_gpr_d[r2], cpu_gpr_d[r2], off10);
} /* TODO: else raise illegal opcode trap */
break;
case OPC2_32_BO_CACHEI_W_PREINC:
case OPC2_32_BO_CACHEI_WI_PREINC:
- if (!tricore_feature(env, TRICORE_FEATURE_13)) {
+ if (tricore_feature(env, TRICORE_FEATURE_131)) {
tcg_gen_addi_tl(cpu_gpr_d[r2], cpu_gpr_d[r2], off10);
} /* TODO: else raise illegal opcode trap */
break;
--
2.1.3
- [Qemu-devel] [PATCH 0/4] Add TriCore RCPW, RCRR, RCRW, RLC and RCR instructions, Bastian Koppelmann, 2014/11/13
- [Qemu-devel] [PATCH 3/4] target-tricore: Add instructions of RLC opcode format, Bastian Koppelmann, 2014/11/13
- [Qemu-devel] [PATCH 4/4] target-tricore: Add instructions of RCR opcode format, Bastian Koppelmann, 2014/11/13
- [Qemu-devel] [PATCH 2/4] target-tricore: Add instructions of RCPW, RCRR and RCRW opcode format, Bastian Koppelmann, 2014/11/13
- [Qemu-devel] [PATCH 1/4] target-tricore: Make TRICORE_FEATURES implying others.,
Bastian Koppelmann <=
- Re: [Qemu-devel] [PATCH 0/4] Add TriCore RCPW, RCRR, RCRW, RLC and RCR instructions, Bastian Koppelmann, 2014/11/13