Path: blob/master/arch/parisc/include/asm/irqflags.h
10819 views
#ifndef __PARISC_IRQFLAGS_H1#define __PARISC_IRQFLAGS_H23#include <linux/types.h>4#include <asm/psw.h>56static inline unsigned long arch_local_save_flags(void)7{8unsigned long flags;9asm volatile("ssm 0, %0" : "=r" (flags) : : "memory");10return flags;11}1213static inline void arch_local_irq_disable(void)14{15asm volatile("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory");16}1718static inline void arch_local_irq_enable(void)19{20asm volatile("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory");21}2223static inline unsigned long arch_local_irq_save(void)24{25unsigned long flags;26asm volatile("rsm %1,%0" : "=r" (flags) : "i" (PSW_I) : "memory");27return flags;28}2930static inline void arch_local_irq_restore(unsigned long flags)31{32asm volatile("mtsm %0" : : "r" (flags) : "memory");33}3435static inline bool arch_irqs_disabled_flags(unsigned long flags)36{37return (flags & PSW_I) == 0;38}3940static inline bool arch_irqs_disabled(void)41{42return arch_irqs_disabled_flags(arch_local_save_flags());43}4445#endif /* __PARISC_IRQFLAGS_H */464748