[S390] Introduce get_clock_fast()
authorJan Glauber <jang@linux.vnet.ibm.com>
Sun, 30 Oct 2011 14:17:04 +0000 (15:17 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 30 Oct 2011 14:16:45 +0000 (15:16 +0100)
Add get_clock_fast() which uses the slightly faster stckf if available.
If stckf is not available fall back to stck, which has the same width.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/timex.h

index 88829a40af6f56e4dd67d70ceb289e0fe9faf13b..d610bef9c5e91a425ad01a683525f46ba0c055e1 100644 (file)
@@ -86,6 +86,17 @@ static inline void get_clock_ext(char *clk)
        asm volatile("stcke %0" : "=Q" (*clk) : : "cc");
 }
 
+static inline unsigned long long get_clock_fast(void)
+{
+       unsigned long long clk;
+
+       if (test_facility(25))
+               asm volatile(".insn     s,0xb27c0000,%0" : "=Q" (clk) : : "cc");
+       else
+               clk = get_clock();
+       return clk;
+}
+
 static inline unsigned long long get_clock_xt(void)
 {
        unsigned char clk[16];