X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_handler.c;h=23efbc6c4fa5fc6b3424541a4464464587c3879c;hp=fed7b79a7bcdb39a80149ee3c751c0d2db66a4bd;hb=1cf6b8a334fd683681665c177d33ad6c452ad366;hpb=705cb2fd95fa4e9ebe978fc05b29843c44b3ea54 diff --git a/palacios/src/palacios/svm_handler.c b/palacios/src/palacios/svm_handler.c index fed7b79..23efbc6 100644 --- a/palacios/src/palacios/svm_handler.c +++ b/palacios/src/palacios/svm_handler.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include @@ -61,7 +63,7 @@ int handle_svm_exit(struct guest_info * info) { if (handle_cr0_write(info) == -1) { return -1; } - + /* } else if (( (exit_code == VMEXIT_CR3_READ) || (exit_code == VMEXIT_CR3_WRITE) || (exit_code == VMEXIT_INVLPG) || @@ -69,6 +71,27 @@ int handle_svm_exit(struct guest_info * info) { (exit_code == VMEXIT_EXCP14)) && (info->page_mode == SHADOW_PAGING)) { handle_shadow_paging(info); + */ + } else { + addr_t rip_addr = get_addr_linear(info, guest_state->rip, guest_state->cs.selector); + char buf[15]; + addr_t host_addr; + + if (guest_pa_to_host_pa(info, guest_state->rip, &host_addr) == -1) { + PrintDebug("Could not translate guest_state->rip to host address\n"); + return -1; + } + + PrintDebug("Host Address of rip = 0x%x\n", host_addr); + + memset(buf, 0, 15); + + PrintDebug("Reading from 0x%x in guest\n", rip_addr); + + read_guest_pa_memory(info, rip_addr, 15, buf); + + PrintTraceMemDump(buf, 15); + }