This patch makes use of trap types in irq.c

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/include/asm/interrupt.h |  1 +
 arch/powerpc/kernel/irq.c            | 13 +++++--------
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/include/asm/interrupt.h 
b/arch/powerpc/include/asm/interrupt.h
index 8970990e3b08..44cde2e129b8 100644
--- a/arch/powerpc/include/asm/interrupt.h
+++ b/arch/powerpc/include/asm/interrupt.h
@@ -23,6 +23,7 @@
 #define INTERRUPT_INST_SEGMENT    0x480
 #define INTERRUPT_TRACE           0xd00
 #define INTERRUPT_H_DATA_STORAGE  0xe00
+#define INTERRUPT_HMI                  0xe60
 #define INTERRUPT_H_FAC_UNAVAIL   0xf80
 #ifdef CONFIG_PPC_BOOK3S
 #define INTERRUPT_DOORBELL        0xa00
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 893d3f8d6f47..72cb45393ef2 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -142,7 +142,7 @@ void replay_soft_interrupts(void)
         */
        if (IS_ENABLED(CONFIG_PPC_BOOK3S) && (local_paca->irq_happened & 
PACA_IRQ_HMI)) {
                local_paca->irq_happened &= ~PACA_IRQ_HMI;
-               regs.trap = 0xe60;
+               regs.trap = INTERRUPT_HMI;
                handle_hmi_exception(&regs);
                if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS))
                        hard_irq_disable();
@@ -150,7 +150,7 @@ void replay_soft_interrupts(void)
 
        if (local_paca->irq_happened & PACA_IRQ_DEC) {
                local_paca->irq_happened &= ~PACA_IRQ_DEC;
-               regs.trap = 0x900;
+               regs.trap = INTERRUPT_DECREMENTER;
                timer_interrupt(&regs);
                if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS))
                        hard_irq_disable();
@@ -158,7 +158,7 @@ void replay_soft_interrupts(void)
 
        if (local_paca->irq_happened & PACA_IRQ_EE) {
                local_paca->irq_happened &= ~PACA_IRQ_EE;
-               regs.trap = 0x500;
+               regs.trap = INTERRUPT_EXTERNAL;
                do_IRQ(&regs);
                if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS))
                        hard_irq_disable();
@@ -166,10 +166,7 @@ void replay_soft_interrupts(void)
 
        if (IS_ENABLED(CONFIG_PPC_DOORBELL) && (local_paca->irq_happened & 
PACA_IRQ_DBELL)) {
                local_paca->irq_happened &= ~PACA_IRQ_DBELL;
-               if (IS_ENABLED(CONFIG_PPC_BOOK3E))
-                       regs.trap = 0x280;
-               else
-                       regs.trap = 0xa00;
+               regs.trap = INTERRUPT_DOORBELL;
                doorbell_exception(&regs);
                if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS))
                        hard_irq_disable();
@@ -178,7 +175,7 @@ void replay_soft_interrupts(void)
        /* Book3E does not support soft-masking PMI interrupts */
        if (IS_ENABLED(CONFIG_PPC_BOOK3S) && (local_paca->irq_happened & 
PACA_IRQ_PMI)) {
                local_paca->irq_happened &= ~PACA_IRQ_PMI;
-               regs.trap = 0xf00;
+               regs.trap = INTERRUPT_PERFMON;
                performance_monitor_exception(&regs);
                if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS))
                        hard_irq_disable();
-- 
2.25.0

Reply via email to