unicorn/qemu
Andrew Baumann e1701b069f
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).

Backports commit 30901475b91ef1f46304404ab4bfe89097f61b96 from qemu
2018-02-17 19:29:29 -05:00
..
crypto Drop unused crypto source files 2018-02-17 15:23:57 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: expand out STATUS macro 2018-02-12 13:43:13 -05:00
hw osdep.h: Move some compiler-specific things to compiler.h 2018-02-17 15:23:28 -05:00
include typedefs: Put them back into alphabetical order 2018-02-17 19:22:23 -05:00
qapi qstring: Make conversion from QObject * accept null 2018-02-17 15:24:12 -05:00
qobject qstring: Make conversion from QObject * accept null 2018-02-17 15:24:12 -05:00
qom qom: Introduce ObjectPropertyIterator struct for iteration 2018-02-17 18:39:00 -05:00
scripts Save copies of generated qapi files. 2017-01-21 00:30:50 +11:00
target-arm target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
target-i386 target-i386: Add clflushopt/clwb/pcommit to TCG_7_0_EBX_FEATURES 2018-02-17 17:26:53 -05:00
target-m68k target-*: Advance pc after recognizing a breakpoint 2018-02-17 15:24:11 -05:00
target-mips target-mips: flush QEMU TLB when disabling 64-bit addressing 2018-02-17 19:06:43 -05:00
target-sparc sparc: allow CASA with ASI 0xa from user space 2018-02-17 19:23:35 -05:00
tcg tcg: Fix highwater check 2018-02-17 18:53:18 -05:00
util oslib-win32: Change return type of function getpagesize 2018-02-17 19:10:37 -05:00
aarch64.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
aarch64eb.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
accel.c Automated leading tab to spaces conversion. 2017-01-21 12:28:22 +11:00
arm.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
armeb.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure tcg: Drop ia64 host support 2018-02-04 18:33:02 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c cpu-exec: Migrate some generic fns to cpu-exec-common 2018-02-17 15:23:51 -05:00
cpu-exec.c cpu-exec: Fix compiler warning (-Werror=clobbered) 2018-02-17 15:24:15 -05:00
cpus.c cpu-exec: Purge all uses of ENV_GET_CPU() 2018-02-17 15:23:18 -05:00
cputlb.c cputlb: Change tlb_set_dirty() arg to cpu 2018-02-17 15:23:52 -05:00
exec.c exec: Stop using memory after free 2018-02-17 19:11:50 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c crypto: introduce new module for computing hash digests 2018-02-17 15:23:17 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
ioport.c ioport: do not use CPU_LOG_IOPORT 2018-02-17 15:24:15 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
Makefile crypto: move crypto objects out of libqemuutil.la 2018-02-17 15:23:50 -05:00
Makefile.objs crypto: move crypto objects out of libqemuutil.la 2018-02-17 15:23:50 -05:00
Makefile.target tcg: split tcg_op_defs to -common 2018-02-17 15:23:51 -05:00
memory_mapping.c memory_mapping: Rework cpu related includes 2018-02-17 15:23:15 -05:00
memory.c pc: resizeable ROM blocks 2018-02-17 17:18:38 -05:00
mips64.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
mips64el.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
mips.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
mipsel.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
powerpc.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
qapi-schema.json import 2015-08-21 15:04:50 +08:00
qemu-log.c import 2015-08-21 15:04:50 +08:00
qemu-timer.c timer is redundant 2017-01-20 16:46:58 +08:00
rules.mak import 2015-08-21 15:04:50 +08:00
softmmu_template.h softmmu: remove now unused functions 2018-02-17 15:23:38 -05:00
sparc64.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
sparc.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00
tcg-runtime.c platform.h move #3 2017-01-21 00:13:21 +11:00
translate-all.c translate-all: ensure host page mask is always extended with 1's 2018-02-17 19:17:19 -05:00
translate-all.h translate-all: remove unnecessary argument to tb_invalidate_phys_range 2018-02-13 09:04:51 -05:00
translate-common.c translate-all: Move tcg_handle_interrupt() to -common 2018-02-17 15:23:51 -05:00
unicorn_common.h This code should now build the x86_x64-softmmu part 2. 2017-01-19 22:50:28 +11:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c vl.c: Remove periods and exclamation points from error messages 2018-02-17 15:24:14 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h target-arm: raise exception on misaligned LDREX operands 2018-02-17 19:29:29 -05:00