- __asm__ __volatile__(
- " cs %0,%3,0(%4)"
- : "=d" (old), "=m" (*lock)
- : "0" (old), "d" (new), "a" (lock), "m" (*lock)
- : "cc", "memory" );
-
- return old;
+ unsigned long long clk;
+
+#ifdef CONFIG_S390_Z196_FACILITIES
+ /*
+ * Fio needs monotonic (never lower), but not strict monotonic (never
+ * the same) so store clock fast is enough.
+ */
+ __asm__ __volatile__("stckf %0" : "=Q" (clk) : : "cc");
+#else
+ __asm__ __volatile__("stck %0" : "=Q" (clk) : : "cc");
+#endif
+ return clk>>12;