X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_io.c;h=f6e9c62675bb4525ec80f9b03682df7372617a20;hb=e9bfcdfa725b34d81c48d713adf9d173f3168951;hp=ece437ae8f5b6bac7360eb6ab1fd8aae1fd54e54;hpb=c502aac6baf363d633aca6ec883b05476634e854;p=palacios.git diff --git a/palacios/src/palacios/svm_io.c b/palacios/src/palacios/svm_io.c index ece437a..f6e9c62 100644 --- a/palacios/src/palacios/svm_io.c +++ b/palacios/src/palacios/svm_io.c @@ -104,9 +104,9 @@ int handle_svm_io_ins(struct guest_info * info) { // This value should be set depending on the host register size... mask = get_gpr_mask(info); - - PrintDebug("INS Aborted... Check implementation\n"); - return -1; + PrintDebug("INS io_info invalid address size, assuming 32, io_info=0x%x\n",*((uint_t*)(io_info))); + // PrintDebug("INS Aborted... Check implementation\n"); + //return -1; } if (io_info->rep) { @@ -237,15 +237,22 @@ int handle_svm_io_outs(struct guest_info * info) { } else if (io_info->addr64) { mask = 0xffffffffffffffffLL; } else { + // This value should be set depending on the host register size... + mask = get_gpr_mask(info); + + PrintDebug("OUTS io_info invalid address size, assuming 32, io_info=0x%x\n",*((uint_t*)(io_info))); + // PrintDebug("INS Aborted... Check implementation\n"); + //return -1; // should never happen - PrintDebug("Invalid Address length\n"); - return -1; + //PrintDebug("Invalid Address length\n"); + //return -1; } if (io_info->rep) { rep_num = info->vm_regs.rcx & mask; } + PrintDebug("OUTS size=%d for %d steps\n", write_size, rep_num); while (rep_num > 0) { addr_t host_addr;