mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
alpha: make irqflags helpers operate on IPL state
Alpha interrupt masking is controlled by the PAL IPL value, not by the full processor status word. Make arch_local_save_flags() return the current IPL directly, and make arch_local_irq_restore() and arch_irqs_disabled_flags() treat their argument as IPL state. Mask the low IPL bits in the restore and test helpers so callers which still pass a saved PS value continue to behave as expected. This prepares the irqflags helpers for lockdep IRQ-state tracking, where the saved flags value is used to determine whether hard IRQs are enabled or disabled. Reviewed-by: Matt Turner <mattst88@gmail.com> Tested-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Magnus Lindholm <linmag7@gmail.com> Link: https://lore.kernel.org/r/20260706170019.2941459-4-linmag7@gmail.com Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
This commit is contained in:
parent
46651c650f
commit
05dc12d664
|
|
@ -26,7 +26,7 @@ extern int __min_ipl;
|
|||
|
||||
static inline unsigned long arch_local_save_flags(void)
|
||||
{
|
||||
return rdps();
|
||||
return getipl();
|
||||
}
|
||||
|
||||
static inline void arch_local_irq_disable(void)
|
||||
|
|
@ -51,13 +51,13 @@ static inline void arch_local_irq_enable(void)
|
|||
static inline void arch_local_irq_restore(unsigned long flags)
|
||||
{
|
||||
barrier();
|
||||
setipl(flags);
|
||||
setipl(flags & 7);
|
||||
barrier();
|
||||
}
|
||||
|
||||
static inline bool arch_irqs_disabled_flags(unsigned long flags)
|
||||
{
|
||||
return flags == IPL_MAX;
|
||||
return (flags & 7) == IPL_MAX;
|
||||
}
|
||||
|
||||
static inline bool arch_irqs_disabled(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user