static void invalidate_and_set_dirty(MemoryRegion *mr, hwaddr addr,

                                     hwaddr length)

{

    if (cpu_physical_memory_range_includes_clean(addr, length)) {

        uint8_t dirty_log_mask = memory_region_get_dirty_log_mask(mr);

        if (dirty_log_mask & (1 << DIRTY_MEMORY_CODE)) {

            tb_invalidate_phys_range(addr, addr + length);

            dirty_log_mask &= ~(1 << DIRTY_MEMORY_CODE);

        }

        cpu_physical_memory_set_dirty_range(addr, length, dirty_log_mask);

    } else {

        xen_modified_memory(addr, length);

    }

}

static void invalidate_and_set_dirty(MemoryRegion *mr, hwaddr addr,

                                     hwaddr length)

{

    if (cpu_physical_memory_range_includes_clean(addr, length)) {

        uint8_t dirty_log_mask = memory_region_get_dirty_log_mask(mr);

        if (dirty_log_mask & (1 << DIRTY_MEMORY_CODE)) {

            tb_invalidate_phys_range(addr, addr + length);

            dirty_log_mask &= ~(1 << DIRTY_MEMORY_CODE);

        }

        cpu_physical_memory_set_dirty_range(addr, length, dirty_log_mask);

    } else {

        xen_modified_memory(addr, length);

    }

}

static void FUNC_0(MemoryRegion *VAR_0, hwaddr VAR_1,

                                     hwaddr VAR_2)

{

    if (cpu_physical_memory_range_includes_clean(VAR_1, VAR_2)) {

        uint8_t dirty_log_mask = memory_region_get_dirty_log_mask(VAR_0);

        if (dirty_log_mask & (1 << DIRTY_MEMORY_CODE)) {

            tb_invalidate_phys_range(VAR_1, VAR_1 + VAR_2);

            dirty_log_mask &= ~(1 << DIRTY_MEMORY_CODE);

        }

        cpu_physical_memory_set_dirty_range(VAR_1, VAR_2, dirty_log_mask);

    } else {

        xen_modified_memory(VAR_1, VAR_2);

    }

}

static void FUNC_0(MemoryRegion *VAR_0, hwaddr VAR_1,
hwaddr VAR_2)
{ if (cpu_physical_memory_range_includes_clean(VAR_1, VAR_2)) { uint8_t dirty_log_mask = memory_region_get_dirty_log_mask(VAR_0); if (dirty_log_mask & (1 << DIRTY_MEMORY_CODE)) { tb_invalidate_phys_range(VAR_1, VAR_1 + VAR_2); dirty_log_mask &= ~(1 << DIRTY_MEMORY_CODE); } cpu_physical_memory_set_dirty_range(VAR_1, VAR_2, dirty_log_mask); } else { xen_modified_memory(VAR_1, VAR_2); } }