提交 63e40806 编写于 作者: N Nicholas Piggin 提交者: Michael Ellerman

powerpc/64s: save one more register in the masked interrupt handler

This frees up one more register (and takes advantage of that to
clean things up a little bit).

This register will be used in the following patch.
Signed-off-by: NNicholas Piggin <npiggin@gmail.com>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210617155116.2167984-9-npiggin@gmail.com
上级 dd152f70
...@@ -2633,7 +2633,6 @@ INT_DEFINE_END(soft_nmi) ...@@ -2633,7 +2633,6 @@ INT_DEFINE_END(soft_nmi)
* and run it entirely with interrupts hard disabled. * and run it entirely with interrupts hard disabled.
*/ */
EXC_COMMON_BEGIN(soft_nmi_common) EXC_COMMON_BEGIN(soft_nmi_common)
mfspr r11,SPRN_SRR0
mr r10,r1 mr r10,r1
ld r1,PACAEMERGSP(r13) ld r1,PACAEMERGSP(r13)
subi r1,r1,INT_FRAME_SIZE subi r1,r1,INT_FRAME_SIZE
...@@ -2668,19 +2667,24 @@ masked_Hinterrupt: ...@@ -2668,19 +2667,24 @@ masked_Hinterrupt:
.else .else
masked_interrupt: masked_interrupt:
.endif .endif
lbz r11,PACAIRQHAPPENED(r13) stw r9,PACA_EXGEN+EX_CCR(r13)
or r11,r11,r10 lbz r9,PACAIRQHAPPENED(r13)
stb r11,PACAIRQHAPPENED(r13) or r9,r9,r10
stb r9,PACAIRQHAPPENED(r13)
.if ! \hsrr
cmpwi r10,PACA_IRQ_DEC cmpwi r10,PACA_IRQ_DEC
bne 1f bne 1f
lis r10,0x7fff LOAD_REG_IMMEDIATE(r9, 0x7fffffff)
ori r10,r10,0xffff mtspr SPRN_DEC,r9
mtspr SPRN_DEC,r10
#ifdef CONFIG_PPC_WATCHDOG #ifdef CONFIG_PPC_WATCHDOG
lwz r9,PACA_EXGEN+EX_CCR(r13)
b soft_nmi_common b soft_nmi_common
#else #else
b 2f b 2f
#endif #endif
.endif
1: andi. r10,r10,PACA_IRQ_MUST_HARD_MASK 1: andi. r10,r10,PACA_IRQ_MUST_HARD_MASK
beq 2f beq 2f
xori r12,r12,MSR_EE /* clear MSR_EE */ xori r12,r12,MSR_EE /* clear MSR_EE */
...@@ -2689,17 +2693,19 @@ masked_interrupt: ...@@ -2689,17 +2693,19 @@ masked_interrupt:
.else .else
mtspr SPRN_SRR1,r12 mtspr SPRN_SRR1,r12
.endif .endif
ori r11,r11,PACA_IRQ_HARD_DIS ori r9,r9,PACA_IRQ_HARD_DIS
stb r11,PACAIRQHAPPENED(r13) stb r9,PACAIRQHAPPENED(r13)
2: /* done */ 2: /* done */
li r10,0 li r9,0
.if \hsrr .if \hsrr
stb r10,PACAHSRR_VALID(r13) stb r9,PACAHSRR_VALID(r13)
.else .else
stb r10,PACASRR_VALID(r13) stb r9,PACASRR_VALID(r13)
.endif .endif
ld r10,PACA_EXGEN+EX_CTR(r13)
mtctr r10 ld r9,PACA_EXGEN+EX_CTR(r13)
mtctr r9
lwz r9,PACA_EXGEN+EX_CCR(r13)
mtcrf 0x80,r9 mtcrf 0x80,r9
std r1,PACAR1(r13) std r1,PACAR1(r13)
ld r9,PACA_EXGEN+EX_R9(r13) ld r9,PACA_EXGEN+EX_R9(r13)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册