diff options
author | Hollis Blanchard <hollisb@us.ibm.com> | 2008-11-05 09:36:16 -0600 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-12-31 16:52:21 +0200 |
commit | 75f74f0dbe086c239b4b0cc5ed75b903ea3e663f (patch) | |
tree | c6774128934667d1c82a6e458d9a4233574a95a4 /arch/powerpc/kvm/44x_tlb.h | |
parent | c381a04313e7c0fb04246b1ff711e0b5726de6c0 (diff) | |
download | op-kernel-dev-75f74f0dbe086c239b4b0cc5ed75b903ea3e663f.zip op-kernel-dev-75f74f0dbe086c239b4b0cc5ed75b903ea3e663f.tar.gz |
KVM: ppc: refactor instruction emulation into generic and core-specific pieces
Cores provide 3 emulation hooks, implemented for example in the new
4xx_emulate.c:
kvmppc_core_emulate_op
kvmppc_core_emulate_mtspr
kvmppc_core_emulate_mfspr
Strictly speaking the last two aren't necessary, but provide for more
informative error reporting ("unknown SPR").
Long term I'd like to have instruction decoding autogenerated from tables of
opcodes, and that way we could aggregate universal, Book E, and core-specific
instructions more easily and without redundant switch statements.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/44x_tlb.h')
-rw-r--r-- | arch/powerpc/kvm/44x_tlb.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/44x_tlb.h b/arch/powerpc/kvm/44x_tlb.h index 357d79a..b1029af 100644 --- a/arch/powerpc/kvm/44x_tlb.h +++ b/arch/powerpc/kvm/44x_tlb.h @@ -31,6 +31,10 @@ extern struct kvmppc_44x_tlbe *kvmppc_44x_itlb_search(struct kvm_vcpu *vcpu, gva_t eaddr); extern void kvmppc_tlbe_set_modified(struct kvm_vcpu *vcpu, unsigned int i); +extern int kvmppc_44x_emul_tlbsx(struct kvm_vcpu *vcpu, u8 rt, u8 ra, u8 rb, + u8 rc); +extern int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws); + /* TLB helper functions */ static inline unsigned int get_tlb_size(const struct kvmppc_44x_tlbe *tlbe) { |