Commit | Line | Data |
---|---|---|
b9734f35 JJ |
1 | .data |
2 | .align 4096 | |
3 | .section ".tbss" | |
4 | .align 4 | |
5 | bl1: .word 0 | |
6 | bl2: .word 0 | |
7 | bl3: .word 0 | |
8 | bl4: .word 0 | |
9 | bl5: .word 0 | |
10 | .text | |
11 | .align 4096 | |
12 | .globl fn3 | |
13 | .type fn3,#function | |
14 | .proc 04 | |
15 | fn3: | |
16 | save %sp, -160, %sp | |
17 | .hidden _GLOBAL_OFFSET_TABLE_ | |
18 | sethi %hh(_GLOBAL_OFFSET_TABLE_), %l1 | |
19 | sethi %lm(_GLOBAL_OFFSET_TABLE_), %l2 | |
20 | or %l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1 | |
21 | or %l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2 | |
22 | sllx %l1, 32, %l1 | |
23 | add %l1, %l2, %l1 | |
24 | nop;nop;nop;nop | |
25 | ||
26 | /* IE against global var */ | |
27 | sethi %tie_hi22(sg1), %o3 | |
28 | add %o3, %tie_lo10(sg1), %o3 | |
29 | ldx [%l1 + %o3], %o2, %tie_ldx(sg1) | |
30 | add %g7, %o2, %o4, %tie_add(sg1) | |
31 | nop;nop;nop;nop | |
32 | ||
33 | /* direct %g7 access IE against global var */ | |
34 | sethi %tie_hi22(sg2), %o0 | |
35 | add %o0, %tie_lo10(sg2), %o0 | |
36 | ldx [%l1 + %o0], %o0, %tie_ldx(sg2) | |
37 | lduw [%g7 + %o0], %o0, %tie_add(sg2) | |
38 | nop;nop;nop;nop | |
39 | ||
40 | /* IE against hidden var */ | |
41 | sethi %tie_hi22(sh1), %o0 | |
42 | add %o0, %tie_lo10(sh1), %o0 | |
43 | ldx [%l1 + %o0], %o0, %tie_ldx(sh1) | |
44 | add %g7, %o0, %o0, %tie_add(sh1) | |
45 | nop;nop;nop;nop | |
46 | ||
47 | /* direct %g7 access IE against hidden var */ | |
48 | sethi %tie_hi22(sh2), %o5 | |
49 | add %o5, %tie_lo10(sh2), %o1 | |
50 | ldx [%l1 + %o1], %o2, %tie_ldx(sh2) | |
51 | stb %o3, [%g7 + %o2], %tie_add(sh2) | |
52 | nop;nop;nop;nop | |
53 | ||
54 | /* IE against local var */ | |
55 | sethi %tie_hi22(bl1), %o0 | |
56 | add %o0, %tie_lo10(bl1), %o0 | |
57 | ldx [%l1 + %o0], %o0, %tie_ldx(bl1) | |
58 | add %g7, %o0, %o0, %tie_add(bl1) | |
59 | nop;nop;nop;nop | |
60 | ||
61 | /* direct %g7 access IE against local var */ | |
62 | sethi %tie_hi22(bl2), %o5 | |
63 | add %o5, %tie_lo10(bl2), %o1 | |
64 | ldx [%l1 + %o1], %o2, %tie_ldx(bl2) | |
65 | stb %o3, [%g7 + %o2], %tie_add(bl2) | |
66 | nop;nop;nop;nop | |
67 | ||
68 | /* LE, local var */ | |
69 | sethi %tle_hix22(bl3+1), %o2 | |
70 | xor %o2, %tle_lox10(bl3+1), %o4 | |
71 | add %g7, %o4, %o0 | |
72 | nop;nop;nop;nop | |
73 | ||
74 | /* LE, hidden var, direct %g7 access */ | |
75 | sethi %tle_hix22(sh3), %o2 | |
76 | xor %o2, %tle_lox10(sh3), %o2 | |
77 | ld [%g7 + %o2], %o2 | |
78 | nop;nop;nop;nop | |
79 | ||
80 | return %i7 + 8 | |
81 | nop |