lib: sbi: Pass trap context pointer to sbi_ecall_handler()

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>
This commit is contained in:
Anup Patel 2024-03-11 18:15:20 +05:30 committed by Anup Patel
parent 43d346c0c1
commit 5b11f16c3c
3 changed files with 5 additions and 4 deletions

View File

@ -18,7 +18,7 @@
#define SBI_OPENSBI_IMPID 1 #define SBI_OPENSBI_IMPID 1
struct sbi_trap_regs; struct sbi_trap_regs;
struct sbi_trap_info; struct sbi_trap_context;
struct sbi_ecall_return { struct sbi_ecall_return {
/* Return flag to skip register update */ /* 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); 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); int sbi_ecall_init(void);

View File

@ -95,9 +95,10 @@ void sbi_ecall_unregister_extension(struct sbi_ecall_extension *ext)
sbi_list_del_init(&ext->head); 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; int ret = 0;
struct sbi_trap_regs *regs = &tcntx->regs;
struct sbi_ecall_extension *ext; struct sbi_ecall_extension *ext;
unsigned long extension_id = regs->a7; unsigned long extension_id = regs->a7;
unsigned long func_id = regs->a6; unsigned long func_id = regs->a6;

View File

@ -299,7 +299,7 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx)
break; break;
case CAUSE_SUPERVISOR_ECALL: case CAUSE_SUPERVISOR_ECALL:
case CAUSE_MACHINE_ECALL: case CAUSE_MACHINE_ECALL:
rc = sbi_ecall_handler(regs); rc = sbi_ecall_handler(tcntx);
msg = "ecall handler failed"; msg = "ecall handler failed";
break; break;
case CAUSE_LOAD_ACCESS: case CAUSE_LOAD_ACCESS: