]> xenbits.xensource.com Git - qemu-xen-unstable.git/commitdiff
target-s390x: simplify SCKC helper
authorAurelien Jarno <aurelien@aurel32.net>
Mon, 18 May 2015 21:42:26 +0000 (23:42 +0200)
committerAlexander Graf <agraf@suse.de>
Thu, 4 Jun 2015 23:37:57 +0000 (01:37 +0200)
The clock comparator and the QEMU timer work the same way, triggering
at a given time, they just differ by the origin and the scale. It is
therefore possible to go from one to another without using the current
clock value. This spares two calls to qemu_clock_get_ns, which probably
return slightly different values, possibly reducing the accuracy.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
target-s390x/misc_helper.c

index 230bafdba2422420f04f946366fb1df153bb503d..120807f20b0fb577032193e0b083b42bb6662e32 100644 (file)
@@ -291,12 +291,13 @@ void HELPER(sckc)(CPUS390XState *env, uint64_t time)
         return;
     }
 
-    /* difference between now and then */
-    time -= clock_value(env);
+    /* difference between origins */
+    time -= env->tod_offset;
+
     /* nanoseconds */
     time = tod2time(time);
 
-    timer_mod(env->tod_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + time);
+    timer_mod(env->tod_timer, env->tod_basetime + time);
 }
 
 /* Store Clock Comparator */