Save the timer target value in the SPT helper, so that the STPT helper can compute the remaining time.
This allow the Linux kernel to correctly do time accounting. Cc: Alexander Graf <ag...@suse.de> Cc: Richard Henderson <r...@twiddle.net> Signed-off-by: Aurelien Jarno <aurel...@aurel32.net> --- 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 57aee95..3ec7268 100644 --- a/target-s390x/misc_helper.c +++ b/target-s390x/misc_helper.c @@ -313,14 +313,15 @@ void HELPER(spt)(CPUS390XState *env, uint64_t time) /* nanoseconds */ time = tod2time(time); - timer_mod(env->cpu_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + time); + env->cputm = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + time; + + timer_mod(env->cpu_timer, env->cputm); } /* Store CPU Timer */ uint64_t HELPER(stpt)(CPUS390XState *env) { - /* XXX implement */ - return 0; + return time2tod(env->cputm - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)); } /* Store System Information */ -- 2.1.4