48 lines
826 B
ArmAsm
48 lines
826 B
ArmAsm
|
.text
|
||
|
.p2align 4,,15
|
||
|
.globl get_ld
|
||
|
.type get_ld, @function
|
||
|
get_ld:
|
||
|
subq $8, %rsp
|
||
|
leaq ld@tlsld(%rip), %rdi
|
||
|
call __tls_get_addr@PLT
|
||
|
addq $8, %rsp
|
||
|
addq $ld@dtpoff, %rax
|
||
|
ret
|
||
|
.size get_ld, .-get_ld
|
||
|
.text
|
||
|
.p2align 4,,15
|
||
|
.globl set_ld
|
||
|
.type set_ld, @function
|
||
|
set_ld:
|
||
|
pushq %rbx
|
||
|
movl %edi, %ebx
|
||
|
leaq ld@tlsld(%rip), %rdi
|
||
|
call *__tls_get_addr@GOTPCREL(%rip)
|
||
|
movl %ebx, ld@dtpoff(%rax)
|
||
|
popq %rbx
|
||
|
ret
|
||
|
.size set_ld, .-set_ld
|
||
|
.text
|
||
|
.p2align 4,,15
|
||
|
.globl test_ld
|
||
|
.type test_ld, @function
|
||
|
test_ld:
|
||
|
pushq %rbx
|
||
|
movl %edi, %ebx
|
||
|
leaq ld@tlsld(%rip), %rdi
|
||
|
call *__tls_get_addr@GOTPCREL(%rip)
|
||
|
cmpl %ebx, ld@dtpoff(%rax)
|
||
|
popq %rbx
|
||
|
sete %al
|
||
|
movzbl %al, %eax
|
||
|
ret
|
||
|
.size test_ld, .-test_ld
|
||
|
.section .tbss,"awT",@nobits
|
||
|
.align 4
|
||
|
.type ld, @object
|
||
|
.size ld, 4
|
||
|
ld:
|
||
|
.zero 4
|
||
|
.section .note.GNU-stack,"",@progbits
|