1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * IRQ support for the Hexagon architecture 4 * 5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. 6 */ 7 8 #ifndef _ASM_IRQFLAGS_H 9 #define _ASM_IRQFLAGS_H 10 11 #include <asm/hexagon_vm.h> 12 #include <linux/types.h> 13 14 static inline unsigned long arch_local_save_flags(void) 15 { 16 return __vmgetie(); 17 } 18 19 static inline unsigned long arch_local_irq_save(void) 20 { 21 return __vmsetie(VM_INT_DISABLE); 22 } 23 24 static inline bool arch_irqs_disabled_flags(unsigned long flags) 25 { 26 return !flags; 27 } 28 29 static inline bool arch_irqs_disabled(void) 30 { 31 return !__vmgetie(); 32 } 33 34 static inline void arch_local_irq_enable(void) 35 { 36 __vmsetie(VM_INT_ENABLE); 37 } 38 39 static inline void arch_local_irq_disable(void) 40 { 41 __vmsetie(VM_INT_DISABLE); 42 } 43 44 static inline void arch_local_irq_restore(unsigned long flags) 45 { 46 __vmsetie(flags); 47 } 48 49 #endif 50