unicorn/qemu
Andrew Jones 92b1f22a45
target-arm: get_phys_addr_lpae: more xn control
This patch makes the following changes to the determination of
whether an address is executable, when translating addresses
using LPAE.

1. No longer assumes that PL0 can't execute when it can't read.
   It can in AArch64, a difference from AArch32.
2. Use va_size == 64 to determine we're in AArch64, rather than
   arm_feature(env, ARM_FEATURE_V8), which is insufficient.
3. Add additional XN determinants
   - NS && is_secure && (SCR & SCR_SIF)
   - WXN && (prot & PAGE_WRITE)
   - AArch64: (prot_PL0 & PAGE_WRITE)
   - AArch32: UWXN && (prot_PL0 & PAGE_WRITE)
   - XN determination should also work in secure mode (untested)
   - XN may even work in EL2 (currently impossible to test)
4. Cleans up the bloated PAGE_EXEC condition - by removing it.

The helper get_S1prot is introduced. It may even work in EL2,
when support for that comes, but, as the function name implies,
it only works for stage 1 translations.

Backports commit d8e052b387635639a6ba4a09a7874fd2f113b218 from qemu
2018-02-12 20:28:29 -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 target-i386: clear bsp bit when designating bsp 2018-02-12 16:40:35 -05:00
include exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
qapi This code should now build the x86_x64-softmmu part 2. 2017-01-19 22:50:28 +11:00
qobject This code should now build the x86_x64-softmmu part 2. 2017-01-19 22:50:28 +11:00
qom qom: Fix object_property_add_alias() with [*] 2018-02-12 16:33:58 -05:00
scripts Save copies of generated qapi files. 2017-01-21 00:30:50 +11:00
target-arm target-arm: get_phys_addr_lpae: more xn control 2018-02-12 20:28:29 -05:00
target-i386 Switch non-CPU callers from ld/st*_phys to address_space_ld/st* 2018-02-12 19:27:02 -05:00
target-m68k target-*: Increment num_insns immediately after tcg_gen_insn_start 2018-02-11 12:46:30 -05:00
target-mips target-mips: save cpu state before calling MSA load and store helpers 2018-02-12 16:31:17 -05:00
target-sparc target-*: Increment num_insns immediately after tcg_gen_insn_start 2018-02-11 12:46:30 -05:00
tcg tcg: Allow extra data to be attached to insn_start 2018-02-11 13:03:51 -05:00
util Arm support ported. (#736) 2017-01-23 23:30:57 +08:00
aarch64.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
aarch64eb.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
accel.c Automated leading tab to spaces conversion. 2017-01-21 12:28:22 +11:00
arm.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
armeb.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -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.c exec: make iotlb RCU-friendly 2018-02-12 15:20:39 -05:00
cpus.c cleanup more synchronization code 2017-01-09 14:05:39 +08:00
cputlb.c Add MemTxAttrs to the IOTLB 2018-02-12 18:38:38 -05:00
exec.c exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c Merge branch 'master' into msvc2 2017-04-21 01:17:00 +08:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
ioport.c memory: Define API for MemoryRegionOps to take attrs and return status 2018-02-12 17:17:27 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
Makefile cleanup qemu/default-configs/ 2017-01-19 14:52:30 +08:00
Makefile.objs cleanup qemu/Makefile.objs 2017-01-21 21:50:12 +08:00
Makefile.target tcg: Move some opcode generation functions out of line 2018-02-09 08:10:00 -05:00
memory.c memory: Replace io_mem_read/write with memory_region_dispatch_read/write 2018-02-12 17:26:52 -05:00
memory_mapping.c revert to use of g_free to make future qemu integrations easier (#695) 2016-12-21 22:28:36 +08:00
mips.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
mips64.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
mips64el.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
mipsel.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
powerpc.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -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 Add MemTxAttrs to the IOTLB 2018-02-12 18:38:38 -05:00
sparc.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
sparc64.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00
tcg-runtime.c platform.h move #3 2017-01-21 00:13:21 +11:00
translate-all.c target-i386: remove superfluous TARGET_HAS_SMC macro 2018-02-12 16:41:55 -05:00
translate-all.h import 2015-08-21 15:04:50 +08: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 This code should now build the x86_x64-softmmu part 2. 2017-01-19 22:50:28 +11:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h exec.c: Add new address_space_ld*/st* functions 2018-02-12 19:22:47 -05:00