summaryrefslogtreecommitdiff
path: root/cpu-all.h
diff options
context:
space:
mode:
authorYoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>2010-03-23 16:39:52 +0900
committerAurelien Jarno <aurelien@aurel32.net>2010-04-08 11:11:21 +0200
commitca39b46e184e4fdef8e0098f71dcb1980e0e4cbe (patch)
tree7270520769048651b69b1a2d1e67d7fe10368f3a /cpu-all.h
parentd9968827032039d99b38db7ad3598767e1a53bbb (diff)
downloadqemu-ca39b46e184e4fdef8e0098f71dcb1980e0e4cbe.tar.gz
Introduce wrapper functions to access phys_ram_dirty.
Adds wrapper functions to prevent direct access to the phys_ram_dirty bitmap. Signed-off-by: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp> Reviewed-by: Avi Kivity <avi@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'cpu-all.h')
-rw-r--r--cpu-all.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/cpu-all.h b/cpu-all.h
index 927445c49a..3004d0fd31 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -888,6 +888,11 @@ static inline int cpu_physical_memory_is_dirty(ram_addr_t addr)
return phys_ram_dirty[addr >> TARGET_PAGE_BITS] == 0xff;
}
+static inline int cpu_physical_memory_get_dirty_flags(ram_addr_t addr)
+{
+ return phys_ram_dirty[addr >> TARGET_PAGE_BITS];
+}
+
static inline int cpu_physical_memory_get_dirty(ram_addr_t addr,
int dirty_flags)
{
@@ -899,6 +904,27 @@ static inline void cpu_physical_memory_set_dirty(ram_addr_t addr)
phys_ram_dirty[addr >> TARGET_PAGE_BITS] = 0xff;
}
+static inline int cpu_physical_memory_set_dirty_flags(ram_addr_t addr,
+ int dirty_flags)
+{
+ return phys_ram_dirty[addr >> TARGET_PAGE_BITS] |= dirty_flags;
+}
+
+static inline void cpu_physical_memory_mask_dirty_range(ram_addr_t start,
+ int length,
+ int dirty_flags)
+{
+ int i, mask, len;
+ uint8_t *p;
+
+ len = length >> TARGET_PAGE_BITS;
+ mask = ~dirty_flags;
+ p = phys_ram_dirty + (start >> TARGET_PAGE_BITS);
+ for (i = 0; i < len; i++) {
+ p[i] &= mask;
+ }
+}
+
void cpu_physical_memory_reset_dirty(ram_addr_t start, ram_addr_t end,
int dirty_flags);
void cpu_tlb_update_dirty(CPUState *env);