aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/x86_emulate.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-22 17:18:02 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-22 17:18:02 +0000
commitb4841dbaca5470dfe3691d837ec7e59bf0286705 (patch)
treee75d25c8f4038c11f1fbd672c5a6e83cde8f7dca /xen/include/asm-x86/x86_emulate.h
parent2b2eda45a3307acd9ea2af109e6b837ffb17aa11 (diff)
downloadxen-b4841dbaca5470dfe3691d837ec7e59bf0286705.tar.gz
xen-b4841dbaca5470dfe3691d837ec7e59bf0286705.tar.bz2
xen-b4841dbaca5470dfe3691d837ec7e59bf0286705.zip
x86_emulate: Provide callbacks for faster emulation of:
REP MOVS, REP INS, REP OUTS. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/x86_emulate.h')
-rw-r--r--xen/include/asm-x86/x86_emulate.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/xen/include/asm-x86/x86_emulate.h b/xen/include/asm-x86/x86_emulate.h
index 2de071bd7f..a794e03d6f 100644
--- a/xen/include/asm-x86/x86_emulate.h
+++ b/xen/include/asm-x86/x86_emulate.h
@@ -175,6 +175,49 @@ struct x86_emulate_ops
struct x86_emulate_ctxt *ctxt);
/*
+ * rep_ins: Emulate INS: <src_port> -> <dst_seg:dst_offset>.
+ * @bytes_per_rep: [IN ] Bytes transferred per repetition.
+ * @reps: [IN ] Maximum repetitions to be emulated.
+ * [OUT] Number of repetitions actually emulated.
+ */
+ int (*rep_ins)(
+ uint16_t src_port,
+ enum x86_segment dst_seg,
+ unsigned long dst_offset,
+ unsigned int bytes_per_rep,
+ unsigned long *reps,
+ struct x86_emulate_ctxt *ctxt);
+
+ /*
+ * rep_outs: Emulate OUTS: <src_seg:src_offset> -> <dst_port>.
+ * @bytes_per_rep: [IN ] Bytes transferred per repetition.
+ * @reps: [IN ] Maximum repetitions to be emulated.
+ * [OUT] Number of repetitions actually emulated.
+ */
+ int (*rep_outs)(
+ enum x86_segment src_seg,
+ unsigned long src_offset,
+ uint16_t dst_port,
+ unsigned int bytes_per_rep,
+ unsigned long *reps,
+ struct x86_emulate_ctxt *ctxt);
+
+ /*
+ * rep_movs: Emulate MOVS: <src_seg:src_offset> -> <dst_seg:dst_offset>.
+ * @bytes_per_rep: [IN ] Bytes transferred per repetition.
+ * @reps: [IN ] Maximum repetitions to be emulated.
+ * [OUT] Number of repetitions actually emulated.
+ */
+ int (*rep_movs)(
+ enum x86_segment src_seg,
+ unsigned long src_offset,
+ enum x86_segment dst_seg,
+ unsigned long dst_offset,
+ unsigned int bytes_per_rep,
+ unsigned long *reps,
+ struct x86_emulate_ctxt *ctxt);
+
+ /*
* read_segment: Emulate a read of full context of a segment register.
* @reg: [OUT] Contents of segment register (visible and hidden state).
*/