qemu-e2k/hw/ppc
David Gibson dffdaf6162 mmu-hash*: Add hash pte load/store helpers
On real hardware the ppc hash page table is stored in memory; accordingly
our mmu emulation code can read a hash page table in guest memory.  But,
when paravirtualized under PAPR, the real hash page table is in host
memory, accessible to the guest only via hypercalls.  We model this by
also allowing the MMU emulation code to access a specially allocated hash
page table outside the guest's memory image. At present these two options
are implemented with some ugly conditionals at each access point in the mmu
emulation code.  In the implementation of the PAPR hypercalls, we assume
the external hash table.

This patch cleans things up by adding helpers to load and store from the
hash table for both 32-bit and 64-bit hash mmus.  The 64-bit versions
handle both the in-guest-memory and outside guest memory cases.  The 32-bit
versions only handle the in-guest-memory case since no 32-bit systems can
have an external hash table at present.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
2013-03-22 15:28:48 +01:00
..
Makefile.objs ppc: move more files to hw/ppc 2013-03-01 15:01:19 +01:00
e500-ccsr.h ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
e500.c cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
e500.h PPC: e500: Select MPIC v4.2 on ppce500 platform 2013-01-25 22:02:56 +01:00
e500plat.c ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
mac.h cuda: Move ADB bus into CUDA state 2013-01-25 22:02:55 +01:00
mac_newworld.c PPC: Fix dma interrupt 2013-03-08 21:04:53 +01:00
mac_oldworld.c fw_cfg: Remove FW_CFG_MAX_CPUS from fw_cfg_init() 2013-01-27 14:34:27 +01:00
mpc8544_guts.c ppc: move files referencing CPU to hw/ppc/ 2013-03-01 15:01:19 +01:00
mpc8544ds.c ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
ppc.c cpu: Pass CPUState to cpu_interrupt() 2013-03-12 10:35:55 +01:00
ppc4xx_devs.c ppc: move files referencing CPU to hw/ppc/ 2013-03-01 15:01:19 +01:00
ppc405_boards.c hw: move boards and other isolated files to hw/ARCH 2013-03-01 15:01:19 +01:00
ppc405_uc.c cpu: Pass CPUState to cpu_interrupt() 2013-03-12 10:35:55 +01:00
ppc440_bamboo.c hw: move boards and other isolated files to hw/ARCH 2013-03-01 15:01:19 +01:00
ppc_booke.c hw: move boards and other isolated files to hw/ARCH 2013-03-01 15:01:19 +01:00
ppce500_spin.c cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
prep.c pci_host: Drop write-only address_space field 2013-03-08 13:15:27 +01:00
spapr.c pseries: Move XICS initialization before cpu initialization 2013-03-22 15:28:45 +01:00
spapr_events.c ppc: move more files to hw/ppc 2013-03-01 15:01:19 +01:00
spapr_hcall.c mmu-hash*: Add hash pte load/store helpers 2013-03-22 15:28:48 +01:00
spapr_iommu.c ppc: move more files to hw/ppc 2013-03-01 15:01:19 +01:00
spapr_rtas.c cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
spapr_vio.c ppc: move files referencing CPU to hw/ppc/ 2013-03-01 15:01:19 +01:00
virtex_ml507.c hw: move boards and other isolated files to hw/ARCH 2013-03-01 15:01:19 +01:00
xics.c pseries: Move XICS initialization before cpu initialization 2013-03-22 15:28:45 +01:00