void memory_region_iommu_replay(MemoryRegion *mr, Notifier *n,

                                hwaddr granularity, bool is_write)

{

    hwaddr addr;

    IOMMUTLBEntry iotlb;



    for (addr = 0; addr < memory_region_size(mr); addr += granularity) {

        iotlb = mr->iommu_ops->translate(mr, addr, is_write);

        if (iotlb.perm != IOMMU_NONE) {

            n->notify(n, &iotlb);

        }



        /* if (2^64 - MR size) < granularity, it's possible to get an

         * infinite loop here.  This should catch such a wraparound */

        if ((addr + granularity) < addr) {

            break;

        }

    }

}

void memory_region_iommu_replay(MemoryRegion *mr, Notifier *n,

                                hwaddr granularity, bool is_write)

{

    hwaddr addr;

    IOMMUTLBEntry iotlb;



    for (addr = 0; addr < memory_region_size(mr); addr += granularity) {

        iotlb = mr->iommu_ops->translate(mr, addr, is_write);

        if (iotlb.perm != IOMMU_NONE) {

            n->notify(n, &iotlb);

        }



        



        if ((addr + granularity) < addr) {

            break;

        }

    }

}

void FUNC_0(MemoryRegion *VAR_0, Notifier *VAR_1,

                                hwaddr VAR_2, bool VAR_3)

{

    hwaddr addr;

    IOMMUTLBEntry iotlb;



    for (addr = 0; addr < memory_region_size(VAR_0); addr += VAR_2) {

        iotlb = VAR_0->iommu_ops->translate(VAR_0, addr, VAR_3);

        if (iotlb.perm != IOMMU_NONE) {

            VAR_1->notify(VAR_1, &iotlb);

        }



        



        if ((addr + VAR_2) < addr) {

            break;

        }

    }

}

void FUNC_0(MemoryRegion *VAR_0, Notifier *VAR_1,
hwaddr VAR_2, bool VAR_3)
{ hwaddr addr; IOMMUTLBEntry iotlb; for (addr = 0; addr < memory_region_size(VAR_0); addr += VAR_2) { iotlb = VAR_0->iommu_ops->translate(VAR_0, addr, VAR_3); if (iotlb.perm != IOMMU_NONE) { VAR_1->notify(VAR_1, &iotlb); } if ((addr + VAR_2) < addr) { break; } } }