#include <palacios/vmm_decoder.h>
#include <palacios/vm_guest_mem.h>
-#ifndef CONFIG_DEBUG_IO
+#ifndef V3_CONFIG_DEBUG_IO
#undef PrintDebug
#define PrintDebug(fmt, args...)
#endif
return 0;
}
+int v3_deinit_svm_io_map(struct v3_vm_info * vm) {
+ V3_FreePages(V3_PAddr(vm->io_map.arch_data), 3);
+ return 0;
+}
+
// This should package up an IO request and call vmm_handle_io
uint_t rep_num = 1;
ullong_t mask = 0;
addr_t inst_ptr;
- struct v3_segment * theseg = &(core->segments.es); // default is ES
+ struct v3_segment * theseg = &(core->segments.ds); // default is DS
// This is kind of hacky...
// direction can equal either 1 or -1
PrintDebug("OUTS size=%d for %d steps\n", write_size, rep_num);
while (rep_num > 0) {
- addr_t host_addr;
+ addr_t host_addr = 0;
dst_addr = get_addr_linear(core, (core->vm_regs.rsi & mask), theseg);
if (v3_gva_to_hva(core, dst_addr, &host_addr) == -1) {
- // either page fault or gpf...
+ PrintError("Could not translate outs dest addr, either page fault or gpf...\n");
+ return -1;
}
if (hook->write(core, io_info->port, (char*)host_addr, write_size, hook->priv_data) != write_size) {