From 698a8b17b7142585741b9393984ef437083a474a Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Sat, 14 Nov 1998 17:11:52 +0000 Subject: [PATCH] Emulate "mov cr4,eax" (tombraider 3 demo). --- miscemu/instr.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/miscemu/instr.c b/miscemu/instr.c index 3ace37d0255..94bbe2b74ef 100644 --- a/miscemu/instr.c +++ b/miscemu/instr.c @@ -404,6 +404,24 @@ BOOL32 INSTR_EmulateInstruction( SIGCONTEXT *context ) case 0x0f: /* extended instruction */ switch(instr[1]) { + case 0x20: /* mov cr4, eax */ + if (instr[2]!=0xe0) + break; + /* CR4 register . See linux/arch/i386/mm/init.c, X86_CR4_ defs + * bit 0: VME Virtual Mode Exception ? + * bit 1: PVI Protected mode Virtual Interrupt + * bit 2: TSD Timestamp disable + * bit 3: DE Debugging extensions + * bit 4: PSE Page size extensions + * bit 5: PAE Physical address extension + * bit 6: MCE Machine check enable + * bit 7: PGE Enable global pages + * bit 8: PCE Enable performance counters at IPL3 + */ + fprintf(stderr,"mov cr4,eax at 0x%08lx\n",EIP_sig(context)); + EAX_sig(context) = 0; + EIP_sig(context) += prefixlen+3; + return TRUE; #ifdef FS_sig case 0xa1: /* pop fs */ { -- 2.11.4.GIT