]> git.proxmox.com Git - mirror_qemu.git/commit - target/arm/helper.c
target-arm: raise exception on misaligned LDREX operands
authorAndrew Baumann <Andrew.Baumann@microsoft.com>
Thu, 17 Dec 2015 13:37:13 +0000 (13:37 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 17 Dec 2015 13:37:13 +0000 (13:37 +0000)
commit30901475b91ef1f46304404ab4bfe89097f61b96
treeb84b67f2ea28863d0d1c13e2d5060d81efd733bb
parent580106df5ff1a86df317c8a8080e48e1694d785e
target-arm: raise exception on misaligned LDREX operands

Qemu does not generally perform alignment checks. However, the ARM ARM
requires implementation of alignment exceptions for a number of cases
including LDREX, and Windows-on-ARM relies on this.

This change adds plumbing to enable alignment checks on loads using
MO_ALIGN, a do_unaligned_access hook to raise the exception (data
abort), and uses the new aligned loads in LDREX (for all but
single-byte loads).

Signed-off-by: Andrew Baumann <Andrew.Baumann@microsoft.com>
Message-id: 1449167808-5656-1-git-send-email-Andrew.Baumann@microsoft.com
[PMM: set WnR bits in syndrome and FSR as appropriate]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target-arm/cpu.c
target-arm/helper.c
target-arm/internals.h
target-arm/op_helper.c
target-arm/translate.c