소스 검색

* 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