1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2024 Rivos Inc. */
5 #define CREATE_TRACE_POINTS
8 long __sbi_base_ecall(int fid
)
12 ret
= sbi_ecall(SBI_EXT_BASE
, fid
, 0, 0, 0, 0, 0, 0);
16 return sbi_err_map_linux_errno(ret
.error
);
18 EXPORT_SYMBOL(__sbi_base_ecall
);
20 struct sbiret
__sbi_ecall(unsigned long arg0
, unsigned long arg1
,
21 unsigned long arg2
, unsigned long arg3
,
22 unsigned long arg4
, unsigned long arg5
,
27 trace_sbi_call(ext
, fid
);
29 register uintptr_t a0
asm ("a0") = (uintptr_t)(arg0
);
30 register uintptr_t a1
asm ("a1") = (uintptr_t)(arg1
);
31 register uintptr_t a2
asm ("a2") = (uintptr_t)(arg2
);
32 register uintptr_t a3
asm ("a3") = (uintptr_t)(arg3
);
33 register uintptr_t a4
asm ("a4") = (uintptr_t)(arg4
);
34 register uintptr_t a5
asm ("a5") = (uintptr_t)(arg5
);
35 register uintptr_t a6
asm ("a6") = (uintptr_t)(fid
);
36 register uintptr_t a7
asm ("a7") = (uintptr_t)(ext
);
38 : "+r" (a0
), "+r" (a1
)
39 : "r" (a2
), "r" (a3
), "r" (a4
), "r" (a5
), "r" (a6
), "r" (a7
)
44 trace_sbi_return(ext
, ret
.error
, ret
.value
);
48 EXPORT_SYMBOL(__sbi_ecall
);