unicorn/qemu
Peter Maydell 93386e2dd4
target-arm/translate.c: Handle non-executable page-straddling Thumb insns
When the memory we're trying to translate code from is not executable we have
to turn this into a guest fault. In order to report the correct PC for this
fault, and to make sure it is not reported until after any other possible
faults for instructions earlier in execution, we must terminate TBs at
the end of a page, in case the next instruction is in a non-executable page.
This is simple for T16, A32 and A64 instructions, which are always aligned
to their size. However T32 instructions may be 32-bits but only 16-aligned,
so they can straddle a page boundary.

Correct the condition that checks whether the next instruction will touch
the following page, to ensure that if we're 2 bytes before the boundary
and this insn is T32 then we end the TB.

Backports commit 541ebcd401ee47f3c1a3ce503ef5466b75e9d20a from qemu
2018-02-17 15:24:07 -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 qemu-log: add log category for MMU info 2018-02-17 15:24:05 -05:00
qapi qerror: Clean up QERR_ macros to expand into a single string 2018-02-17 15:23:09 -05:00
qobject qerror: Finally unused, clean up 2018-02-17 15:23:10 -05:00
qom cpu: initialize cpu->exception_index on reset 2018-02-17 15:23:51 -05:00
scripts Save copies of generated qapi files. 2017-01-21 00:30:50 +11:00
target-arm target-arm/translate.c: Handle non-executable page-straddling Thumb insns 2018-02-17 15:24:07 -05:00
target-i386 target-i386: Use 1UL for bit shift 2018-02-17 15:24:06 -05:00
target-m68k target-m68k: Silence unused variable warning 2018-02-17 15:24:00 -05:00
target-mips tcg: Remove gen_intermediate_code_pc 2018-02-17 15:23:59 -05:00
target-sparc tcg: Remove gen_intermediate_code_pc 2018-02-17 15:23:59 -05:00
tcg tcg/mips: Support r6 SEL{NE, EQ}Z instead of MOVN/MOVZ 2018-02-17 15:24:04 -05:00
util exec: factor out duplicate mmap code 2018-02-17 15:24:03 -05:00
aarch64.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
aarch64eb.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
accel.c Automated leading tab to spaces conversion. 2017-01-21 12:28:22 +11:00
arm.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
armeb.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -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: Add nochain debug flag 2018-02-17 15:24:04 -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: factor out duplicate mmap code 2018-02-17 15:24:03 -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: Fix CPU breakpoint handling 2018-02-17 15:24:02 -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 target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -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.c osdep.h: Move some compiler-specific things to compiler.h 2018-02-17 15:23:28 -05:00
memory_mapping.c memory_mapping: Rework cpu related includes 2018-02-17 15:23:15 -05:00
mips.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
mips64.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
mips64el.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
mipsel.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
powerpc.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -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
sparc.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
sparc64.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
tcg-runtime.c platform.h move #3 2017-01-21 00:13:21 +11:00
translate-all.c tcg/ppc: Revise goto_tb implementation 2018-02-17 15:24:03 -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 Drop unused crypto source files 2018-02-17 15:23:57 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00