|
@@ -81,6 +81,11 @@ procedure SignalToRunerror(sig : longint; SigInfo: PSigInfo; SigContext: PSigCon
|
|
res:=207
|
|
res:=207
|
|
else
|
|
else
|
|
res:=207; {'Coprocessor Error'}
|
|
res:=207; {'Coprocessor Error'}
|
|
|
|
+
|
|
|
|
+ { exceptions are handled, clear all flags
|
|
|
|
+ as we return from SignalToRunerrer, we have to clear the exception flags in the context }
|
|
|
|
+ if assigned(SigContext^.fpstate) then
|
|
|
|
+ SigContext^.fpstate^.swd:=SigContext^.fpstate^.swd and not(FPU_All);
|
|
end;
|
|
end;
|
|
MMState:=getMMState(SigContext^);
|
|
MMState:=getMMState(SigContext^);
|
|
if (MMState and MM_ExceptionMask)<>0 then
|
|
if (MMState and MM_ExceptionMask)<>0 then
|
|
@@ -98,6 +103,11 @@ procedure SignalToRunerror(sig : longint; SigInfo: PSigInfo; SigContext: PSigCon
|
|
res:=216
|
|
res:=216
|
|
else
|
|
else
|
|
res:=207; {'Coprocessor Error'}
|
|
res:=207; {'Coprocessor Error'}
|
|
|
|
+
|
|
|
|
+ { exceptions are handled, clear all flags
|
|
|
|
+ as we return from SignalToRunerrer, we have to clear the exception flags in the context }
|
|
|
|
+ if assigned(SigContext^.fpstate) then
|
|
|
|
+ SigContext^.fpstate^.mxcsr:=SigContext^.fpstate^.mxcsr and not(MM_ExceptionMask);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
SysResetFPU;
|
|
SysResetFPU;
|