xref: /linux/arch/hexagon/include/asm/irqflags.h (revision 26fbb4c8c7c3ee9a4c3b4de555a8587b5a19154e)
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