[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] sparc32: fix setting counter limit to 0
From: |
Robert Reif |
Subject: |
[Qemu-devel] [PATCH] sparc32: fix setting counter limit to 0 |
Date: |
Sun, 16 Dec 2007 18:38:11 -0500 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.2) Gecko/20040308 |
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
diff -p -u -r1.21 slavio_timer.c
--- hw/slavio_timer.c 1 Dec 2007 15:58:22 -0000 1.21
+++ hw/slavio_timer.c 16 Dec 2007 23:28:13 -0000
@@ -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(void
case 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)) {
- [Qemu-devel] [PATCH] sparc32: fix setting counter limit to 0,
Robert Reif <=