+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National
+ * Science Foundation and the Department of Energy.
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico. You can find out more at
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
+ * All rights reserved.
+ *
+ * Author: Jack Lange <jarusl@cs.northwestern.edu>
+ *
+ * This is free software. You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
#include <palacios/vmm.h>
#include <palacios/vmm_emulator.h>
#include <palacios/vm_guest_mem.h>
struct emulated_page * data_page = V3_Malloc(sizeof(struct emulated_page));
addr_t data_addr_offset = PT32_PAGE_OFFSET(write_gva);
pte32_t saved_pte;
+ int i;
- PrintDebug("Emulating Write\n");
+ PrintDebug("Emulating Write for instruction at 0x%x\n",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);
} else {
ret = read_guest_va_memory(info, get_addr_linear(info, info->rip, &(info->segments.cs)), 15, instr);
}
+
+
+ PrintDebug("Instruction is");
+ for (i=0;i<15;i++) { PrintDebug(" 0x%x",instr[i]); }
+ PrintDebug("\n");
if (v3_basic_mem_decode(info, (addr_t)instr, &instr_info) == -1) {
PrintError("Could not do a basic memory instruction decode\n");
return -1;
}
+ if (instr_info.has_rep==1) {
+ PrintDebug("Emulated instruction has rep\n");
+ }
+
/*
if (instr_info.has_rep == 1) {
PrintError("We currently don't handle rep* instructions\n");