]>
Commit | Line | Data |
---|---|---|
55009c6e CD |
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 | ||
9 | int kvm_hvc_call_handler(struct kvm_vcpu *vcpu); | |
10 | ||
11 | static inline u32 smccc_get_function(struct kvm_vcpu *vcpu) | |
12 | { | |
13 | return vcpu_get_reg(vcpu, 0); | |
14 | } | |
15 | ||
16 | static inline unsigned long smccc_get_arg1(struct kvm_vcpu *vcpu) | |
17 | { | |
18 | return vcpu_get_reg(vcpu, 1); | |
19 | } | |
20 | ||
21 | static inline unsigned long smccc_get_arg2(struct kvm_vcpu *vcpu) | |
22 | { | |
23 | return vcpu_get_reg(vcpu, 2); | |
24 | } | |
25 | ||
26 | static inline unsigned long smccc_get_arg3(struct kvm_vcpu *vcpu) | |
27 | { | |
28 | return vcpu_get_reg(vcpu, 3); | |
29 | } | |
30 | ||
31 | static 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 | ||
85fbe08e RRA |
43 | struct kvm_one_reg; |
44 | ||
05714cab | 45 | void kvm_arm_init_hypercalls(struct kvm *kvm); |
85fbe08e RRA |
46 | int kvm_arm_get_fw_num_regs(struct kvm_vcpu *vcpu); |
47 | int kvm_arm_copy_fw_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices); | |
48 | int kvm_arm_get_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); | |
49 | int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); | |
50 | ||
55009c6e | 51 | #endif |