linux/arch/arm64/include/asm/kvm_coproc.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2012,2013 - ARM Ltd
   3 * Author: Marc Zyngier <marc.zyngier@arm.com>
   4 *
   5 * Derived from arch/arm/include/asm/kvm_coproc.h
   6 * Copyright (C) 2012 Rusty Russell IBM Corporation
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License version 2 as
  10 * published by the Free Software Foundation.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 *
  17 * You should have received a copy of the GNU General Public License
  18 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  19 */
  20
  21#ifndef __ARM64_KVM_COPROC_H__
  22#define __ARM64_KVM_COPROC_H__
  23
  24#include <linux/kvm_host.h>
  25
  26void kvm_reset_sys_regs(struct kvm_vcpu *vcpu);
  27
  28struct kvm_sys_reg_table {
  29        const struct sys_reg_desc *table;
  30        size_t num;
  31};
  32
  33struct kvm_sys_reg_target_table {
  34        struct kvm_sys_reg_table table64;
  35        struct kvm_sys_reg_table table32;
  36};
  37
  38void kvm_register_target_sys_reg_table(unsigned int target,
  39                                       struct kvm_sys_reg_target_table *table);
  40
  41int kvm_handle_cp14_load_store(struct kvm_vcpu *vcpu, struct kvm_run *run);
  42int kvm_handle_cp14_access(struct kvm_vcpu *vcpu, struct kvm_run *run);
  43int kvm_handle_cp15_32(struct kvm_vcpu *vcpu, struct kvm_run *run);
  44int kvm_handle_cp15_64(struct kvm_vcpu *vcpu, struct kvm_run *run);
  45int kvm_handle_sys_reg(struct kvm_vcpu *vcpu, struct kvm_run *run);
  46
  47#define kvm_coproc_table_init kvm_sys_reg_table_init
  48void kvm_sys_reg_table_init(void);
  49
  50struct kvm_one_reg;
  51int kvm_arm_copy_sys_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices);
  52int kvm_arm_sys_reg_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *);
  53int kvm_arm_sys_reg_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *);
  54unsigned long kvm_arm_num_sys_reg_descs(struct kvm_vcpu *vcpu);
  55
  56#endif /* __ARM64_KVM_COPROC_H__ */
  57