qemu/target-arm
Peter Maydell fc1891c74a target-arm: Handle "extended small page" descriptors correctly
The old ARMv5-style page table format includes a kind of second level
descriptor named the "extended small page" format, whose primary purpose
is to allow specification of the TEX memory attribute bits on a 4K page.
This exists on ARMv6 and also (as an implementation extension) on XScale
CPUs; it's UNPREDICTABLE on v5.

We were mishandling this in two ways:
 (1) we weren't implementing it for v6 (probably never noticed because
Linux will use the new-style v6 page table format there)
 (2) we were not correctly setting the page_size, which is 4K, not 1K

The latter bug went unnoticed for years because the only thing which
the page_size affects is which TLB entries get flushed when the guest
does a TLB invalidate on an address in the page, and prior to commit
2f0d8631b7 we were doing a full TLB flush very frequently due to Linux's
habit of writing the SCTLR pointlessly a lot.

(We can assume that after commit 2f0d8631b7 the bug went unnoticed
for a year because nobody's actually using the Zaurus/XScale emulation...)

Report the correct page size for these descriptors, and permit them
on ARMv6 CPUs. This fixes a problem where a kernel image for Zaurus
can boot the kernel OK but gets random segfaults when it tries to
run userspace programs.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1432844085-16441-1-git-send-email-peter.maydell@linaro.org
2015-06-15 18:06:07 +01:00
..
arm-semi.c Pass semihosting exit code back to system. 2014-12-11 12:07:48 +00:00
arm_ldst.h softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
cpu-qom.h target-arm: Add ARMCPU secure property 2014-12-22 23:12:28 +00:00
cpu.c target-arm: Update interrupt handling to use target EL 2015-05-29 11:28:51 +01:00
cpu.h target-arm: Move TB flags down to fill gap 2015-05-29 11:28:53 +01:00
cpu64.c target-arm: cpu64: Add support for Cortex-A53 2015-05-18 16:41:08 +01:00
crypto_helper.c target-arm: crypto: fix BE host support 2015-01-16 11:54:29 +00:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
gdbstub64.c target-arm/gdbstub64.c: remove useless 'break' statement. 2014-04-17 21:34:06 +01:00
helper-a64.c target-arm: Update interrupt handling to use target EL 2015-05-29 11:28:51 +01:00
helper-a64.h target-arm: A64: Implement CRC instructions 2014-06-09 16:06:12 +01:00
helper.c target-arm: Handle "extended small page" descriptors correctly 2015-06-15 18:06:07 +01:00
helper.h target-arm: Add exception target el infrastructure 2015-05-29 11:28:50 +01:00
internals.h target-arm: Move setting of exception info into tlb_fill 2015-05-29 11:28:51 +01:00
iwmmxt_helper.c target-arm: Delete unused iwmmxt_msadb helper 2014-06-09 16:06:12 +01:00
kvm-consts.h target-arm: add missing PSCI constants needed for PSCI emulation 2014-10-24 12:19:12 +01:00
kvm-stub.c target-arm: Initialize cpreg list from KVM when using KVM 2013-06-25 18:16:10 +01:00
kvm.c kvm: introduce kvm_arch_msi_data_to_gsi 2015-06-02 14:56:25 +01:00
kvm32.c target-arm: kvm: save/restore mp state 2015-04-01 17:57:30 +01:00
kvm64.c target-arm: kvm64 fix save/restore of SPSR regs 2015-04-01 17:57:30 +01:00
kvm_arm.h target-arm: kvm: save/restore mp state 2015-04-01 17:57:30 +01:00
machine.c migration: Use normal VMStateDescriptions for Subsections 2015-06-12 06:53:57 +02:00
Makefile.objs target-arm: add emulation of PSCI calls for system emulation 2014-10-24 12:19:13 +01:00
neon_helper.c target-arm: add support for v8 VMULL.P64 instruction 2014-06-09 16:06:11 +01:00
op_addsub.h Correct spelling of licensed 2011-07-23 11:26:12 -05:00
op_helper.c target-arm: Correct check for non-EL3 2015-06-02 13:22:29 +01:00
psci.c target-arm: add emulation of PSCI calls for system emulation 2014-10-24 12:19:13 +01:00
translate-a64.c target-arm: Don't halt on WFI unless we don't have any work 2015-05-29 11:28:53 +01:00
translate.c target-arm: Avoid buffer overrun on UNPREDICTABLE ldrd/strd 2015-05-29 11:29:00 +01:00
translate.h target-arm: Extend FP checks to use an EL 2015-05-29 11:28:53 +01:00