RISC-V: Remove do_IRQ() function
authorAnup Patel <anup.patel@wdc.com>
Mon, 1 Jun 2020 09:15:42 +0000 (14:45 +0530)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Wed, 10 Jun 2020 02:11:24 +0000 (19:11 -0700)
The only thing do_IRQ() does is call handle_arch_irq function
pointer. We can very well call handle_arch_irq function pointer
directly from assembly and remove do_IRQ() function hence this
patch.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
arch/riscv/kernel/entry.S
arch/riscv/kernel/irq.c

index 56d071b2c0a129e3393d7dbb6474537771bb4abc..cae7e6d4c7ef10593d095d2cf976c65e7dc3ebdb 100644 (file)
@@ -106,7 +106,9 @@ _save_context:
 
        /* Handle interrupts */
        move a0, sp /* pt_regs */
-       tail do_IRQ
+       la a1, handle_arch_irq
+       REG_L a1, (a1)
+       jr a1
 1:
        /*
         * Exceptions run with interrupts enabled or disabled depending on the
index eb8777642ce69c085db07e2f2445fd6f26bb38f1..7207fa08d78f86a26b0181c97c0c3761f4d49043 100644 (file)
@@ -16,12 +16,6 @@ int arch_show_interrupts(struct seq_file *p, int prec)
        return 0;
 }
 
-asmlinkage __visible void __irq_entry do_IRQ(struct pt_regs *regs)
-{
-       if (handle_arch_irq)
-               handle_arch_irq(regs);
-}
-
 void __init init_IRQ(void)
 {
        irqchip_init();