|
@@ -1971,25 +1971,7 @@ void memory_region_set_dirty(MemoryRegion *mr, hwaddr addr,
|
|
|
memory_region_get_dirty_log_mask(mr));
|
|
|
}
|
|
|
|
|
|
-DirtyBitmapSnapshot *memory_region_snapshot_and_clear_dirty(MemoryRegion *mr,
|
|
|
- hwaddr addr,
|
|
|
- hwaddr size,
|
|
|
- unsigned client)
|
|
|
-{
|
|
|
- assert(mr->ram_block);
|
|
|
- return cpu_physical_memory_snapshot_and_clear_dirty(
|
|
|
- memory_region_get_ram_addr(mr) + addr, size, client);
|
|
|
-}
|
|
|
-
|
|
|
-bool memory_region_snapshot_get_dirty(MemoryRegion *mr, DirtyBitmapSnapshot *snap,
|
|
|
- hwaddr addr, hwaddr size)
|
|
|
-{
|
|
|
- assert(mr->ram_block);
|
|
|
- return cpu_physical_memory_snapshot_get_dirty(snap,
|
|
|
- memory_region_get_ram_addr(mr) + addr, size);
|
|
|
-}
|
|
|
-
|
|
|
-void memory_region_sync_dirty_bitmap(MemoryRegion *mr)
|
|
|
+static void memory_region_sync_dirty_bitmap(MemoryRegion *mr)
|
|
|
{
|
|
|
MemoryListener *listener;
|
|
|
AddressSpace *as;
|
|
@@ -2017,6 +1999,25 @@ void memory_region_sync_dirty_bitmap(MemoryRegion *mr)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+DirtyBitmapSnapshot *memory_region_snapshot_and_clear_dirty(MemoryRegion *mr,
|
|
|
+ hwaddr addr,
|
|
|
+ hwaddr size,
|
|
|
+ unsigned client)
|
|
|
+{
|
|
|
+ assert(mr->ram_block);
|
|
|
+ memory_region_sync_dirty_bitmap(mr);
|
|
|
+ return cpu_physical_memory_snapshot_and_clear_dirty(
|
|
|
+ memory_region_get_ram_addr(mr) + addr, size, client);
|
|
|
+}
|
|
|
+
|
|
|
+bool memory_region_snapshot_get_dirty(MemoryRegion *mr, DirtyBitmapSnapshot *snap,
|
|
|
+ hwaddr addr, hwaddr size)
|
|
|
+{
|
|
|
+ assert(mr->ram_block);
|
|
|
+ return cpu_physical_memory_snapshot_get_dirty(snap,
|
|
|
+ memory_region_get_ram_addr(mr) + addr, size);
|
|
|
+}
|
|
|
+
|
|
|
void memory_region_set_readonly(MemoryRegion *mr, bool readonly)
|
|
|
{
|
|
|
if (mr->readonly != readonly) {
|