Path: blob/master/arch/xtensa/include/asm/irqflags.h
15126 views
/*1* Xtensa IRQ flags handling functions2*3* This file is subject to the terms and conditions of the GNU General Public4* License. See the file "COPYING" in the main directory of this archive5* for more details.6*7* Copyright (C) 2001 - 2005 Tensilica Inc.8*/910#ifndef _XTENSA_IRQFLAGS_H11#define _XTENSA_IRQFLAGS_H1213#include <linux/types.h>1415static inline unsigned long arch_local_save_flags(void)16{17unsigned long flags;18asm volatile("rsr %0,"__stringify(PS) : "=a" (flags));19return flags;20}2122static inline unsigned long arch_local_irq_save(void)23{24unsigned long flags;25asm volatile("rsil %0, "__stringify(LOCKLEVEL)26: "=a" (flags) :: "memory");27return flags;28}2930static inline void arch_local_irq_disable(void)31{32arch_local_irq_save();33}3435static inline void arch_local_irq_enable(void)36{37unsigned long flags;38asm volatile("rsil %0, 0" : "=a" (flags) :: "memory");39}4041static inline void arch_local_irq_restore(unsigned long flags)42{43asm volatile("wsr %0, "__stringify(PS)" ; rsync"44:: "a" (flags) : "memory");45}4647static inline bool arch_irqs_disabled_flags(unsigned long flags)48{49return (flags & 0xf) != 0;50}5152static inline bool arch_irqs_disabled(void)53{54return arch_irqs_disabled_flags(arch_local_save_flags());55}5657#endif /* _XTENSA_IRQFLAGS_H */585960