From: blueswir1 Date: Wed, 19 Dec 2007 17:58:24 +0000 (+0000) Subject: Fix count calculation when counter limit set to 0 (Robert Reif) X-Git-Tag: xen-3.3.0-rc1~519 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=bd7e2875fe99ca9621c02666e11389602b512f4b;p=qemu-xen-3.3-testing.git Fix count calculation when counter limit set to 0 (Robert Reif) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3840 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/hw/slavio_timer.c b/hw/slavio_timer.c index f98647f9..e8543581 100644 --- a/hw/slavio_timer.c +++ b/hw/slavio_timer.c @@ -97,9 +97,14 @@ static int slavio_timer_is_user(SLAVIO_TIMERState *s) // Convert from ptimer countdown units static void slavio_timer_get_out(SLAVIO_TIMERState *s) { - uint64_t count; + uint64_t count, limit; - count = s->limit - PERIODS_TO_LIMIT(ptimer_get_count(s->timer)); + if (s->limit == 0) /* free-run processor or system counter */ + limit = TIMER_MAX_COUNT32; + else + limit = s->limit; + + count = limit - PERIODS_TO_LIMIT(ptimer_get_count(s->timer)); DPRINTF("get_out: limit %" PRIx64 " count %x%08x\n", s->limit, s->counthigh, s->count); s->count = count & TIMER_COUNT_MASK32;