powerpc: fixup hard_irq_disable semantics
This patch renames the raw hard_irq_{enable,disable} into __hard_irq_{enable,disable} and introduces a higher level hard_irq_disable() function that can be used by any code to enforce that IRQs are fully disabled, not only lazy disabled. The difference with the __ versions is that it will update some per-processor fields so that the kernel keeps track and properly re-enables them in the next local_irq_disable(); This prepares powerpc for my next patch that introduces hard_irq_disable() generically. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
2acdb16944
commit
e1fa2e136f
@@ -48,8 +48,15 @@ extern void iseries_handle_interrupts(void);
|
||||
|
||||
#define irqs_disabled() (local_get_flags() == 0)
|
||||
|
||||
#define hard_irq_enable() __mtmsrd(mfmsr() | MSR_EE, 1)
|
||||
#define hard_irq_disable() __mtmsrd(mfmsr() & ~MSR_EE, 1)
|
||||
#define __hard_irq_enable() __mtmsrd(mfmsr() | MSR_EE, 1)
|
||||
#define __hard_irq_disable() __mtmsrd(mfmsr() & ~MSR_EE, 1)
|
||||
|
||||
#define hard_irq_disable() \
|
||||
do { \
|
||||
__hard_irq_disable(); \
|
||||
get_paca()->soft_enabled = 0; \
|
||||
get_paca()->hard_enabled = 0; \
|
||||
} while(0)
|
||||
|
||||
#else
|
||||
|
||||
|
Reference in New Issue
Block a user