67 lines · 1.5 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 */#ifndef __ASM_GENERIC_IRQFLAGS_H#define __ASM_GENERIC_IRQFLAGS_H /* * All architectures should implement at least the first two functions, * usually inline assembly will be the best way. */#ifndef ARCH_IRQ_DISABLED#define ARCH_IRQ_DISABLED 0#define ARCH_IRQ_ENABLED 1#endif /* read interrupt enabled status */#ifndef arch_local_save_flagsunsigned long arch_local_save_flags(void);#endif /* set interrupt enabled status */#ifndef arch_local_irq_restorevoid arch_local_irq_restore(unsigned long flags);#endif /* get status and disable interrupts */#ifndef arch_local_irq_savestatic inline unsigned long arch_local_irq_save(void){	unsigned long flags;	flags = arch_local_save_flags();	arch_local_irq_restore(ARCH_IRQ_DISABLED);	return flags;}#endif /* test flags */#ifndef arch_irqs_disabled_flagsstatic inline int arch_irqs_disabled_flags(unsigned long flags){	return flags == ARCH_IRQ_DISABLED;}#endif /* unconditionally enable interrupts */#ifndef arch_local_irq_enablestatic inline void arch_local_irq_enable(void){	arch_local_irq_restore(ARCH_IRQ_ENABLED);}#endif /* unconditionally disable interrupts */#ifndef arch_local_irq_disablestatic inline void arch_local_irq_disable(void){	arch_local_irq_restore(ARCH_IRQ_DISABLED);}#endif /* test hardware interrupt enable bit */#ifndef arch_irqs_disabledstatic inline int arch_irqs_disabled(void){	return arch_irqs_disabled_flags(arch_local_save_flags());}#endif #endif /* __ASM_GENERIC_IRQFLAGS_H */