summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/vtime.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2014-10-20 10:24:39 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-10-27 13:27:01 +0100
commit1f759bb3a2a0d75ceeeec729b1c66a7f443631ba (patch)
treecd481b9e09cb8fcfe703957bd11c0996528586d6 /arch/s390/kernel/vtime.c
parentLinux 3.18-rc2 (diff)
downloadlinux-1f759bb3a2a0d75ceeeec729b1c66a7f443631ba.tar.xz
linux-1f759bb3a2a0d75ceeeec729b1c66a7f443631ba.zip
s390/time: use stck clock fast for do_account_vtime
The last high frequency call site of the STCK instruction is do_account_vtime. Replace it with the faster STCKF instruction. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/vtime.c')
-rw-r--r--arch/s390/kernel/vtime.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 416f2a323ba5..7f0089d9a4aa 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -66,7 +66,11 @@ static int do_account_vtime(struct task_struct *tsk, int hardirq_offset)
clock = S390_lowcore.last_update_clock;
asm volatile(
" stpt %0\n" /* Store current cpu timer value */
+#ifdef CONFIG_HAVE_MARCH_Z9_109_FEATURES
+ " stckf %1" /* Store current tod clock value */
+#else
" stck %1" /* Store current tod clock value */
+#endif
: "=m" (S390_lowcore.last_update_timer),
"=m" (S390_lowcore.last_update_clock));
S390_lowcore.system_timer += timer - S390_lowcore.last_update_timer;