From e3b9ed13fcf8100ba5bafef4edfe5d1f58a8e3c7 Mon Sep 17 00:00:00 2001 From: SarahW Date: Thu, 5 Mar 2020 17:22:34 +0000 Subject: [PATCH] Pre-386 CPUs don't clear integer registers on soft reset. Patch from Greatpsycho. --- src/808x.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/808x.c b/src/808x.c index 12566f9..f3f8d0f 100644 --- a/src/808x.c +++ b/src/808x.c @@ -677,8 +677,15 @@ void softresetx86() //rammask=0xFFFFFFFF; cpu_state.flags=2; idt.base = 0; - idt.limit = is386 ? 0x03FF : 0xFFFF; - EAX = EBX = ECX = EDX = ESI = EDI = EBP = ESP = 0; + if (is386) + { + idt.limit = 0x03FF; + EAX = EBX = ECX = EDX = ESI = EDI = EBP = ESP = 0; + } + else + { + idt.limit = 0xFFFF; + } x86seg_reset(); flushmmucache(); x86_was_reset = 1;