aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/x86_emulate.h
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-02-22 18:32:41 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-02-22 18:32:41 +0000
commit2ea2f369eb3aae4a9bfaa86ce51c31a5258ee20f (patch)
tree6a872eaf316eb132693dcefac373fd7a9fd668b4 /xen/include/asm-x86/x86_emulate.h
parent15adfd0426ab8db33c0a26022b8440b836cc1cd4 (diff)
downloadxen-2ea2f369eb3aae4a9bfaa86ce51c31a5258ee20f.tar.gz
xen-2ea2f369eb3aae4a9bfaa86ce51c31a5258ee20f.tar.bz2
xen-2ea2f369eb3aae4a9bfaa86ce51c31a5258ee20f.zip
hvm: More emulation changes: push some of the realmode or HVM-emulate
specific stuff into core x86_emulate(). 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.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/xen/include/asm-x86/x86_emulate.h b/xen/include/asm-x86/x86_emulate.h
index e42d2aa54f..4ffdac75f3 100644
--- a/xen/include/asm-x86/x86_emulate.h
+++ b/xen/include/asm-x86/x86_emulate.h
@@ -318,11 +318,6 @@ struct x86_emulate_ops
uint64_t val,
struct x86_emulate_ctxt *ctxt);
- /* write_rflags: Modify privileged bits in RFLAGS. */
- int (*write_rflags)(
- unsigned long val,
- struct x86_emulate_ctxt *ctxt);
-
/* wbinvd: Write-back and invalidate cache contents. */
int (*wbinvd)(
struct x86_emulate_ctxt *ctxt);
@@ -335,14 +330,10 @@ struct x86_emulate_ops
unsigned int *edx,
struct x86_emulate_ctxt *ctxt);
- /* hlt: Emulate HLT. */
- int (*hlt)(
- struct x86_emulate_ctxt *ctxt);
-
/* inject_hw_exception */
int (*inject_hw_exception)(
uint8_t vector,
- uint16_t error_code,
+ int32_t error_code,
struct x86_emulate_ctxt *ctxt);
/* inject_sw_interrupt */
@@ -376,7 +367,17 @@ struct x86_emulate_ctxt
unsigned int sp_size;
/* Set this if writes may have side effects. */
- int force_writeback;
+ uint8_t force_writeback;
+
+ /* Retirement state, set by the emulator (valid only on X86EMUL_OKAY). */
+ union {
+ struct {
+ uint8_t hlt:1; /* Instruction HLTed. */
+ uint8_t mov_ss:1; /* Instruction sets MOV-SS irq shadow. */
+ uint8_t sti:1; /* Instruction sets STI irq shadow. */
+ } flags;
+ uint8_t byte;
+ } retire;
};
/*