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

powerpc/64s: Merge HV and non-HV paths for doorbell IRQ replay

This results in smaller code, and fewer branches. This relies on the
fact that both the 0xe80 and 0xa00 handlers call the same upper level
code, namely doorbell_exception().
Signed-off-by: NNicholas Piggin <npiggin@gmail.com>
[mpe: Mention we rely on the implementation of the 0xe80/0xa00 handlers]
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 6f881eae
...@@ -966,11 +966,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) ...@@ -966,11 +966,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
#ifdef CONFIG_PPC_BOOK3E #ifdef CONFIG_PPC_BOOK3E
cmpwi cr0,r3,0x280 cmpwi cr0,r3,0x280
#else #else
BEGIN_FTR_SECTION cmpwi cr0,r3,0xa00
cmpwi cr0,r3,0xe80
FTR_SECTION_ELSE
cmpwi cr0,r3,0xa00
ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
#endif /* CONFIG_PPC_BOOK3E */ #endif /* CONFIG_PPC_BOOK3E */
bne 1f bne 1f
addi r3,r1,STACK_FRAME_OVERHEAD; addi r3,r1,STACK_FRAME_OVERHEAD;
......
...@@ -1676,7 +1676,7 @@ _GLOBAL(__replay_interrupt) ...@@ -1676,7 +1676,7 @@ _GLOBAL(__replay_interrupt)
cmpwi r3,0x500 cmpwi r3,0x500
beq hardware_interrupt_common beq hardware_interrupt_common
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
cmpwi r3,0xe80 cmpwi r3,0xa00
beq h_doorbell_common_msgclr beq h_doorbell_common_msgclr
cmpwi r3,0xea0 cmpwi r3,0xea0
beq h_virt_irq_common beq h_virt_irq_common
......
...@@ -207,8 +207,6 @@ notrace unsigned int __check_irq_replay(void) ...@@ -207,8 +207,6 @@ notrace unsigned int __check_irq_replay(void)
#else #else
if (happened & PACA_IRQ_DBELL) { if (happened & PACA_IRQ_DBELL) {
local_paca->irq_happened &= ~PACA_IRQ_DBELL; local_paca->irq_happened &= ~PACA_IRQ_DBELL;
if (cpu_has_feature(CPU_FTR_HVMODE))
return 0xe80;
return 0xa00; return 0xa00;
} }
#endif /* CONFIG_PPC_BOOK3E */ #endif /* CONFIG_PPC_BOOK3E */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册