Browse Source

* accelerated/fixed TLS access on win32 by Pierre Muller

git-svn-id: trunk@13571 -
florian 16 years ago
parent
commit
d3d3596cd6
1 changed files with 10 additions and 3 deletions
  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