Browse Source

* fixed broken Math.SetExceptionMask

git-svn-id: trunk@5858 -
florian 18 năm trước cách đây
mục cha
commit
538e1bb8e8
2 tập tin đã thay đổi với 5 bổ sung5 xóa
  1. 3 3
      rtl/x86_64/math.inc
  2. 2 2
      rtl/x86_64/mathu.inc

+ 3 - 3
rtl/x86_64/math.inc

@@ -40,10 +40,10 @@ FPC_ABSMASK_DOUBLE:
       asm        
         movw cw,%ax
 {$ifdef FPC_PIC}
-        movq default8087cw@GOTPCREL(%rip),%rax
-        movw %ax,(%rax)
+        movq default8087cw@GOTPCREL(%rip),%rdx
+        movw %ax,(%rdx)
         fnclex
-        fldcw (%rax)
+        fldcw (%rdx)
 {$else FPC_PIC}
         movw %ax,default8087cw
         fnclex

+ 2 - 2
rtl/x86_64/mathu.inc

@@ -81,7 +81,7 @@ end;
 function GetExceptionMask: TFPUExceptionMask;
 begin
 {$ifdef win64}
-  Result:=TFPUExceptionMask((GetSSECSR shr 7) and $1f);
+  Result:=TFPUExceptionMask((GetSSECSR shr 7) and $3f);
 {$else win64}
   Result:=TFPUExceptionMask(dword(Get8087CW and $3F));
 {$endif win64}
@@ -93,7 +93,7 @@ var
 begin
   CtlWord:=Get8087CW;
   Set8087CW((CtlWord and $FFC0) or Byte(Longint(Mask)));
-  SetSSECSR((((GetSSECSR shr 7) and $ffffffc0) or dword(Mask)) shl 7);
+  SetSSECSR((GetSSECSR and $ffffe07f) or (dword(Mask) shl 7));
   Result:=GetExceptionMask;
 end;