Encode run return values in an SPCI compatible way.
Bug: 141469322
Change-Id: I269a7797b72e1e7d36c153cd41050584db8415b3
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index 77b10e3..885a383 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -344,6 +344,14 @@
case SPCI_MSG_POLL_32:
*args = api_spci_msg_recv(false, current(), next);
return true;
+ case SPCI_RUN_32: {
+ struct vcpu *vcpu = current();
+ *args = hf_vcpu_run_return_encode(
+ api_vcpu_run((args->arg1 >> 16) & 0xffff,
+ args->arg1 & 0xffff, vcpu, next),
+ vcpu->vm->id, vcpu_index(vcpu));
+ return true;
+ }
}
return false;
@@ -441,11 +449,6 @@
vcpu->regs.r[0] = api_vcpu_get_count(args.arg1, vcpu);
break;
- case HF_VCPU_RUN:
- vcpu->regs.r[0] = hf_vcpu_run_return_encode(
- api_vcpu_run(args.arg1, args.arg2, vcpu, &next));
- break;
-
case HF_VM_CONFIGURE:
vcpu->regs.r[0] = api_vm_configure(
ipa_init(args.arg1), ipa_init(args.arg2), vcpu, &next);