Skip to content

Commit 9d1b39a

Browse files
Gleb Natapovavikivity
authored andcommitted
KVM: emulator: make x86 emulation modes enum instead of defines
Signed-off-by: Gleb Natapov <[email protected]> Signed-off-by: Avi Kivity <[email protected]>
1 parent 716d51a commit 9d1b39a

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

arch/x86/include/asm/kvm_emulate.h

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -249,14 +249,23 @@ struct read_cache {
249249
unsigned long end;
250250
};
251251

252+
/* Execution mode, passed to the emulator. */
253+
enum x86emul_mode {
254+
X86EMUL_MODE_REAL, /* Real mode. */
255+
X86EMUL_MODE_VM86, /* Virtual 8086 mode. */
256+
X86EMUL_MODE_PROT16, /* 16-bit protected mode. */
257+
X86EMUL_MODE_PROT32, /* 32-bit protected mode. */
258+
X86EMUL_MODE_PROT64, /* 64-bit (long) mode. */
259+
};
260+
252261
struct x86_emulate_ctxt {
253262
const struct x86_emulate_ops *ops;
254263

255264
/* Register state before/after emulation. */
256265
unsigned long eflags;
257266
unsigned long eip; /* eip before instruction emulation */
258267
/* Emulated execution mode, represented by an X86EMUL_MODE value. */
259-
int mode;
268+
enum x86emul_mode mode;
260269

261270
/* interruptibility state, as a result of execution of STI or MOV SS */
262271
int interruptibility;
@@ -308,17 +317,6 @@ struct x86_emulate_ctxt {
308317
#define REPE_PREFIX 0xf3
309318
#define REPNE_PREFIX 0xf2
310319

311-
/* Execution mode, passed to the emulator. */
312-
#define X86EMUL_MODE_REAL 0 /* Real mode. */
313-
#define X86EMUL_MODE_VM86 1 /* Virtual 8086 mode. */
314-
#define X86EMUL_MODE_PROT16 2 /* 16-bit protected mode. */
315-
#define X86EMUL_MODE_PROT32 4 /* 32-bit protected mode. */
316-
#define X86EMUL_MODE_PROT64 8 /* 64-bit (long) mode. */
317-
318-
/* any protected mode */
319-
#define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \
320-
X86EMUL_MODE_PROT64)
321-
322320
/* CPUID vendors */
323321
#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541
324322
#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163

arch/x86/kvm/emulate.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2268,6 +2268,8 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
22682268
if (msr_data == 0x0)
22692269
return emulate_gp(ctxt, 0);
22702270
break;
2271+
default:
2272+
break;
22712273
}
22722274

22732275
ctxt->eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF);
@@ -4400,7 +4402,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
44004402
}
44014403

44024404
/* Instruction can only be executed in protected mode */
4403-
if ((ctxt->d & Prot) && !(ctxt->mode & X86EMUL_MODE_PROT)) {
4405+
if ((ctxt->d & Prot) && ctxt->mode < X86EMUL_MODE_PROT16) {
44044406
rc = emulate_ud(ctxt);
44054407
goto done;
44064408
}

0 commit comments

Comments
 (0)