int v3_init_shdw_impl(struct v3_vm_info * vm) {
struct v3_shdw_impl_state * impl_state = &(vm->shdw_impl);
v3_cfg_tree_t * pg_cfg = v3_cfg_subtree(vm->cfg_data->cfg, "paging");
+ char * type_name = v3_cfg_val(pg_cfg, NULL);
char * impl_name = v3_cfg_val(pg_cfg, "mode");
struct v3_shdw_pg_impl * impl = NULL;
+ if (type_name && (strcasecmp(type_name, "shadow") != 0)) {
+ PrintDebug("Shadow paging not specified for VM.\n");
+ return 0;
+ }
+
V3_Print("Initialization of Shadow Paging implementation\n");
impl = (struct v3_shdw_pg_impl *)v3_htable_search(master_shdw_pg_table, (addr_t)impl_name);
}
if (v3_get_vm_mem_mode(core) == PHYSICAL_MEM) {
- ret = read_guest_pa_memory(core, get_addr_linear(core, core->rip, &(core->segments.cs)), 15, instr);
+ ret = v3_read_gpa_memory(core, get_addr_linear(core, core->rip, &(core->segments.cs)), 15, instr);
} else {
- ret = read_guest_va_memory(core, get_addr_linear(core, core->rip, &(core->segments.cs)), 15, instr);
+ ret = v3_read_gva_memory(core, get_addr_linear(core, core->rip, &(core->segments.cs)), 15, instr);
}
if (ret == -1) {