vmm_io_hook_t * hook = get_io_hook(&(info->io_map), io_info->port);
uint_t read_size = 0;
- addr_t base_addr = guest_state->es.base;
+ addr_t base_addr = 0;
addr_t dst_addr = 0;
uint_t rep_num = 1;
ullong_t mask = 0;
+
+ if (info->cpu_mode == REAL) {
+ base_addr = (guest_state->es.base << 4);
+ } else if (info->cpu_mode == PROTECTED) {
+ base_addr = guest_state->es.base;
+ }
+
+
// This is kind of hacky...
// direction can equal either 1 or -1
// We will multiply the final added offset by this value to go the correct direction
vmm_io_hook_t * hook = get_io_hook(&(info->io_map), io_info->port);
uint_t write_size = 0;
- addr_t base_addr = guest_state->ds.base;
+ addr_t base_addr = 0;
addr_t dst_addr = 0;
uint_t rep_num = 1;
ullong_t mask = 0;
+
+
+ if (info->cpu_mode == REAL) {
+ base_addr = (guest_state->ds.base << 4);
+ } else if (info->cpu_mode == PROTECTED) {
+ base_addr = guest_state->ds.base;
+ }
+
// This is kind of hacky...
// direction can equal either 1 or -1
// We will multiply the final added offset by this value to go the correct direction