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~
