2012-12-10 16:15:34 +00:00
/*
* Copyright ( C ) 2012 , 2013 - ARM Ltd
* Author : Marc Zyngier < marc . zyngier @ arm . com >
*
* Derived from arch / arm / include / asm / kvm_coproc . h
* Copyright ( C ) 2012 Rusty Russell IBM Corporation
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __ARM64_KVM_COPROC_H__
# define __ARM64_KVM_COPROC_H__
# include <linux/kvm_host.h>
void kvm_reset_sys_regs ( struct kvm_vcpu * vcpu ) ;
struct kvm_sys_reg_table {
const struct sys_reg_desc * table ;
size_t num ;
} ;
struct kvm_sys_reg_target_table {
struct kvm_sys_reg_table table64 ;
2013-02-07 10:32:33 +00:00
struct kvm_sys_reg_table table32 ;
2012-12-10 16:15:34 +00:00
} ;
void kvm_register_target_sys_reg_table ( unsigned int target ,
struct kvm_sys_reg_target_table * table ) ;
2013-02-07 10:32:33 +00:00
int kvm_handle_cp14_load_store ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
2014-04-24 10:27:13 +01:00
int kvm_handle_cp14_32 ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
int kvm_handle_cp14_64 ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
2013-02-07 10:32:33 +00:00
int kvm_handle_cp15_32 ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
int kvm_handle_cp15_64 ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
2012-12-10 16:15:34 +00:00
int kvm_handle_sys_reg ( struct kvm_vcpu * vcpu , struct kvm_run * run ) ;
# define kvm_coproc_table_init kvm_sys_reg_table_init
void kvm_sys_reg_table_init ( void ) ;
struct kvm_one_reg ;
int kvm_arm_copy_sys_reg_indices ( struct kvm_vcpu * vcpu , u64 __user * uindices ) ;
int kvm_arm_sys_reg_get_reg ( struct kvm_vcpu * vcpu , const struct kvm_one_reg * ) ;
int kvm_arm_sys_reg_set_reg ( struct kvm_vcpu * vcpu , const struct kvm_one_reg * ) ;
unsigned long kvm_arm_num_sys_reg_descs ( struct kvm_vcpu * vcpu ) ;
# endif /* __ARM64_KVM_COPROC_H__ */