X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_emulator.c;h=97549eb10ae405a79e9717cc1d315b0bc86aeab5;hb=976d67e1c6f988ca38ae83347859ccc86d485651;hp=b5394900390673b1efb424f69749832dedb5d36f;hpb=7cdedeb7a01b51c5242cce94924f2ea246008e7d;p=palacios.git diff --git a/palacios/src/palacios/vmm_emulator.c b/palacios/src/palacios/vmm_emulator.c index b539490..97549eb 100644 --- a/palacios/src/palacios/vmm_emulator.c +++ b/palacios/src/palacios/vmm_emulator.c @@ -55,7 +55,7 @@ int v3_init_emulator(struct guest_info * info) { } static addr_t get_new_page() { - void * page = V3_AllocPages(1); + void * page = V3_VAddr(V3_AllocPages(1)); memset(page, 0, PAGE_SIZE); return (addr_t)page; @@ -143,7 +143,7 @@ int v3_emulate_memory_read(struct guest_info * info, addr_t read_gva, uchar_t instr[15]; int ret; struct emulated_page * data_page = V3_Malloc(sizeof(struct emulated_page)); - addr_t data_addr_offset = PT32_PAGE_OFFSET(read_gva); + addr_t data_addr_offset = PAGE_OFFSET(read_gva); pte32_t saved_pte; PrintDebug("Emulating Read\n"); @@ -160,7 +160,7 @@ int v3_emulate_memory_read(struct guest_info * info, addr_t read_gva, } #ifdef DEBUG_EMULATOR - PrintDebug("Instr (15 bytes) at %x:\n", instr); + PrintDebug("Instr (15 bytes) at %p:\n", (void *)(addr_t)instr); PrintTraceMemDump(instr, 15); #endif @@ -180,18 +180,18 @@ int v3_emulate_memory_read(struct guest_info * info, addr_t read_gva, */ data_page->page_addr = get_new_page(); - data_page->va = PT32_PAGE_ADDR(read_gva); + data_page->va = PAGE_ADDR(read_gva); data_page->pte.present = 1; data_page->pte.writable = 0; data_page->pte.user_page = 1; - data_page->pte.page_base_addr = PT32_BASE_ADDR(data_page->page_addr); + data_page->pte.page_base_addr = PAGE_BASE_ADDR((addr_t)V3_PAddr((void *)(addr_t)(data_page->page_addr))); // Read the data directly onto the emulated page ret = read(read_gpa, (void *)(data_page->page_addr + data_addr_offset), instr_info.op_size, private_data); if ((ret == -1) || ((uint_t)ret != instr_info.op_size)) { PrintError("Read error in emulator\n"); - V3_FreePage((void *)(data_page->page_addr)); + V3_FreePage((void *)V3_PAddr((void *)(data_page->page_addr))); V3_Free(data_page); return -1; } @@ -205,7 +205,7 @@ int v3_emulate_memory_read(struct guest_info * info, addr_t read_gva, if (saved_pte.present == 1) { struct saved_page * saved_data_page = V3_Malloc(sizeof(struct saved_page)); saved_data_page->pte = saved_pte; - saved_data_page->va = PT32_PAGE_ADDR(read_gva); + saved_data_page->va = PAGE_ADDR(read_gva); list_add(&(saved_data_page->page_list), &(info->emulator.saved_pages)); info->emulator.num_saved_pages++; @@ -233,11 +233,11 @@ int v3_emulate_memory_write(struct guest_info * info, addr_t write_gva, int ret; struct write_region * write_op = V3_Malloc(sizeof(struct write_region )); struct emulated_page * data_page = V3_Malloc(sizeof(struct emulated_page)); - addr_t data_addr_offset = PT32_PAGE_OFFSET(write_gva); + addr_t data_addr_offset = PAGE_OFFSET(write_gva); pte32_t saved_pte; int i; - PrintDebug("Emulating Write for instruction at 0x%x\n",info->rip); + PrintDebug("Emulating Write for instruction at 0x%p\n", (void *)(addr_t)(info->rip)); if (info->mem_mode == PHYSICAL_MEM) { ret = read_guest_pa_memory(info, get_addr_linear(info, info->rip, &(info->segments.cs)), 15, instr); @@ -271,11 +271,11 @@ int v3_emulate_memory_write(struct guest_info * info, addr_t write_gva, */ data_page->page_addr = get_new_page(); - data_page->va = PT32_PAGE_ADDR(write_gva); + data_page->va = PAGE_ADDR(write_gva); data_page->pte.present = 1; data_page->pte.writable = 1; data_page->pte.user_page = 1; - data_page->pte.page_base_addr = PT32_BASE_ADDR(data_page->page_addr); + data_page->pte.page_base_addr = PAGE_BASE_ADDR((addr_t)V3_PAddr((void *)(addr_t)(data_page->page_addr))); @@ -298,7 +298,7 @@ int v3_emulate_memory_write(struct guest_info * info, addr_t write_gva, if (saved_pte.present == 1) { struct saved_page * saved_data_page = V3_Malloc(sizeof(struct saved_page)); saved_data_page->pte = saved_pte; - saved_data_page->va = PT32_PAGE_ADDR(write_gva); + saved_data_page->va = PAGE_ADDR(write_gva); list_add(&(saved_data_page->page_list), &(info->emulator.saved_pages)); info->emulator.num_saved_pages++; @@ -348,10 +348,10 @@ int v3_emulation_exit_handler(struct guest_info * info) { list_for_each_entry_safe(empg, p_empg, &(info->emulator.emulated_pages), page_list) { pte32_t empte32_t; - PrintDebug("wiping page %x\n", empg->va); + PrintDebug("wiping page %p\n", (void *)(addr_t)(empg->va)); v3_replace_shdw_page32(info, empg->va, &dummy_pte, &empte32_t); - V3_FreePage((void *)(empg->page_addr)); + V3_FreePage((void *)(V3_PAddr((void *)(empg->page_addr)))); list_del(&(empg->page_list)); V3_Free(empg); @@ -360,7 +360,7 @@ int v3_emulation_exit_handler(struct guest_info * info) { list_for_each_entry_safe(svpg, p_svpg, &(info->emulator.saved_pages), page_list) { - PrintDebug("Setting Saved page %x back\n", svpg->va); + PrintDebug("Setting Saved page %p back\n", (void *)(addr_t)(svpg->va)); v3_replace_shdw_page32(info, empg->va, &(svpg->pte), &dummy_pte); list_del(&(svpg->page_list)); @@ -373,7 +373,7 @@ int v3_emulation_exit_handler(struct guest_info * info) { //info->rip += info->emulator.instr_length; - PrintDebug("Returning to rip: 0x%x\n", info->rip); + PrintDebug("Returning to rip: 0x%p\n", (void *)(addr_t)(info->rip)); info->emulator.instr_length = 0;