-// These are the types of physical memory address regions
-// from the perspective of the HOST
-typedef enum shdw_region_type {
- SHDW_REGION_WRITE_HOOK, // This region is mapped as read-only (page faults on write)
- SHDW_REGION_FULL_HOOK, // This region is mapped as not present (always generate page faults)
- SHDW_REGION_ALLOCATED, // Region is a section of host memory
- SHDW_REGION_BASE,
-} v3_shdw_region_type_t;
-
#define V3_MEM_CORE_ANY ((uint16_t)-1)
addr_t guest_start;
addr_t guest_end;
- v3_shdw_region_type_t host_type;
v3_mem_flags_t flags;
addr_t host_addr; // This either points to a host address mapping
map->base_region.guest_start = 0;
map->base_region.guest_end = mem_pages * PAGE_SIZE_4KB;
- map->base_region.host_type = SHDW_REGION_ALLOCATED;
map->base_region.host_addr = (addr_t)V3_AllocPages(mem_pages);
map->base_region.flags.read = 1;
entry->guest_start = guest_addr_start;
entry->guest_end = guest_addr_end;
- entry->host_type = SHDW_REGION_ALLOCATED;
entry->host_addr = host_addr;
entry->write_hook = NULL;
entry->read_hook = NULL;
entry->guest_start = guest_addr_start;
entry->guest_end = guest_addr_end;
- entry->host_type = SHDW_REGION_WRITE_HOOK;
entry->host_addr = host_addr;
entry->write_hook = write;
entry->read_hook = NULL;
entry->guest_start = guest_addr_start;
entry->guest_end = guest_addr_end;
- entry->host_type = SHDW_REGION_FULL_HOOK;
entry->host_addr = (addr_t)NULL;
entry->write_hook = write;
entry->read_hook = read;