diff options
Diffstat (limited to 'lib/sbi/sbi_trap.c')
-rw-r--r-- | lib/sbi/sbi_trap.c | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index faab90a..86bab6d 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -15,6 +15,7 @@ #include <sbi/sbi_hart.h> #include <sbi/sbi_illegal_insn.h> #include <sbi/sbi_ipi.h> +#include <sbi/sbi_irqchip.h> #include <sbi/sbi_misaligned_ldst.h> #include <sbi/sbi_pmu.h> #include <sbi/sbi_scratch.h> @@ -195,27 +196,6 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, return 0; } -static int default_irqfn(struct sbi_trap_regs *regs) -{ - return SBI_ENODEV; -} - -static int (*ext_irqfn)(struct sbi_trap_regs *regs) = default_irqfn; - -/** - * Set external irq handler function - * - * This function is called by OpenSBI platform code to set a handler for - * external interrupts - * - * @param fn function pointer for handling external irqs - */ -void sbi_trap_set_external_irqfn(int (*fn)(struct sbi_trap_regs *regs)) -{ - if (fn) - ext_irqfn = fn; -} - static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause) { mcause &= ~(1UL << (__riscv_xlen - 1)); @@ -227,7 +207,7 @@ static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause) sbi_ipi_process(); break; case IRQ_M_EXT: - return ext_irqfn(regs); + return sbi_irqchip_process(regs); default: return SBI_ENOENT; }; @@ -250,7 +230,7 @@ static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause) sbi_ipi_process(); break; case IRQ_M_EXT: - rc = ext_irqfn(regs); + rc = sbi_irqchip_process(regs); if (rc) return rc; break; |