aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-s390/tlsbin_64.s
blob: c40fcfc21029eac3cdb262dd018fab81f6e48826 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
	.section ".tbss", "awT", @nobits
	.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1:	.space 4
bg2:	.space 4
bg3:	.space 4
bg4:	.space 4
bg5:	.space 4
bg6:	.space 4
bg7:	.space 4
bg8:	.space 4
bl1:	.space 4
bl2:	.space 4
bl3:	.space 4
bl4:	.space 4
bl5:	.space 4
bl6:	.space 4
bl7:	.space 4
bl8:	.space 4
	.text
	.globl	_start
	.type	_start,@function
_start:
	/* Function prolog */
	stm	%r6,%r14,24(%r15)
	bras	%r13,.LTN1
	/* Literal pool */
.LT1:
.LC0:
	.quad	sG6@indntpoff
.LC1:
	.quad	bg6@indntpoff
.LC2:
	.quad	bl6@indntpoff
.LC3:
	.quad	sh6@indntpoff
.LC4:
	.quad	sg3@indntpoff
.LTN1:
	/* Function prolog */
	lgr	%r14,%r15
	aghi	%r15,-160
	stg	%r14,0(%r14)

	/* Extract TCB */
	ear	%r9,%a0
	sllg	%r9,%r4,32
	ear	%r9,%a1

	/* IE against global var  */
	lg	%r3,.LC0-.LT1(%r13)
	lg	%r3,0(%r3,%r12):tls_load:sG6
	la	%r3,0(%r3,%r9)

	/* IE -> LE against global var defined in exec  */
	lg	%r3,.LC1-.LT1(%r13)
	lg	%r4,0(%r3,%r12):tls_load:bg6
	la	%r5,0(%r4,%r9)

	/* IE -> LE against local var  */
	lg	%r3,.LC2-.LT1(%r13)
	lg	%r4,0(%r3,%r12):tls_load:bl6
	la	%r5,0(%r4,%r9)

	/* IE -> LE against hidden but not local var  */
	lg	%r3,.LC3-.LT1(%r13)
	lg	%r4,0(%r3,%r12):tls_load:sh6
	la	%r5,0(%r4,%r9)

	/* LE, global var defined in exec  */
	lg	%r4,.LC4-.LT1(%r13)
	la	%r5,0(%r4,%r9)

	/* Function epilog */
	lmg	%r6,%r14,208(%r15)
	br	%r14