target-arm: Load correct access bits from ARMv5 level 2 page table descriptors
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 26 Feb 2014 17:19:59 +0000 (17:19 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Wed, 26 Feb 2014 17:19:59 +0000 (17:19 +0000)
commitc10f7fc3d167799f19d2184f05012b24cc56878d
treecc963630391501f9697d51a4b4ca53377850c34b
parentcf143ad35018c5fc1da6365b45acda2b34aba90a
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
target-arm/helper.c