diff options
Diffstat (limited to 'arch/s390/include/asm/timex.h')
-rw-r--r-- | arch/s390/include/asm/timex.h | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/arch/s390/include/asm/timex.h b/arch/s390/include/asm/timex.h index 68d9fea34b4b..f174bdaa6b59 100644 --- a/arch/s390/include/asm/timex.h +++ b/arch/s390/include/asm/timex.h | |||
@@ -20,10 +20,10 @@ static inline int set_clock(__u64 time) | |||
20 | int cc; | 20 | int cc; |
21 | 21 | ||
22 | asm volatile( | 22 | asm volatile( |
23 | " sck 0(%2)\n" | 23 | " sck %1\n" |
24 | " ipm %0\n" | 24 | " ipm %0\n" |
25 | " srl %0,28\n" | 25 | " srl %0,28\n" |
26 | : "=d" (cc) : "m" (time), "a" (&time) : "cc"); | 26 | : "=d" (cc) : "Q" (time) : "cc"); |
27 | return cc; | 27 | return cc; |
28 | } | 28 | } |
29 | 29 | ||
@@ -32,21 +32,21 @@ static inline int store_clock(__u64 *time) | |||
32 | int cc; | 32 | int cc; |
33 | 33 | ||
34 | asm volatile( | 34 | asm volatile( |
35 | " stck 0(%2)\n" | 35 | " stck %1\n" |
36 | " ipm %0\n" | 36 | " ipm %0\n" |
37 | " srl %0,28\n" | 37 | " srl %0,28\n" |
38 | : "=d" (cc), "=m" (*time) : "a" (time) : "cc"); | 38 | : "=d" (cc), "=Q" (*time) : : "cc"); |
39 | return cc; | 39 | return cc; |
40 | } | 40 | } |
41 | 41 | ||
42 | static inline void set_clock_comparator(__u64 time) | 42 | static inline void set_clock_comparator(__u64 time) |
43 | { | 43 | { |
44 | asm volatile("sckc 0(%1)" : : "m" (time), "a" (&time)); | 44 | asm volatile("sckc %0" : : "Q" (time)); |
45 | } | 45 | } |
46 | 46 | ||
47 | static inline void store_clock_comparator(__u64 *time) | 47 | static inline void store_clock_comparator(__u64 *time) |
48 | { | 48 | { |
49 | asm volatile("stckc 0(%1)" : "=m" (*time) : "a" (time)); | 49 | asm volatile("stckc %0" : "=Q" (*time)); |
50 | } | 50 | } |
51 | 51 | ||
52 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | 52 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ |
@@ -57,11 +57,7 @@ static inline unsigned long long get_clock (void) | |||
57 | { | 57 | { |
58 | unsigned long long clk; | 58 | unsigned long long clk; |
59 | 59 | ||
60 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) | ||
61 | asm volatile("stck %0" : "=Q" (clk) : : "cc"); | 60 | asm volatile("stck %0" : "=Q" (clk) : : "cc"); |
62 | #else /* __GNUC__ */ | ||
63 | asm volatile("stck 0(%1)" : "=m" (clk) : "a" (&clk) : "cc"); | ||
64 | #endif /* __GNUC__ */ | ||
65 | return clk; | 61 | return clk; |
66 | } | 62 | } |
67 | 63 | ||
@@ -69,13 +65,7 @@ static inline unsigned long long get_clock_xt(void) | |||
69 | { | 65 | { |
70 | unsigned char clk[16]; | 66 | unsigned char clk[16]; |
71 | 67 | ||
72 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) | ||
73 | asm volatile("stcke %0" : "=Q" (clk) : : "cc"); | 68 | asm volatile("stcke %0" : "=Q" (clk) : : "cc"); |
74 | #else /* __GNUC__ */ | ||
75 | asm volatile("stcke 0(%1)" : "=m" (clk) | ||
76 | : "a" (clk) : "cc"); | ||
77 | #endif /* __GNUC__ */ | ||
78 | |||
79 | return *((unsigned long long *)&clk[1]); | 69 | return *((unsigned long long *)&clk[1]); |
80 | } | 70 | } |
81 | 71 | ||