浏览代码

* accelerated/fixed TLS access on win32 by Pierre Muller

git-svn-id: trunk@13571 -
florian 16 年之前
父节点
当前提交
d3d3596cd6
共有 1 个文件被更改,包括 10 次插入3 次删除
  1. 10 3
      rtl/win/systhrd.inc

+ 10 - 3
rtl/win/systhrd.inc

@@ -105,13 +105,20 @@ CONST
         dataindex : pointer;
         errorsave : dword;
       begin
-{$ifdef dummy}
-        { I've no clue why this doesn't read dataindex, imo it should (FK) }
+{$ifdef win32}
         asm
           movl TLSKey,%edx
           movl $0x2c,%eax
           movl %fs:(%eax),%eax
-          movl (%eax,%edx,4),%eax
+          orl  %eax,%eax
+          jnz  .LAddressInEAX
+          movl $0x18,%eax
+          movl %fs:(%eax),%eax
+          movl 0xe10(%eax,%edx,4),%eax
+          jmp  .LToDataIndex
+          .LAddressInEAX:
+           movl (%eax,%edx,4),%eax
+          .LToDataIndex:
           movl %eax,dataindex
         end;
         if DataIndex=nil then