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>
Showing
- target-arm/cpu.c 1 addition, 0 deletionstarget-arm/cpu.c
- target-arm/helper.c 8 additions, 0 deletionstarget-arm/helper.c
- target-arm/internals.h 7 additions, 0 deletionstarget-arm/internals.h
- target-arm/op_helper.c 39 additions, 1 deletiontarget-arm/op_helper.c
- target-arm/translate.c 7 additions, 4 deletionstarget-arm/translate.c
Loading
Please register or sign in to comment