aboutsummaryrefslogtreecommitdiff
path: root/target-s390x
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2015-05-18 23:42:25 +0200
committerAlexander Graf <agraf@suse.de>2015-06-05 01:37:57 +0200
commit9cb32c442e11d16b747fa07e29dd29b5d8227b57 (patch)
tree38f47eb312a089872ebe57957ce63990b19b0b46 /target-s390x
parenta91a1b20a23424412a3e7bb184422ec30ae64453 (diff)
target-s390x: add a tod2time function
Add a tod2time function similar to the time2tod one, instead of open coding the conversion. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-s390x')
-rw-r--r--target-s390x/cpu.h5
-rw-r--r--target-s390x/misc_helper.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index a71abaeef7..3140f75333 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -995,6 +995,11 @@ static inline uint64_t time2tod(uint64_t ns) {
return (ns << 9) / 125;
}
+/* Converts s390's clock format to ns */
+static inline uint64_t tod2time(uint64_t t) {
+ return (t * 125) >> 9;
+}
+
static inline void cpu_inject_ext(S390CPU *cpu, uint32_t code, uint32_t param,
uint64_t param64)
{
diff --git a/target-s390x/misc_helper.c b/target-s390x/misc_helper.c
index e1007fa35b..230bafdba2 100644
--- a/target-s390x/misc_helper.c
+++ b/target-s390x/misc_helper.c
@@ -294,7 +294,7 @@ void HELPER(sckc)(CPUS390XState *env, uint64_t time)
/* difference between now and then */
time -= clock_value(env);
/* nanoseconds */
- time = (time * 125) >> 9;
+ time = tod2time(time);
timer_mod(env->tod_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + time);
}
@@ -314,7 +314,7 @@ void HELPER(spt)(CPUS390XState *env, uint64_t time)
}
/* nanoseconds */
- time = (time * 125) >> 9;
+ time = tod2time(time);
timer_mod(env->cpu_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + time);
}