X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_xed.c;h=3c39b13840dcfb828bdf736f1292fd21e58e6606;hb=dc450df7818a872a3e8a3725ec97bdc273756b06;hp=f34408bcb458676783f485454937e26aa81779cf;hpb=8cd226e9445d54e8914ca71abdc233f8fb15d513;p=palacios.git diff --git a/palacios/src/palacios/vmm_xed.c b/palacios/src/palacios/vmm_xed.c index f34408b..3c39b13 100644 --- a/palacios/src/palacios/vmm_xed.c +++ b/palacios/src/palacios/vmm_xed.c @@ -67,12 +67,16 @@ static const ullong_t mask_8 = 0xffffffffffffffffLL; switch (length) { \ case 1: \ mask = mask_1; \ + break; \ case 2: \ mask = mask_2; \ + break; \ case 4: \ mask = mask_4; \ + break; \ case 8: \ mask = mask_8; \ + break; \ } \ val & mask;}) \ @@ -581,14 +585,14 @@ static int get_memory_operand(struct guest_info * info, xed_decoded_inst_t * xe - PrintDebug("Struct: Seg=%p, base=%p, index=%p, scale=%p, displacement=%p\n", + PrintDebug("Struct: Seg=%p, base=%p, index=%p, scale=%p, displacement=%p (size=%d)\n", (void *)mem_op.segment, (void*)mem_op.base, (void *)mem_op.index, - (void *)mem_op.scale, (void *)(addr_t)mem_op.displacement); + (void *)mem_op.scale, (void *)(addr_t)mem_op.displacement, mem_op.displacement_size); PrintDebug("operand size: %d\n", operand->size); - seg = mem_op.segment; + seg = MASK(mem_op.segment, mem_op.segment_size); base = MASK(mem_op.base, mem_op.base_size); index = MASK(mem_op.index, mem_op.index_size); scale = mem_op.scale;