xref: /freebsd/tools/regression/tls/ttls3/elftls.S (revision 0b3105a37d7adcadcb720112fed4dc4e8040be99)
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 *	$FreeBSD$
27 */
28
29.file "elftls.S"
30
31.globl __gl_tls_offsets
32    .type __gl_tls_offsets,@object
33
34.section .tbss,"awT",@nobits
35
36.globl __gl_tls_var0
37    .align 4
38    .type   __gl_tls_var0, @object
39    .size   __gl_tls_var0, 4
40__gl_tls_var0:
41    .zero   4
42
43.globl __gl_tls_var1
44    .align 4
45    .type   __gl_tls_var1, @object
46    .size   __gl_tls_var1, 4
47__gl_tls_var1:
48    .zero   4
49
50.globl __gl_tls_var2
51    .align 4
52    .type   __gl_tls_var2, @object
53    .size   __gl_tls_var2, 4
54__gl_tls_var2:
55    .zero   4
56
57.globl __gl_tls_var3
58    .align 4
59    .type   __gl_tls_var3, @object
60    .size   __gl_tls_var3, 4
61__gl_tls_var3:
62    .zero   4
63
64.globl __gl_tls_var4
65    .align 4
66    .type   __gl_tls_var4, @object
67    .size   __gl_tls_var4, 4
68__gl_tls_var4:
69    .zero   4
70
71.globl __gl_tls_var5
72    .align 4
73    .type   __gl_tls_var5, @object
74    .size   __gl_tls_var5, 4
75__gl_tls_var5:
76    .zero   4
77
78.globl __gl_tls_var6
79    .align 4
80    .type   __gl_tls_var6, @object
81    .size   __gl_tls_var6, 4
82__gl_tls_var6:
83    .zero   4
84
85.globl __gl_tls_var7
86    .align 4
87    .type   __gl_tls_var7, @object
88    .size   __gl_tls_var7, 4
89__gl_tls_var7:
90    .zero   4
91
92.text
93    .p2align 4,,15
94.globl __gl_tls_init_offsets
95    .type __gl_tls_init_offsets, @function
96__gl_tls_init_offsets:
97    movl $__gl_tls_offsets, %eax
98    movl $__gl_tls_var0@ntpoff, %ecx
99    movl %ecx, 0(%eax)
100    movl $__gl_tls_var1@ntpoff, %ecx
101    movl %ecx, 4(%eax)
102    movl $__gl_tls_var2@ntpoff, %ecx
103    movl %ecx, 8(%eax)
104    movl $__gl_tls_var3@ntpoff, %ecx
105    movl %ecx, 12(%eax)
106    movl $__gl_tls_var4@ntpoff, %ecx
107    movl %ecx, 16(%eax)
108    movl $__gl_tls_var5@ntpoff, %ecx
109    movl %ecx, 20(%eax)
110    movl $__gl_tls_var6@ntpoff, %ecx
111    movl %ecx, 24(%eax)
112    movl $__gl_tls_var7@ntpoff, %ecx
113    movl %ecx, 28(%eax)
114    ret
115