lib: sbi: Remove regs parameter from trap irq handling functions
authorAnup Patel <apatel@ventanamicro.com>
Mon, 11 Mar 2024 12:30:50 +0000 (18:00 +0530)
committerAnup Patel <anup@brainfault.org>
Tue, 19 Mar 2024 06:01:35 +0000 (11:31 +0530)
The trap irq handling functions no longer require regs parameter
so remove it.

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Samuel Holland <samuel.holland@sifive.com>
Tested-by: Samuel Holland <samuel.holland@sifive.com>
include/sbi/riscv_encoding.h
lib/sbi/sbi_trap.c

index 46bbeed04f44d55c96f561c14cb4c64dc9c21650..d914828e13afa60057c149fbd35a35399a9de840 100644 (file)
@@ -80,6 +80,8 @@
 #define HSTATUS_GVA                    _UL(0x00000040)
 #define HSTATUS_VSBE                   _UL(0x00000020)
 
+#define MCAUSE_IRQ_MASK                        (_UL(1) << (__riscv_xlen - 1))
+
 #define IRQ_S_SOFT                     1
 #define IRQ_VS_SOFT                    2
 #define IRQ_M_SOFT                     3
index 72b1788153b2cbe1f801d322a39f9d397023b793..2462763699f0ad21cc3f2850a15861a36bb0cdfc 100644 (file)
@@ -198,10 +198,9 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs,
        return 0;
 }
 
-static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause)
+static int sbi_trap_nonaia_irq(unsigned long irq)
 {
-       mcause &= ~(1UL << (__riscv_xlen - 1));
-       switch (mcause) {
+       switch (irq) {
        case IRQ_M_TIMER:
                sbi_timer_process();
                break;
@@ -217,7 +216,7 @@ static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause)
        return 0;
 }
 
-static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause)
+static int sbi_trap_aia_irq(void)
 {
        int rc;
        unsigned long mtopi;
@@ -273,12 +272,12 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx)
        tcntx->prev_context = sbi_trap_get_context(scratch);
        sbi_trap_set_context(scratch, tcntx);
 
-       if (mcause & (1UL << (__riscv_xlen - 1))) {
+       if (mcause & MCAUSE_IRQ_MASK) {
                if (sbi_hart_has_extension(sbi_scratch_thishart_ptr(),
                                           SBI_HART_EXT_SMAIA))
-                       rc = sbi_trap_aia_irq(regs, mcause);
+                       rc = sbi_trap_aia_irq();
                else
-                       rc = sbi_trap_nonaia_irq(regs, mcause);
+                       rc = sbi_trap_nonaia_irq(mcause & ~MCAUSE_IRQ_MASK);
                msg = "unhandled local interrupt";
                goto trap_done;
        }