mirror of https://github.com/xemu-project/xemu.git
hw/ppc: fix decrementer with BookE timers
The BookE decrementer stops at 0, meaning that it won't decremented
towards "negative" values. However, the current logic is inverted: decr
is updated solely when the resulting value would be negative.
Signed-off-by: Clément Chigot <chigot@adacore.com>
Fixes: 8e0a5ac878
("hw/ppc: Avoid decrementer rounding errors")
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
ddf4dd46e5
commit
f10827a845
|
@ -728,7 +728,9 @@ static inline int64_t __cpu_ppc_load_decr(CPUPPCState *env, int64_t now,
|
|||
int64_t decr;
|
||||
|
||||
n = ns_to_tb(tb_env->decr_freq, now);
|
||||
if (next > n && tb_env->flags & PPC_TIMER_BOOKE) {
|
||||
|
||||
/* BookE timers stop when reaching 0. */
|
||||
if (next < n && tb_env->flags & PPC_TIMER_BOOKE) {
|
||||
decr = 0;
|
||||
} else {
|
||||
decr = next - n;
|
||||
|
|
Loading…
Reference in New Issue