mbox series

[0/2] target/arm: Implement FEAT_WFxT

Message ID 20240430140035.3889879-1-peter.maydell@linaro.org (mailing list archive)
Headers show
Series target/arm: Implement FEAT_WFxT | expand

Message

Peter Maydell April 30, 2024, 2 p.m. UTC
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.

This series implements this and enables it for '-cpu max'.
Patch 1 is a tweak to the TCGCPUOps::cpu_exec_halt method
so that we can use it in patch 2 for "do some work when we
are going to leave the halt state".

thanks
-- PMM

Peter Maydell (2):
  accel/tcg: Make TCGCPUOps::cpu_exec_halt return bool for whether to
    halt
  target/arm: Implement FEAT WFxT and enable for '-cpu max'

 docs/system/arm/emulation.rst       |  1 +
 include/hw/core/tcg-cpu-ops.h       | 11 ++++--
 target/arm/cpu-features.h           |  5 +++
 target/arm/cpu.h                    |  3 ++
 target/arm/helper.h                 |  1 +
 target/arm/internals.h              |  8 +++++
 target/i386/tcg/helper-tcg.h        |  2 +-
 target/arm/tcg/a64.decode           |  4 +++
 accel/tcg/cpu-exec.c                |  7 ++--
 target/arm/cpu.c                    | 38 ++++++++++++++++++++
 target/arm/helper.c                 |  4 +--
 target/arm/machine.c                | 20 +++++++++++
 target/arm/tcg/cpu64.c              |  1 +
 target/arm/tcg/op_helper.c          | 54 +++++++++++++++++++++++++++++
 target/arm/tcg/translate-a64.c      | 41 ++++++++++++++++++++++
 target/i386/tcg/sysemu/seg_helper.c |  3 +-
 16 files changed, 195 insertions(+), 8 deletions(-)