xref: /freebsd/tools/regression/tls/ttls3/elftls.S (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1/*-
2 * Copyright (C) 2004 NVIDIA Corporation.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27.file "elftls.S"
28
29.globl __gl_tls_offsets
30    .type __gl_tls_offsets,@object
31
32.section .tbss,"awT",@nobits
33
34.globl __gl_tls_var0
35    .align 4
36    .type   __gl_tls_var0, @object
37    .size   __gl_tls_var0, 4
38__gl_tls_var0:
39    .zero   4
40
41.globl __gl_tls_var1
42    .align 4
43    .type   __gl_tls_var1, @object
44    .size   __gl_tls_var1, 4
45__gl_tls_var1:
46    .zero   4
47
48.globl __gl_tls_var2
49    .align 4
50    .type   __gl_tls_var2, @object
51    .size   __gl_tls_var2, 4
52__gl_tls_var2:
53    .zero   4
54
55.globl __gl_tls_var3
56    .align 4
57    .type   __gl_tls_var3, @object
58    .size   __gl_tls_var3, 4
59__gl_tls_var3:
60    .zero   4
61
62.globl __gl_tls_var4
63    .align 4
64    .type   __gl_tls_var4, @object
65    .size   __gl_tls_var4, 4
66__gl_tls_var4:
67    .zero   4
68
69.globl __gl_tls_var5
70    .align 4
71    .type   __gl_tls_var5, @object
72    .size   __gl_tls_var5, 4
73__gl_tls_var5:
74    .zero   4
75
76.globl __gl_tls_var6
77    .align 4
78    .type   __gl_tls_var6, @object
79    .size   __gl_tls_var6, 4
80__gl_tls_var6:
81    .zero   4
82
83.globl __gl_tls_var7
84    .align 4
85    .type   __gl_tls_var7, @object
86    .size   __gl_tls_var7, 4
87__gl_tls_var7:
88    .zero   4
89
90.text
91    .p2align 4,,15
92.globl __gl_tls_init_offsets
93    .type __gl_tls_init_offsets, @function
94__gl_tls_init_offsets:
95    movl $__gl_tls_offsets, %eax
96    movl $__gl_tls_var0@ntpoff, %ecx
97    movl %ecx, 0(%eax)
98    movl $__gl_tls_var1@ntpoff, %ecx
99    movl %ecx, 4(%eax)
100    movl $__gl_tls_var2@ntpoff, %ecx
101    movl %ecx, 8(%eax)
102    movl $__gl_tls_var3@ntpoff, %ecx
103    movl %ecx, 12(%eax)
104    movl $__gl_tls_var4@ntpoff, %ecx
105    movl %ecx, 16(%eax)
106    movl $__gl_tls_var5@ntpoff, %ecx
107    movl %ecx, 20(%eax)
108    movl $__gl_tls_var6@ntpoff, %ecx
109    movl %ecx, 24(%eax)
110    movl $__gl_tls_var7@ntpoff, %ecx
111    movl %ecx, 28(%eax)
112    ret
113