unicorn/qemu
Peter Maydell a6aac0dbb4
target-arm: Clean up trap/undef handling of SRS
The SRS instruction is:
* UNDEFINED in Hyp mode
* UNPREDICTABLE in User or System mode
* UNPREDICTABLE if the specified mode isn't accessible
* trapped to EL3 if EL3 is AArch64 and we are at Secure EL1

Clean up the code to handle all these cases cleanly, including
picking UNDEF as our choice of UNPREDICTABLE behaviour rather
blindly trusting the mode field passed in the instruction.
As part of this, move the check for IS_USER into gen_srs()
itself rather than having it done by the caller.

The exception is that we don't UNDEF for calls from System
mode, which need a runtime check. This will be dealt with in
the following commits.

Backports commit cbc0326b6fb905f80b7cef85b24571f7ebb62077 from qemu
2018-02-20 15:02:45 -05:00
..
crypto crypto: Clean up includes 2018-02-19 00:47:40 -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 all: Clean up includes 2018-02-19 01:34:28 -05:00
hw x86: Clean up includes 2018-02-19 01:00:09 -05:00
include qom: Correct object_property_get_int() description 2018-02-20 11:52:16 -05:00
qapi qmp: Don't abuse stack to track qmp-output root 2018-02-20 08:09:56 -05:00
qobject qapi: Convert QType into QAPI built-in enum type 2018-02-19 21:47:05 -05:00
qom cpu: Add callback to check architectural watchpoint match 2018-02-20 11:43:56 -05:00
scripts qapi: Fix compilation failure on MIPS and SPARC 2018-02-20 08:11:01 -05:00
target-arm target-arm: Clean up trap/undef handling of SRS 2018-02-20 15:02:45 -05:00
target-i386 target-i386: Implement FSGSBASE 2018-02-20 14:45:58 -05:00
target-m68k m68k: Clean up includes 2018-02-19 01:06:05 -05:00
target-mips mips: Clean up includes 2018-02-19 00:45:08 -05:00
target-sparc sparc: Clean up includes 2018-02-19 00:52:41 -05:00
tcg target-i386: Implement BNDMK 2018-02-20 14:02:31 -05:00
util error: New error_fatal 2018-02-20 08:22:27 -05:00
aarch64.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
aarch64eb.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
accel.c all: Clean up includes 2018-02-19 01:34:28 -05:00
arm.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
armeb.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50: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 exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpu-exec.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpus.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cputlb.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
exec.c exec: Clean up includes 2018-02-19 00:49:55 -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: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
ioport.c all: Clean up includes 2018-02-19 01:34:28 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
Makefile qapi: Turn generators' mandatory option -i into an argument 2018-02-19 15:22:27 -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.c qom: Swap 'name' next to visitor in ObjectPropertyAccessor 2018-02-19 23:14:37 -05:00
memory_mapping.c all: Clean up includes 2018-02-19 01:34:28 -05:00
mips.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
mips64.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
mips64el.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
mipsel.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
powerpc.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
qapi-schema.json qapi: Lazy creation of array types 2018-02-19 18:55:35 -05:00
qemu-log.c all: Clean up includes 2018-02-19 01:34:28 -05:00
qemu-timer.c all: Clean up includes 2018-02-19 01:34:28 -05:00
rules.mak import 2015-08-21 15:04:50 +08:00
softmmu_template.h exec.c: Pass MemTxAttrs to iotlb_to_region so it uses the right AS 2018-02-17 23:19:00 -05:00
sparc.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
sparc64.h target-arm: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00
tcg-runtime.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.c all: Clean up includes 2018-02-19 01:34:28 -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 exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05: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: Implement checking of fired watchpoint 2018-02-20 11:50:29 -05:00