summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/ctlreg.c
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2023-09-11 21:39:58 +0200
committerVasily Gorbik <gor@linux.ibm.com>2023-09-19 13:26:56 +0200
commit8d5e98f8d6b11dd0e61323ece3b7ccceea55c281 (patch)
tree7e0ff091fc8130648550fc2dfb147df93b8960af /arch/s390/kernel/ctlreg.c
parenta74e4fc168d284e1e4e7296f8cf4b884035ebd45 (diff)
downloadlinux-8d5e98f8d6b11dd0e61323ece3b7ccceea55c281.tar.gz
linux-8d5e98f8d6b11dd0e61323ece3b7ccceea55c281.tar.bz2
linux-8d5e98f8d6b11dd0e61323ece3b7ccceea55c281.zip
s390/ctlreg: add local and system prefix to some functions
Add local and system prefix to some functions to clarify they change control register contents on either the local CPU or the on all CPUs. This results in the following API: Two defines which load and save multiple control registers. The defines correlate with the following C prototypes: void __local_ctl_load(unsigned long *, unsigned int cr_low, unsigned int cr_high); void __local_ctl_store(unsigned long *, unsigned int cr_low, unsigned int cr_high); Two functions which locally set or clear one bit for a specified control register: void local_ctl_set_bit(unsigned int cr, unsigned int bit); void local_ctl_clear_bit(unsigned int cr, unsigned int bit); Two functions which set or clear one bit for a specified control register on all CPUs: void system_ctl_set_bit(unsigned int cr, unsigned int bit); void system_ctl_clear_bit(unsigend int cr, unsigned int bit); 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>
Diffstat (limited to 'arch/s390/kernel/ctlreg.c')
-rw-r--r--arch/s390/kernel/ctlreg.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/arch/s390/kernel/ctlreg.c b/arch/s390/kernel/ctlreg.c
index a01b901d4866..795e7f4861fb 100644
--- a/arch/s390/kernel/ctlreg.c
+++ b/arch/s390/kernel/ctlreg.c
@@ -13,18 +13,18 @@
* are kept in the control register save area within absolute lowcore
* at physical address zero.
*/
-static DEFINE_SPINLOCK(ctl_lock);
+static DEFINE_SPINLOCK(system_ctl_lock);
-void ctlreg_lock(void)
- __acquires(&ctl_lock)
+void system_ctlreg_lock(void)
+ __acquires(&system_ctl_lock)
{
- spin_lock(&ctl_lock);
+ spin_lock(&system_ctl_lock);
}
-void ctlreg_unlock(void)
- __releases(&ctl_lock)
+void system_ctlreg_unlock(void)
+ __releases(&system_ctl_lock)
{
- spin_unlock(&ctl_lock);
+ spin_unlock(&system_ctl_lock);
}
struct ctl_bit_parms {
@@ -38,25 +38,25 @@ static void ctl_bit_callback(void *info)
struct ctl_bit_parms *pp = info;
unsigned long regs[16];
- __ctl_store(regs, 0, 15);
+ __local_ctl_store(regs, 0, 15);
regs[pp->cr] &= pp->andval;
regs[pp->cr] |= pp->orval;
- __ctl_load(regs, 0, 15);
+ __local_ctl_load(regs, 0, 15);
}
-void ctl_set_clear_bit(int cr, int bit, bool set)
+void system_ctl_set_clear_bit(unsigned int cr, unsigned int bit, bool set)
{
struct ctl_bit_parms pp = { .cr = cr, };
struct lowcore *abs_lc;
pp.orval = set ? 1UL << bit : 0;
pp.andval = set ? -1UL : ~(1UL << bit);
- ctlreg_lock();
+ system_ctlreg_lock();
abs_lc = get_abs_lowcore();
abs_lc->cregs_save_area[cr] &= pp.andval;
abs_lc->cregs_save_area[cr] |= pp.orval;
put_abs_lowcore(abs_lc);
on_each_cpu(ctl_bit_callback, &pp, 1);
- ctlreg_unlock();
+ system_ctlreg_unlock();
}
-EXPORT_SYMBOL(ctl_set_clear_bit);
+EXPORT_SYMBOL(system_ctl_set_clear_bit);