1 #ifndef __ASM_SH_IRQFLAGS_H
2 #define __ASM_SH_IRQFLAGS_H
4 static inline void raw_local_irq_enable(void)
6 unsigned long __dummy0, __dummy1;
11 #ifdef CONFIG_CPU_HAS_SR_RB
16 : "=&r" (__dummy0), "=r" (__dummy1)
22 static inline void raw_local_irq_disable(void)
26 __asm__ __volatile__ (
36 static inline void set_bl_bit(void)
38 unsigned long __dummy0, __dummy1;
40 __asm__ __volatile__ (
45 : "=&r" (__dummy0), "=r" (__dummy1)
46 : "r" (0x10000000), "r" (0xffffff0f)
51 static inline void clear_bl_bit(void)
53 unsigned long __dummy0, __dummy1;
55 __asm__ __volatile__ (
59 : "=&r" (__dummy0), "=r" (__dummy1)
65 static inline unsigned long __raw_local_save_flags(void)
69 __asm__ __volatile__ (
80 #define raw_local_save_flags(flags) \
81 do { (flags) = __raw_local_save_flags(); } while (0)
83 static inline int raw_irqs_disabled_flags(unsigned long flags)
88 static inline int raw_irqs_disabled(void)
90 unsigned long flags = __raw_local_save_flags();
92 return raw_irqs_disabled_flags(flags);
95 static inline unsigned long __raw_local_irq_save(void)
97 unsigned long flags, __dummy;
99 __asm__ __volatile__ (
106 : "=&z" (flags), "=&r" (__dummy)
114 #define raw_local_irq_save(flags) \
115 do { (flags) = __raw_local_irq_save(); } while (0)
117 #define local_irq_save raw_local_irq_save
119 static inline void raw_local_irq_restore(unsigned long flags)
121 if ((flags & 0xf0) != 0xf0)
122 raw_local_irq_enable();
124 #define local_irq_restore raw_local_irq_restore
126 #endif /* __ASM_SH_IRQFLAGS_H */