On 20 Oct 2022 09:32, Tsukasa OI wrote: > --- a/sim/mips/cp1.c > +++ b/sim/mips/cp1.c > @@ -1178,7 +1178,7 @@ inner_rsqrt(uint64_t op1, > uint32_t res; > sim_fpu_32to (&wop1, op1); > status |= sim_fpu_sqrt (&ans, &wop1); > - status |= sim_fpu_round_32 (&ans, status, round); > + status |= sim_fpu_round_32 (&ans, (sim_fpu_round) status, (sim_fpu_denorm) round); this doesn't look correct at all. are you sure about this ? > @@ -1216,7 +1216,7 @@ fp_inv_sqrt(sim_cpu *cpu, > FP_formats fmt) > { > sim_fpu_round round = rounding_mode (GETRM()); > - sim_fpu_round denorm = denorm_mode (cpu); > + sim_fpu_denorm denorm = denorm_mode (cpu); this looks fine > @@ -1903,8 +1903,8 @@ convert_ps (sim_cpu *cpu, > case fmt_ps: > - status_u |= sim_fpu_round_32 (&wop_u, 0, round); > - status_l |= sim_fpu_round_32 (&wop_l, 0, round); > + status_u |= sim_fpu_round_32 (&wop_u, 0, (sim_fpu_denorm) round); > + status_l |= sim_fpu_round_32 (&wop_l, 0, (sim_fpu_denorm) round); this also looks wrong -mike