Author: aandrejevic Date: Tue Jul 14 23:15:46 2015 New Revision: 68399
URL: http://svn.reactos.org/svn/reactos?rev=68399&view=rev Log: [FAST486] In FPREM and FPREM1, copy the lowest 3 bits of the quotient into C1, C3 and C0 (in that order!).
Modified: trunk/reactos/lib/fast486/fpu.c
Modified: trunk/reactos/lib/fast486/fpu.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/fast486/fpu.c?rev=68399... ============================================================================== --- trunk/reactos/lib/fast486/fpu.c [iso-8859-1] (original) +++ trunk/reactos/lib/fast486/fpu.c [iso-8859-1] Tue Jul 14 23:15:46 2015 @@ -2419,6 +2419,8 @@ /* FPREM1 */ case 0x35: { + LONGLONG Quotient; + Fast486FpuExceptionCheck(State); FPU_SAVE_LAST_INST();
@@ -2428,8 +2430,15 @@ break; }
- Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), TRUE, &FPU_ST(0), NULL); - FPU_UPDATE_TAG(0); + if (Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), TRUE, &FPU_ST(0), &Quotient)) + { + FPU_UPDATE_TAG(0); + + /* Return the lowest 3 bits of the quotient in C1, C3, C0 */ + State->FpuStatus.Code1 = Quotient & 1; + State->FpuStatus.Code3 = (Quotient >> 1) & 1; + State->FpuStatus.Code0 = (Quotient >> 2) & 1; + }
break; } @@ -2451,6 +2460,8 @@ /* FPREM */ case 0x38: { + LONGLONG Quotient; + Fast486FpuExceptionCheck(State); FPU_SAVE_LAST_INST();
@@ -2460,8 +2471,15 @@ break; }
- Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), FALSE, &FPU_ST(0), NULL); - FPU_UPDATE_TAG(0); + if (Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), FALSE, &FPU_ST(0), &Quotient)) + { + FPU_UPDATE_TAG(0); + + /* Return the lowest 3 bits of the quotient in C1, C3, C0 */ + State->FpuStatus.Code1 = Quotient & 1; + State->FpuStatus.Code3 = (Quotient >> 1) & 1; + State->FpuStatus.Code0 = (Quotient >> 2) & 1; + }
break; }