]> Git Repo - J-linux.git/blobdiff - arch/s390/include/asm/timex.h
Merge tag 'net-next-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev...
[J-linux.git] / arch / s390 / include / asm / timex.h
index 642fd303ce01fba8099a74906db777e921009bca..a9460bd6555b8b5dd42d14e167e7445497a75844 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/preempt.h>
 #include <linux/time64.h>
 #include <asm/lowcore.h>
+#include <asm/asm.h>
 
 /* The value of the TOD clock for 1.1.1970. */
 #define TOD_UNIX_EPOCH 0x7d91048bca000000ULL
@@ -44,11 +45,12 @@ static inline int set_tod_clock(__u64 time)
        int cc;
 
        asm volatile(
-               "   sck   %1\n"
-               "   ipm   %0\n"
-               "   srl   %0,28\n"
-               : "=d" (cc) : "Q" (time) : "cc");
-       return cc;
+               "       sck     %[time]\n"
+               CC_IPM(cc)
+               : CC_OUT(cc, cc)
+               : [time] "Q" (time)
+               : CC_CLOBBER);
+       return CC_TRANSFORM(cc);
 }
 
 static inline int store_tod_clock_ext_cc(union tod_clock *clk)
@@ -56,11 +58,12 @@ static inline int store_tod_clock_ext_cc(union tod_clock *clk)
        int cc;
 
        asm volatile(
-               "   stcke  %1\n"
-               "   ipm   %0\n"
-               "   srl   %0,28\n"
-               : "=d" (cc), "=Q" (*clk) : : "cc");
-       return cc;
+               "       stcke   %[clk]\n"
+               CC_IPM(cc)
+               : CC_OUT(cc, cc), [clk] "=Q" (*clk)
+               :
+               : CC_CLOBBER);
+       return CC_TRANSFORM(cc);
 }
 
 static __always_inline void store_tod_clock_ext(union tod_clock *tod)
@@ -150,12 +153,11 @@ struct ptff_qui {
                "       lgr     0,%[reg0]\n"                            \
                "       lgr     1,%[reg1]\n"                            \
                "       ptff\n"                                         \
-               "       ipm     %[rc]\n"                                \
-               "       srl     %[rc],28\n"                             \
-               : [rc] "=&d" (rc), "+m" (*(struct addrtype *)reg1)      \
+               CC_IPM(rc)                                              \
+               : CC_OUT(rc, rc), "+m" (*(struct addrtype *)reg1)       \
                : [reg0] "d" (reg0), [reg1] "d" (reg1)                  \
-               : "cc", "0", "1");                                      \
-       rc;                                                             \
+               : CC_CLOBBER_LIST("0", "1"));                           \
+       CC_TRANSFORM(rc);                                               \
 })
 
 static inline unsigned long local_tick_disable(void)
This page took 0.038447 seconds and 4 git commands to generate.