X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=4c76f8a367be47adad569aee7b972c1012d09ee3;hb=8f73ff87ab96b79b87854a2135c16b81cff879a3;hp=cc9a8abd7a8fb670e0cb751c33581c22360ea6af;hpb=7cdedeb7a01b51c5242cce94924f2ea246008e7d;p=palacios-OLD.git diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index cc9a8ab..4c76f8a 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -83,7 +83,7 @@ int v3_handle_svm_exit(struct guest_info * info) { // Dump out the instr stream //PrintDebug("RIP: %x\n", guest_state->rip); - PrintDebug("RIP Linear: %x\n", get_addr_linear(info, info->rip, &(info->segments.cs))); + PrintDebug("RIP Linear: %p\n", (void *)get_addr_linear(info, info->rip, &(info->segments.cs))); // OK, now we will read the instruction // The only difference between PROTECTED and PROTECTED_PG is whether we read @@ -190,7 +190,8 @@ int v3_handle_svm_exit(struct guest_info * info) { addr_t fault_addr = guest_ctrl->exit_info2; pf_error_t * error_code = (pf_error_t *)&(guest_ctrl->exit_info1); #ifdef DEBUG_SHADOW_PAGING - PrintDebug("PageFault at %x (error=%d)\n", fault_addr, *error_code); + PrintDebug("PageFault at %p (error=%d)\n", + (void *)fault_addr, *(uint_t *)error_code); #endif if (info->shdw_pg_mode == SHADOW_PAGING) { if (v3_handle_shadow_pagefault(info, fault_addr, *error_code) == -1) { @@ -337,11 +338,11 @@ int v3_handle_svm_exit(struct guest_info * info) { rip_addr = get_addr_linear(info, guest_state->rip, &(info->segments.cs)); - PrintError("SVM Returned:(VMCB=%x)\n", info->vmm_data); - PrintError("RIP: %x\n", guest_state->rip); - PrintError("RIP Linear: %x\n", rip_addr); + PrintError("SVM Returned:(VMCB=%p)\n", (void *)(info->vmm_data)); + PrintError("RIP: %p\n", (void *)(guest_state->rip)); + PrintError("RIP Linear: %p\n", (void *)(rip_addr)); - PrintError("SVM Returned: Exit Code: %x\n", exit_code); + PrintError("SVM Returned: Exit Code: %p\n", (void *)exit_code); PrintError("io_info1 low = 0x%.8x\n", *(uint_t*)&(guest_ctrl->exit_info1)); PrintError("io_info1 high = 0x%.8x\n", *(uint_t *)(((uchar_t *)&(guest_ctrl->exit_info1)) + 4)); @@ -352,12 +353,12 @@ int v3_handle_svm_exit(struct guest_info * info) { if (info->mem_mode == PHYSICAL_MEM) { - if (guest_pa_to_host_pa(info, guest_state->rip, &host_addr) == -1) { + if (guest_pa_to_host_va(info, guest_state->rip, &host_addr) == -1) { PrintError("Could not translate guest_state->rip to host address\n"); return -1; } } else if (info->mem_mode == VIRTUAL_MEM) { - if (guest_va_to_host_pa(info, guest_state->rip, &host_addr) == -1) { + if (guest_va_to_host_va(info, guest_state->rip, &host_addr) == -1) { PrintError("Could not translate guest_state->rip to host address\n"); return -1; } @@ -366,16 +367,16 @@ int v3_handle_svm_exit(struct guest_info * info) { return -1; } - PrintError("Host Address of rip = 0x%x\n", host_addr); + PrintError("Host Address of rip = 0x%p\n", (void *)host_addr); memset(buf, 0, 32); - PrintError("Reading instruction stream in guest\n", rip_addr); + PrintError("Reading instruction stream in guest (addr=%p)\n", (void *)rip_addr); if (info->mem_mode == PHYSICAL_MEM) { - read_guest_pa_memory(info, rip_addr-16, 32, buf); + read_guest_pa_memory(info, rip_addr - 16, 32, buf); } else { - read_guest_va_memory(info, rip_addr-16, 32, buf); + read_guest_va_memory(info, rip_addr - 16, 32, buf); } PrintDebug("16 bytes before Rip\n"); @@ -414,7 +415,9 @@ int v3_handle_svm_exit(struct guest_info * info) { guest_ctrl->guest_ctrl.V_IGN_TPR = 1; guest_ctrl->guest_ctrl.V_INTR_PRIO = 0xf; #ifdef DEBUG_INTERRUPTS - PrintDebug("Injecting Interrupt %d (EIP=%x)\n", guest_ctrl->guest_ctrl.V_INTR_VECTOR, info->rip); + PrintDebug("Injecting Interrupt %d (EIP=%p)\n", + guest_ctrl->guest_ctrl.V_INTR_VECTOR, + (void *)info->rip); #endif v3_injecting_intr(info, irq, EXTERNAL_IRQ); @@ -441,7 +444,9 @@ int v3_handle_svm_exit(struct guest_info * info) { guest_ctrl->EVENTINJ.valid = 1; #ifdef DEBUG_INTERRUPTS - PrintDebug("Injecting Interrupt %d (EIP=%x)\n", guest_ctrl->EVENTINJ.vector, info->rip); + PrintDebug("Injecting Interrupt %d (EIP=%p)\n", + guest_ctrl->EVENTINJ.vector, + (void *)info->rip); #endif v3_injecting_intr(info, excp, EXCEPTION); break;