On 12/8/26 08:59, Marc-André Lureau wrote:
Hi Brian

On Thu, Jun 11, 2026 at 9:31 AM Brian Cain <[email protected]> wrote:

Add hex_mmu.[ch], cpu mode helpers, and additional includes/stubs
that integrate the TLB device with the CPU model.

Signed-off-by: Brian Cain <[email protected]>
---
  target/hexagon/cpu-param.h  |   2 +-
  target/hexagon/cpu.h        |  21 +++
  target/hexagon/hex_mmu.h    |  26 ++++
  target/hexagon/internal.h   |   9 ++
  target/hexagon/sys_macros.h |   3 +
  target/hexagon/cpu.c        |  36 +++++
  target/hexagon/hex_mmu.c    | 268 ++++++++++++++++++++++++++++++++++++
  7 files changed, 364 insertions(+), 1 deletion(-)
  create mode 100644 target/hexagon/hex_mmu.h
  create mode 100644 target/hexagon/hex_mmu.c


diff --git a/target/hexagon/hex_mmu.h b/target/hexagon/hex_mmu.h
new file mode 100644
index 00000000000..4f556c715a9
--- /dev/null
+++ b/target/hexagon/hex_mmu.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HEXAGON_MMU_H
+#define HEXAGON_MMU_H
+
+#include "cpu.h"
+#include "monitor/monitor.h"
+
+extern void hex_tlbw(CPUHexagonState *env, uint32_t index, uint64_t value);
+extern uint32_t hex_tlb_lookup(CPUHexagonState *env, uint32_t ssr, uint32_t 
VA);
+extern void hex_mmu_on(CPUHexagonState *env);
+extern void hex_mmu_off(CPUHexagonState *env);
+extern void hex_mmu_mode_change(CPUHexagonState *env);
+extern bool hex_tlb_find_match(CPUHexagonState *env, uint32_t VA,
+                               MMUAccessType access_type, hwaddr *PA, int 
*prot,
+                               uint64_t *size, int32_t *excp, int mmu_idx);
+extern int hex_tlb_check_overlap(CPUHexagonState *env, uint64_t entry,
+                                 uint64_t index);
+extern void hex_tlb_lock(CPUHexagonState *env);
+extern void hex_tlb_unlock(CPUHexagonState *env);
+void dump_mmu(Monitor *mon, CPUHexagonState *env);

dump_mmu() is unused, should it be dropped or commented out (and
reintroduced when wired to info tlb?)

Indeed we are missing the hmp_info_tlb() binding.

We are not testing "info tlb" at all, so hard to blame anyone.

If we want to keep having this HMP command I suppose we should
convert each target to qmp_info_tlb() and have a generic HMP
dispatch. (out of scope of this Hexagon patch).

diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c
new file mode 100644
index 00000000000..c921e82b377
--- /dev/null
+++ b/target/hexagon/hex_mmu.c
@@ -0,0 +1,268 @@


+void dump_mmu(Monitor *mon, CPUHexagonState *env)
+{
+    HexagonCPU *cpu = env_archcpu(env);
+    hexagon_tlb_dump(mon, cpu->tlb);
+}

Reply via email to