diff options
-rw-r--r-- | arch/s390/include/asm/ctlreg.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/s390/include/asm/ctlreg.h b/arch/s390/include/asm/ctlreg.h index 09d35ab3d1ce..e8e5aef08bfd 100644 --- a/arch/s390/include/asm/ctlreg.h +++ b/arch/s390/include/asm/ctlreg.h @@ -69,6 +69,23 @@ : [_low] "i" (low), [_high] "i" (high)); \ } while (0) +static __always_inline void local_ctl_load(unsigned int cr, unsigned long *reg) +{ + asm volatile( + " lctlg %[cr],%[cr],%[reg]\n" + : + : [reg] "Q" (*reg), [cr] "i" (cr) + : "memory"); +} + +static __always_inline void local_ctl_store(unsigned int cr, unsigned long *reg) +{ + asm volatile( + " stctg %[cr],%[cr],%[reg]\n" + : [reg] "=Q" (*reg) + : [cr] "i" (cr)); +} + static __always_inline void local_ctl_set_bit(unsigned int cr, unsigned int bit) { unsigned long reg; |