diff options
Diffstat (limited to 'arch/powerpc/kvm/e500.h')
-rw-r--r-- | arch/powerpc/kvm/e500.h | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/arch/powerpc/kvm/e500.h b/arch/powerpc/kvm/e500.h index 51d13bd40153..a48af005c223 100644 --- a/arch/powerpc/kvm/e500.h +++ b/arch/powerpc/kvm/e500.h | |||
@@ -42,6 +42,8 @@ struct kvmppc_e500_tlb_params { | |||
42 | }; | 42 | }; |
43 | 43 | ||
44 | struct kvmppc_vcpu_e500 { | 44 | struct kvmppc_vcpu_e500 { |
45 | struct kvm_vcpu vcpu; | ||
46 | |||
45 | /* Unmodified copy of the guest's TLB -- shared with host userspace. */ | 47 | /* Unmodified copy of the guest's TLB -- shared with host userspace. */ |
46 | struct kvm_book3e_206_tlb_entry *gtlb_arch; | 48 | struct kvm_book3e_206_tlb_entry *gtlb_arch; |
47 | 49 | ||
@@ -85,8 +87,6 @@ struct kvmppc_vcpu_e500 { | |||
85 | 87 | ||
86 | struct page **shared_tlb_pages; | 88 | struct page **shared_tlb_pages; |
87 | int num_shared_tlb_pages; | 89 | int num_shared_tlb_pages; |
88 | |||
89 | struct kvm_vcpu vcpu; | ||
90 | }; | 90 | }; |
91 | 91 | ||
92 | static inline struct kvmppc_vcpu_e500 *to_e500(struct kvm_vcpu *vcpu) | 92 | static inline struct kvmppc_vcpu_e500 *to_e500(struct kvm_vcpu *vcpu) |
@@ -113,19 +113,22 @@ static inline struct kvmppc_vcpu_e500 *to_e500(struct kvm_vcpu *vcpu) | |||
113 | (MAS3_U0 | MAS3_U1 | MAS3_U2 | MAS3_U3 \ | 113 | (MAS3_U0 | MAS3_U1 | MAS3_U2 | MAS3_U3 \ |
114 | | E500_TLB_USER_PERM_MASK | E500_TLB_SUPER_PERM_MASK) | 114 | | E500_TLB_USER_PERM_MASK | E500_TLB_SUPER_PERM_MASK) |
115 | 115 | ||
116 | extern void kvmppc_dump_tlbs(struct kvm_vcpu *); | ||
117 | extern int kvmppc_e500_emul_mt_mmucsr0(struct kvmppc_vcpu_e500 *, ulong); | ||
118 | extern int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *); | ||
119 | extern int kvmppc_e500_emul_tlbre(struct kvm_vcpu *); | ||
120 | extern int kvmppc_e500_emul_tlbivax(struct kvm_vcpu *, int, int); | ||
121 | extern int kvmppc_e500_emul_tlbsx(struct kvm_vcpu *, int); | ||
122 | extern int kvmppc_e500_tlb_search(struct kvm_vcpu *, gva_t, unsigned int, int); | ||
123 | extern void kvmppc_e500_tlb_put(struct kvm_vcpu *); | 116 | extern void kvmppc_e500_tlb_put(struct kvm_vcpu *); |
124 | extern void kvmppc_e500_tlb_load(struct kvm_vcpu *, int); | 117 | extern void kvmppc_e500_tlb_load(struct kvm_vcpu *, int); |
125 | extern int kvmppc_e500_tlb_init(struct kvmppc_vcpu_e500 *); | ||
126 | extern void kvmppc_e500_tlb_uninit(struct kvmppc_vcpu_e500 *); | ||
127 | extern void kvmppc_e500_tlb_setup(struct kvmppc_vcpu_e500 *); | 118 | extern void kvmppc_e500_tlb_setup(struct kvmppc_vcpu_e500 *); |
128 | extern void kvmppc_e500_recalc_shadow_pid(struct kvmppc_vcpu_e500 *); | 119 | extern void kvmppc_e500_recalc_shadow_pid(struct kvmppc_vcpu_e500 *); |
120 | int kvmppc_e500_emul_mt_mmucsr0(struct kvmppc_vcpu_e500 *vcpu_e500, | ||
121 | ulong value); | ||
122 | int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu); | ||
123 | int kvmppc_e500_emul_tlbre(struct kvm_vcpu *vcpu); | ||
124 | int kvmppc_e500_emul_tlbivax(struct kvm_vcpu *vcpu, int ra, int rb); | ||
125 | int kvmppc_e500_emul_tlbsx(struct kvm_vcpu *vcpu, int rb); | ||
126 | int kvmppc_e500_tlb_search(struct kvm_vcpu *, gva_t, unsigned int, int); | ||
127 | int kvmppc_e500_tlb_init(struct kvmppc_vcpu_e500 *vcpu_e500); | ||
128 | void kvmppc_e500_tlb_uninit(struct kvmppc_vcpu_e500 *vcpu_e500); | ||
129 | |||
130 | void kvmppc_get_sregs_e500_tlb(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs); | ||
131 | int kvmppc_set_sregs_e500_tlb(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs); | ||
129 | 132 | ||
130 | /* TLB helper functions */ | 133 | /* TLB helper functions */ |
131 | static inline unsigned int | 134 | static inline unsigned int |