diff --git a/src/cpu/core_normal/prefix_0f.h b/src/cpu/core_normal/prefix_0f.h index d08a2a36..85945dce 100644 --- a/src/cpu/core_normal/prefix_0f.h +++ b/src/cpu/core_normal/prefix_0f.h @@ -36,7 +36,6 @@ Bitu loadval; if (rm >= 0xc0 ) {GetEArw;loadval=*earw;} else {GetEAa;loadval=LoadMw(eaa);} - break; switch (which) { case 0x02:CPU_LLDT(loadval);break; case 0x03:CPU_LTR(loadval);break; @@ -44,6 +43,7 @@ case 0x05:CPU_VERW(loadval);break; } } + break; default: LOG(LOG_CPU,LOG_ERROR)("GRP6:Illegal call %2X",which); } diff --git a/src/cpu/core_normal/prefix_66.h b/src/cpu/core_normal/prefix_66.h index cd0b2ee4..397f4f09 100644 --- a/src/cpu/core_normal/prefix_66.h +++ b/src/cpu/core_normal/prefix_66.h @@ -307,9 +307,10 @@ } CASE_D(0x8f) /* POP Ed */ { + Bit32u val=Pop_32(); GetRM; - if (rm >= 0xc0 ) {GetEArd;*eard=Pop_32();} - else {GetEAa;SaveMd(eaa,Pop_32());} + if (rm >= 0xc0 ) {GetEArd;*eard=val;} + else {GetEAa;SaveMd(eaa,val);} break; } CASE_D(0x91) /* XCHG ECX,EAX */ diff --git a/src/cpu/core_normal/prefix_66_0f.h b/src/cpu/core_normal/prefix_66_0f.h index 02c1102d..5ce7dc65 100644 --- a/src/cpu/core_normal/prefix_66_0f.h +++ b/src/cpu/core_normal/prefix_66_0f.h @@ -36,7 +36,6 @@ Bitu loadval; if (rm >= 0xc0 ) {GetEArw;loadval=*earw;} else {GetEAa;loadval=LoadMw(eaa);} - break; switch (which) { case 0x02:CPU_LLDT(loadval);break; case 0x03:CPU_LTR(loadval);break; @@ -44,6 +43,7 @@ case 0x05:CPU_VERW(loadval);break; } } + break; default: LOG(LOG_CPU,LOG_ERROR)("GRP6:Illegal call %2X",which); } diff --git a/src/cpu/core_normal/prefix_none.h b/src/cpu/core_normal/prefix_none.h index 913058b7..bd44cbe7 100644 --- a/src/cpu/core_normal/prefix_none.h +++ b/src/cpu/core_normal/prefix_none.h @@ -511,9 +511,10 @@ } CASE_W(0x8f) /* POP Ew */ { + Bit16u val=Pop_16(); GetRM; - if (rm >= 0xc0 ) {GetEArw;*earw=Pop_16();} - else {GetEAa;SaveMw(eaa,Pop_16());} + if (rm >= 0xc0 ) {GetEArw;*earw=val;} + else {GetEAa;SaveMw(eaa,val);} break; } CASE_B(0x90) /* NOP */