diff --git a/rtl/win/systhrd.inc b/rtl/win/systhrd.inc index a7c1abaa31..b30b97547a 100644 --- a/rtl/win/systhrd.inc +++ b/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