aboutsummaryrefslogtreecommitdiff
path: root/target-s390x
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2015-05-18 23:42:29 +0200
committerAlexander Graf <agraf@suse.de>2015-06-05 01:37:57 +0200
commitb8ae94bd398ff772f40fb232887ecbcbd244c3d4 (patch)
treeafd46645e5b29429ed833d96778aab0cfae3d6b1 /target-s390x
parentaa9e14e684506e8ddf02bd5cff720520827bf244 (diff)
downloadqemu-b8ae94bd398ff772f40fb232887ecbcbd244c3d4.zip
qemu-b8ae94bd398ff772f40fb232887ecbcbd244c3d4.tar.gz
qemu-b8ae94bd398ff772f40fb232887ecbcbd244c3d4.tar.bz2
target-s390x: implement STPT helper
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. 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/misc_helper.c7
1 files 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 */