summaryrefslogtreecommitdiff
path: root/lib/sbi/sbi_ecall_replace.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sbi/sbi_ecall_replace.c')
-rw-r--r--lib/sbi/sbi_ecall_replace.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/sbi/sbi_ecall_replace.c b/lib/sbi/sbi_ecall_replace.c
index 21f3809..36a5c5c 100644
--- a/lib/sbi/sbi_ecall_replace.c
+++ b/lib/sbi/sbi_ecall_replace.c
@@ -14,11 +14,11 @@
#include <sbi/sbi_error.h>
#include <sbi/sbi_hart.h>
#include <sbi/sbi_ipi.h>
+#include <sbi/sbi_scratch.h>
#include <sbi/sbi_timer.h>
#include <sbi/sbi_tlb.h>
-static int sbi_ecall_time_handler(struct sbi_scratch *scratch,
- unsigned long extid, unsigned long funcid,
+static int sbi_ecall_time_handler(unsigned long extid, unsigned long funcid,
unsigned long *args, unsigned long *out_val,
struct sbi_trap_info *out_trap)
{
@@ -26,10 +26,11 @@ static int sbi_ecall_time_handler(struct sbi_scratch *scratch,
if (funcid == SBI_EXT_TIME_SET_TIMER) {
#if __riscv_xlen == 32
- sbi_timer_event_start(scratch,
+ sbi_timer_event_start(sbi_scratch_thishart_ptr(),
(((u64)args[1] << 32) | (u64)args[0]));
#else
- sbi_timer_event_start(scratch, (u64)args[0]);
+ sbi_timer_event_start(sbi_scratch_thishart_ptr(),
+ (u64)args[0]);
#endif
} else
ret = SBI_ENOTSUPP;
@@ -43,14 +44,14 @@ struct sbi_ecall_extension ecall_time = {
.handle = sbi_ecall_time_handler,
};
-static int sbi_ecall_rfence_handler(struct sbi_scratch *scratch,
- unsigned long extid, unsigned long funcid,
+static int sbi_ecall_rfence_handler(unsigned long extid, unsigned long funcid,
unsigned long *args, unsigned long *out_val,
struct sbi_trap_info *out_trap)
{
int ret = 0;
struct sbi_tlb_info tlb_info;
u32 source_hart = current_hartid();
+ struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
if (funcid >= SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA &&
funcid <= SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID)
@@ -106,15 +107,15 @@ struct sbi_ecall_extension ecall_rfence = {
.handle = sbi_ecall_rfence_handler,
};
-static int sbi_ecall_ipi_handler(struct sbi_scratch *scratch,
- unsigned long extid, unsigned long funcid,
+static int sbi_ecall_ipi_handler(unsigned long extid, unsigned long funcid,
unsigned long *args, unsigned long *out_val,
struct sbi_trap_info *out_trap)
{
int ret = 0;
if (funcid == SBI_EXT_IPI_SEND_IPI)
- ret = sbi_ipi_send_smode(scratch, args[0], args[1]);
+ ret = sbi_ipi_send_smode(sbi_scratch_thishart_ptr(),
+ args[0], args[1]);
else
ret = SBI_ENOTSUPP;