lib: sbi: Pass trap context pointer to sbi_ecall_handler()
authorAnup Patel <apatel@ventanamicro.com>
Mon, 11 Mar 2024 12:45:20 +0000 (18:15 +0530)
committerAnup Patel <anup@brainfault.org>
Tue, 19 Mar 2024 06:01:39 +0000 (11:31 +0530)
To be consistent with other trap handlers, pass trap context pointer
to sbi_ecall_handler().

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Samuel Holland <samuel.holland@sifive.com>
Tested-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Clément Léger <cleger@rivosinc.com>
include/sbi/sbi_ecall.h
lib/sbi/sbi_ecall.c
lib/sbi/sbi_trap.c

index 0bf42d16e272fdadf366ee5dd323118328ff729e..0b35eff76a1936212895b2dbb41e868deaf4a195 100644 (file)
@@ -18,7 +18,7 @@
 #define SBI_OPENSBI_IMPID              1
 
 struct sbi_trap_regs;
-struct sbi_trap_info;
+struct sbi_trap_context;
 
 struct sbi_ecall_return {
        /* Return flag to skip register update */
@@ -87,7 +87,7 @@ int sbi_ecall_register_extension(struct sbi_ecall_extension *ext);
 
 void sbi_ecall_unregister_extension(struct sbi_ecall_extension *ext);
 
-int sbi_ecall_handler(struct sbi_trap_regs *regs);
+int sbi_ecall_handler(struct sbi_trap_context *tcntx);
 
 int sbi_ecall_init(void);
 
index 631c5dd168d5af9bb5f399e93105c4748691ebc0..d4fc58c59d7dd029be8a4e97820b571c45f67374 100644 (file)
@@ -95,9 +95,10 @@ void sbi_ecall_unregister_extension(struct sbi_ecall_extension *ext)
                sbi_list_del_init(&ext->head);
 }
 
-int sbi_ecall_handler(struct sbi_trap_regs *regs)
+int sbi_ecall_handler(struct sbi_trap_context *tcntx)
 {
        int ret = 0;
+       struct sbi_trap_regs *regs = &tcntx->regs;
        struct sbi_ecall_extension *ext;
        unsigned long extension_id = regs->a7;
        unsigned long func_id = regs->a6;
index 2462763699f0ad21cc3f2850a15861a36bb0cdfc..060cec613b0689a8ced54dde5e07a3b014be8f37 100644 (file)
@@ -299,7 +299,7 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx)
                break;
        case CAUSE_SUPERVISOR_ECALL:
        case CAUSE_MACHINE_ECALL:
-               rc  = sbi_ecall_handler(regs);
+               rc  = sbi_ecall_handler(tcntx);
                msg = "ecall handler failed";
                break;
        case CAUSE_LOAD_ACCESS: