X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmx_lowlevel.h;fp=palacios%2Finclude%2Fpalacios%2Fvmx_lowlevel.h;h=01bca797049e79a70dfa70e4e93f7b43ef94d58a;hp=81872e022a62e61801442f8a931c8c1b5aef8dc4;hb=de6084de2145f3889a16d8498e5e7d44e96e0162;hpb=87b1679efe8bee960b65cfd730188ccc94966b71 diff --git a/palacios/include/palacios/vmx_lowlevel.h b/palacios/include/palacios/vmx_lowlevel.h index 81872e0..01bca79 100644 --- a/palacios/include/palacios/vmx_lowlevel.h +++ b/palacios/include/palacios/vmx_lowlevel.h @@ -128,7 +128,7 @@ static inline int vmcs_store(addr_t vmcs_ptr) { } static inline int vmcs_read(vmcs_field_t vmcs_field, void * dst) { - uint64_t val = 0; + addr_t val = 0; uint8_t ret_valid = 0; uint8_t ret_invalid = 0; @@ -136,9 +136,9 @@ static inline int vmcs_read(vmcs_field_t vmcs_field, void * dst) { VMREAD_OPCODE EAX_ECX_MODRM "seteb %1;" // fail valid - "setnaeb %2;" // fail invalid - : "=&c"(val), "=q"(ret_valid), "=q"(ret_invalid) // Use ECX - : "a" (vmcs_field), "1"(ret_valid), "2"(ret_invalid) + "setnaeb %1;" // fail invalid + : "=c"(val), "=d"(ret_valid) //, "=r"(ret_invalid) // Use ECX + : "a" (vmcs_field), "0"(0), "1"(ret_valid) : "memory" ); @@ -171,7 +171,7 @@ static inline int vmcs_write(vmcs_field_t vmcs_field, addr_t value) { "seteb %0;" // fail valid (ZF=1) "setnaeb %1;" // fail invalid (CF=1) : "=q" (ret_valid), "=q" (ret_invalid) - : "a" (vmcs_field), "c"(value), "0"(ret_valid), "1"(ret_invalid) + : "a" (vmcs_field), "c"(value) : "memory"); CHECK_VMXFAIL(ret_valid, ret_invalid);