aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2007-12-07 17:05:15 +0000
committerKeir Fraser <keir.fraser@citrix.com>2007-12-07 17:05:15 +0000
commit1fcd46b927c07caa1df1b82cd3bca2c547c06f01 (patch)
tree2c6b2a80b048c0976151d77cb7e59b63e393cc54
parent680ecb44daac0b6a875462ce23dacf9cf548d99c (diff)
downloadxen-1fcd46b927c07caa1df1b82cd3bca2c547c06f01.tar.gz
xen-1fcd46b927c07caa1df1b82cd3bca2c547c06f01.tar.bz2
xen-1fcd46b927c07caa1df1b82cd3bca2c547c06f01.zip
x86: Change proliant io emulation stub to use pushf/popf instead of pushfw/popfw.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r--xen/arch/x86/ioport_emulate.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/xen/arch/x86/ioport_emulate.c b/xen/arch/x86/ioport_emulate.c
index 2180b6027b..b6df736672 100644
--- a/xen/arch/x86/ioport_emulate.c
+++ b/xen/arch/x86/ioport_emulate.c
@@ -22,26 +22,24 @@ static void ioemul_handle_proliant_quirk(
if ( (opcode != 0xee) || (port != 0xcd4) || !(value & 0x80) )
return;
- /* pushfw */
- io_emul_stub[ 0] = 0x66;
- io_emul_stub[ 1] = 0x9c;
+ /* pushf */
+ io_emul_stub[0] = 0x9c;
/* cli */
- io_emul_stub[ 2] = 0xfa;
+ io_emul_stub[1] = 0xfa;
/* out %al,%dx */
- io_emul_stub[ 3] = 0xee;
+ io_emul_stub[2] = 0xee;
/* 1: in %dx,%al */
- io_emul_stub[ 4] = 0xec;
+ io_emul_stub[3] = 0xec;
/* test $0x80,%al */
- io_emul_stub[ 5] = 0xa8;
- io_emul_stub[ 6] = 0x80;
+ io_emul_stub[4] = 0xa8;
+ io_emul_stub[5] = 0x80;
/* jnz 1b */
- io_emul_stub[ 7] = 0x75;
- io_emul_stub[ 8] = 0xfb;
- /* popfw */
- io_emul_stub[ 9] = 0x66;
- io_emul_stub[10] = 0x9d;
+ io_emul_stub[6] = 0x75;
+ io_emul_stub[7] = 0xfb;
+ /* popf */
+ io_emul_stub[8] = 0x9d;
/* ret */
- io_emul_stub[11] = 0xc3;
+ io_emul_stub[9] = 0xc3;
}
int __init proliant_quirk(struct dmi_system_id *d)