On 3/25/25 05:39, Philippe Mathieu-Daudé wrote:
@@ -2750,12 +2752,16 @@ static bool trans_SETHI(DisasContext *dc, arg_SETHI *a)
  static bool do_tcc(DisasContext *dc, int cond, int cc,
                     int rs1, bool imm, int rs2_or_imm)
  {
-    int mask = ((dc->def->features & CPU_FEATURE_HYPV) && supervisor(dc)
-                ? UA2005_HTRAP_MASK : V8_TRAP_MASK);
+    int mask = 0;
      DisasCompare cmp;
      TCGLabel *lab;
      TCGv_i32 trap;
+#ifdef TARGET_SPARC64
+    mask = ((dc->def->features & CPU_FEATURE_HYPV) && supervisor(dc))
+           ? UA2005_HTRAP_MASK : V8_TRAP_MASK;
+#endif

This is wrong.  The conversion could have been

  int mask = V8_TRAP_MASK;
#ifdef
  if (HYPV && super) {
    mask = UA2005_HTRAP_MASK;
  }
#endif

but that's an excellent reason not to have the ifdef at all.

If you want to hide the features from sparc32, so they don't show up on the command-line, fine. But I think you want to introduce

#define CPU_FEATURE_HYPV 0

etc for sparc32 to automatically fail such tests as these without further 
modification.


r~

Reply via email to