cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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