1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef __ASM_CSKY_IRQFLAGS_H
4#define __ASM_CSKY_IRQFLAGS_H
5#include <abi/reg_ops.h>
6
7static inline unsigned long arch_local_irq_save(void)
8{
9	unsigned long flags;
10
11	flags = mfcr("psr");
12	asm volatile("psrclr ie\n":::"memory");
13	return flags;
14}
15#define arch_local_irq_save arch_local_irq_save
16
17static inline void arch_local_irq_enable(void)
18{
19	asm volatile("psrset ee, ie\n":::"memory");
20}
21#define arch_local_irq_enable arch_local_irq_enable
22
23static inline void arch_local_irq_disable(void)
24{
25	asm volatile("psrclr ie\n":::"memory");
26}
27#define arch_local_irq_disable arch_local_irq_disable
28
29static inline unsigned long arch_local_save_flags(void)
30{
31	return mfcr("psr");
32}
33#define arch_local_save_flags arch_local_save_flags
34
35static inline void arch_local_irq_restore(unsigned long flags)
36{
37	mtcr("psr", flags);
38}
39#define arch_local_irq_restore arch_local_irq_restore
40
41static inline int arch_irqs_disabled_flags(unsigned long flags)
42{
43	return !(flags & (1<<6));
44}
45#define arch_irqs_disabled_flags arch_irqs_disabled_flags
46
47#include <asm-generic/irqflags.h>
48
49#endif /* __ASM_CSKY_IRQFLAGS_H */
50