mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-04 18:27:36 +00:00
s390/ctlreg: add local_ctl_load() and local_ctl_store()
Add local_ctl_load() and local_ctl_store() which load and store contents for only a single control register. This allows for easier to read code, but also better type checking, since __local_ctl_load() and __local_ctl_store() do not come with any type checking at all (which will be changed with subsequent patches). Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
committed by
Vasily Gorbik
parent
8d5e98f8d6
commit
dfa33ce124
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user