qemu-patch-raspberry4/target-ppc
David Gibson 75d5ec89c0 mmu-hash*: Correctly mask RPN from hash PTE
BEHAVIOUR CHANGE

At present we take the whole of word 1 of the hash PTE as the real page
number used to calculate the translated address.  This is incorrect,
because it leaves the flags from the low bits of PTE word 1 in place in the
rpm.  We mostly get away with that because the value is later masked by
TARGET_PAGE_MASK.

More recent 64-bit CPUs also have a small number of flag bits (PP0 and
KEY) in the top bits of PTE word 1.  Any guest which used those bits would
fail with the current code.

This patch fixes the problem by correctly masking out the RPN field of
PTE word 1.  This is safe, even for older CPUs which didn't have PP0 and
KEY, because although the RPN notionally extended to the very top of PTE
word 1, none of those CPUs actually implemented that many real address
bits.

We add analogous masking to the 32-bit code, even though it also doesn't
have the high flag bits, for consistency and clarity.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
2013-03-22 15:28:53 +01:00
..
cpu-models.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
cpu-models.h target-ppc: Move CPU aliases out of translate_init.c 2013-03-08 21:04:53 +01:00
cpu-qom.h cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
cpu.h mmu-hash*: Add header file for definitions 2013-03-22 15:28:48 +01:00
excp_helper.c cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
fpu_helper.c PPC/GDB: handle read and write of fpscr 2013-03-22 15:28:46 +01:00
helper.h target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
helper_regs.h cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
int_helper.c target-ppc: Split out SO, OV, CA fields from XER 2013-02-23 17:25:30 +00:00
kvm.c mmu-hash*: Add header file for definitions 2013-03-22 15:28:48 +01:00
kvm_ppc.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
kvm_ppc.h PPC: KVM: Add support for EPR with KVM 2013-01-18 19:06:57 +01:00
machine.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
Makefile.objs target-ppc: Disentangle pte_check() 2013-03-22 15:28:47 +01:00
mem_helper.c PPC: Unify dcbzl code path 2013-02-01 01:52:02 +01:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
mfrom_table_gen.c fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
misc_helper.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
mmu-hash32.c mmu-hash*: Correctly mask RPN from hash PTE 2013-03-22 15:28:53 +01:00
mmu-hash32.h mmu-hash32: Clean up BAT matching logic 2013-03-22 15:28:51 +01:00
mmu-hash64.c mmu-hash*: Correctly mask RPN from hash PTE 2013-03-22 15:28:53 +01:00
mmu-hash64.h mmu-hash*: Separate PTEG searching from permissions checking 2013-03-22 15:28:50 +01:00
mmu_helper.c target-ppc: mmu_ctx_t should not be a global type 2013-03-22 15:28:48 +01:00
STATUS Fix typos in comments (chek -> check) 2011-05-22 22:31:45 +01:00
timebase_helper.c ppc: Avoid AREG0 for timebase helpers 2012-06-24 01:04:43 +02:00
translate.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
translate_init.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00