From 17ee2a7d9e8cc3b9a484f27510ca093e947e706a Mon Sep 17 00:00:00 2001 From: TomW Date: Sun, 18 Jan 2015 14:50:55 +0000 Subject: [PATCH] FLAGS bit 15 now always clear on 386+ CPUs. Fixes HX DOS extender CPU type test. --- src/x86_ops_flag.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/x86_ops_flag.h b/src/x86_ops_flag.h index a6444cf..235e3b4 100644 --- a/src/x86_ops_flag.h +++ b/src/x86_ops_flag.h @@ -140,10 +140,10 @@ static int opPOPF(uint32_t fetchdat) } tempw = POP_W(); if (abrt) return 1; - - if (!(CPL) || !(msw & 1)) flags = (tempw & 0xffd5) | 2; - else if (IOPLp) flags = (flags & 0x3000) | (tempw & 0xcfd5) | 2; - else flags = (flags & 0x3200) | (tempw & 0xcdd5) | 2; + + if (!(CPL) || !(msw & 1)) flags = (tempw & 0x7fd5) | 2; + else if (IOPLp) flags = (flags & 0x3000) | (tempw & 0x4fd5) | 2; + else flags = (flags & 0x3200) | (tempw & 0x4dd5) | 2; flags_extract(); CLOCK_CYCLES(5); @@ -161,9 +161,9 @@ static int opPOPFD(uint32_t fetchdat) templ = POP_L(); if (abrt) return 1; - if (!(CPL) || !(msw & 1)) flags = (templ & 0xffd5) | 2; - else if (IOPLp) flags = (flags & 0x3000) | (templ & 0xcfd5) | 2; - else flags = (flags & 0x3200) | (templ & 0xcdd5) | 2; + if (!(CPL) || !(msw & 1)) flags = (templ & 0x7fd5) | 2; + else if (IOPLp) flags = (flags & 0x3000) | (templ & 0x4fd5) | 2; + else flags = (flags & 0x3200) | (templ & 0x4dd5) | 2; templ &= is486 ? 0x240000 : 0; templ |= ((eflags&3) << 16);