On 9/10/26 21:25, Brian Cain wrote:
Set PC to the tlblock instruction and leave the CPU loop when the lock is
contended. This retries tlblock after ownership is passed and prevents
execution without the lock.

Signed-off-by: Brian Cain <[email protected]>
---
  target/hexagon/hex_mmu.c | 4 ++++
  1 file changed, 4 insertions(+)

diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c
index bdcfa057c21..b9fab949d0f 100644
--- a/target/hexagon/hex_mmu.c
+++ b/target/hexagon/hex_mmu.c
@@ -12,6 +12,7 @@
  #include "system/cpus.h"
  #include "internal.h"
  #include "exec/cpu-interrupt.h"
+#include "accel/tcg/cpu-loop.h"
  #include "cpu_helper.h"
  #include "exec/cputlb.h"
  #include "hex_mmu.h"
@@ -185,11 +186,14 @@ void hex_tlb_lock(CPUHexagonState *env)
              env->next_PC += 4;
              CPUState *cs = env_cpu(env);
              cpu_interrupt(cs, CPU_INTERRUPT_HALT);

Pre-existing apparently, is CPU_INTERRUPT_HALT appropriate?

     /*
      * External hardware interrupt pending.
      * This is typically used for interrupts from devices.
      */
     #define CPU_INTERRUPT_HARD        0x0002

or is there a better match from "exec/cpu-interrupt.h" definitions?

+            cpu_loop_exit(cs);

This call makes sense otherwise.

              return;
          }


Reply via email to