diff options
Diffstat (limited to 'arch/riscv/kernel/sbi.c')
| -rw-r--r-- | arch/riscv/kernel/sbi.c | 17 | 
1 files changed, 12 insertions, 5 deletions
| diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index e66e0999a800..837bdab2601b 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -14,6 +14,9 @@  #include <asm/smp.h>  #include <asm/tlbflush.h> +#define CREATE_TRACE_POINTS +#include <asm/trace.h> +  /* default SBI version is 0.1 */  unsigned long sbi_spec_version __ro_after_init = SBI_SPEC_VERSION_DEFAULT;  EXPORT_SYMBOL(sbi_spec_version); @@ -24,13 +27,15 @@ static int (*__sbi_rfence)(int fid, const struct cpumask *cpu_mask,  			   unsigned long start, unsigned long size,  			   unsigned long arg4, unsigned long arg5) __ro_after_init; -struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, -			unsigned long arg1, unsigned long arg2, -			unsigned long arg3, unsigned long arg4, -			unsigned long arg5) +struct sbiret __sbi_ecall(unsigned long arg0, unsigned long arg1, +			  unsigned long arg2, unsigned long arg3, +			  unsigned long arg4, unsigned long arg5, +			  int fid, int ext)  {  	struct sbiret ret; +	trace_sbi_call(ext, fid); +  	register uintptr_t a0 asm ("a0") = (uintptr_t)(arg0);  	register uintptr_t a1 asm ("a1") = (uintptr_t)(arg1);  	register uintptr_t a2 asm ("a2") = (uintptr_t)(arg2); @@ -46,9 +51,11 @@ struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0,  	ret.error = a0;  	ret.value = a1; +	trace_sbi_return(ext, ret.error, ret.value); +  	return ret;  } -EXPORT_SYMBOL(sbi_ecall); +EXPORT_SYMBOL(__sbi_ecall);  int sbi_err_map_linux_errno(int err)  { |