lib: sbi: Remove regs parameter from trap irq handling functions

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>
This commit is contained in:
Anup Patel
2024-03-11 18:00:50 +05:30
committed by Anup Patel
parent d84e7eb7f0
commit 43d346c0c1
2 changed files with 8 additions and 7 deletions

View File

@@ -80,6 +80,8 @@
#define HSTATUS_GVA _UL(0x00000040) #define HSTATUS_GVA _UL(0x00000040)
#define HSTATUS_VSBE _UL(0x00000020) #define HSTATUS_VSBE _UL(0x00000020)
#define MCAUSE_IRQ_MASK (_UL(1) << (__riscv_xlen - 1))
#define IRQ_S_SOFT 1 #define IRQ_S_SOFT 1
#define IRQ_VS_SOFT 2 #define IRQ_VS_SOFT 2
#define IRQ_M_SOFT 3 #define IRQ_M_SOFT 3

View File

@@ -198,10 +198,9 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs,
return 0; 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 (irq) {
switch (mcause) {
case IRQ_M_TIMER: case IRQ_M_TIMER:
sbi_timer_process(); sbi_timer_process();
break; break;
@@ -217,7 +216,7 @@ static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause)
return 0; return 0;
} }
static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause) static int sbi_trap_aia_irq(void)
{ {
int rc; int rc;
unsigned long mtopi; 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); tcntx->prev_context = sbi_trap_get_context(scratch);
sbi_trap_set_context(scratch, tcntx); 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(), if (sbi_hart_has_extension(sbi_scratch_thishart_ptr(),
SBI_HART_EXT_SMAIA)) SBI_HART_EXT_SMAIA))
rc = sbi_trap_aia_irq(regs, mcause); rc = sbi_trap_aia_irq();
else else
rc = sbi_trap_nonaia_irq(regs, mcause); rc = sbi_trap_nonaia_irq(mcause & ~MCAUSE_IRQ_MASK);
msg = "unhandled local interrupt"; msg = "unhandled local interrupt";
goto trap_done; goto trap_done;
} }