On 9/10/2026 6:27 PM, Marco Liebel wrote:
On Thu, Sep 10, 2026 at 10:32 AM Brian Cain <[email protected]> wrote:
Each DSP ordinarily has fewer HVX contexts than hw threads.  The thread's
SSR:XA selects the one it's bound to.

Add a hexagon-hvx-context device holding the register file.  The machine
creates as many as the config table specifies, linked to every vCPU.
The CPU picks among the links at run time.

The linux-user side keeps one context per CPU, w/o need for a device.

SSR:XA is not consulted yet, the CPU always uses context 0.

Signed-off-by: Brian Cain <[email protected]>
---
  include/hw/hexagon/hexagon.h             |  1 +
  include/hw/hexagon/hexagon_hvx_context.h | 27 ++++++++
  target/hexagon/cpu.h                     |  9 ++-
  hw/hexagon/hex-subsys.c                  | 36 ++++++++++
  hw/hexagon/hexagon_hvx_context.c         | 83 ++++++++++++++++++++++++
  linux-user/hexagon/cpu_loop.c            |  2 +-
  linux-user/main.c                        |  3 +
  target/hexagon/cpu.c                     | 19 +++++-
  hw/hexagon/meson.build                   |  1 +
  9 files changed, 175 insertions(+), 6 deletions(-)
  create mode 100644 include/hw/hexagon/hexagon_hvx_context.h
  create mode 100644 hw/hexagon/hexagon_hvx_context.c

-#ifndef CONFIG_USER_ONLY
+#ifdef CONFIG_USER_ONLY
+    HexagonHVXContext hvx_ctx QEMU_ALIGNED(16);
+#else
+    HexagonHVXContextState *hvx_ctx[HVX_CONTEXTS_MAX];
+    HexagonHVXContext hvx_fallback QEMU_ALIGNED(16);
Why is `hvx_fallback` needed?

Tsk, sorry - that's cruft left over from an earlier design.  It's not necessary, I'll clean it up in v2.



Reply via email to