unicorn/qemu
Peter Maydell e528c8229e target/arm: Get correct MMU index for other-security-state
In arm_v7m_mmu_idx_for_secstate() we get the 'priv' level to pass to
armv7m_mmu_idx_for_secstate_and_priv() by calling arm_current_el().
This is incorrect when the security state being queried is not the
current one, because arm_current_el() uses the current security state
to determine which of the banked CONTROL.nPRIV bits to look at.
The effect was that if (for instance) Secure state was in privileged
mode but Non-Secure was not then we would return the wrong MMU index.

The only places where we are using this function in a way that could
trigger this bug are for the stack loads during a v8M function-return
and for the instruction fetch of a v8M SG insn.

Fix the bug by expanding out the M-profile version of the
arm_current_el() logic inline so it can use the passed in secstate
rather than env->v7m.secure.

Backports 7142eb9e24b4aa5118cd67038057f15694d782aa
2021-03-02 13:08:44 -05:00
..
accel target/arm: Add sve infrastructure for page lookup 2021-02-25 20:28:23 -05:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs target/riscv: Initial introduction of the RISC-V target 2019-03-08 21:46:10 -05:00
docs docs/devel/memory.txt: Document _with_attrs accessors 2018-10-04 04:46:26 -04:00
fpu softfloat: Define misc operations for bfloat16 2021-02-27 16:41:46 -05:00
hw target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
include target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
qapi qapi: Rewrite string-input-visitor's integer and list parsing 2018-12-18 04:57:25 -05:00
qobject qstring: Move qstring_from_substr()'s @end one to the right 2018-08-02 21:24:19 -04:00
qom target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
scripts decodetree: Fix codegen for non-overlapping group inside overlapping group 2021-03-01 20:14:19 -05:00
target target/arm: Get correct MMU index for other-security-state 2021-03-02 13:08:44 -05:00
tcg tcg: Remove TCG_TARGET_HAS_cmp_vec 2021-03-01 19:49:02 -05:00
util util/cutils: Turn FIXME comment into QEMU_BUILD_BUG_ON() 2020-01-14 08:04:30 -05:00
aarch64.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
aarch64eb.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
accel.c target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
arm.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
armeb.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
CODING_STYLE.rst docs: split the CODING_STYLE doc into distinct groups 2019-11-28 02:54:44 -05:00
configure configure: Support -static-pie if requested 2020-04-30 07:09:34 -04:00
COPYING
COPYING.LIB
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c Memory: Enable writeback for given memory region 2020-01-14 07:44:24 -05:00
gen_all_header.sh
glib_compat.c target/arm: Add VHE system register redirection and aliasing 2020-03-21 15:57:03 -04:00
header_gen.py target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE
m68k.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
Makefile Makefile: Rename targets for make recursion 2019-08-08 17:26:49 -04:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target configure: Remove old -fno-gcse workaround for GCC 4.6.x and 4.7.[012] 2018-12-18 03:52:36 -05:00
memory.c target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
memory_ldst.inc.c memory: Single byte swap along the I/O path 2020-01-07 19:12:04 -05: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: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
mips64.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
mips64el.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
mipsel.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
powerpc.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
riscv32.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
riscv64.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -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: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
sparc64.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00
unicorn_common.h tcg: Move sorted_args into TCGArgConstraint.sort_index 2021-03-01 19:33:45 -05:00
VERSION Open 5.2 development tree 2021-02-25 23:52:17 -05:00
vl.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-20 14:20:30 -04:00
vl.h
x86_64.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2021-03-01 20:04:31 -05:00