xen/arm: erratum 766422: decode thumb store during data abort
authorJulien Grall <julien.grall@linaro.org>
Thu, 8 Aug 2013 12:56:51 +0000 (13:56 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 20 Aug 2013 14:17:17 +0000 (15:17 +0100)
commit2960e5e2aabedb9a188fe7c0483c3df43875abf3
tree9466844b79c7b5044d5da67bbaec38e2e15894af
parente1b87f4e531e9ec257bc332859770f3c00b1fbca
xen/arm: erratum 766422: decode thumb store during data abort

From the errata document:

When a non-secure non-hypervisor memory operation instruction generates a
stage2 page table translation fault, a trap to the hypervisor will be triggered.
For an architecturally defined subset of instructions, the Hypervisor Syndrome
Register (HSR) will have the Instruction Syndrome Valid (ISV) bit set to 1’b1,
and the Rt field should reflect the source register (for stores) or destination
register for loads.
On Cortex-A15, for Thumb and ThumbEE stores, the Rt value may be incorrect
and should not be used, even if the ISV bit is set. All loads, and all ARM
instruction set loads and stores, will have the correct Rt value if the ISV
bit is set.

To avoid this issue, Xen needs to decode thumb store instruction and update
the transfer register.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/traps.c
xen/include/asm-arm/arm32/processor.h
xen/include/asm-arm/arm64/processor.h