Commit | Line | Data |
---|---|---|
b9734f35 JJ |
1 | .section ".tbss" |
2 | .align 4 | |
3 | .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8 | |
4 | bg1: .word 0 | |
5 | bg2: .word 0 | |
6 | bg3: .word 0 | |
7 | bg4: .word 0 | |
8 | bg5: .word 0 | |
9 | bg6: .word 0 | |
10 | bg7: .word 0 | |
11 | bg8: .word 0 | |
12 | bl1: .word 0 | |
13 | bl2: .word 0 | |
14 | bl3: .word 0 | |
15 | bl4: .word 0 | |
16 | bl5: .word 0 | |
17 | bl6: .word 0 | |
18 | bl7: .word 0 | |
19 | bl8: .word 0 | |
20 | .text | |
21 | .globl _start | |
22 | .type _start,#function | |
23 | .proc 04 | |
24 | _start: | |
25 | save %sp, -160, %sp | |
26 | .hidden _GLOBAL_OFFSET_TABLE_ | |
27 | sethi %hh(_GLOBAL_OFFSET_TABLE_), %l1 | |
28 | sethi %lm(_GLOBAL_OFFSET_TABLE_), %l2 | |
29 | or %l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1 | |
30 | or %l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2 | |
31 | sllx %l1, 32, %l1 | |
32 | add %l1, %l2, %l4 | |
33 | nop;nop;nop;nop | |
34 | ||
35 | /* IE against global var */ | |
36 | sethi %tie_hi22(sG6), %o3 | |
37 | add %o3, %tie_lo10(sG6), %o3 | |
38 | ldx [%l4 + %o3], %o2, %tie_ldx(sG6) | |
39 | add %g7, %o2, %o4, %tie_add(sG6) | |
40 | nop;nop;nop;nop | |
41 | ||
42 | /* IE -> LE against global var defined in exec */ | |
43 | sethi %tie_hi22(bg6), %o3 | |
44 | add %o3, %tie_lo10(bg6), %o5 | |
45 | ldx [%l4 + %o5], %o2, %tie_ldx(bg6) | |
46 | add %g7, %o2, %o4, %tie_add(bg6) | |
47 | nop;nop;nop;nop | |
48 | ||
49 | /* IE -> LE against local var */ | |
50 | sethi %tie_hi22(bl6), %o3 | |
51 | add %o3, %tie_lo10(bl6), %o5 | |
52 | ldx [%l4 + %o5], %l2, %tie_ldx(bl6) | |
53 | add %g7, %l2, %l2, %tie_add(bl6) | |
54 | nop;nop;nop;nop | |
55 | ||
56 | /* direct %g7 access IE -> LE against local var */ | |
57 | sethi %tie_hi22(bl8), %o3 | |
58 | add %o3, %tie_lo10(bl8), %o5 | |
59 | ldx [%l4 + %o5], %l2, %tie_ldx(bl8) | |
60 | ldsw [%g7 + %l2], %l2, %tie_add(bl8) | |
61 | nop;nop;nop;nop | |
62 | ||
63 | /* IE -> LE against hidden but not local var */ | |
64 | sethi %tie_hi22(sh6), %o3 | |
65 | add %o3, %tie_lo10(sh6), %o5 | |
66 | ldx [%l4 + %o5], %l2, %tie_ldx(sh6) | |
67 | add %g7, %l2, %l2, %tie_add(sh6) | |
68 | nop;nop;nop;nop | |
69 | ||
70 | /* direct %g7 access IE -> LE against hidden but not local var */ | |
71 | sethi %tie_hi22(bl8), %o3 | |
72 | add %o3, %tie_lo10(bl8), %o5 | |
73 | ldx [%l4 + %o5], %l2, %tie_ldx(bl8) | |
74 | stb %l1, [%g7 + %l2], %tie_add(bl8) | |
75 | nop;nop;nop;nop | |
76 | ||
77 | /* LE, global var defined in exec */ | |
78 | sethi %tle_hix22(sg2), %l1 | |
79 | nop | |
80 | xor %l1, %tle_lox10(sg2), %l2 | |
81 | nop | |
82 | add %g7, %l2, %l3 | |
83 | nop;nop;nop;nop | |
84 | ||
85 | /* LE, local var */ | |
86 | sethi %tle_hix22(bl2+2), %o0 | |
87 | xor %o0, %tle_lox10(bl2+2), %o0 | |
88 | add %g7, %o0, %o0 | |
89 | nop;nop;nop;nop | |
90 | ||
91 | /* LE, hidden var defined in exec */ | |
92 | sethi %tle_hix22(sh2+1), %l1 | |
93 | xor %l1, %tle_lox10(sh2+1), %o5 | |
94 | add %g7, %o5, %o1 | |
95 | nop;nop;nop;nop | |
96 | ||
97 | /* Direct %g7 access */ | |
98 | ||
99 | /* LE, global var defined in exec */ | |
100 | sethi %tle_hix22(sg3), %l1 | |
101 | xor %l1, %tle_lox10(sg3), %o5 | |
102 | ldx [%g7 + %o5], %o1 | |
103 | nop;nop;nop;nop | |
104 | ||
105 | /* LE, local var */ | |
106 | sethi %tle_hix22(bl3 + 3), %o0 | |
107 | xor %o0, %tle_lox10(bl3 + 3), %o0 | |
108 | stb %o1, [%g7 + %o0] | |
109 | nop;nop;nop;nop | |
110 | ||
111 | /* LE, hidden var defined in exec */ | |
112 | sethi %tle_hix22(sh3 + 3), %o2 | |
113 | xor %o2, %tle_lox10(sh3 + 3), %o4 | |
114 | ldstub [%g7 + %o4], %o5 | |
115 | nop;nop;nop;nop | |
116 | ||
117 | ret | |
118 | restore |