forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix the IRQ flag handling naming. In linux/irqflags.h under one configuration, it maps: local_irq_enable() -> raw_local_irq_enable() local_irq_disable() -> raw_local_irq_disable() local_irq_save() -> raw_local_irq_save() ... and under the other configuration, it maps: raw_local_irq_enable() -> local_irq_enable() raw_local_irq_disable() -> local_irq_disable() raw_local_irq_save() -> local_irq_save() ... This is quite confusing. There should be one set of names expected of the arch, and this should be wrapped to give another set of names that are expected by users of this facility. Change this to have the arch provide: flags = arch_local_save_flags() flags = arch_local_irq_save() arch_local_irq_restore(flags) arch_local_irq_disable() arch_local_irq_enable() arch_irqs_disabled_flags(flags) arch_irqs_disabled() arch_safe_halt() Then linux/irqflags.h wraps these to provide: raw_local_save_flags(flags) raw_local_irq_save(flags) raw_local_irq_restore(flags) raw_local_irq_disable() raw_local_irq_enable() raw_irqs_disabled_flags(flags) raw_irqs_disabled() raw_safe_halt() with type checking on the flags 'arguments', and then wraps those to provide: local_save_flags(flags) local_irq_save(flags) local_irq_restore(flags) local_irq_disable() local_irq_enable() irqs_disabled_flags(flags) irqs_disabled() safe_halt() with tracing included if enabled. The arch functions can now all be inline functions rather than some of them having to be macros. Signed-off-by: David Howells <[email protected]> [X86, FRV, MN10300] Signed-off-by: Chris Metcalf <[email protected]> [Tile] Signed-off-by: Michal Simek <[email protected]> [Microblaze] Tested-by: Catalin Marinas <[email protected]> [ARM] Acked-by: Thomas Gleixner <[email protected]> Acked-by: Haavard Skinnemoen <[email protected]> [AVR] Acked-by: Tony Luck <[email protected]> [IA-64] Acked-by: Hirokazu Takata <[email protected]> [M32R] Acked-by: Greg Ungerer <[email protected]> [M68K/M68KNOMMU] Acked-by: Ralf Baechle <[email protected]> [MIPS] Acked-by: Kyle McMartin <[email protected]> [PA-RISC] Acked-by: Paul Mackerras <[email protected]> [PowerPC] Acked-by: Martin Schwidefsky <[email protected]> [S390] Acked-by: Chen Liqin <[email protected]> [Score] Acked-by: Matt Fleming <[email protected]> [SH] Acked-by: David S. Miller <[email protected]> [Sparc] Acked-by: Chris Zankel <[email protected]> [Xtensa] Reviewed-by: Richard Henderson <[email protected]> [Alpha] Reviewed-by: Yoshinori Sato <[email protected]> [H8300] Cc: [email protected] [CRIS] Cc: [email protected] [CRIS] Cc: [email protected]
- Loading branch information
Showing
63 changed files
with
1,482 additions
and
1,158 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
#ifndef __ALPHA_IRQFLAGS_H | ||
#define __ALPHA_IRQFLAGS_H | ||
|
||
#include <asm/system.h> | ||
|
||
#define IPL_MIN 0 | ||
#define IPL_SW0 1 | ||
#define IPL_SW1 2 | ||
#define IPL_DEV0 3 | ||
#define IPL_DEV1 4 | ||
#define IPL_TIMER 5 | ||
#define IPL_PERF 6 | ||
#define IPL_POWERFAIL 6 | ||
#define IPL_MCHECK 7 | ||
#define IPL_MAX 7 | ||
|
||
#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK | ||
#undef IPL_MIN | ||
#define IPL_MIN __min_ipl | ||
extern int __min_ipl; | ||
#endif | ||
|
||
#define getipl() (rdps() & 7) | ||
#define setipl(ipl) ((void) swpipl(ipl)) | ||
|
||
static inline unsigned long arch_local_save_flags(void) | ||
{ | ||
return rdps(); | ||
} | ||
|
||
static inline void arch_local_irq_disable(void) | ||
{ | ||
setipl(IPL_MAX); | ||
barrier(); | ||
} | ||
|
||
static inline unsigned long arch_local_irq_save(void) | ||
{ | ||
unsigned long flags = swpipl(IPL_MAX); | ||
barrier(); | ||
return flags; | ||
} | ||
|
||
static inline void arch_local_irq_enable(void) | ||
{ | ||
barrier(); | ||
setipl(IPL_MIN); | ||
} | ||
|
||
static inline void arch_local_irq_restore(unsigned long flags) | ||
{ | ||
barrier(); | ||
setipl(flags); | ||
barrier(); | ||
} | ||
|
||
static inline bool arch_irqs_disabled_flags(unsigned long flags) | ||
{ | ||
return flags == IPL_MAX; | ||
} | ||
|
||
static inline bool arch_irqs_disabled(void) | ||
{ | ||
return arch_irqs_disabled_flags(getipl()); | ||
} | ||
|
||
#endif /* __ALPHA_IRQFLAGS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.