From: Fangyu Yu <[email protected]>
Fix IOCOUNTINH.CY toggle detection by comparing normalized CY bit
rather than XORing whole register with boolean.
Fixes: 2cf2a6c027ba ("hw/riscv/riscv-iommu: add IOCOUNTINH mmio writes")
Signed-off-by: Fangyu Yu <[email protected]>
---
hw/riscv/riscv-iommu-hpm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/riscv/riscv-iommu-hpm.c b/hw/riscv/riscv-iommu-hpm.c
index e8d284ac8b..5bf80a8db9 100644
--- a/hw/riscv/riscv-iommu-hpm.c
+++ b/hw/riscv/riscv-iommu-hpm.c
@@ -245,7 +245,8 @@ void riscv_iommu_process_iocntinh_cy(RISCVIOMMUState *s,
bool prev_cy_inh)
s, RISCV_IOMMU_REG_IOCOUNTINH);
/* We only need to process CY bit toggle. */
- if (!(inhibit ^ prev_cy_inh)) {
+ bool cy_inh = !!(inhibit & RISCV_IOMMU_IOCOUNTINH_CY);
+ if (cy_inh == prev_cy_inh) {
return;
}
--
2.50.1