On 8/21/25 21:33, Danila Zhebryakov wrote:
@@ -1894,6 +1894,14 @@ static void *atomic_mmu_lookup(CPUState *cpu, vaddr
addr, MemOpIdx oi,
notdirty_write(cpu, addr, size, full, retaddr);
}
+ if (unlikely(tlb_addr & TLB_BSWAP)) {
+ assert(!( ( full->slow_flags[MMU_DATA_STORE]
+ ^ full->slow_flags[MMU_DATA_LOAD ])
+ & TLB_BSWAP));
+
+ *need_bswap = !need_bswap;
+ }
+
How is this supposed to work?
(!) TLB_BSWAP is a slow-flags bit, so it will never be set in tlb_addr.
(2) Both MMU_DATA_STORE and MMU_DATA_LOAD will have the same value for TLB_BSWAP: X ^ X ==
0, so sure, that assert can't fire.
r~