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