arm_hypercalls.h (1261B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (C) 2019 Arm Ltd. */ 3 4#ifndef __KVM_ARM_HYPERCALLS_H 5#define __KVM_ARM_HYPERCALLS_H 6 7#include <asm/kvm_emulate.h> 8 9int kvm_hvc_call_handler(struct kvm_vcpu *vcpu); 10 11static inline u32 smccc_get_function(struct kvm_vcpu *vcpu) 12{ 13 return vcpu_get_reg(vcpu, 0); 14} 15 16static inline unsigned long smccc_get_arg1(struct kvm_vcpu *vcpu) 17{ 18 return vcpu_get_reg(vcpu, 1); 19} 20 21static inline unsigned long smccc_get_arg2(struct kvm_vcpu *vcpu) 22{ 23 return vcpu_get_reg(vcpu, 2); 24} 25 26static inline unsigned long smccc_get_arg3(struct kvm_vcpu *vcpu) 27{ 28 return vcpu_get_reg(vcpu, 3); 29} 30 31static inline void smccc_set_retval(struct kvm_vcpu *vcpu, 32 unsigned long a0, 33 unsigned long a1, 34 unsigned long a2, 35 unsigned long a3) 36{ 37 vcpu_set_reg(vcpu, 0, a0); 38 vcpu_set_reg(vcpu, 1, a1); 39 vcpu_set_reg(vcpu, 2, a2); 40 vcpu_set_reg(vcpu, 3, a3); 41} 42 43struct kvm_one_reg; 44 45void kvm_arm_init_hypercalls(struct kvm *kvm); 46int kvm_arm_get_fw_num_regs(struct kvm_vcpu *vcpu); 47int kvm_arm_copy_fw_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices); 48int kvm_arm_get_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); 49int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); 50 51#endif