sparc32: fix setting counter limit to 0
PATCH 1/1 sparc32: fix setting counter limit to 0
Set the proper limit when set to 0.
Index: hw/slavio_timer.c
===================================================================
RCS file: /sources/qemu/qemu/hw/slavio_timer.c,v
retrieving revision 1.21
slavio_timer.c +8 -7
@@ -174,7 +175,6 @@ static void slavio_timer_mem_writel(void {SLAVIO_TIMERState *s = opaque;uint32_t saddr; -int reload =0 ;DPRINTF ("write " TARGET_FMT_plx" %08x\n" , addr, val); saddr = (addr &TIMER_MAXADDR ) >>2 ;
@@ -190,9 +190,10 @@ static void slavio_timer_mem_writel(void// set limit, reset counter qemu_irq_lower (s->irq); s->limit = val &TIMER_MAX_COUNT32 ; -if (!s->limit) - s->limit =TIMER_MAX_COUNT32 ; -ptimer_set_limit (s->timer, s->limit >>9 ,1 ); +if (s->limit ==0 )/* free-run */ +ptimer_set_limit (s->timer,LIMIT_TO_PERIODS (TIMER_MAX_COUNT32 ),1 ); +else +ptimer_set_limit (s->timer,LIMIT_TO_PERIODS (s->limit),1 ); }break ;case TIMER_COUNTER :
@@ -208,9 +209,10 @@ static void slavio_timer_mem_writel(voidcase TIMER_COUNTER_NORST :// set limit without resetting counter s->limit = val &TIMER_MAX_COUNT32 ; -if (!s->limit) - s->limit =TIMER_MAX_COUNT32 ; -ptimer_set_limit (s->timer,LIMIT_TO_PERIODS (s->limit), reload); +if (s->limit ==0 )/* free-run */ +ptimer_set_limit (s->timer,LIMIT_TO_PERIODS (TIMER_MAX_COUNT32 ),0 ); +else +ptimer_set_limit (s->timer,LIMIT_TO_PERIODS (s->limit),0 );break ;case TIMER_STATUS :if (slavio_timer_is_user (s)) {
Blue Swirl
AppliedQuoted 1 line · Robert Reif
Set the proper limit when set to 0.
Thanks, applied.