mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-04-17 23:41:41 +00:00
exec: invert return value of cpu_physical_memory_get_clean, rename
While it is obvious that cpu_physical_memory_get_dirty returns true even if a single page is dirty, the same is not true for cpu_physical_memory_get_clean; one would expect that it returns true only if all the pages are clean, but it actually looks for even one clean page. (By contrast, the caller of that function, cpu_physical_memory_range_includes_clean, has a good name). To clarify, rename the function to cpu_physical_memory_all_dirty and return true if _all_ the pages are dirty. This is the opposite of the previous meaning, because "all are 1" is the same as "not (any is 0)", so we have to modify cpu_physical_memory_range_includes_clean as well Backports commit 72b47e79cef36ed6ffc718f10e21001d7ec2a66f from qemu
This commit is contained in:
parent
c333585a4d
commit
1b1f82cef7
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_aarch64
|
||||
#define cpu_outl cpu_outl_aarch64
|
||||
#define cpu_outw cpu_outw_aarch64
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_aarch64
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_aarch64
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_aarch64
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_aarch64
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_aarch64
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_aarch64
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_aarch64eb
|
||||
#define cpu_outl cpu_outl_aarch64eb
|
||||
#define cpu_outw cpu_outw_aarch64eb
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_aarch64eb
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_aarch64eb
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_aarch64eb
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_aarch64eb
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_aarch64eb
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_aarch64eb
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_arm
|
||||
#define cpu_outl cpu_outl_arm
|
||||
#define cpu_outw cpu_outw_arm
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_arm
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_arm
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_arm
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_arm
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_arm
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_arm
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_armeb
|
||||
#define cpu_outl cpu_outl_armeb
|
||||
#define cpu_outw cpu_outw_armeb
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_armeb
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_armeb
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_armeb
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_armeb
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_armeb
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_armeb
|
||||
|
|
|
@ -1032,7 +1032,9 @@ static ram_addr_t ram_block_add(struct uc_struct *uc, RAMBlock *new_block, Error
|
|||
old_ram_size, new_ram_size);
|
||||
}
|
||||
}
|
||||
cpu_physical_memory_set_dirty_range(uc, new_block->offset, new_block->length);
|
||||
cpu_physical_memory_set_dirty_range(uc, new_block->offset,
|
||||
new_block->length,
|
||||
DIRTY_CLIENTS_ALL);
|
||||
|
||||
qemu_ram_setup_dump(new_block->host, new_block->length);
|
||||
//qemu_madvise(new_block->host, new_block->length, QEMU_MADV_HUGEPAGE);
|
||||
|
|
|
@ -290,8 +290,8 @@ symbols = (
|
|||
'cpu_outb',
|
||||
'cpu_outl',
|
||||
'cpu_outw',
|
||||
'cpu_physical_memory_all_dirty',
|
||||
'cpu_physical_memory_clear_dirty_range',
|
||||
'cpu_physical_memory_get_clean',
|
||||
'cpu_physical_memory_get_dirty',
|
||||
'cpu_physical_memory_get_dirty_flag',
|
||||
'cpu_physical_memory_is_clean',
|
||||
|
|
|
@ -32,6 +32,9 @@ void *qemu_get_ram_ptr(struct uc_struct *uc, ram_addr_t addr);
|
|||
void qemu_ram_free(struct uc_struct *c, ram_addr_t addr);
|
||||
void qemu_ram_free_from_ptr(struct uc_struct *uc, ram_addr_t addr);
|
||||
|
||||
#define DIRTY_CLIENTS_ALL ((1 << DIRTY_MEMORY_NUM) - 1)
|
||||
#define DIRTY_CLIENTS_NOCODE (DIRTY_CLIENTS_ALL & ~(1 << DIRTY_MEMORY_CODE))
|
||||
|
||||
static inline bool cpu_physical_memory_get_dirty(struct uc_struct *uc, ram_addr_t start,
|
||||
ram_addr_t length,
|
||||
unsigned client)
|
||||
|
@ -47,7 +50,7 @@ static inline bool cpu_physical_memory_get_dirty(struct uc_struct *uc, ram_addr_
|
|||
return next < end;
|
||||
}
|
||||
|
||||
static inline bool cpu_physical_memory_get_clean(struct uc_struct *uc, ram_addr_t start,
|
||||
static inline bool cpu_physical_memory_all_dirty(struct uc_struct *uc, ram_addr_t start,
|
||||
ram_addr_t length,
|
||||
unsigned client)
|
||||
{
|
||||
|
@ -59,7 +62,7 @@ static inline bool cpu_physical_memory_get_clean(struct uc_struct *uc, ram_addr_
|
|||
page = start >> TARGET_PAGE_BITS;
|
||||
next = find_next_zero_bit(uc->ram_list.dirty_memory[client], end, page);
|
||||
|
||||
return next < end;
|
||||
return next >= end;
|
||||
}
|
||||
|
||||
static inline bool cpu_physical_memory_get_dirty_flag(struct uc_struct *uc, ram_addr_t addr,
|
||||
|
@ -76,7 +79,7 @@ static inline bool cpu_physical_memory_is_clean(struct uc_struct *uc, ram_addr_t
|
|||
static inline bool cpu_physical_memory_range_includes_clean(struct uc_struct *uc, ram_addr_t start,
|
||||
ram_addr_t length)
|
||||
{
|
||||
return cpu_physical_memory_get_clean(uc, start, length, DIRTY_MEMORY_CODE);
|
||||
return !cpu_physical_memory_all_dirty(uc, start, length, DIRTY_MEMORY_CODE);
|
||||
}
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty_flag(struct uc_struct *uc, ram_addr_t addr,
|
||||
|
@ -87,13 +90,17 @@ static inline void cpu_physical_memory_set_dirty_flag(struct uc_struct *uc, ram_
|
|||
}
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty_range(struct uc_struct *uc, ram_addr_t start,
|
||||
ram_addr_t length)
|
||||
ram_addr_t length,
|
||||
uint8_t mask)
|
||||
{
|
||||
unsigned long end, page;
|
||||
|
||||
end = TARGET_PAGE_ALIGN(start + length) >> TARGET_PAGE_BITS;
|
||||
page = start >> TARGET_PAGE_BITS;
|
||||
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_CODE], page, end - page);
|
||||
if (unlikely(mask & (1 << DIRTY_MEMORY_CODE))) {
|
||||
bitmap_set(uc->ram_list.dirty_memory[DIRTY_MEMORY_CODE], page, end - page);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#if !defined(_WIN32)
|
||||
|
@ -136,7 +143,8 @@ static inline void cpu_physical_memory_set_dirty_lebitmap(struct uc_struct *uc,
|
|||
addr = page_number * TARGET_PAGE_SIZE;
|
||||
ram_addr = start + addr;
|
||||
cpu_physical_memory_set_dirty_range(uc, ram_addr,
|
||||
TARGET_PAGE_SIZE * hpratio);
|
||||
TARGET_PAGE_SIZE * hpratio,
|
||||
DIRTY_CLIENTS_ALL);
|
||||
} while (c != 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_m68k
|
||||
#define cpu_outl cpu_outl_m68k
|
||||
#define cpu_outw cpu_outw_m68k
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_m68k
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_m68k
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_m68k
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_m68k
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_m68k
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_m68k
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_mips
|
||||
#define cpu_outl cpu_outl_mips
|
||||
#define cpu_outw cpu_outw_mips
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_mips
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_mips
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_mips
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_mips
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_mips
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_mips
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_mips64
|
||||
#define cpu_outl cpu_outl_mips64
|
||||
#define cpu_outw cpu_outw_mips64
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_mips64
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_mips64
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_mips64
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_mips64
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_mips64
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_mips64
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_mips64el
|
||||
#define cpu_outl cpu_outl_mips64el
|
||||
#define cpu_outw cpu_outw_mips64el
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_mips64el
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_mips64el
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_mips64el
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_mips64el
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_mips64el
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_mips64el
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_mipsel
|
||||
#define cpu_outl cpu_outl_mipsel
|
||||
#define cpu_outw cpu_outw_mipsel
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_mipsel
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_mipsel
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_mipsel
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_mipsel
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_mipsel
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_mipsel
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_powerpc
|
||||
#define cpu_outl cpu_outl_powerpc
|
||||
#define cpu_outw cpu_outw_powerpc
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_powerpc
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_powerpc
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_powerpc
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_powerpc
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_powerpc
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_powerpc
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_sparc
|
||||
#define cpu_outl cpu_outl_sparc
|
||||
#define cpu_outw cpu_outw_sparc
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_sparc
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_sparc
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_sparc
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_sparc
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_sparc
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_sparc
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_sparc64
|
||||
#define cpu_outl cpu_outl_sparc64
|
||||
#define cpu_outw cpu_outw_sparc64
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_sparc64
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_sparc64
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_sparc64
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_sparc64
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_sparc64
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_sparc64
|
||||
|
|
|
@ -284,8 +284,8 @@
|
|||
#define cpu_outb cpu_outb_x86_64
|
||||
#define cpu_outl cpu_outl_x86_64
|
||||
#define cpu_outw cpu_outw_x86_64
|
||||
#define cpu_physical_memory_all_dirty cpu_physical_memory_all_dirty_x86_64
|
||||
#define cpu_physical_memory_clear_dirty_range cpu_physical_memory_clear_dirty_range_x86_64
|
||||
#define cpu_physical_memory_get_clean cpu_physical_memory_get_clean_x86_64
|
||||
#define cpu_physical_memory_get_dirty cpu_physical_memory_get_dirty_x86_64
|
||||
#define cpu_physical_memory_get_dirty_flag cpu_physical_memory_get_dirty_flag_x86_64
|
||||
#define cpu_physical_memory_is_clean cpu_physical_memory_is_clean_x86_64
|
||||
|
|
Loading…
Reference in a new issue