From c773dded4bcdc601984a0c73e509c1cc45bfd7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Strohh=C3=A4cker?= Date: Mon, 8 Jan 2007 20:58:47 +0000 Subject: [PATCH] better workaround for clipper programs (doesn't break wc3) Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2732 --- src/cpu/core_normal/prefix_none.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cpu/core_normal/prefix_none.h b/src/cpu/core_normal/prefix_none.h index d0e73555..24e6c177 100644 --- a/src/cpu/core_normal/prefix_none.h +++ b/src/cpu/core_normal/prefix_none.h @@ -433,11 +433,13 @@ if (rm >= 0xc0 ) {GetEArb;*earb=*rmrb;} else { if (cpu.pmode) { - Descriptor desc; - cpu.gdt.GetDescriptor(SegValue(core.base_val_ds),desc); - if ((desc.Type()==DESC_CODE_R_NC_A) || (desc.Type()==DESC_CODE_R_NC_NA)) { - CPU_Exception(EXCEPTION_GP,SegValue(core.base_val_ds) & 0xfffc); - continue; + if (GCC_UNLIKELY((rm==0x05) && (!cpu.code.big))) { + Descriptor desc; + cpu.gdt.GetDescriptor(SegValue(core.base_val_ds),desc); + if ((desc.Type()==DESC_CODE_R_NC_A) || (desc.Type()==DESC_CODE_R_NC_NA)) { + CPU_Exception(EXCEPTION_GP,SegValue(core.base_val_ds) & 0xfffc); + continue; + } } } GetEAa;SaveMb(eaa,*rmrb);