qemu/target/arm/tcg
Peter Maydell a96edb687e target/arm: Implement FEAT WFxT and enable for '-cpu max'
FEAT_WFxT introduces new instructions WFIT and WFET, which are like
the existing WFI and WFE but allow the guest to pass a timeout value
in a register.  The instructions will wait for an interrupt/event as
usual, but will also stop waiting when the value of CNTVCT_EL0 is
greater than or equal to the specified timeout value.

We implement WFIT by setting up a timer to expire at the right
point; when the timer expires it sets the EXITTB interrupt, which
will cause the CPU to leave the halted state. If we come out of
halt for some other reason, we unset the pending timer.

We implement WFET as a nop, which is architecturally permitted and
matches the way we currently make WFE a nop.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240430140035.3889879-3-peter.maydell@linaro.org
2024-05-30 16:35:17 +01:00
..
a32-uncond.decode
a32.decode
a64.decode target/arm: Implement FEAT WFxT and enable for '-cpu max' 2024-05-30 16:35:17 +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: Default to 1GHz cntfrq for 'max' and new CPUs 2024-04-30 15:14:15 +01:00
cpu64.c target/arm: Implement FEAT WFxT and enable for '-cpu max' 2024-05-30 16:35:17 +01:00
cpu-v7m.c target/arm: Move v7m-related code from cpu32.c into a separate file 2024-03-08 14:45:03 +00: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: Tidy SQDMULH, SQRDMULH (vector) 2024-05-30 15:24:41 +01:00
helper-a64.c target/arm: Implement ALLINT MSR (immediate) 2024-04-25 10:21:04 +01:00
helper-a64.h target/arm: Convert FADD, FSUB, FDIV, FMUL to decodetree 2024-05-28 14:29:01 +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: Move helper-{a64,mve,sme,sve}.h to tcg/ 2023-05-12 15:43:37 +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 target/arm: Restrict translation disabled alignment check to VMSA 2024-04-30 15:01:07 +01:00
iwmmxt_helper.c
m_helper.c exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
m-nocp.decode
meson.build target/arm: Split out gengvec64.c 2024-05-28 14:29:01 +01:00
mte_helper.c exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
mve_helper.c target/arm/tcg: Clean up local variable shadowing 2023-09-29 10:07:14 +02:00
mve.decode
neon_helper.c target/arm: Convert SRHADD, URHADD to gvec 2024-05-30 15:24:41 +01:00
neon-dp.decode target/arm: Convert SQRSHL and UQRSHL (register) to gvec 2024-05-30 15:24:40 +01:00
neon-ls.decode
neon-shared.decode
op_helper.c target/arm: Implement FEAT WFxT and enable for '-cpu max' 2024-05-30 16:35:17 +01: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: Fix 32-bit SMOPA 2024-03-07 12:49:16 +00:00
sme-fa64.decode
sme.decode
sve_helper.c exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02: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: Split out arm_env_mmu_index 2024-02-03 08:52:25 +10:00
translate-a32.h tcg: Rename cpu_env to tcg_env 2023-10-03 08:01:02 -07:00
translate-a64.c target/arm: Implement FEAT WFxT and enable for '-cpu max' 2024-05-30 16:35:17 +01:00
translate-a64.h target/arm: Inline scalar SUQADD and USQADD 2024-05-30 15:24:39 +01:00
translate-m-nocp.c tcg: Rename cpu_env to tcg_env 2023-10-03 08:01:02 -07:00
translate-mve.c tcg: Rename cpu_env to tcg_env 2023-10-03 08:01:02 -07:00
translate-neon.c target/arm: Tidy SQDMULH, SQRDMULH (vector) 2024-05-30 15:24:41 +01:00
translate-sme.c target/arm: Split out make_svemte_desc 2024-02-15 11:30:45 +00:00
translate-sve.c target/arm: Split out gengvec64.c 2024-05-28 14:29:01 +01:00
translate-vfp.c target/arm: Expand vfp neg and abs inline 2024-05-28 14:29:01 +01:00
translate.c target/arm: Split out gengvec.c 2024-05-28 14:29:01 +01:00
translate.h target/arm: Tidy SQDMULH, SQRDMULH (vector) 2024-05-30 15:24:41 +01:00
vec_helper.c target/arm: Convert SQDMULH, SQRDMULH to decodetree 2024-05-30 15:24:41 +01:00
vec_internal.h target/arm: Use clmul_16* routines 2023-09-15 13:57:00 +00:00
vfp-uncond.decode
vfp.decode