On 27/2/26 21:35, Brian Cain wrote:
From: Brian Cain <[email protected]>

Reviewed-by: Taylor Simpson <[email protected]>
Signed-off-by: Brian Cain <[email protected]>
---
  target/hexagon/cpu.h            |  1 +
  linux-user/hexagon/cpu_loop.c   | 16 +++++++++++++++
  target/hexagon/cpu.c            |  1 +
  target/hexagon/translate.c      |  8 ++++++++
  target/hexagon/gen_tcg_funcs.py | 35 +++++++++++++++++++++------------
  5 files changed, 48 insertions(+), 13 deletions(-)


diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c
index 5711055aff2..b63990663ab 100644
--- a/linux-user/hexagon/cpu_loop.c
+++ b/linux-user/hexagon/cpu_loop.c
@@ -22,6 +22,7 @@
  #include "qemu.h"
  #include "user-internals.h"
  #include "user/cpu_loop.h"
+#include "target/hexagon/internal.h"
  #include "signal-common.h"
  #include "internal.h"
@@ -60,6 +61,21 @@ void cpu_loop(CPUHexagonState *env)
                  env->gpr[0] = ret;
              }
              break;
+        case HEX_EVENT_PRECISE:
+            switch (env->cause_code) {
+            case HEX_CAUSE_PRIV_USER_NO_GINSN:
+            case HEX_CAUSE_PRIV_USER_NO_SINSN:
+            case HEX_CAUSE_INVALID_PACKET:
+            force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC,
+                    env->gpr[HEX_REG_PC]);
+            break;
+            default:
+                EXCP_DUMP(env, "\nqemu: unhandled CPU precise exception "
+                    "cause code 0x%x - aborting\n",
+                    env->cause_code);
+                exit(EXIT_FAILURE);
+            }
+            break;

Just a comment (not blocking anything), I'm confused here because the
series is about system emulation but you add code to user emulation.

Reply via email to