aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnup Patel <apatel@ventanamicro.com>2024-03-11 18:00:50 +0530
committerAnup Patel <anup@brainfault.org>2024-03-19 11:31:35 +0530
commit43d346c0c1d3817d863741c3c523ab6e0c87cc6f (patch)
tree5b06f52ff08b78f2eb47cdf9e9dd2e8ef49b7ec4
parentd84e7eb7f0848225e10131ca4b9e1571d78cdabd (diff)
downloadopensbi-43d346c0c1d3817d863741c3c523ab6e0c87cc6f.zip
opensbi-43d346c0c1d3817d863741c3c523ab6e0c87cc6f.tar.gz
opensbi-43d346c0c1d3817d863741c3c523ab6e0c87cc6f.tar.bz2
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>
-rw-r--r--include/sbi/riscv_encoding.h2
-rw-r--r--lib/sbi/sbi_trap.c13
2 files changed, 8 insertions, 7 deletions
diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
index 46bbeed..d914828 100644
--- a/include/sbi/riscv_encoding.h
+++ b/include/sbi/riscv_encoding.h
@@ -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
diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c
index 72b1788..2462763 100644
--- a/lib/sbi/sbi_trap.c
+++ b/lib/sbi/sbi_trap.c
@@ -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;
}