2 static inline int activate_shadow_pt_64(struct guest_info * info) {
3 struct cr3_64 * shadow_cr3 = (struct cr3_64 *)&(info->ctrl_regs.cr3);
4 struct cr3_64 * guest_cr3 = (struct cr3_64 *)&(info->shdw_pg_state.guest_cr3);
7 shadow_pt = create_new_shadow_pt(info);
9 shadow_cr3->pml4t_base_addr = (addr_t)V3_PAddr((void *)(addr_t)PAGE_BASE_ADDR_4KB(shadow_pt));
10 PrintDebug("Creating new 64 bit shadow page table %p\n", (void *)BASE_TO_PAGE_ADDR(shadow_cr3->pml4t_base_addr))
13 shadow_cr3->pwt = guest_cr3->pwt;
14 shadow_cr3->pcd = guest_cr3->pcd;
27 * * 64 bit Page table fault handlers
32 static int handle_2MB_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_error_t error_code,
33 pte64_t * shadow_pt, pde64_2MB_t * large_guest_pde);
35 static int handle_pte_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_error_t error_code,
36 pte64_t * shadow_pt, pte64_t * guest_pt);
38 static int handle_pde_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_error_t error_code,
39 pde64_t * shadow_pd, pde64_t * guest_pd);
41 static int handle_pdpe_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_error_t error_code,
42 pdpe64_t * shadow_pdp, pdpe64_t * guest_pdp);
45 static inline int handle_shadow_pagefault_64(struct guest_info * info, addr_t fault_addr, pf_error_t error_code) {
46 /* pml4e64_t * guest_pml = NULL;
47 pml4e64_t * shadow_pml = CR3_TO_PML4E64_VA(info->ctrl_regs.cr3);
48 addr_t guest_cr3 = CR3_TO_PML4E64_PA(info->shdw_pg_state.guest_cr3);
49 pt_access_status_t guest_pml_access;
50 pt_access_status_t shadow_pml_access;
51 pml4e64_t * guest_pmle = NULL;
52 // pml4e64_t * shadow_pmle = ;
57 PrintError("64 bit shadow paging not implemented\n");
62 static inline int handle_shadow_invlpg_64(struct guest_info * info, addr_t vaddr) {
63 PrintError("64 bit shadow paging not implemented\n");