qemu/target/arm
Richard Henderson 3b07a936d3 target/arm: Look up ARMCPRegInfo at runtime
Do not encode the pointer as a constant in the opcode stream.
This pointer is specific to the cpu that first generated the
translation, which runs into problems with both hot-pluggable
cpus and user-only threads, as cpus are removed. It's also a
potential correctness issue in the theoretical case of a
slightly-heterogenous system, because if CPU 0 generates a
TB and then CPU 1 executes it, CPU 1 will end up using CPU 0's
hash table, which might have a wrong set of registers in it.
(All our current systems are either completely homogenous,
M-profile, or have CPUs sufficiently different that they
wouldn't be sharing TBs anyway because the differences would
show up in the TB flags, so the correctness issue is only
theoretical, not practical.)

Perform the lookup in either helper_access_check_cp_reg,
or a new helper_lookup_cp_reg.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20230106194451.1213153-3-richard.henderson@linaro.org
[PMM: added note in commit message about correctness issue]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2023-01-23 13:32:38 +00:00
..
hvf Fix 'writeable' typos 2022-06-08 19:38:47 +01:00
a32-uncond.decode arm tcg cpus: Fix Lesser GPL version number 2020-11-15 16:42:14 +01:00
a32.decode target/arm: Implement ESB instruction 2022-05-09 11:47:54 +01:00
arch_dump.c dump: Replace opaque DumpState pointer with a typed one 2022-10-06 19:30:43 +04:00
arm_ldst.h accel/tcg: Add DisasContextBase argument to translator_ld* 2021-09-14 12:00:20 -07:00
arm-powerctl.c arm/arm-powerctl: rebuild hflags after setting CP15 bits in arm_set_cpu_on() 2019-12-20 14:03:00 +00:00
arm-powerctl.h
common-semi-target.h semihosting: Split out common-semi-target.h 2022-06-28 04:35:07 +05:30
cpregs.h target/arm: Move define_debug_regs() to debug_helper.c 2022-07-07 11:37:33 +01:00
cpu64.c target/arm: cleanup cpu includes 2023-01-05 12:28:37 +00:00
cpu_tcg.c target/arm: Add ARM Cortex-R52 CPU 2023-01-05 11:51:09 +00:00
cpu-param.h target/arm: Enable TARGET_TB_PCREL 2022-10-20 11:28:29 +01:00
cpu-qom.h target/arm: Convert to 3-phase reset 2022-12-16 15:58:15 +00:00
cpu.c target/arm: cleanup cpu includes 2023-01-05 12:28:37 +00:00
cpu.h target/arm: implement DBGCLAIM registers 2023-01-23 13:32:38 +00:00
crypto_helper.c crypto: move sm4_sbox from target/arm 2022-04-29 10:47:45 +10:00
debug_helper.c target/arm: provide stubs for more external debug registers 2023-01-23 13:32:38 +00:00
gdbstub64.c target/arm: Rename sve_zcr_len_for_el to sve_vqm1_for_el 2022-06-08 19:38:57 +01:00
gdbstub.c Fix 'writeable' typos 2022-06-08 19:38:47 +01:00
helper-a64.c target/arm: Change CPUArchState.aarch64 to bool 2022-04-22 14:44:54 +01:00
helper-a64.h target/arm: Merge mte_check1, mte_checkN 2021-04-30 11:16:49 +01:00
helper-mve.h target/arm: Implement MVE VRINT insns 2021-09-01 11:08:17 +01:00
helper-sme.h target/arm/sme: Unify set_pstate() SM/ZA helpers as set_svcr() 2023-01-23 13:32:38 +00:00
helper-sve.h target/arm: Implement REVD 2022-07-11 13:43:51 +01:00
helper.c target/arm/sme: Unify set_pstate() SM/ZA helpers as set_svcr() 2023-01-23 13:32:38 +00:00
helper.h target/arm: Look up ARMCPRegInfo at runtime 2023-01-23 13:32:38 +00:00
hvf_arm.h target: Use forward declared type instead of structure type 2022-03-06 22:22:40 +01:00
idau.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
internals.h target/arm: Enable TTBCR_EAE for ARMv8-R AArch32 2023-01-05 11:51:09 +00:00
iwmmxt_helper.c arm tcg cpus: Fix Lesser GPL version number 2020-11-15 16:42:14 +01:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
kvm64.c target/arm: Implement ID_DFR1 2022-09-14 11:19:40 +01:00
kvm_arm.h target/arm: Use uint32_t instead of bitmap for sve vq's 2022-06-08 19:38:57 +01:00
kvm-consts.h hw/misc: Move some arm-related files from specific_ss into softmmu_ss 2022-12-15 17:37:47 +00:00
kvm-stub.c target/arm: Avoid bare abort() or assert(0) 2022-05-05 09:35:51 +01:00
kvm.c * scsi-disk: support setting CD-ROM block size via device options 2022-10-13 13:55:03 -04:00
m_helper.c target/arm: Don't set EXC_RETURN.ES if Security Extension not present 2023-01-23 13:32:38 +00:00
m-nocp.decode target/arm: Don't NOCP fault for FPCXT_NS accesses 2021-06-21 16:49:37 +01:00
machine.c target/arm: Add PMSAv8r registers 2023-01-05 11:51:09 +00:00
meson.build target/arm: Trap non-streaming usage when Streaming SVE is active 2022-07-11 13:19:35 +01:00
monitor.c qapi machine: Elide redundant has_FOO in generated C 2022-12-14 20:04:47 +01:00
mte_helper.c target/arm: Fix physical address resolution for MTE 2023-01-23 13:32:38 +00:00
mve_helper.c target/arm: Use expand_pred_b in mve_helper.c 2022-06-08 19:38:58 +01:00
mve.decode target/arm: Implement MVE VRINT insns 2021-09-01 11:08:17 +01:00
neon_helper.c Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
neon-dp.decode target/arm: Implement vector float32 to bfloat16 conversion 2021-06-03 16:43:26 +01:00
neon-ls.decode target/arm: Remove duplicate 'plus1' function from Neon and SVE decode 2021-07-18 10:59:47 +01:00
neon-shared.decode target/arm: Remove duplicate 'plus1' function from Neon and SVE decode 2021-07-18 10:59:47 +01:00
op_addsub.h
op_helper.c target/arm: Look up ARMCPRegInfo at runtime 2023-01-23 13:32:38 +00:00
pauth_helper.c compiler.h: replace QEMU_NORETURN with G_NORETURN 2022-04-21 17:03:51 +04:00
psci.c target/arm: Support PSCI 1.1 and SMCCC 1.0 2022-03-02 19:27:36 +00:00
ptw.c target/arm: Fix in_debug path in S1_ptw_translate 2023-01-23 13:32:38 +00:00
sme_helper.c target/arm/sme: Unify set_pstate() SM/ZA helpers as set_svcr() 2023-01-23 13:32:38 +00:00
sme-fa64.decode target/arm: Mark LD1RO as non-streaming 2022-07-11 13:19:35 +01:00
sme.decode target/arm: Implement SME integer outer product 2022-07-11 13:43:51 +01:00
sve_helper.c target/arm: Fix sve_probe_page 2023-01-12 16:50:19 +00:00
sve_ldst_internal.h target/arm: Use probe_access_full for MTE 2022-10-20 11:27:49 +01:00
sve.decode target/arm: Implement SCLAMP, UCLAMP 2022-07-11 13:43:51 +01:00
syndrome.h target/arm: Add syn_smetrap 2022-06-27 11:18:17 +01:00
t16.decode arm tcg cpus: Fix Lesser GPL version number 2020-11-15 16:42:14 +01:00
t32.decode target/arm: Implement ESB instruction 2022-05-09 11:47:54 +01:00
tlb_helper.c target/arm: Enable TTBCR_EAE for ARMv8-R AArch32 2023-01-05 11:51:09 +00:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate-a32.h target/arm: Change gen_*set_pc_im to gen_*update_pc 2022-10-20 11:27:52 +01:00
translate-a64.c target/arm: Look up ARMCPRegInfo at runtime 2023-01-23 13:32:38 +00:00
translate-a64.h target/arm: Export unpredicated ld/st from translate-sve.c 2022-07-11 13:19:35 +01:00
translate-m-nocp.c target/arm: Enable TARGET_TB_PCREL 2022-10-20 11:28:29 +01:00
translate-mve.c target/arm: Change gen_exception_insn* to work on displacements 2022-10-20 11:27:52 +01:00
translate-neon.c target/arm: Fix alignment for VLD4.32 2022-09-22 16:38:27 +01:00
translate-sme.c target/arm: Implement SME integer outer product 2022-07-11 13:43:51 +01:00
translate-sve.c target/arm: Add MO_128 entry to pred_esz_masks[] 2022-07-26 13:38:23 +01:00
translate-vfp.c target/arm: Change gen_exception_insn* to work on displacements 2022-10-20 11:27:52 +01:00
translate.c target/arm: Look up ARMCPRegInfo at runtime 2023-01-23 13:32:38 +00:00
translate.h target/arm: Look up ARMCPRegInfo at runtime 2023-01-23 13:32:38 +00:00
vec_helper.c target/arm: Implement SCLAMP, UCLAMP 2022-07-11 13:43:51 +01:00
vec_internal.h target/arm: Export bfdotadd from vec_helper.c 2022-06-08 19:38:58 +01:00
vfp_helper.c target/arm: Check NaN mode before silencing NaN 2021-07-02 11:48:36 +01:00
vfp-uncond.decode arm tcg cpus: Fix Lesser GPL version number 2020-11-15 16:42:14 +01:00
vfp.decode target/arm: Don't NOCP fault for FPCXT_NS accesses 2021-06-21 16:49:37 +01:00