qemu-patch-raspberry4/target
David Gibson 1d1be34d26 ppc: Clean up and QOMify hypercall emulation
The pseries machine type is a bit unusual in that it runs a paravirtualized
guest.  The guest expects to interact with a hypervisor, and qemu
emulates the functions of that hypervisor directly, rather than executing
hypervisor code within the emulated system.

To implement this in TCG, we need to intercept hypercall instructions and
direct them to the machine's hypercall handlers, rather than attempting to
perform a privilege change within TCG.  This is controlled by a global
hook - cpu_ppc_hypercall.

This cleanup makes the handling a little cleaner and more extensible than
a single global variable.  Instead, each CPU to have hypercalls intercepted
has a pointer set to a QOM object implementing a new virtual hypervisor
interface.  A method in that interface is called by TCG when it sees a
hypercall instruction.  It's possible we may want to add other methods in
future.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2017-01-31 10:10:13 +11:00
..
alpha migration: extend VMStateInfo 2017-01-24 17:54:47 +00:00
arm armv7m: R14 should reset to 0xffffffff 2017-01-27 15:29:08 +00:00
cris qom/cpu: move tlb_flush to cpu_common_reset 2017-01-13 14:24:31 +00:00
hppa target-hppa: Implement floating-point insns 2017-01-23 09:52:40 -08:00
i386 pc: Enable vmware-cpuid-freq CPU option for 2.9+ machine types 2017-01-27 18:07:58 +01:00
lm32 qom/cpu: move tlb_flush to cpu_common_reset 2017-01-13 14:24:31 +00:00
m68k This is the same as the v3 posted except a re-base and a few extra signoffs 2017-01-16 18:23:02 +00:00
microblaze cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
mips migration: extend VMStateInfo 2017-01-24 17:54:47 +00:00
moxie qom/cpu: move tlb_flush to cpu_common_reset 2017-01-13 14:24:31 +00:00
nios2 nios2: Add architecture emulation support 2017-01-24 13:10:35 -08:00
openrisc cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
ppc ppc: Clean up and QOMify hypercall emulation 2017-01-31 10:10:13 +11:00
s390x s390x/kvm: fix cmma reset for KVM 2017-01-24 15:47:31 +01:00
sh4 cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
sparc migration: extend VMStateInfo 2017-01-24 17:54:47 +00:00
tilegx qom/cpu: move tlb_flush to cpu_common_reset 2017-01-13 14:24:31 +00:00
tricore qom/cpu: move tlb_flush to cpu_common_reset 2017-01-13 14:24:31 +00:00
unicore32 cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
xtensa target/xtensa updates: 2017-01-25 16:36:57 +00:00