1 // SPDX-License-Identifier: GPL-2.0
3 * ucall support. A ucall is a "hypercall to userspace".
5 * Copyright (C) 2021 Western Digital Corporation or its affiliates.
11 #include "processor.h"
14 void *ucall_arch_get_ucall(struct kvm_vcpu *vcpu)
16 struct kvm_run *run = vcpu->run;
18 if (run->exit_reason == KVM_EXIT_RISCV_SBI &&
19 run->riscv_sbi.extension_id == KVM_RISCV_SELFTESTS_SBI_EXT) {
20 switch (run->riscv_sbi.function_id) {
21 case KVM_RISCV_SELFTESTS_SBI_UCALL:
22 return (void *)run->riscv_sbi.args[0];
23 case KVM_RISCV_SELFTESTS_SBI_UNEXP:
24 vcpu_dump(stderr, vcpu, 2);
25 TEST_ASSERT(0, "Unexpected trap taken by guest");