On 11/17/25 02:40, Gabriel Brookman wrote:
@@ -444,6 +449,11 @@ uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr)
          return 0;
      }
+ if (mtx_check(env, extract64(ptr, 55, 1))) {
+        shift = extract64(ptr, LOG2_TAG_GRANULE, 4) * 4;
+        return (~0) << shift;
+    }

This should load the canonical tag, which is 0 for bit55==0.

The ~0 is wrong because it's not 64-bit.
The field also needs to be bound by gm_bs.
Something like

  return MAKE_64BIT_MASK(shift, shift + (2 << gm_bs));


r~

Reply via email to