On Mon, 2007-12-10 at 10:13 +0100, Aurelien Jarno wrote: > Hi all, Hi,
> The patch below fix the computation of FPSCR_VX and FPSCR_FEX when > using the mtfsf instruction. As stated in the PowerPC manual the mtfsf > instruction can't alter those bit, and thus it should always be > computed. You're right, the values are not computed properly. I'll commit your fix. > Index: target-ppc/op_helper.c > =================================================================== > RCS file: /sources/qemu/qemu/target-ppc/op_helper.c,v > retrieving revision 1.73 > diff -u -d -p -r1.73 op_helper.c > --- target-ppc/op_helper.c 24 Nov 2007 02:03:55 -0000 1.73 > +++ target-ppc/op_helper.c 10 Dec 2007 09:10:30 -0000 > @@ -888,12 +888,16 @@ void do_store_fpscr (uint32_t mask) > /* Update VX and FEX */ > if (fpscr_ix != 0) > env->fpscr |= 1 << FPSCR_VX; > + else > + env->fpscr &= ~(1 << FPSCR_VX); > if ((fpscr_ex & fpscr_eex) != 0) { > env->fpscr |= 1 << FPSCR_FEX; > env->exception_index = POWERPC_EXCP_PROGRAM; > /* XXX: we should compute it properly */ > env->error_code = POWERPC_EXCP_FP; > } > + else > + env->fpscr &= ~(1 << FPSCR_FEX); > fpscr_set_rounding_mode(); > } > #undef WORD0 -- Jocelyn Mayer <[EMAIL PROTECTED]>