mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
s390/time: Convert to use flag output macros
Use flag output macros in inline asm to allow for better code generation if the compiler has support for the flag output constraint. Reviewed-by: Juergen Christ <jchrist@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
34c4812366
commit
81c54fc570
|
|
@ -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)
|
||||
|
|
@ -149,12 +152,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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user