From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56537) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0em3-0003Xz-W7 for qemu-devel@nongnu.org; Thu, 04 Jun 2015 19:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0elz-0001wz-I9 for qemu-devel@nongnu.org; Thu, 04 Jun 2015 19:42:11 -0400 Received: from cantor2.suse.de ([195.135.220.15]:48706 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0elz-0001wF-B6 for qemu-devel@nongnu.org; Thu, 04 Jun 2015 19:42:07 -0400 From: Alexander Graf Date: Fri, 5 Jun 2015 01:41:36 +0200 Message-Id: <1433461324-23584-7-git-send-email-agraf@suse.de> In-Reply-To: <1433461324-23584-1-git-send-email-agraf@suse.de> References: <1433461324-23584-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PULL 06/34] target-s390x: simplify SCKC helper List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, aurel@aurel32.net, Aurelien Jarno , rth@twiddle.net From: Aurelien Jarno 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 Signed-off-by: Alexander Graf --- target-s390x/misc_helper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target-s390x/misc_helper.c b/target-s390x/misc_helper.c index 230bafd..120807f 100644 --- a/target-s390x/misc_helper.c +++ b/target-s390x/misc_helper.c @@ -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 */ -- 1.7.12.4