Le 30/04/2022 à 19:53, Richard Henderson a écrit :
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> target/m68k/translate.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
> index 0cd7ef89e3..a3141d7f77 100644
> --- a/target/m68k/translate.c
> +++ b/target/m68k/translate.c
> @@ -5567,6 +5567,35 @@ DISAS_INSN(fscc)
> tcg_temp_free(tmp);
> }
>
> +DISAS_INSN(ftrapcc)
> +{
> + DisasCompare c;
> + uint16_t ext;
> + int cond;
> +
> + ext = read_im16(env, s);
> + cond = ext & 0x3f;
> +
> + /* Consume and discard the immediate operand. */
> + switch (extract32(insn, 0, 3)) {
> + case 2: /* ftrapcc.w */
> + (void)read_im16(env, s);
> + break;
> + case 3: /* ftrapcc.l */
> + (void)read_im32(env, s);
> + break;
> + case 4: /* ftrapcc (no operand) */
> + break;
> + default:
> + /* Illegal insn */
> + disas_undef(env, s, insn);
> + return;
> + }
> +
> + gen_fcc_cond(&c, s, cond);
> + do_trapcc(s, &c);
> +}
> +
> #if defined(CONFIG_SOFTMMU)
> DISAS_INSN(frestore)
> {
> @@ -6190,6 +6219,7 @@ void register_m68k_insns (CPUM68KState *env)
> INSN(fbcc, f280, ffc0, CF_FPU);
> INSN(fpu, f200, ffc0, FPU);
> INSN(fscc, f240, ffc0, FPU);
> + INSN(ftrapcc, f278, fff8, FPU);
> INSN(fbcc, f280, ff80, FPU);
> #if defined(CONFIG_SOFTMMU)
> INSN(frestore, f340, ffc0, CF_FPU);
Reviewed-by: Laurent Vivier <laurent@vivier.eu>