]> git.proxmox.com Git - qemu.git/commitdiff
UIP update fix
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 3 Apr 2004 12:27:31 +0000 (12:27 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 3 Apr 2004 12:27:31 +0000 (12:27 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@699 c046a42c-6fe2-441c-8c8c-71466251a162

hw/mc146818rtc.c

index d5746835a11cc3065f75abcd1b0524511a4a0ef6..69addba0cb9b454133bbc7f0d90d476e8bb9842e 100644 (file)
@@ -206,6 +206,7 @@ static void rtc_set_time(RTCState *s)
 static void rtc_update_second(void *opaque)
 {
     RTCState *s = opaque;
+    int64_t delay;
 
     /* if the oscillator is not in normal operation, we do not update */
     if ((s->cmos_data[RTC_REG_A] & 0x70) != 0x20) {
@@ -218,8 +219,13 @@ static void rtc_update_second(void *opaque)
             /* update in progress bit */
             s->cmos_data[RTC_REG_A] |= REG_A_UIP;
         }
+        /* should be 244 us = 8 / 32768 seconds, but currently the
+           timers do not have the necessary resolution. */
+        delay = (ticks_per_sec * 1) / 100;
+        if (delay < 1)
+            delay = 1;
         qemu_mod_timer(s->second_timer2, 
-                       s->next_second_time + (ticks_per_sec * 99) / 100);
+                       s->next_second_time + delay);
     }
 }