qemu/target/arm/tcg
Gustavo Romero 374cdc8efe target/arm: Enable FEAT_CMOW for -cpu max
FEAT_CMOW introduces support for controlling cache maintenance
instructions executed in EL0/1 and is mandatory from Armv8.8.

On real hardware, the main use for this feature is to prevent processes
from invalidating or flushing cache lines for addresses they only have
read permission, which can impact the performance of other processes.

QEMU implements all cache instructions as NOPs, and, according to rule
[1], which states that generating any Permission fault when a cache
instruction is implemented as a NOP is implementation-defined, no
Permission fault is generated for any cache instruction when it lacks
read and write permissions.

QEMU does not model any cache topology, so the PoU and PoC are before
any cache, and rules [2] apply. These rules state that generating any
MMU fault for cache instructions in this topology is also
implementation-defined. Therefore, for FEAT_CMOW, we do not generate any
MMU faults either, instead, we only advertise it in the feature
register.

[1] Rule R_HGLYG of section D8.14.3, Arm ARM K.a.
[2] Rules R_MZTNR and R_DNZYL of section D8.14.3, Arm ARM K.a.

Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241104142606.941638-1-gustavo.romero@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-11-05 10:10:00 +00:00
..
a32-uncond.decode
a32.decode
a64.decode target/arm: Convert scalar [US]QSHRN, [US]QRSHRN, SQSHRUN to decodetree 2024-09-19 12:58:58 +01:00
arm_ldst.h target/arm: Move translate-a32.h, arm_ldst.h, sve_ldst_internal.h to tcg/ 2023-05-12 15:43:36 +01:00
cpu32.c target/arm: Enable FEAT_Debugv8p8 for -cpu max 2024-07-01 15:40:53 +01:00
cpu64.c target/arm: Enable FEAT_CMOW for -cpu max 2024-11-05 10:10:00 +00:00
cpu-v7m.c target/arm: Implement TCGCPUOps.tlb_fill_align 2024-10-13 11:27:06 -07:00
crypto_helper.c crypto: Create sm4_subword 2023-09-11 11:45:55 +10:00
gengvec64.c target/arm: Inline scalar SUQADD and USQADD 2024-05-30 15:24:39 +01:00
gengvec.c target/arm: Convert VQSHL, VQSHLU to gvec 2024-09-19 12:58:58 +01:00
helper-a64.c target/arm: Fix arithmetic underflow in SETM instruction 2024-10-29 15:04:47 +00:00
helper-a64.h target/arm: Fix BTI versus CF_PCREL 2024-08-09 17:37:54 +01:00
helper-mve.h target/arm: Move helper-{a64,mve,sme,sve}.h to tcg/ 2023-05-12 15:43:37 +01:00
helper-sme.h target/arm: Pass env pointer through to sme_bfmopa helper 2024-09-05 13:12:35 +01:00
helper-sve.h target/arm: Move helper-{a64,mve,sme,sve}.h to tcg/ 2023-05-12 15:43:37 +01:00
hflags.c Revert "target/arm: Fix usage of MMU indexes when EL3 is AArch32" 2024-11-05 10:09:58 +00:00
iwmmxt_helper.c
m_helper.c target/arm: Pass MemOp to get_phys_addr 2024-10-13 11:27:06 -07:00
m-nocp.decode
meson.build target/arm: Split out gengvec64.c 2024-05-28 14:29:01 +01:00
mte_helper.c target/arm: Make some MTE helpers widely available 2024-07-05 12:35:11 +01:00
mte_helper.h target/arm: Make some MTE helpers widely available 2024-07-05 12:35:11 +01:00
mve_helper.c target/arm: Rename FPCR_ QC, NZCV macros to FPSR_ 2024-07-11 11:41:33 +01:00
mve.decode
neon_helper.c target/arm: Widen NeonGenNarrowEnvFn return to 64 bits 2024-09-19 12:58:58 +01:00
neon-dp.decode target/arm: Convert VQSHL, VQSHLU to gvec 2024-09-19 12:58:58 +01:00
neon-ls.decode
neon-shared.decode
op_helper.c target/arm: Add new MMU indexes for AArch32 Secure PL1&0 2024-11-05 10:09:58 +00:00
pauth_helper.c target/arm: Move feature test functions to their own header 2023-10-27 11:44:32 +01:00
psci.c target/arm: Expose arm_cpu_mp_affinity() in 'multiprocessing.h' header 2024-01-26 11:30:48 +00:00
sme_helper.c target/arm: Prepare bfdotadd() callers for FEAT_EBF support 2024-09-05 13:12:36 +01:00
sme-fa64.decode
sme.decode
sve_helper.c target/arm: Use set/clear_helper_retaddr in SVE and SME helpers 2024-07-23 10:56:04 +10:00
sve_ldst_internal.h target/arm: Move translate-a32.h, arm_ldst.h, sve_ldst_internal.h to tcg/ 2023-05-12 15:43:36 +01:00
sve.decode target/arm: Demultiplex AESE and AESMC 2023-07-08 07:30:18 +01:00
t16.decode
t32.decode target/arm: Use PLD, PLDW, PLI not NOP for t32 2024-05-28 14:23:52 +01:00
tlb_helper.c target/arm: Implement TCGCPUOps.tlb_fill_align 2024-10-13 11:27:06 -07:00
translate-a32.h target/arm: Implement store_cpu_field_low32() macro 2024-07-11 11:41:33 +01:00
translate-a64.c Revert "target/arm: Fix usage of MMU indexes when EL3 is AArch32" 2024-11-05 10:09:58 +00:00
translate-a64.h target/arm: Inline scalar SUQADD and USQADD 2024-05-30 15:24:39 +01:00
translate-m-nocp.c target/arm: Rename FPCR_ QC, NZCV macros to FPSR_ 2024-07-11 11:41:33 +01:00
translate-mve.c tcg: Rename cpu_env to tcg_env 2023-10-03 08:01:02 -07:00
translate-neon.c target/arm: Widen NeonGenNarrowEnvFn return to 64 bits 2024-09-19 12:58:58 +01:00
translate-sme.c target/arm: Enable FEAT_EBF16 in the "max" CPU 2024-09-05 13:12:36 +01:00
translate-sve.c target/arm: Replace tcg_gen_dupi_vec with constants in translate-sve.c 2024-09-19 12:58:56 +01:00
translate-vfp.c target/arm: Correct names of VFP VFNMA and VFNMS insns 2024-09-05 13:12:37 +01:00
translate.c target/arm: Add new MMU indexes for AArch32 Secure PL1&0 2024-11-05 10:09:58 +00:00
translate.h Revert "target/arm: Fix usage of MMU indexes when EL3 is AArch32" 2024-11-05 10:09:58 +00:00
vec_helper.c target/arm: Fix SVE SDOT/UDOT/USDOT (4-way, indexed) 2024-11-05 10:09:58 +00:00
vec_internal.h target/arm: Prepare bfdotadd() callers for FEAT_EBF support 2024-09-05 13:12:36 +01:00
vfp-uncond.decode
vfp.decode target/arm: Correct names of VFP VFNMA and VFNMS insns 2024-09-05 13:12:37 +01:00