[PATCH v2 10/13] RISC-V: KVM: selftests: Move sbi_ecall to processor.c
Atish Patra
atishp at atishpatra.org
Tue Dec 19 13:53:22 PST 2023
On Thu, Dec 14, 2023 at 2:16 AM Andrew Jones <ajones at ventanamicro.com> wrote:
>
> sbi_ecall() isn't ucall specific and its prototype is already in
> processor.h. Move its implementation to processor.c.
>
> Signed-off-by: Andrew Jones <ajones at ventanamicro.com>
> ---
> .../selftests/kvm/lib/riscv/processor.c | 26 +++++++++++++++++++
> tools/testing/selftests/kvm/lib/riscv/ucall.c | 26 -------------------
> 2 files changed, 26 insertions(+), 26 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/testing/selftests/kvm/lib/riscv/processor.c
> index 6c25f7843ef4..6905a4348380 100644
> --- a/tools/testing/selftests/kvm/lib/riscv/processor.c
> +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c
> @@ -367,3 +367,29 @@ void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...)
> void assert_on_unhandled_exception(struct kvm_vcpu *vcpu)
> {
> }
> +
> +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)
> +{
> + 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);
> + register uintptr_t a3 asm ("a3") = (uintptr_t)(arg3);
> + register uintptr_t a4 asm ("a4") = (uintptr_t)(arg4);
> + register uintptr_t a5 asm ("a5") = (uintptr_t)(arg5);
> + register uintptr_t a6 asm ("a6") = (uintptr_t)(fid);
> + register uintptr_t a7 asm ("a7") = (uintptr_t)(ext);
> + struct sbiret ret;
> +
> + asm volatile (
> + "ecall"
> + : "+r" (a0), "+r" (a1)
> + : "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), "r" (a7)
> + : "memory");
> + ret.error = a0;
> + ret.value = a1;
> +
> + return ret;
> +}
> diff --git a/tools/testing/selftests/kvm/lib/riscv/ucall.c b/tools/testing/selftests/kvm/lib/riscv/ucall.c
> index fe6d1004f018..14ee17151a59 100644
> --- a/tools/testing/selftests/kvm/lib/riscv/ucall.c
> +++ b/tools/testing/selftests/kvm/lib/riscv/ucall.c
> @@ -10,32 +10,6 @@
> #include "kvm_util.h"
> #include "processor.h"
>
> -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)
> -{
> - 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);
> - register uintptr_t a3 asm ("a3") = (uintptr_t)(arg3);
> - register uintptr_t a4 asm ("a4") = (uintptr_t)(arg4);
> - register uintptr_t a5 asm ("a5") = (uintptr_t)(arg5);
> - register uintptr_t a6 asm ("a6") = (uintptr_t)(fid);
> - register uintptr_t a7 asm ("a7") = (uintptr_t)(ext);
> - struct sbiret ret;
> -
> - asm volatile (
> - "ecall"
> - : "+r" (a0), "+r" (a1)
> - : "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), "r" (a7)
> - : "memory");
> - ret.error = a0;
> - ret.value = a1;
> -
> - return ret;
> -}
> -
> void *ucall_arch_get_ucall(struct kvm_vcpu *vcpu)
> {
> struct kvm_run *run = vcpu->run;
> --
> 2.43.0
>
Reviewed-by: Atish Patra <atishp at rivosinc.com>
--
Regards,
Atish
More information about the linux-riscv
mailing list