Avi Kivity wrote:
I can eliminate _tmp by using lahf/sahf, but it's not going to be a trivial patch.
I don't know what's happening here.
If I comment out (_dst).bytes == 2 , it compiles.
The problem happens only "w" + "unsigned short" case.
# diff -urp arch/x86/kvm/x86_emulate.c~ arch/x86/kvm/x86_emulate.c
--- arch/x86/kvm/x86_emulate.c~ 2009-06-03 12:07:25.000000000 +0900
+++ arch/x86/kvm/x86_emulate.c 2009-06-07 17:52:05.591542272 +0900
@@ -461,8 +461,8 @@ static u32 group2_table[] = {
do { \
switch ((_dst).bytes) { \
case 2: \
- __emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \
- "w", unsigned short); \
+ /* __emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \
+ "w", unsigned short); */ \
break; \
case 4: \
__emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \