[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] hw/ppc: fix decrementer with BookE timers
From: |
Clément Chigot |
Subject: |
Re: [PATCH] hw/ppc: fix decrementer with BookE timers |
Date: |
Mon, 29 Jul 2024 10:33:16 +0200 |
Hi,
Gentle ping + CC missing maintainers.
Thanks Clément
On Mon, Jul 15, 2024 at 10:46 AM Clément Chigot <chigot@adacore.com> wrote:
>
> 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>
> Fixed: 8e0a5ac87800 ("hw/ppc: Avoid decrementer rounding errors")
> ---
> hw/ppc/ppc.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
> index e6fa5580c0..9fc85c7de0 100644
> --- a/hw/ppc/ppc.c
> +++ b/hw/ppc/ppc.c
> @@ -729,7 +729,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;
> --
> 2.25.1
>