On 04/09/15 09:21, Alex Smith wrote: > For RDHWR on the CP0.Count register, env->CP0_Count was being returned. > This value is a delta against the QEMU_CLOCK_VIRTUAL clock, not the > correct current value of CP0.Count. Use cpu_mips_get_count() instead. > > Signed-off-by: Alex Smith <alex.sm...@imgtec.com> > Cc: Aurelien Jarno <aurel...@aurel32.net> > Cc: Leon Alrae <leon.al...@imgtec.com> > --- > target-mips/op_helper.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c > index 809a061e296b..6fe00201c10d 100644 > --- a/target-mips/op_helper.c > +++ b/target-mips/op_helper.c > @@ -2185,7 +2185,7 @@ target_ulong helper_rdhwr_cc(CPUMIPSState *env) > { > if ((env->hflags & MIPS_HFLAG_CP0) || > (env->CP0_HWREna & (1 << 2))) > - return env->CP0_Count; > + return (int32_t)cpu_mips_get_count(env); > else > helper_raise_exception(env, EXCP_RI); > >
Thanks for the patch, this looks correct for system mode. However, if you try to build mips*-linux-user it will fail -- cpu_mips_get_count() and family aren't defined in linux-user (we don't seem to care about modifying CP0_Count). Also, QEMU coding style requires that every indented statement is braced (these style issues are in quite many places in existing code, but new code should follow the correct style). Could you fix these two issues, please? Thanks, Leon