mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02: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:
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user