These patches split the emulator in two parts: one to decode the instruction, the other to execute it. The decode part is then called only when needed.
[PATCH 1/5] x86_emulate-remove_unused, some cleanup: remove unused functions [PATCH 2/5] x86_emulate-context, move all x86_emulate_memop() common variables between decode and execute to a structure decode_cache. struct decode_cache { u8 twobyte; u8 b; u8 lock_prefix; u8 rep_prefix; u8 op_bytes; u8 ad_bytes; struct operand src; struct operand dst; unsigned long *override_base; unsigned int d; unsigned long regs[NR_VCPU_REGS]; unsigned long eip; /* modrm */ u8 modrm; u8 modrm_mod; u8 modrm_reg; u8 modrm_rm; u8 use_modrm_ea; unsigned long modrm_ea; unsigned long modrm_val; }; [PATCH 3/5] x86_emulate-decode_insn, move all decoding process to function x86_decode_insn(). [PATCH 4/5] x86_emulate-split, emulate_instruction() calls now x86_decode_insn() and x86_emulate_insn(). x86_emulate_insn() is x86_emulate_memop() without the decoding part. [PATCH 5/5] x86_emulate-optimize, move emulate_ctxt to kvm_vcpu to keep emulate context when we exit from kvm module. Call x86_decode_insn() only when needed. Modify x86_emulate_insn() to not modify the context if it must be re-entered. Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]> -- ------------- [EMAIL PROTECTED] -------------- "Software is hard" - Donald Knuth ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel