2009-01-04 01:23:10 +03:00
/*
* Copyright ( C ) 2008 Freescale Semiconductor , Inc . All rights reserved .
*
* Author : Yu Liu , < yu . liu @ freescale . com >
*
* Description :
* This file is derived from arch / powerpc / include / asm / kvm_44x . h ,
* by Hollis Blanchard < hollisb @ us . ibm . com > .
*
* 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 .
*/
# ifndef __ASM_KVM_E500_H__
# define __ASM_KVM_E500_H__
# include <linux/kvm_host.h>
# define BOOKE_INTERRUPT_SIZE 36
# define E500_PID_NUM 3
# define E500_TLB_NUM 2
struct tlbe {
u32 mas1 ;
u32 mas2 ;
u32 mas3 ;
u32 mas7 ;
} ;
struct kvmppc_vcpu_e500 {
/* Unmodified copy of the guest's TLB. */
struct tlbe * guest_tlb [ E500_TLB_NUM ] ;
/* TLB that's actually used when the guest is running. */
struct tlbe * shadow_tlb [ E500_TLB_NUM ] ;
/* Pages which are referenced in the shadow TLB. */
struct page * * shadow_pages [ E500_TLB_NUM ] ;
unsigned int guest_tlb_size [ E500_TLB_NUM ] ;
unsigned int shadow_tlb_size [ E500_TLB_NUM ] ;
unsigned int guest_tlb_nv [ E500_TLB_NUM ] ;
u32 host_pid [ E500_PID_NUM ] ;
u32 pid [ E500_PID_NUM ] ;
u32 mas0 ;
u32 mas1 ;
u32 mas2 ;
u32 mas3 ;
u32 mas4 ;
u32 mas5 ;
u32 mas6 ;
u32 mas7 ;
2010-01-22 13:50:29 +03:00
u32 l1csr0 ;
2009-01-04 01:23:10 +03:00
u32 l1csr1 ;
u32 hid0 ;
u32 hid1 ;
2010-01-22 14:36:53 +03:00
u32 tlb0cfg ;
u32 tlb1cfg ;
2009-01-04 01:23:10 +03:00
struct kvm_vcpu vcpu ;
} ;
static inline struct kvmppc_vcpu_e500 * to_e500 ( struct kvm_vcpu * vcpu )
{
return container_of ( vcpu , struct kvmppc_vcpu_e500 , vcpu ) ;
}
# endif /* __ASM_KVM_E500_H__ */