diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-06-19 02:50:45 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-06-19 02:50:45 -0400 |
commit | 4e0b4a5de735ecb241fadb1e15381c947e16e71f (patch) | |
tree | dbb3a6aa3356296b8e66b59ed3fe05e93ef5361c /src | |
parent | 880c479f0e3a798d826c1c91b38d33e2b3e36580 (diff) | |
download | musl-4e0b4a5de735ecb241fadb1e15381c947e16e71f.zip musl-4e0b4a5de735ecb241fadb1e15381c947e16e71f.tar.gz musl-4e0b4a5de735ecb241fadb1e15381c947e16e71f.tar.bz2 |
add tlsdesc support for i386
Diffstat (limited to 'src')
-rw-r--r-- | src/ldso/i386/tlsdesc.s | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ldso/i386/tlsdesc.s b/src/ldso/i386/tlsdesc.s new file mode 100644 index 0000000..3ac6129 --- /dev/null +++ b/src/ldso/i386/tlsdesc.s @@ -0,0 +1,27 @@ +.text +.global __tlsdesc_static +.type __tlsdesc_static,@function +__tlsdesc_static: + mov 4(%eax),%eax + ret + +.global __tlsdesc_dynamic +.type __tlsdesc_dynamic,@function +__tlsdesc_dynamic: + mov 4(%eax),%eax + push %edx + mov %gs:4,%edx + push %ecx + mov (%eax),%ecx + cmp %ecx,(%edx) + jc 1f + mov 4(%eax),%eax + add (%edx,%ecx,4),%eax +2: pop %ecx + sub %gs:0,%eax + pop %edx + ret +1: push %eax + call __tls_get_addr + pop %ecx + jmp 2b |