On 3/18/25 14:32, Richard Henderson wrote:
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
  include/exec/icount.h | 10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/exec/icount.h b/include/exec/icount.h
index 4964987ae4..7a26b40084 100644
--- a/include/exec/icount.h
+++ b/include/exec/icount.h
@@ -22,13 +22,21 @@ typedef enum {
      ICOUNT_ADAPTATIVE,
  } ICountMode;
-#if defined(CONFIG_TCG) && !defined(CONFIG_USER_ONLY)
+#ifdef CONFIG_TCG
  extern ICountMode use_icount;
  #define icount_enabled() (use_icount)
  #else
  #define icount_enabled() ICOUNT_DISABLED
  #endif
+/* Protect the CONFIG_USER_ONLY test vs poisoning. */
+#if defined(COMPILING_PER_TARGET) || defined(COMPILING_SYSTEM_VS_USER)
+# ifdef CONFIG_USER_ONLY
+#  undef  icount_enabled
+#  define icount_enabled() ICOUNT_DISABLED
+# endif
+#endif
+
  /*
   * Update the icount with the executed instructions. Called by
   * cpus-tcg vCPU thread so the main-loop can see time has moved forward.

I understand the shortcut taken here, but I'm not sure we want to start having specifics for COMPILING_SYSTEM_VS_USER, out of the poison file.

In this case, we can change icount_enabled() to a function, implement it in accel/tcg/icount-common.c (which is system only), and add a stub for user mode in accel/tcg/icount-user.c (or common-user/icount.c), returning ICOUNT_DISABLED, or 0, more simply.

Reply via email to