X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_decoder.h;fp=palacios%2Finclude%2Fpalacios%2Fvmm_decoder.h;h=e5232b850f8f32dbde4352a11053290ce9f14e84;hb=a5c5675571882a9b8a7594ef07fe303b195ef9ae;hp=2617913eb2a684ff4c29ad867362eb48e45f4a62;hpb=9b78fe7d41b07fd135eae2282cc18ccb964e7de3;p=palacios.git diff --git a/palacios/include/palacios/vmm_decoder.h b/palacios/include/palacios/vmm_decoder.h index 2617913..e5232b8 100644 --- a/palacios/include/palacios/vmm_decoder.h +++ b/palacios/include/palacios/vmm_decoder.h @@ -47,6 +47,15 @@ struct x86_instr { }; +struct basic_instr_info { + uint_t instr_length; + uint_t op_size; + uint_t str_op : 1; + uint_t has_rep : 1; +}; + + + /************************/ /* EXTERNAL DECODER API */ /************************/ @@ -84,11 +93,12 @@ int v3_encode(struct guest_info * info, struct x86_instr * instr, char * instr_b * Gets the operand size for a memory operation * */ -int v3_basic_mem_decode(struct guest_info * info, addr_t instr_ptr, uint_t * size, uint_t * instr_len); - +int v3_basic_mem_decode(struct guest_info * info, addr_t instr_ptr, struct basic_instr_info * instr_info); +/* Removes a rep prefix in place */ +void strip_rep_prefix(uchar_t * instr, int length);