aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kvm/emulate.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index cd49774f2d0e..5b78785de41b 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -3213,16 +3213,19 @@ static struct opcode group3[] = {
3213}; 3213};
3214 3214
3215static struct opcode group4[] = { 3215static struct opcode group4[] = {
3216 D(ByteOp | DstMem | SrcNone | ModRM | Lock), D(ByteOp | DstMem | SrcNone | ModRM | Lock), 3216 I(ByteOp | DstMem | SrcNone | ModRM | Lock, em_grp45),
3217 I(ByteOp | DstMem | SrcNone | ModRM | Lock, em_grp45),
3217 N, N, N, N, N, N, 3218 N, N, N, N, N, N,
3218}; 3219};
3219 3220
3220static struct opcode group5[] = { 3221static struct opcode group5[] = {
3221 D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock), 3222 I(DstMem | SrcNone | ModRM | Lock, em_grp45),
3222 D(SrcMem | ModRM | Stack), 3223 I(DstMem | SrcNone | ModRM | Lock, em_grp45),
3224 I(SrcMem | ModRM | Stack, em_grp45),
3223 I(SrcMemFAddr | ModRM | ImplicitOps | Stack, em_call_far), 3225 I(SrcMemFAddr | ModRM | ImplicitOps | Stack, em_call_far),
3224 D(SrcMem | ModRM | Stack), D(SrcMemFAddr | ModRM | ImplicitOps), 3226 I(SrcMem | ModRM | Stack, em_grp45),
3225 D(SrcMem | ModRM | Stack), N, 3227 I(SrcMemFAddr | ModRM | ImplicitOps, em_grp45),
3228 I(SrcMem | ModRM | Stack, em_grp45), N,
3226}; 3229};
3227 3230
3228static struct opcode group6[] = { 3231static struct opcode group6[] = {
@@ -4082,12 +4085,6 @@ special_insn:
4082 case 0xfd: /* std */ 4085 case 0xfd: /* std */
4083 ctxt->eflags |= EFLG_DF; 4086 ctxt->eflags |= EFLG_DF;
4084 break; 4087 break;
4085 case 0xfe: /* Grp4 */
4086 rc = em_grp45(ctxt);
4087 break;
4088 case 0xff: /* Grp5 */
4089 rc = em_grp45(ctxt);
4090 break;
4091 default: 4088 default:
4092 goto cannot_emulate; 4089 goto cannot_emulate;
4093 } 4090 }