1 | .text |
2 | .abiversion 2 |
3 | .globl __xray_FunctionEntry |
4 | .p2align 4 |
5 | __xray_FunctionEntry: |
6 | std 0, 16(1) |
7 | stdu 1, -408(1) |
8 | # Spill r3-r10, f1-f13, and vsr34-vsr45, which are parameter registers. |
9 | # If this appears to be slow, the caller needs to pass in number of generic, |
10 | # floating point, and vector parameters, so that we only spill those live ones. |
11 | std 3, 32(1) |
12 | ld 3, 400(1) # FuncId |
13 | std 4, 40(1) |
14 | std 5, 48(1) |
15 | std 6, 56(1) |
16 | std 7, 64(1) |
17 | std 8, 72(1) |
18 | std 9, 80(1) |
19 | std 10, 88(1) |
20 | addi 4, 1, 96 |
21 | stxsdx 1, 0, 4 |
22 | addi 4, 1, 104 |
23 | stxsdx 2, 0, 4 |
24 | addi 4, 1, 112 |
25 | stxsdx 3, 0, 4 |
26 | addi 4, 1, 120 |
27 | stxsdx 4, 0, 4 |
28 | addi 4, 1, 128 |
29 | stxsdx 5, 0, 4 |
30 | addi 4, 1, 136 |
31 | stxsdx 6, 0, 4 |
32 | addi 4, 1, 144 |
33 | stxsdx 7, 0, 4 |
34 | addi 4, 1, 152 |
35 | stxsdx 8, 0, 4 |
36 | addi 4, 1, 160 |
37 | stxsdx 9, 0, 4 |
38 | addi 4, 1, 168 |
39 | stxsdx 10, 0, 4 |
40 | addi 4, 1, 176 |
41 | stxsdx 11, 0, 4 |
42 | addi 4, 1, 184 |
43 | stxsdx 12, 0, 4 |
44 | addi 4, 1, 192 |
45 | stxsdx 13, 0, 4 |
46 | addi 4, 1, 200 |
47 | stxvd2x 34, 0, 4 |
48 | addi 4, 1, 216 |
49 | stxvd2x 35, 0, 4 |
50 | addi 4, 1, 232 |
51 | stxvd2x 36, 0, 4 |
52 | addi 4, 1, 248 |
53 | stxvd2x 37, 0, 4 |
54 | addi 4, 1, 264 |
55 | stxvd2x 38, 0, 4 |
56 | addi 4, 1, 280 |
57 | stxvd2x 39, 0, 4 |
58 | addi 4, 1, 296 |
59 | stxvd2x 40, 0, 4 |
60 | addi 4, 1, 312 |
61 | stxvd2x 41, 0, 4 |
62 | addi 4, 1, 328 |
63 | stxvd2x 42, 0, 4 |
64 | addi 4, 1, 344 |
65 | stxvd2x 43, 0, 4 |
66 | addi 4, 1, 360 |
67 | stxvd2x 44, 0, 4 |
68 | addi 4, 1, 376 |
69 | stxvd2x 45, 0, 4 |
70 | std 2, 392(1) |
71 | mflr 0 |
72 | std 0, 400(1) |
73 | |
74 | li 4, 0 |
75 | bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType |
76 | nop |
77 | |
78 | addi 4, 1, 96 |
79 | lxsdx 1, 0, 4 |
80 | addi 4, 1, 104 |
81 | lxsdx 2, 0, 4 |
82 | addi 4, 1, 112 |
83 | lxsdx 3, 0, 4 |
84 | addi 4, 1, 120 |
85 | lxsdx 4, 0, 4 |
86 | addi 4, 1, 128 |
87 | lxsdx 5, 0, 4 |
88 | addi 4, 1, 136 |
89 | lxsdx 6, 0, 4 |
90 | addi 4, 1, 144 |
91 | lxsdx 7, 0, 4 |
92 | addi 4, 1, 152 |
93 | lxsdx 8, 0, 4 |
94 | addi 4, 1, 160 |
95 | lxsdx 9, 0, 4 |
96 | addi 4, 1, 168 |
97 | lxsdx 10, 0, 4 |
98 | addi 4, 1, 176 |
99 | lxsdx 11, 0, 4 |
100 | addi 4, 1, 184 |
101 | lxsdx 12, 0, 4 |
102 | addi 4, 1, 192 |
103 | lxsdx 13, 0, 4 |
104 | addi 4, 1, 200 |
105 | lxvd2x 34, 0, 4 |
106 | addi 4, 1, 216 |
107 | lxvd2x 35, 0, 4 |
108 | addi 4, 1, 232 |
109 | lxvd2x 36, 0, 4 |
110 | addi 4, 1, 248 |
111 | lxvd2x 37, 0, 4 |
112 | addi 4, 1, 264 |
113 | lxvd2x 38, 0, 4 |
114 | addi 4, 1, 280 |
115 | lxvd2x 39, 0, 4 |
116 | addi 4, 1, 296 |
117 | lxvd2x 40, 0, 4 |
118 | addi 4, 1, 312 |
119 | lxvd2x 41, 0, 4 |
120 | addi 4, 1, 328 |
121 | lxvd2x 42, 0, 4 |
122 | addi 4, 1, 344 |
123 | lxvd2x 43, 0, 4 |
124 | addi 4, 1, 360 |
125 | lxvd2x 44, 0, 4 |
126 | addi 4, 1, 376 |
127 | lxvd2x 45, 0, 4 |
128 | ld 0, 400(1) |
129 | mtlr 0 |
130 | ld 2, 392(1) |
131 | ld 3, 32(1) |
132 | ld 4, 40(1) |
133 | ld 5, 48(1) |
134 | ld 6, 56(1) |
135 | ld 7, 64(1) |
136 | ld 8, 72(1) |
137 | ld 9, 80(1) |
138 | ld 10, 88(1) |
139 | |
140 | addi 1, 1, 408 |
141 | ld 0, 16(1) |
142 | blr |
143 | |
144 | .globl __xray_FunctionExit |
145 | .p2align 4 |
146 | __xray_FunctionExit: |
147 | std 0, 16(1) |
148 | stdu 1, -256(1) |
149 | # Spill r3-r4, f1-f8, and vsr34-vsr41, which are return registers. |
150 | # If this appears to be slow, the caller needs to pass in number of generic, |
151 | # floating point, and vector parameters, so that we only spill those live ones. |
152 | std 3, 32(1) |
153 | ld 3, 248(1) # FuncId |
154 | std 4, 40(1) |
155 | addi 4, 1, 48 |
156 | stxsdx 1, 0, 4 |
157 | addi 4, 1, 56 |
158 | stxsdx 2, 0, 4 |
159 | addi 4, 1, 64 |
160 | stxsdx 3, 0, 4 |
161 | addi 4, 1, 72 |
162 | stxsdx 4, 0, 4 |
163 | addi 4, 1, 80 |
164 | stxsdx 5, 0, 4 |
165 | addi 4, 1, 88 |
166 | stxsdx 6, 0, 4 |
167 | addi 4, 1, 96 |
168 | stxsdx 7, 0, 4 |
169 | addi 4, 1, 104 |
170 | stxsdx 8, 0, 4 |
171 | addi 4, 1, 112 |
172 | stxvd2x 34, 0, 4 |
173 | addi 4, 1, 128 |
174 | stxvd2x 35, 0, 4 |
175 | addi 4, 1, 144 |
176 | stxvd2x 36, 0, 4 |
177 | addi 4, 1, 160 |
178 | stxvd2x 37, 0, 4 |
179 | addi 4, 1, 176 |
180 | stxvd2x 38, 0, 4 |
181 | addi 4, 1, 192 |
182 | stxvd2x 39, 0, 4 |
183 | addi 4, 1, 208 |
184 | stxvd2x 40, 0, 4 |
185 | addi 4, 1, 224 |
186 | stxvd2x 41, 0, 4 |
187 | std 2, 240(1) |
188 | mflr 0 |
189 | std 0, 248(1) |
190 | |
191 | li 4, 1 |
192 | bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType |
193 | nop |
194 | |
195 | addi 4, 1, 48 |
196 | lxsdx 1, 0, 4 |
197 | addi 4, 1, 56 |
198 | lxsdx 2, 0, 4 |
199 | addi 4, 1, 64 |
200 | lxsdx 3, 0, 4 |
201 | addi 4, 1, 72 |
202 | lxsdx 4, 0, 4 |
203 | addi 4, 1, 80 |
204 | lxsdx 5, 0, 4 |
205 | addi 4, 1, 88 |
206 | lxsdx 6, 0, 4 |
207 | addi 4, 1, 96 |
208 | lxsdx 7, 0, 4 |
209 | addi 4, 1, 104 |
210 | lxsdx 8, 0, 4 |
211 | addi 4, 1, 112 |
212 | lxvd2x 34, 0, 4 |
213 | addi 4, 1, 128 |
214 | lxvd2x 35, 0, 4 |
215 | addi 4, 1, 144 |
216 | lxvd2x 36, 0, 4 |
217 | addi 4, 1, 160 |
218 | lxvd2x 37, 0, 4 |
219 | addi 4, 1, 176 |
220 | lxvd2x 38, 0, 4 |
221 | addi 4, 1, 192 |
222 | lxvd2x 39, 0, 4 |
223 | addi 4, 1, 208 |
224 | lxvd2x 40, 0, 4 |
225 | addi 4, 1, 224 |
226 | lxvd2x 41, 0, 4 |
227 | ld 0, 248(1) |
228 | mtlr 0 |
229 | ld 2, 240(1) |
230 | ld 3, 32(1) |
231 | ld 4, 40(1) |
232 | |
233 | addi 1, 1, 256 |
234 | ld 0, 16(1) |
235 | blr |
236 | |