diff options
Diffstat (limited to 'arch/avr32/include/asm/irqflags.h')
-rw-r--r-- | arch/avr32/include/asm/irqflags.h | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/arch/avr32/include/asm/irqflags.h b/arch/avr32/include/asm/irqflags.h index 93570daac38a..006e9487372d 100644 --- a/arch/avr32/include/asm/irqflags.h +++ b/arch/avr32/include/asm/irqflags.h | |||
@@ -8,16 +8,14 @@ | |||
8 | #ifndef __ASM_AVR32_IRQFLAGS_H | 8 | #ifndef __ASM_AVR32_IRQFLAGS_H |
9 | #define __ASM_AVR32_IRQFLAGS_H | 9 | #define __ASM_AVR32_IRQFLAGS_H |
10 | 10 | ||
11 | #include <linux/types.h> | ||
11 | #include <asm/sysreg.h> | 12 | #include <asm/sysreg.h> |
12 | 13 | ||
13 | static inline unsigned long __raw_local_save_flags(void) | 14 | static inline unsigned long arch_local_save_flags(void) |
14 | { | 15 | { |
15 | return sysreg_read(SR); | 16 | return sysreg_read(SR); |
16 | } | 17 | } |
17 | 18 | ||
18 | #define raw_local_save_flags(x) \ | ||
19 | do { (x) = __raw_local_save_flags(); } while (0) | ||
20 | |||
21 | /* | 19 | /* |
22 | * This will restore ALL status register flags, not only the interrupt | 20 | * This will restore ALL status register flags, not only the interrupt |
23 | * mask flag. | 21 | * mask flag. |
@@ -25,44 +23,39 @@ static inline unsigned long __raw_local_save_flags(void) | |||
25 | * The empty asm statement informs the compiler of this fact while | 23 | * The empty asm statement informs the compiler of this fact while |
26 | * also serving as a barrier. | 24 | * also serving as a barrier. |
27 | */ | 25 | */ |
28 | static inline void raw_local_irq_restore(unsigned long flags) | 26 | static inline void arch_local_irq_restore(unsigned long flags) |
29 | { | 27 | { |
30 | sysreg_write(SR, flags); | 28 | sysreg_write(SR, flags); |
31 | asm volatile("" : : : "memory", "cc"); | 29 | asm volatile("" : : : "memory", "cc"); |
32 | } | 30 | } |
33 | 31 | ||
34 | static inline void raw_local_irq_disable(void) | 32 | static inline void arch_local_irq_disable(void) |
35 | { | 33 | { |
36 | asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory"); | 34 | asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory"); |
37 | } | 35 | } |
38 | 36 | ||
39 | static inline void raw_local_irq_enable(void) | 37 | static inline void arch_local_irq_enable(void) |
40 | { | 38 | { |
41 | asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory"); | 39 | asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory"); |
42 | } | 40 | } |
43 | 41 | ||
44 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 42 | static inline bool arch_irqs_disabled_flags(unsigned long flags) |
45 | { | 43 | { |
46 | return (flags & SYSREG_BIT(GM)) != 0; | 44 | return (flags & SYSREG_BIT(GM)) != 0; |
47 | } | 45 | } |
48 | 46 | ||
49 | static inline int raw_irqs_disabled(void) | 47 | static inline bool arch_irqs_disabled(void) |
50 | { | 48 | { |
51 | unsigned long flags = __raw_local_save_flags(); | 49 | return arch_irqs_disabled_flags(arch_local_save_flags()); |
52 | |||
53 | return raw_irqs_disabled_flags(flags); | ||
54 | } | 50 | } |
55 | 51 | ||
56 | static inline unsigned long __raw_local_irq_save(void) | 52 | static inline unsigned long arch_local_irq_save(void) |
57 | { | 53 | { |
58 | unsigned long flags = __raw_local_save_flags(); | 54 | unsigned long flags = arch_local_save_flags(); |
59 | 55 | ||
60 | raw_local_irq_disable(); | 56 | arch_local_irq_disable(); |
61 | 57 | ||
62 | return flags; | 58 | return flags; |
63 | } | 59 | } |
64 | 60 | ||
65 | #define raw_local_irq_save(flags) \ | ||
66 | do { (flags) = __raw_local_irq_save(); } while (0) | ||
67 | |||
68 | #endif /* __ASM_AVR32_IRQFLAGS_H */ | 61 | #endif /* __ASM_AVR32_IRQFLAGS_H */ |