mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-29 06:20:26 +00:00
Use 64bit pointer for dirty log
Dirty logs currently get written with native "long" size. On little endian it doesn't matter if we use uint64_t instead though, because we'd still end up using the right bytes. On big endian, this does become a bigger problem, so we need to ensure that kernel and userspace talk the same language, which means getting rid of "long" and using a defined size instead. So I decided to use 64 bit types at all times. This doesn't break existing targets but will in conjunction with a patch I'll send to the KVM ML make dirty logs work with 32 bit userspace on 64 kernel with big endian. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
ce536cfd1c
commit
1c7936e377
@ -357,7 +357,7 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr,
|
||||
for (phys_addr = mem->start_addr, addr = mem->phys_offset;
|
||||
phys_addr < mem->start_addr + mem->memory_size;
|
||||
phys_addr += TARGET_PAGE_SIZE, addr += TARGET_PAGE_SIZE) {
|
||||
unsigned long *bitmap = (unsigned long *)d.dirty_bitmap;
|
||||
uint64_t *bitmap = (uint64_t *)d.dirty_bitmap;
|
||||
unsigned nr = (phys_addr - mem->start_addr) >> TARGET_PAGE_BITS;
|
||||
unsigned word = nr / (sizeof(*bitmap) * 8);
|
||||
unsigned bit = nr % (sizeof(*bitmap) * 8);
|
||||
|
Loading…
Reference in New Issue
Block a user