intermediate commit, working unmap of complete blocks, still need sub-blocks, and cross block
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_aarch64
|
||||
#define tb_cleanup tb_cleanup_aarch64
|
||||
#define memory_map memory_map_aarch64
|
||||
#define memory_unmap memory_unmap_aarch64
|
||||
#define memory_free memory_free_aarch64
|
||||
#define helper_raise_exception helper_raise_exception_aarch64
|
||||
#define tcg_enabled tcg_enabled_aarch64
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_arm
|
||||
#define tb_cleanup tb_cleanup_arm
|
||||
#define memory_map memory_map_arm
|
||||
#define memory_unmap memory_unmap_arm
|
||||
#define memory_free memory_free_arm
|
||||
#define helper_raise_exception helper_raise_exception_arm
|
||||
#define tcg_enabled tcg_enabled_arm
|
||||
|
||||
@@ -13,6 +13,7 @@ symbols = (
|
||||
'phys_mem_clean',
|
||||
'tb_cleanup',
|
||||
'memory_map',
|
||||
'memory_unmap',
|
||||
'memory_free',
|
||||
'helper_raise_exception',
|
||||
'tcg_enabled',
|
||||
|
||||
@@ -939,6 +939,7 @@ void address_space_unmap(AddressSpace *as, void *buffer, hwaddr len,
|
||||
void memory_register_types(struct uc_struct *uc);
|
||||
|
||||
MemoryRegion *memory_map(struct uc_struct *uc, ram_addr_t begin, size_t size, uint32_t perms);
|
||||
void memory_unmap(struct uc_struct *uc, MemoryRegion *mr);
|
||||
int memory_free(struct uc_struct *uc);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_m68k
|
||||
#define tb_cleanup tb_cleanup_m68k
|
||||
#define memory_map memory_map_m68k
|
||||
#define memory_unmap memory_unmap_m68k
|
||||
#define memory_free memory_free_m68k
|
||||
#define helper_raise_exception helper_raise_exception_m68k
|
||||
#define tcg_enabled tcg_enabled_m68k
|
||||
|
||||
@@ -45,6 +45,18 @@ MemoryRegion *memory_map(struct uc_struct *uc, ram_addr_t begin, size_t size, ui
|
||||
return uc->ram;
|
||||
}
|
||||
|
||||
void memory_unmap(struct uc_struct *uc, MemoryRegion *mr)
|
||||
{
|
||||
targer_ulong addr;
|
||||
//make sure all pages associated with the MemoryRegion are flushed
|
||||
for (addr = mr->addr; addr < mr->end; addr += 0x1000) {
|
||||
tlb_flush_page(uc->current_cpu, addr);
|
||||
}
|
||||
mr->enabled = false;
|
||||
memory_region_del_subregion(get_system_memory(uc), mr);
|
||||
g_free(mr);
|
||||
}
|
||||
|
||||
int memory_free(struct uc_struct *uc)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_mips
|
||||
#define tb_cleanup tb_cleanup_mips
|
||||
#define memory_map memory_map_mips
|
||||
#define memory_unmap memory_unmap_mips
|
||||
#define memory_free memory_free_mips
|
||||
#define helper_raise_exception helper_raise_exception_mips
|
||||
#define tcg_enabled tcg_enabled_mips
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_mips64
|
||||
#define tb_cleanup tb_cleanup_mips64
|
||||
#define memory_map memory_map_mips64
|
||||
#define memory_unmap memory_unmap_mips64
|
||||
#define memory_free memory_free_mips64
|
||||
#define helper_raise_exception helper_raise_exception_mips64
|
||||
#define tcg_enabled tcg_enabled_mips64
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_mips64el
|
||||
#define tb_cleanup tb_cleanup_mips64el
|
||||
#define memory_map memory_map_mips64el
|
||||
#define memory_unmap memory_unmap_mips64el
|
||||
#define memory_free memory_free_mips64el
|
||||
#define helper_raise_exception helper_raise_exception_mips64el
|
||||
#define tcg_enabled tcg_enabled_mips64el
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_mipsel
|
||||
#define tb_cleanup tb_cleanup_mipsel
|
||||
#define memory_map memory_map_mipsel
|
||||
#define memory_unmap memory_unmap_mipsel
|
||||
#define memory_free memory_free_mipsel
|
||||
#define helper_raise_exception helper_raise_exception_mipsel
|
||||
#define tcg_enabled tcg_enabled_mipsel
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_powerpc
|
||||
#define tb_cleanup tb_cleanup_powerpc
|
||||
#define memory_map memory_map_powerpc
|
||||
#define memory_unmap memory_unmap_powerpc
|
||||
#define memory_free memory_free_powerpc
|
||||
#define helper_raise_exception helper_raise_exception_powerpc
|
||||
#define tcg_enabled tcg_enabled_powerpc
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_sparc
|
||||
#define tb_cleanup tb_cleanup_sparc
|
||||
#define memory_map memory_map_sparc
|
||||
#define memory_unmap memory_unmap_sparc
|
||||
#define memory_free memory_free_sparc
|
||||
#define helper_raise_exception helper_raise_exception_sparc
|
||||
#define tcg_enabled tcg_enabled_sparc
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_sparc64
|
||||
#define tb_cleanup tb_cleanup_sparc64
|
||||
#define memory_map memory_map_sparc64
|
||||
#define memory_unmap memory_unmap_sparc64
|
||||
#define memory_free memory_free_sparc64
|
||||
#define helper_raise_exception helper_raise_exception_sparc64
|
||||
#define tcg_enabled tcg_enabled_sparc64
|
||||
|
||||
@@ -73,6 +73,7 @@ static inline void uc_common_init(struct uc_struct* uc)
|
||||
uc->pause_all_vcpus = pause_all_vcpus;
|
||||
uc->vm_start = vm_start;
|
||||
uc->memory_map = memory_map;
|
||||
uc->memory_unmap = memory_unmap;
|
||||
uc->readonly_mem = memory_region_set_readonly;
|
||||
|
||||
if (!uc->release)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define phys_mem_clean phys_mem_clean_x86_64
|
||||
#define tb_cleanup tb_cleanup_x86_64
|
||||
#define memory_map memory_map_x86_64
|
||||
#define memory_unmap memory_unmap_x86_64
|
||||
#define memory_free memory_free_x86_64
|
||||
#define helper_raise_exception helper_raise_exception_x86_64
|
||||
#define tcg_enabled tcg_enabled_x86_64
|
||||
|
||||
Reference in New Issue
Block a user