X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_shadow_paging.c;h=c12b485c56b5374d62e0a31b2397f8a5256c7419;hp=faa48e1c26a0894d658de8318be87e538308943d;hb=b81af0a653e471ba2aa240c5135bd113467587ca;hpb=62406cf6b87a27a62921ce09a0aa44780ea25c06 diff --git a/palacios/src/palacios/vmm_shadow_paging.c b/palacios/src/palacios/vmm_shadow_paging.c index faa48e1..c12b485 100644 --- a/palacios/src/palacios/vmm_shadow_paging.c +++ b/palacios/src/palacios/vmm_shadow_paging.c @@ -82,6 +82,9 @@ int v3_init_shadow_page_state(struct guest_info * info) { state->guest_cr3 = 0; state->shadow_cr3 = 0; + state->guest_cr0 = 0; + + state->cr3_cache = create_hashtable(0, &cr3_hash_fn, &cr3_equals); @@ -144,6 +147,16 @@ int cache_page_tables32(struct guest_info * info, addr_t pde) { } */ + +int v3_cache_page_tables(struct guest_info * info, addr_t cr3) { + switch(v3_get_cpu_mode(info)) { + case PROTECTED: + return v3_cache_page_tables32(info, (addr_t)V3_PAddr((void *)CR3_TO_PDE32(cr3))); + default: + return -1; + } +} + int v3_cache_page_tables32(struct guest_info * info, addr_t pde) { struct shadow_page_state * state = &(info->shdw_pg_state); addr_t pde_host_addr;