diff options
-rw-r--r-- | src/thread/i386/tls.s | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/thread/i386/tls.s b/src/thread/i386/tls.s index e1f22629..6e01adf2 100644 --- a/src/thread/i386/tls.s +++ b/src/thread/i386/tls.s @@ -2,7 +2,14 @@ .global ___tls_get_addr .type ___tls_get_addr,@function ___tls_get_addr: - push %eax + mov %gs:4,%edx + mov (%eax),%ecx + cmp %ecx,(%edx) + jc 1f + mov 4(%eax),%eax + add (%edx,%ecx,4),%eax + ret +1: push %eax call __tls_get_addr pop %edx ret |