powerpc/64s: micro-optimise __hard_irq_enable() for mtmsrd L=1 support
authorNicholas Piggin <npiggin@gmail.com>
Fri, 4 May 2018 17:19:28 +0000 (03:19 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 3 Jun 2018 10:40:26 +0000 (20:40 +1000)
Book3S minimum supported ISA version now requires mtmsrd L=1. This
instruction does not require bits other than RI and EE to be supplied,
so __hard_irq_enable() and __hard_irq_disable() does not have to read
the kernel_msr from paca.

Interrupt entry code already relies on L=1 support.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/hw_irq.h

index 855e17d158b11f04120b9b39a352af91cedb95c8..3be8766427efe5fae790837b6c286c025b93880e 100644 (file)
@@ -228,8 +228,8 @@ static inline bool arch_irqs_disabled(void)
 #define __hard_irq_enable()    asm volatile("wrteei 1" : : : "memory")
 #define __hard_irq_disable()   asm volatile("wrteei 0" : : : "memory")
 #else
-#define __hard_irq_enable()    __mtmsrd(local_paca->kernel_msr | MSR_EE, 1)
-#define __hard_irq_disable()   __mtmsrd(local_paca->kernel_msr, 1)
+#define __hard_irq_enable()    __mtmsrd(MSR_EE|MSR_RI, 1)
+#define __hard_irq_disable()   __mtmsrd(MSR_RI, 1)
 #endif
 
 #define hard_irq_disable()     do {                                    \