unicorn/qemu
Peter Maydell 241c561bc3
target/arm: Correctly handle overlapping small MPU regions
To correctly handle small (less than TARGET_PAGE_SIZE) MPU regions,
we must correctly handle the case where the address being looked
up hits in an MPU region that is not small but the address is
in the same page as a small region. For instance if MPU region
1 covers an entire page from 0x2000 to 0x2400 and MPU region
2 is small and covers only 0x2200 to 0x2280, then for an access
to 0x2000 we must not return a result covering the full page
even though we hit the page-sized region 1. Otherwise we will
then cache that result in the TLB and accesses that should
hit region 2 will incorrectly find the region 1 information.

Check for the case where we miss an MPU region but it is still
within the same page, and in that case narrow the size we will
pass to tlb_set_page_with_attrs() for whatever the final
outcome is of the MPU lookup.

Backports commit 9d2b5a58f85be2d8e129c4b53d6708ecf8796e54 from qemu
2018-07-23 19:54:00 -04:00
..
accel accel/tcg: Correct "is this a TLB miss" check in get_page_addr_code() 2018-07-03 19:23:25 -04: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 fpu/softfloat: Define floatN_silence_nan in terms of parts_silence_nan 2018-05-20 00:13:42 -04:00
hw Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
include include: Add IEC binary prefixes in qemu/units.h 2018-07-03 19:47:19 -04:00
qapi qobject: Modify qobject_ref() to return obj 2018-05-04 10:24:10 -04:00
qobject qobject: Modify qobject_ref() to return obj 2018-05-04 10:24:10 -04:00
qom qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF 2018-05-04 10:16:07 -04:00
scripts Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" 2018-07-05 17:40:24 -04:00
target target/arm: Correctly handle overlapping small MPU regions 2018-07-23 19:54:00 -04:00
tcg tcg/aarch64: limit mul_vec size 2018-07-21 14:15:59 -04:00
util i386: Fix up the Node id for CPUID_8000_001E 2018-07-03 00:31:38 -04:00
aarch64.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
aarch64eb.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
armeb.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" 2018-07-05 17:40:24 -04:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c exec: Fix MAP_RAM for cached access 2018-07-03 01:11:12 -04:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
HACKING HACKING: document preference for g_new instead of g_malloc 2018-05-22 00:30:50 -04:00
header_gen.py target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
Makefile Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" 2018-07-05 17:40:24 -04:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target tcg: remove softfloat from --disable-tcg builds 2018-06-07 11:49:35 -04:00
memory.c memory: Protect against use-after-free 2018-03-21 09:40:33 -04:00
memory_ldst.inc.c exec: Fix MAP_RAM for cached access 2018-07-03 01:11:12 -04:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
mips64.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
mips64el.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
mipsel.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
powerpc.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
sparc.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
sparc64.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
unicorn_common.h cpu: Convert cpu_index into a bitmap 2018-03-21 08:06:07 -04:00
VERSION Update version for v3.0.0-rc1 release 2018-07-17 18:51:40 -04:00
vl.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00