qemu-e2k/target-arm
Peter Maydell c10f7fc3d1 target-arm: Load correct access bits from ARMv5 level 2 page table descriptors
In ARMv5 level 2 page table descriptors, each 4K or 64K page is split into
four subpages, each of which can have different access permission settings,
which are specified by four two-bit fields in the l2 descriptor. A
long-standing cut-and-paste error meant we were using the wrong bits in
the virtual address to select the access-permission field for 4K pages.

The error has presumably not been noticed before because most guests don't
make use of the ability to set the access permissions differently for
each 1K subpage: if the guest gives the whole page the same access
permissions it doesn't matter which of the 4 AP fields we select.
(The whole issue is irrelevant for ARMv7 CPUs anyway because subpages
aren't supported there.)

Reported-by: Vivek Rai <Vivek.Rai@emulex.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1392667690-8731-1-git-send-email-peter.maydell@linaro.org
2014-02-26 17:19:59 +00:00
..
arm-semi.c
cpu64.c target-arm: Switch ARMCPUInfo arrays to use terminator entries 2014-01-14 10:09:04 +10:00
cpu-qom.h ARM: cpu: add "reset_hivecs" property 2013-12-17 19:42:29 +00:00
cpu.c target-arm: Drop success/fail return from cpreg read and write functions 2014-02-20 10:35:54 +00:00
cpu.h target-arm: Drop success/fail return from cpreg read and write functions 2014-02-20 10:35:54 +00:00
crypto_helper.c target-arm: add support for v8 AES instructions 2013-12-17 19:42:25 +00:00
gdbstub64.c target-arm: Clean up handling of AArch64 PSTATE 2013-12-17 19:42:30 +00:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
helper-a64.c target-arm: A64: Implement remaining 3-same instructions 2014-02-20 10:35:50 +00:00
helper-a64.h target-arm: A64: Implement remaining 3-same instructions 2014-02-20 10:35:50 +00:00
helper.c target-arm: Load correct access bits from ARMv5 level 2 page table descriptors 2014-02-26 17:19:59 +00:00
helper.h target-arm: Split cpreg access checks out from read/write functions 2014-02-20 10:35:52 +00:00
iwmmxt_helper.c misc: Use new rotate functions 2013-09-25 21:23:05 +02:00
kvm32.c target-arm/kvm: Split 32 bit only code into its own file 2013-12-17 19:42:29 +00:00
kvm64.c target-arm: Add minimal KVM AArch64 support 2013-12-17 19:42:30 +00:00
kvm_arm.h target-arm: Provide '-cpu host' when running KVM 2013-12-10 13:28:49 +00:00
kvm-consts.h target-arm/kvm-consts.h: Define QEMU constants for known KVM CPUs 2014-02-20 10:35:50 +00:00
kvm-stub.c
kvm.c target-arm: Add minimal KVM AArch64 support 2013-12-17 19:42:30 +00:00
machine.c target-arm: Widen exclusive-access support struct fields to 64 bits 2014-01-08 19:07:20 +00:00
Makefile.objs target-arm: A64: add stubs for a64 specific helpers 2013-12-17 19:42:32 +00:00
neon_helper.c target-arm: A64: Implement remaining 3-same instructions 2014-02-20 10:35:50 +00:00
op_addsub.h
op_helper.c target-arm: Drop success/fail return from cpreg read and write functions 2014-02-20 10:35:54 +00:00
translate-a64.c target-arm: A64: Implement unprivileged load/store 2014-02-20 10:35:56 +00:00
translate.c target-arm: Remove unnecessary code now read/write fns can't fail 2014-02-20 10:35:54 +00:00
translate.h target-arm: Remove ARMCPU/CPUARMState from cpregs APIs used by decoder 2014-01-07 19:17:58 +00:00