summaryrefslogtreecommitdiff
path: root/kvm_emulate.c
diff options
context:
space:
mode:
authorBryan Cantrill <bryan@joyent.com>2011-05-13 10:50:26 -0700
committerBryan Cantrill <bryan@joyent.com>2011-05-13 10:50:26 -0700
commit79836fd6afeab807099b5ff4833501f49ed3d48d (patch)
tree411b2031245fdb97d7043ebc2230ab6ad1c94b86 /kvm_emulate.c
parent4242a94eb94f7e9d85824e0a970f949b19e173a5 (diff)
downloadillumos-kvm-79836fd6afeab807099b5ff4833501f49ed3d48d.tar.gz
HVM-199 _PRE_EFLAGS performs an andl on an illegal address
Diffstat (limited to 'kvm_emulate.c')
-rw-r--r--kvm_emulate.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kvm_emulate.c b/kvm_emulate.c
index 8cece7d..8afb364 100644
--- a/kvm_emulate.c
+++ b/kvm_emulate.c
@@ -455,6 +455,7 @@ static uint32_t group2_table[] = {
#elif defined(__i386__)
#define _LO32 "" /* force 32-bit operand */
#define _STK "%%esp" /* stack pointer */
+#error 32-bit variant of _PRE_EFLAGS not supported
#endif
/*
@@ -474,7 +475,7 @@ static uint32_t group2_table[] = {
"pushf; " \
"notl %"_LO32 _tmp"; " \
"andl %"_LO32 _tmp",("_STK"); " \
- "andl %"_LO32 _tmp","__stringify(64/4)"("_STK"); " \
+ "andl %"_LO32 _tmp",16("_STK"); " \
"pop %"_tmp"; " \
"orl %"_LO32 _tmp",("_STK"); " \
"popf; " \