]>
Commit | Line | Data |
---|---|---|
1b2cb8e2 CC |
1 | .globl bar[TL] |
2 | .csect bar[TL] | |
3 | .long 1 | |
4 | ||
5 | .toc | |
6 | .tc gd[TC],bar[TL] | |
7 | .tc .gd[TC],bar[TL]@m | |
8 | .tc ld[TC],bar[TL]@ld | |
9 | .tc mh[TC],mh[TC]@ml | |
10 | .tc ie[TC],bar[TL]@ie | |
11 | .tc le[TC],bar[TL]@le | |
12 | ||
13 | .globl foo | |
14 | .globl .foo | |
15 | .csect foo[DS],3 | |
16 | foo: | |
17 | .if size == 32 | |
18 | .long .foo, TOC[tc0], 0 | |
19 | .else | |
20 | .llong .foo, TOC[tc0], 0 | |
21 | .endif | |
22 | ||
23 | .csect foo[PR] | |
24 | .foo: | |
25 | #GD | |
26 | .if size == 32 | |
27 | lwz 4, gd[TC](2) | |
28 | lwz 3, .gd[TC](2) | |
29 | .else | |
30 | ld 4, gd[TC](2) | |
31 | ld 3, .gd[TC](2) | |
32 | .endif | |
33 | bla __tls_get_addr | |
34 | ||
35 | #LD | |
36 | .if size == 32 | |
37 | lwz 3, mh[TC](2) | |
38 | .else | |
39 | ld 3, mh[TC](2) | |
40 | .endif | |
41 | bla __tls_get_mod | |
42 | lwz 4, ld[TC](2) | |
43 | add 5,3,4 | |
44 | ||
45 | #IE | |
46 | .if size == 32 | |
47 | bla __get_tpointer | |
48 | lwz 4, ie[TC](2) | |
49 | add 5,3,4 | |
50 | .else | |
51 | ld 4, ie[TC](2) | |
52 | add 5,4,13 | |
53 | .endif | |
54 | ||
55 | #LE | |
56 | .if size == 32 | |
57 | bla __get_tpointer | |
58 | lwz 4, le[TC](2) | |
59 | add 5,3,4 | |
60 | .else | |
61 | ld 4, le[TC](2) | |
62 | add 5,3,13 | |
63 | .endif | |
64 | ||
65 | .rename mh[TC], "_$TLSML" # Symbol for the module handle |