mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
target-tricore: add RR_DIV and RR_DIV_U instructions of the v1.6 ISA
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
0e045f43c4
commit
9371557115
4 changed files with 74 additions and 0 deletions
|
@ -201,6 +201,15 @@ void tricore_cpu_dump_state(CPUState *cs, FILE *f,
|
|||
tcg_temp_free_i64(arg1); \
|
||||
} while (0)
|
||||
|
||||
#define GEN_HELPER_RR(name, rl, rh, arg1, arg2) do { \
|
||||
TCGv_i64 ret = tcg_temp_new_i64(); \
|
||||
\
|
||||
gen_helper_##name(ret, cpu_env, arg1, arg2); \
|
||||
tcg_gen_extr_i64_i32(rl, rh, ret); \
|
||||
\
|
||||
tcg_temp_free_i64(ret); \
|
||||
} while (0)
|
||||
|
||||
#define EA_ABS_FORMAT(con) (((con & 0x3C000) << 14) + (con & 0x3FFF))
|
||||
#define EA_B_ABSOLUT(con) (((offset & 0xf00000) << 8) | \
|
||||
((offset & 0x0fffff) << 1))
|
||||
|
@ -6494,6 +6503,18 @@ static void decode_rr_divide(CPUTriCoreState *env, DisasContext *ctx)
|
|||
gen_helper_crc32(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
|
||||
} /* TODO: else raise illegal opcode trap */
|
||||
break;
|
||||
case OPC2_32_RR_DIV:
|
||||
if (tricore_feature(env, TRICORE_FEATURE_16)) {
|
||||
GEN_HELPER_RR(divide, cpu_gpr_d[r3], cpu_gpr_d[r3+1], cpu_gpr_d[r1],
|
||||
cpu_gpr_d[r2]);
|
||||
} /* TODO: else raise illegal opcode trap */
|
||||
break;
|
||||
case OPC2_32_RR_DIV_U:
|
||||
if (tricore_feature(env, TRICORE_FEATURE_16)) {
|
||||
GEN_HELPER_RR(divide_u, cpu_gpr_d[r3], cpu_gpr_d[r3+1],
|
||||
cpu_gpr_d[r1], cpu_gpr_d[r2]);
|
||||
} /* TODO: else raise illegal opcode trap */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue