From f83f0e5f13a36a246e12d5838aa5bace3ebe5c3e Mon Sep 17 00:00:00 2001 From: Alex Henrie Date: Tue, 23 Jun 2020 00:32:58 -0600 Subject: [PATCH] ntoskrnl: Provide a more realistic value for register CR0. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48997 Signed-off-by: Alex Henrie Signed-off-by: Alexandre Julliard --- dlls/ntoskrnl.exe/instr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/ntoskrnl.exe/instr.c b/dlls/ntoskrnl.exe/instr.c index 44f2ed4f515..f197570db0c 100644 --- a/dlls/ntoskrnl.exe/instr.c +++ b/dlls/ntoskrnl.exe/instr.c @@ -35,6 +35,13 @@ #define KSHARED_USER_DATA_PAGE_SIZE 0x1000 +#define CR0_PE 0x00000001 /* Protected Mode */ +#define CR0_ET 0x00000010 /* Extension Type */ +#define CR0_NE 0x00000020 /* Numeric Error */ +#define CR0_WP 0x00010000 /* Write Protect */ +#define CR0_AM 0x00040000 /* Alignment Mask */ +#define CR0_PG 0x80000000 /* Paging */ + enum instr_op { INSTR_OP_MOV, @@ -350,7 +357,7 @@ static DWORD emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) TRACE( "mov cr%u,%s at 0x%08x\n", reg, reg_names[instr[2] & 7], context->Eip ); switch (reg) { - case 0: *data = 0x10; break; /* FIXME: set more bits ? */ + case 0: *data = CR0_PE|CR0_ET|CR0_NE|CR0_WP|CR0_AM|CR0_PG; break; case 2: *data = 0; break; case 3: *data = 0; break; case 4: *data = 0; break; -- 2.11.4.GIT