unwind_registers.S revision 1.10 1 1.1 joerg //===------------------------- unwind_registers.S -------------------------===//
2 1.1 joerg //
3 1.1 joerg // The LLVM Compiler Infrastructure
4 1.1 joerg //
5 1.1 joerg // This file is dual licensed under the MIT and the University of Illinois Open
6 1.1 joerg // Source Licenses. See LICENSE.TXT for details.
7 1.1 joerg //
8 1.1 joerg //
9 1.1 joerg // Abstracts accessing local vs remote address spaces.
10 1.1 joerg //
11 1.1 joerg //===----------------------------------------------------------------------===//
12 1.1 joerg #include <machine/asm.h>
13 1.1 joerg
14 1.1 joerg #ifdef __i386__
15 1.1 joerg .hidden _ZN7_Unwind13Registers_x86C1Ev
16 1.1 joerg ENTRY(_ZN7_Unwind13Registers_x86C1Ev)
17 1.1 joerg pushl %eax
18 1.1 joerg movl 8(%esp), %eax /* Load this */
19 1.1 joerg /* Save all registers except EAX, EIP and ESP */
20 1.1 joerg /* Skip ECX */
21 1.1 joerg /* Skip EDX */
22 1.1 joerg movl %ebx, 12(%eax)
23 1.1 joerg movl %ebp, 20(%eax)
24 1.1 joerg movl %esi, 24(%eax)
25 1.1 joerg movl %edi, 28(%eax)
26 1.1 joerg
27 1.1 joerg leal 8(%esp), %edx /* Compute ESP from the call site */
28 1.1 joerg movl %edx, 16(%eax) /* ...and store it as ESP */
29 1.1 joerg movl 4(%esp), %edx /* Load return address */
30 1.1 joerg movl %edx, 32(%eax) /* ...and store it as EIP */
31 1.1 joerg popl %edx /* Take old EAX from stack */
32 1.1 joerg movl %edx, 0(%eax) /* ...and store it */ // XXX skip
33 1.1 joerg ret
34 1.1 joerg
35 1.1 joerg .hidden _ZNK7_Unwind13Registers_x866jumptoEv
36 1.1 joerg ENTRY(_ZNK7_Unwind13Registers_x866jumptoEv)
37 1.1 joerg movl 4(%esp), %eax /* Load this */
38 1.1 joerg movl 16(%eax), %edx /* Load new stack pointer */
39 1.1 joerg subl $4, %edx /* Reserve space on new stack for EIP */
40 1.1 joerg movl 32(%eax), %ebx /* Load new EIP */
41 1.1 joerg movl %ebx, 0(%edx) /* ...and save it on the new stack */
42 1.1 joerg pushl %edx /* Save new stack pointer on old stack */
43 1.1 joerg /* New stack is prepared, now restore all registers except ESP */
44 1.1 joerg /* EAX is the index register and must be restored last */
45 1.1 joerg movl 4(%eax), %ecx
46 1.1 joerg movl 8(%eax), %edx
47 1.1 joerg movl 12(%eax), %ebx
48 1.1 joerg movl 20(%eax), %ebp
49 1.1 joerg /* 16 is ESP */
50 1.1 joerg movl 24(%eax), %esi
51 1.1 joerg movl 28(%eax), %edi
52 1.1 joerg movl 0(%eax), %eax
53 1.1 joerg /* Now load new stack pointer pushed on the old stack earlier */
54 1.1 joerg popl %esp
55 1.1 joerg /* Return address is already on the new stack. */
56 1.1 joerg ret
57 1.1 joerg #endif
58 1.1 joerg
59 1.1 joerg #ifdef __x86_64
60 1.1 joerg .hidden _ZN7_Unwind16Registers_x86_64C1Ev
61 1.1 joerg ENTRY(_ZN7_Unwind16Registers_x86_64C1Ev)
62 1.1 joerg /* RDI == this */
63 1.1 joerg /* Skip RAX */
64 1.1 joerg /* Skip RDX */
65 1.1 joerg /* Skip RCX */
66 1.1 joerg movq %rbx, 24(%rdi)
67 1.1 joerg /* Skip RSI */
68 1.1 joerg /* Skip RDI */
69 1.1 joerg movq %rbp, 48(%rdi)
70 1.1 joerg leaq 8(%rsp), %rax
71 1.1 joerg movq %rax, 56(%rdi)
72 1.1 joerg /* Skip R8 */
73 1.1 joerg /* Skip R9 */
74 1.1 joerg /* Skip R10 */
75 1.1 joerg /* Skip R11 */
76 1.1 joerg movq %r12, 96(%rdi)
77 1.1 joerg movq %r13, 104(%rdi)
78 1.1 joerg movq %r14, 112(%rdi)
79 1.1 joerg movq %r15, 120(%rdi)
80 1.1 joerg movq (%rsp), %rax
81 1.1 joerg movq %rax, 128(%rdi)
82 1.1 joerg ret
83 1.1 joerg
84 1.1 joerg .hidden _ZNK7_Unwind16Registers_x86_646jumptoEv
85 1.1 joerg ENTRY(_ZNK7_Unwind16Registers_x86_646jumptoEv)
86 1.1 joerg /* RDI == this */
87 1.1 joerg movq 56(%rdi), %rax
88 1.1 joerg subq $8, %rax /* Reserve space on new stack for RIP */
89 1.1 joerg movq 128(%rdi), %rbx /* Load new RIP */
90 1.1 joerg movq %rbx, 0(%rax) /* ...and save it on the new stack */
91 1.1 joerg pushq %rax /* Save new stack pointer on old stack */
92 1.1 joerg /* New stack is prepared, now restore all registers */
93 1.1 joerg movq 0(%rdi), %rax
94 1.1 joerg movq 8(%rdi), %rdx
95 1.1 joerg movq 16(%rdi), %rcx
96 1.1 joerg movq 24(%rdi), %rbx
97 1.1 joerg movq 32(%rdi), %rsi
98 1.1 joerg /* RDI restored later as it is still used as index register */
99 1.1 joerg movq 48(%rdi), %rbp
100 1.1 joerg /* RSP is restored later */
101 1.1 joerg movq 64(%rdi), %r8
102 1.1 joerg movq 72(%rdi), %r9
103 1.1 joerg movq 80(%rdi), %r10
104 1.1 joerg movq 88(%rdi), %r11
105 1.1 joerg movq 96(%rdi), %r12
106 1.1 joerg movq 104(%rdi), %r13
107 1.1 joerg movq 112(%rdi), %r14
108 1.1 joerg movq 120(%rdi), %r15
109 1.1 joerg movq 40(%rdi), %rdi
110 1.1 joerg /* Now load new stack pointer pushed on the old stack earlier */
111 1.1 joerg popq %rsp
112 1.1 joerg /* Return address is already on the new stack. */
113 1.1 joerg ret
114 1.1 joerg #endif
115 1.1 joerg
116 1.1 joerg #ifdef __powerpc__
117 1.1 joerg .hidden _ZN7_Unwind15Registers_ppc32C1Ev
118 1.1 joerg ENTRY(_ZN7_Unwind15Registers_ppc32C1Ev)
119 1.3 joerg /* TODO: skip non-callee-safe registers */
120 1.1 joerg stw %r0, 0(%r3)
121 1.1 joerg stw %r1, 4(%r3)
122 1.1 joerg stw %r2, 8(%r3)
123 1.1 joerg stw %r3, 12(%r3)
124 1.1 joerg stw %r4, 16(%r3)
125 1.1 joerg stw %r5, 20(%r3)
126 1.1 joerg stw %r6, 24(%r3)
127 1.1 joerg stw %r7, 28(%r3)
128 1.1 joerg stw %r8, 32(%r3)
129 1.1 joerg stw %r9, 36(%r3)
130 1.1 joerg stw %r10, 40(%r3)
131 1.1 joerg stw %r11, 44(%r3)
132 1.1 joerg stw %r12, 48(%r3)
133 1.1 joerg stw %r13, 52(%r3)
134 1.1 joerg stw %r14, 56(%r3)
135 1.1 joerg stw %r15, 60(%r3)
136 1.1 joerg stw %r16, 64(%r3)
137 1.1 joerg stw %r17, 68(%r3)
138 1.1 joerg stw %r18, 72(%r3)
139 1.1 joerg stw %r19, 76(%r3)
140 1.1 joerg stw %r20, 80(%r3)
141 1.1 joerg stw %r21, 84(%r3)
142 1.1 joerg stw %r22, 88(%r3)
143 1.1 joerg stw %r23, 92(%r3)
144 1.1 joerg stw %r24, 96(%r3)
145 1.1 joerg stw %r25,100(%r3)
146 1.1 joerg stw %r26,104(%r3)
147 1.1 joerg stw %r27,108(%r3)
148 1.1 joerg stw %r28,112(%r3)
149 1.1 joerg stw %r29,116(%r3)
150 1.1 joerg stw %r30,120(%r3)
151 1.1 joerg stw %r31,124(%r3)
152 1.3 joerg mflr %r0
153 1.3 joerg stw %r0, 136(%r3) /* SRR0 */
154 1.3 joerg mfcr %r0
155 1.3 joerg stw %r0, 132(%r3) /* CR */
156 1.1 joerg
157 1.3 joerg stfd %f0, 144(%r3)
158 1.3 joerg stfd %f1, 152(%r3)
159 1.3 joerg stfd %f2, 160(%r3)
160 1.3 joerg stfd %f3, 168(%r3)
161 1.3 joerg stfd %f4, 176(%r3)
162 1.3 joerg stfd %f5, 184(%r3)
163 1.3 joerg stfd %f6, 192(%r3)
164 1.3 joerg stfd %f7, 200(%r3)
165 1.3 joerg stfd %f8, 208(%r3)
166 1.3 joerg stfd %f9, 216(%r3)
167 1.3 joerg stfd %f10, 224(%r3)
168 1.3 joerg stfd %f11, 232(%r3)
169 1.3 joerg stfd %f12, 240(%r3)
170 1.3 joerg stfd %f13, 248(%r3)
171 1.3 joerg stfd %f14, 256(%r3)
172 1.3 joerg stfd %f15, 264(%r3)
173 1.3 joerg stfd %f16, 272(%r3)
174 1.3 joerg stfd %f17, 280(%r3)
175 1.3 joerg stfd %f18, 288(%r3)
176 1.3 joerg stfd %f19, 296(%r3)
177 1.3 joerg stfd %f20, 304(%r3)
178 1.3 joerg stfd %f21, 312(%r3)
179 1.3 joerg stfd %f22, 320(%r3)
180 1.3 joerg stfd %f23, 328(%r3)
181 1.3 joerg stfd %f24, 336(%r3)
182 1.3 joerg stfd %f25, 344(%r3)
183 1.3 joerg stfd %f26, 352(%r3)
184 1.3 joerg stfd %f27, 360(%r3)
185 1.3 joerg stfd %f28, 368(%r3)
186 1.3 joerg stfd %f29, 376(%r3)
187 1.3 joerg stfd %f30, 384(%r3)
188 1.3 joerg stfd %f31, 392(%r3)
189 1.1 joerg
190 1.3 joerg /* LR is undefined */
191 1.1 joerg blr
192 1.1 joerg
193 1.1 joerg .hidden _ZNK7_Unwind15Registers_ppc326jumptoEv
194 1.1 joerg ENTRY(_ZNK7_Unwind15Registers_ppc326jumptoEv)
195 1.3 joerg lfd %f0, 144(%r3)
196 1.3 joerg lfd %f1, 152(%r3)
197 1.3 joerg lfd %f2, 160(%r3)
198 1.3 joerg lfd %f3, 168(%r3)
199 1.3 joerg lfd %f4, 176(%r3)
200 1.3 joerg lfd %f5, 184(%r3)
201 1.3 joerg lfd %f6, 192(%r3)
202 1.3 joerg lfd %f7, 200(%r3)
203 1.3 joerg lfd %f8, 208(%r3)
204 1.3 joerg lfd %f9, 216(%r3)
205 1.3 joerg lfd %f10, 224(%r3)
206 1.3 joerg lfd %f11, 232(%r3)
207 1.3 joerg lfd %f12, 240(%r3)
208 1.3 joerg lfd %f13, 248(%r3)
209 1.3 joerg lfd %f14, 256(%r3)
210 1.3 joerg lfd %f15, 264(%r3)
211 1.3 joerg lfd %f16, 272(%r3)
212 1.3 joerg lfd %f17, 280(%r3)
213 1.3 joerg lfd %f18, 288(%r3)
214 1.3 joerg lfd %f19, 296(%r3)
215 1.3 joerg lfd %f20, 304(%r3)
216 1.3 joerg lfd %f21, 312(%r3)
217 1.3 joerg lfd %f22, 320(%r3)
218 1.3 joerg lfd %f23, 328(%r3)
219 1.3 joerg lfd %f24, 336(%r3)
220 1.3 joerg lfd %f25, 344(%r3)
221 1.3 joerg lfd %f26, 352(%r3)
222 1.3 joerg lfd %f27, 360(%r3)
223 1.3 joerg lfd %f28, 368(%r3)
224 1.3 joerg lfd %f29, 376(%r3)
225 1.3 joerg lfd %f30, 384(%r3)
226 1.3 joerg lfd %f31, 392(%r3)
227 1.3 joerg
228 1.1 joerg lwz %r2, 8(%r3)
229 1.1 joerg /* skip r3 for now */
230 1.1 joerg lwz %r4, 16(%r3)
231 1.1 joerg lwz %r5, 20(%r3)
232 1.1 joerg lwz %r6, 24(%r3)
233 1.1 joerg lwz %r7, 28(%r3)
234 1.1 joerg lwz %r8, 32(%r3)
235 1.1 joerg lwz %r9, 36(%r3)
236 1.1 joerg lwz %r10, 40(%r3)
237 1.1 joerg lwz %r11, 44(%r3)
238 1.1 joerg lwz %r12, 48(%r3)
239 1.1 joerg lwz %r13, 52(%r3)
240 1.1 joerg lwz %r14, 56(%r3)
241 1.1 joerg lwz %r15, 60(%r3)
242 1.1 joerg lwz %r16, 64(%r3)
243 1.1 joerg lwz %r17, 68(%r3)
244 1.1 joerg lwz %r18, 72(%r3)
245 1.1 joerg lwz %r19, 76(%r3)
246 1.1 joerg lwz %r20, 80(%r3)
247 1.1 joerg lwz %r21, 84(%r3)
248 1.1 joerg lwz %r22, 88(%r3)
249 1.1 joerg lwz %r23, 92(%r3)
250 1.1 joerg lwz %r24, 96(%r3)
251 1.1 joerg lwz %r25,100(%r3)
252 1.1 joerg lwz %r26,104(%r3)
253 1.1 joerg lwz %r27,108(%r3)
254 1.1 joerg lwz %r28,112(%r3)
255 1.1 joerg lwz %r29,116(%r3)
256 1.1 joerg lwz %r30,120(%r3)
257 1.1 joerg lwz %r31,124(%r3)
258 1.1 joerg
259 1.3 joerg lwz %r0, 128(%r3) /* LR */
260 1.3 joerg mtlr %r0
261 1.3 joerg lwz %r0, 132(%r3) /* CR */
262 1.1 joerg mtcr %r0
263 1.3 joerg lwz %r0, 136(%r3) /* SRR0 */
264 1.1 joerg mtctr %r0
265 1.1 joerg
266 1.3 joerg lwz %r0, 0(%r3) /* do r0 now */
267 1.3 joerg lwz %r1, 4(%r3) /* do sp now */
268 1.3 joerg lwz %r3, 12(%r3) /* do r3 last */
269 1.1 joerg bctr
270 1.1 joerg #endif
271 1.2 matt
272 1.2 matt #if defined(__arm__) && !defined(__ARM_EABI__)
273 1.2 matt .hidden _ZN7_Unwind15Registers_arm32C1Ev
274 1.2 matt ENTRY(_ZN7_Unwind15Registers_arm32C1Ev)
275 1.2 matt stmia r0, {r0-r14}
276 1.2 matt
277 1.2 matt str lr, [r0, #60] /* PC */
278 1.2 matt mrs r1, cpsr
279 1.2 matt str r1, [r0, #64] /* CPSR */
280 1.2 matt
281 1.2 matt RET
282 1.2 matt END(_ZN7_Unwind15Registers_arm32C1Ev)
283 1.2 matt
284 1.2 matt .hidden _ZNK7_Unwind15Registers_arm326jumptoEv
285 1.2 matt ENTRY(_ZNK7_Unwind15Registers_arm326jumptoEv)
286 1.2 matt ldr r1, [r0, #64]
287 1.2 matt msr cpsr_sxc, r1
288 1.2 matt ldmia r0, {r0-r15}
289 1.2 matt END(_ZNK7_Unwind15Registers_arm326jumptoEv)
290 1.2 matt #endif
291 1.4 joerg
292 1.4 joerg #if defined(__vax__)
293 1.4 joerg .hidden _ZN7_Unwind13Registers_vaxC1Ev
294 1.4 joerg ENTRY(_ZN7_Unwind13Registers_vaxC1Ev, R0)
295 1.4 joerg subl2 $4, %sp
296 1.4 joerg movl 4(%ap), %r0
297 1.4 joerg movl %r1, 4(%r0)
298 1.4 joerg movl %r2, 8(%r0)
299 1.4 joerg movl %r3, 12(%r0)
300 1.4 joerg movl %r4, 16(%r0)
301 1.4 joerg movl %r5, 20(%r0)
302 1.4 joerg movl %r6, 24(%r0)
303 1.4 joerg movl %r7, 28(%r0)
304 1.4 joerg movl %r8, 32(%r0)
305 1.4 joerg movl %r9, 36(%r0)
306 1.4 joerg movl %r10, 40(%r0)
307 1.4 joerg movl %r11, 44(%r0)
308 1.4 joerg movl 8(%fp), 48(%r0)
309 1.4 joerg movl 12(%fp), 52(%r0)
310 1.5 joerg addl3 $36, %sp, 56(%r0)
311 1.4 joerg /* Return PC */
312 1.4 joerg movl 16(%fp), 60(%r0)
313 1.4 joerg /* Load saved value of r0 as r1 */
314 1.4 joerg movl 20(%fp), 0(%r0)
315 1.4 joerg /* Saved PSW */
316 1.4 joerg movl 4(%fp), 64(%r0)
317 1.4 joerg ret
318 1.4 joerg END(_ZN7_Unwind13Registers_vaxC1Ev)
319 1.4 joerg
320 1.4 joerg .hidden _ZNK7_Unwind13Registers_vax6jumptoEv
321 1.4 joerg ENTRY(_ZNK7_Unwind13Registers_vax6jumptoEv, 0)
322 1.4 joerg subl2 $4, %sp
323 1.4 joerg movl 4(%ap), %r0
324 1.4 joerg movl 4(%r0), %r1
325 1.4 joerg movl 8(%r0), %r2
326 1.4 joerg movl 12(%r0), %r3
327 1.4 joerg movl 16(%r0), %r4
328 1.4 joerg movl 20(%r0), %r5
329 1.4 joerg movl 24(%r0), %r6
330 1.4 joerg movl 28(%r0), %r7
331 1.4 joerg movl 32(%r0), %r8
332 1.4 joerg movl 36(%r0), %r9
333 1.4 joerg movl 40(%r0), %r10
334 1.4 joerg movl 44(%r0), %r11
335 1.4 joerg movl 48(%r0), %r12
336 1.4 joerg movl 52(%r0), %r13
337 1.4 joerg movl 56(%r0), %r14
338 1.4 joerg movl 60(%r0), -(%sp)
339 1.4 joerg movl 0(%r0), %r0
340 1.4 joerg /* XXX restore PSW */
341 1.4 joerg rsb
342 1.6 joerg END(_ZNK7_Unwind13Registers_vax6jumptoEv)
343 1.6 joerg #endif
344 1.4 joerg
345 1.6 joerg #if defined(__m68k__)
346 1.6 joerg ENTRY(_ZN7_Unwind14Registers_M68KC1Ev)
347 1.6 joerg move.l 4(%sp), %a0
348 1.6 joerg movem.l %d0-%d7/%a0-%a7, (%a0)
349 1.7 joerg fmovem %fp0-%fp7, 72(%a0)
350 1.6 joerg move.l 0(%sp), %a1
351 1.6 joerg move.l %a1, 64(%a0)
352 1.6 joerg addq.l #4, 60(%a0)
353 1.6 joerg rts
354 1.6 joerg END(_ZN7_Unwind14Registers_M68KC1Ev)
355 1.6 joerg
356 1.6 joerg ENTRY(_ZNK7_Unwind14Registers_M68K6jumptoEv)
357 1.6 joerg move.l 4(%sp), %a0
358 1.6 joerg subq.l #4, 60(%a0)
359 1.6 joerg move.l 64(%a0), %a1
360 1.6 joerg move.l 60(%a0), %a2
361 1.6 joerg move.l %a1, (%a2)
362 1.7 joerg fmovem 72(%a0), %fp0-%fp7
363 1.6 joerg movem.l (%a0), %d0-%d7/%a0-%a7
364 1.6 joerg rts
365 1.6 joerg END(_ZNK7_Unwind14Registers_M68K6jumptoEv)
366 1.4 joerg #endif
367 1.8 joerg
368 1.8 joerg #if defined(__sh3__)
369 1.8 joerg .hidden _ZN7_Unwind13Registers_SH3C1Ev
370 1.8 joerg ENTRY(_ZN7_Unwind13Registers_SH3C1Ev)
371 1.8 joerg add #64, r4
372 1.8 joerg mov.l r8, @-r15
373 1.8 joerg sts.l pr, @-r15
374 1.8 joerg mov.l @r15+, r8
375 1.8 joerg mov.l r8, @r4
376 1.8 joerg mov.l @r15+, r8
377 1.8 joerg
378 1.8 joerg mov.l r15, @-r4
379 1.8 joerg mov.l r14, @-r4
380 1.8 joerg mov.l r13, @-r4
381 1.8 joerg mov.l r12, @-r4
382 1.8 joerg mov.l r11, @-r4
383 1.8 joerg mov.l r10, @-r4
384 1.8 joerg mov.l r9, @-r4
385 1.8 joerg mov.l r8, @-r4
386 1.8 joerg mov.l r7, @-r4
387 1.8 joerg mov.l r6, @-r4
388 1.8 joerg mov.l r5, @-r4
389 1.8 joerg add #-4, r4
390 1.8 joerg mov.l r3, @-r4
391 1.8 joerg mov.l r2, @-r4
392 1.8 joerg mov.l r1, @-r4
393 1.8 joerg mov.l r0, @-r4
394 1.8 joerg rts
395 1.8 joerg mov.l r4, @(16,r4)
396 1.8 joerg SET_ENTRY_SIZE(_ZN7_Unwind13Registers_SH3C1Ev)
397 1.8 joerg
398 1.8 joerg .hidden _ZNK7_Unwind13Registers_SH36jumptoEv
399 1.8 joerg ENTRY(_ZNK7_Unwind13Registers_SH36jumptoEv)
400 1.8 joerg mov r4, r0
401 1.8 joerg add #4, r0
402 1.8 joerg mov.l @r0+, r1
403 1.8 joerg mov.l @r0+, r2
404 1.8 joerg mov.l @r0+, r3
405 1.8 joerg mov.l @r0+, r4
406 1.8 joerg mov.l @r0+, r5
407 1.8 joerg mov.l @r0+, r6
408 1.8 joerg mov.l @r0+, r7
409 1.8 joerg mov.l @r0+, r8
410 1.8 joerg mov.l @r0+, r9
411 1.8 joerg mov.l @r0+, r10
412 1.8 joerg mov.l @r0+, r11
413 1.8 joerg mov.l @r0+, r12
414 1.8 joerg mov.l @r0+, r13
415 1.8 joerg mov.l @(12, r0), r14
416 1.8 joerg lds r14, pr
417 1.8 joerg mov.l @r0+, r14
418 1.8 joerg mov.l @r0+, r15
419 1.8 joerg mov.l @r0, r0
420 1.8 joerg jmp @r0
421 1.8 joerg nop
422 1.8 joerg SET_ENTRY_SIZE(_ZNK7_Unwind13Registers_SH36jumptoEv)
423 1.8 joerg #endif
424 1.9 joerg
425 1.9 joerg #if defined(__sparc64__)
426 1.9 joerg #include <machine/trap.h>
427 1.9 joerg .register %g2, #ignore
428 1.9 joerg .register %g3, #ignore
429 1.9 joerg .register %g6, #ignore
430 1.9 joerg .register %g7, #ignore
431 1.9 joerg .hidden _ZN7_Unwind17Registers_SPARC64C1Ev
432 1.9 joerg ENTRY(_ZN7_Unwind17Registers_SPARC64C1Ev)
433 1.9 joerg t ST_FLUSHWIN
434 1.9 joerg stx %g0, [%o0 + 0]
435 1.9 joerg stx %g1, [%o0 + 8]
436 1.9 joerg stx %g2, [%o0 + 16]
437 1.9 joerg stx %g3, [%o0 + 24]
438 1.9 joerg stx %g4, [%o0 + 32]
439 1.9 joerg stx %g5, [%o0 + 40]
440 1.9 joerg stx %g6, [%o0 + 48]
441 1.9 joerg stx %g7, [%o0 + 56]
442 1.9 joerg stx %o0, [%o0 + 64]
443 1.9 joerg stx %o1, [%o0 + 72]
444 1.9 joerg stx %o2, [%o0 + 80]
445 1.9 joerg stx %o3, [%o0 + 88]
446 1.9 joerg stx %o4, [%o0 + 96]
447 1.9 joerg stx %o5, [%o0 + 104]
448 1.9 joerg stx %o6, [%o0 + 112]
449 1.9 joerg stx %o7, [%o0 + 120]
450 1.9 joerg stx %l0, [%o0 + 128]
451 1.9 joerg stx %l1, [%o0 + 136]
452 1.9 joerg stx %l2, [%o0 + 144]
453 1.9 joerg stx %l3, [%o0 + 152]
454 1.9 joerg stx %l4, [%o0 + 160]
455 1.9 joerg stx %l5, [%o0 + 168]
456 1.9 joerg stx %l6, [%o0 + 176]
457 1.9 joerg stx %l7, [%o0 + 184]
458 1.9 joerg stx %i0, [%o0 + 192]
459 1.9 joerg stx %i1, [%o0 + 200]
460 1.9 joerg stx %i2, [%o0 + 208]
461 1.9 joerg stx %i3, [%o0 + 216]
462 1.9 joerg stx %i4, [%o0 + 224]
463 1.9 joerg stx %i5, [%o0 + 232]
464 1.9 joerg stx %i6, [%o0 + 240]
465 1.9 joerg stx %i7, [%o0 + 248]
466 1.9 joerg add %o7, 8, %g1
467 1.9 joerg retl
468 1.9 joerg stx %g1, [%o0 + 256]
469 1.9 joerg END(_ZN7_Unwind17Registers_SPARC64C1Ev)
470 1.9 joerg
471 1.9 joerg .hidden _ZNK7_Unwind17Registers_SPARC646jumptoEv
472 1.9 joerg ENTRY(_ZNK7_Unwind17Registers_SPARC646jumptoEv)
473 1.9 joerg t ST_FLUSHWIN
474 1.9 joerg ldx [%o0 + 0], %g0
475 1.9 joerg ldx [%o0 + 8], %g1
476 1.9 joerg ldx [%o0 + 16], %g2
477 1.9 joerg ldx [%o0 + 24], %g3
478 1.9 joerg ldx [%o0 + 32], %g4
479 1.9 joerg ldx [%o0 + 40], %g5
480 1.9 joerg ldx [%o0 + 48], %g6
481 1.9 joerg ldx [%o0 + 56], %g7
482 1.9 joerg ldx [%o0 + 72], %o1
483 1.9 joerg ldx [%o0 + 80], %o2
484 1.9 joerg ldx [%o0 + 88], %o3
485 1.9 joerg ldx [%o0 + 96], %o4
486 1.9 joerg ldx [%o0 + 104], %o5
487 1.9 joerg ldx [%o0 + 112], %g1
488 1.9 joerg sub %g1, 2047, %o6
489 1.9 joerg ldx [%o0 + 120], %o7
490 1.9 joerg ldx [%o0 + 128], %l0
491 1.9 joerg ldx [%o0 + 136], %l1
492 1.9 joerg ldx [%o0 + 144], %l2
493 1.9 joerg ldx [%o0 + 152], %l3
494 1.9 joerg ldx [%o0 + 160], %l4
495 1.9 joerg ldx [%o0 + 168], %l5
496 1.9 joerg ldx [%o0 + 176], %l6
497 1.9 joerg ldx [%o0 + 184], %l7
498 1.9 joerg ldx [%o0 + 192], %i0
499 1.9 joerg ldx [%o0 + 200], %i1
500 1.9 joerg ldx [%o0 + 208], %i2
501 1.9 joerg ldx [%o0 + 216], %i3
502 1.9 joerg ldx [%o0 + 224], %i4
503 1.9 joerg ldx [%o0 + 232], %i5
504 1.9 joerg ldx [%o0 + 240], %i6
505 1.9 joerg ldx [%o0 + 248], %i7
506 1.9 joerg ldx [%o0 + 256], %g1
507 1.9 joerg jmpl %g1, %g0
508 1.9 joerg ldx [%o0 + 64], %o0
509 1.9 joerg END(_ZNK7_Unwind17Registers_SPARC646jumptoEv)
510 1.9 joerg #elif defined(__sparc__)
511 1.9 joerg #include <machine/trap.h>
512 1.9 joerg
513 1.9 joerg .hidden _ZN7_Unwind15Registers_SPARCC1Ev
514 1.9 joerg ENTRY(_ZN7_Unwind15Registers_SPARCC1Ev)
515 1.9 joerg t ST_FLUSHWIN
516 1.9 joerg st %g0, [%o0 + 0]
517 1.9 joerg st %g1, [%o0 + 4]
518 1.9 joerg st %g2, [%o0 + 8]
519 1.9 joerg st %g3, [%o0 + 12]
520 1.9 joerg st %g4, [%o0 + 16]
521 1.9 joerg st %g5, [%o0 + 20]
522 1.9 joerg st %g6, [%o0 + 24]
523 1.9 joerg st %g7, [%o0 + 28]
524 1.9 joerg st %o0, [%o0 + 32]
525 1.9 joerg st %o1, [%o0 + 36]
526 1.9 joerg st %o2, [%o0 + 40]
527 1.9 joerg st %o3, [%o0 + 44]
528 1.9 joerg st %o4, [%o0 + 48]
529 1.9 joerg st %o5, [%o0 + 52]
530 1.9 joerg st %o6, [%o0 + 56]
531 1.9 joerg st %o7, [%o0 + 60]
532 1.9 joerg st %l0, [%o0 + 64]
533 1.9 joerg st %l1, [%o0 + 68]
534 1.9 joerg st %l2, [%o0 + 72]
535 1.9 joerg st %l3, [%o0 + 76]
536 1.9 joerg st %l4, [%o0 + 80]
537 1.9 joerg st %l5, [%o0 + 84]
538 1.9 joerg st %l6, [%o0 + 88]
539 1.9 joerg st %l7, [%o0 + 92]
540 1.9 joerg st %i0, [%o0 + 96]
541 1.9 joerg st %i1, [%o0 + 100]
542 1.9 joerg st %i2, [%o0 + 104]
543 1.9 joerg st %i3, [%o0 + 108]
544 1.9 joerg st %i4, [%o0 + 112]
545 1.9 joerg st %i5, [%o0 + 116]
546 1.9 joerg st %i6, [%o0 + 120]
547 1.9 joerg st %i7, [%o0 + 124 ]
548 1.9 joerg add %o7, 8, %g1
549 1.9 joerg retl
550 1.9 joerg st %g1, [%o0 + 128]
551 1.9 joerg END(_ZN7_Unwind15Registers_SPARCC1Ev)
552 1.9 joerg
553 1.9 joerg .hidden _ZNK7_Unwind15Registers_SPARC6jumptoEv
554 1.9 joerg ENTRY(_ZNK7_Unwind15Registers_SPARC6jumptoEv)
555 1.9 joerg t ST_FLUSHWIN
556 1.9 joerg ld [%o0 + 0], %g0
557 1.9 joerg ld [%o0 + 4], %g1
558 1.9 joerg ld [%o0 + 8], %g2
559 1.9 joerg ld [%o0 + 12], %g3
560 1.9 joerg ld [%o0 + 16], %g4
561 1.9 joerg ld [%o0 + 20], %g5
562 1.9 joerg ld [%o0 + 24], %g6
563 1.9 joerg ld [%o0 + 28], %g7
564 1.9 joerg ld [%o0 + 36], %o1
565 1.9 joerg ld [%o0 + 40], %o2
566 1.9 joerg ld [%o0 + 44], %o3
567 1.9 joerg ld [%o0 + 48], %o4
568 1.9 joerg ld [%o0 + 52], %o5
569 1.9 joerg ld [%o0 + 56], %o6
570 1.9 joerg ld [%o0 + 60], %o7
571 1.9 joerg ld [%o0 + 64], %l0
572 1.9 joerg ld [%o0 + 68], %l1
573 1.9 joerg ld [%o0 + 72], %l2
574 1.9 joerg ld [%o0 + 76], %l3
575 1.9 joerg ld [%o0 + 80], %l4
576 1.9 joerg ld [%o0 + 84], %l5
577 1.9 joerg ld [%o0 + 88], %l6
578 1.9 joerg ld [%o0 + 92], %l7
579 1.9 joerg ld [%o0 + 96], %i0
580 1.9 joerg ld [%o0 + 100], %i1
581 1.9 joerg ld [%o0 + 104], %i2
582 1.9 joerg ld [%o0 + 108], %i3
583 1.9 joerg ld [%o0 + 112], %i4
584 1.9 joerg ld [%o0 + 116], %i5
585 1.9 joerg ld [%o0 + 120], %i6
586 1.9 joerg ld [%o0 + 124], %i7
587 1.9 joerg ld [%o0 + 128], %g1
588 1.9 joerg jmpl %g1, %g0
589 1.9 joerg ld [%o0 + 32], %o0
590 1.9 joerg END(_ZNK7_Unwind15Registers_SPARC6jumptoEv)
591 1.9 joerg #endif
592 1.10 joerg
593 1.10 joerg #if defined(__alpha__)
594 1.10 joerg .set nomacro
595 1.10 joerg .set noat
596 1.10 joerg .hidden _ZN7_Unwind15Registers_AlphaC1Ev
597 1.10 joerg LEAF_NOPROFILE(_ZN7_Unwind15Registers_AlphaC1Ev, 1)
598 1.10 joerg stq $0, 0($16)
599 1.10 joerg stq $1, 8($16)
600 1.10 joerg stq $2, 16($16)
601 1.10 joerg stq $3, 24($16)
602 1.10 joerg stq $4, 32($16)
603 1.10 joerg stq $5, 40($16)
604 1.10 joerg stq $6, 48($16)
605 1.10 joerg stq $7, 56($16)
606 1.10 joerg stq $8, 64($16)
607 1.10 joerg stq $9, 72($16)
608 1.10 joerg stq $10, 80($16)
609 1.10 joerg stq $11, 88($16)
610 1.10 joerg stq $12, 96($16)
611 1.10 joerg stq $13, 104($16)
612 1.10 joerg stq $14, 112($16)
613 1.10 joerg stq $15, 120($16)
614 1.10 joerg stq $16, 128($16)
615 1.10 joerg stq $17, 136($16)
616 1.10 joerg stq $18, 144($16)
617 1.10 joerg stq $19, 152($16)
618 1.10 joerg stq $20, 160($16)
619 1.10 joerg stq $21, 168($16)
620 1.10 joerg stq $22, 176($16)
621 1.10 joerg stq $23, 184($16)
622 1.10 joerg stq $24, 192($16)
623 1.10 joerg stq $25, 200($16)
624 1.10 joerg stq $26, 208($16)
625 1.10 joerg stq $27, 216($16)
626 1.10 joerg stq $28, 224($16)
627 1.10 joerg stq $29, 232($16)
628 1.10 joerg stq $30, 240($16)
629 1.10 joerg stq $26, 248($16)
630 1.10 joerg
631 1.10 joerg stt $f0, 256($16)
632 1.10 joerg stt $f1, 264($16)
633 1.10 joerg stt $f2, 272($16)
634 1.10 joerg stt $f3, 280($16)
635 1.10 joerg stt $f4, 288($16)
636 1.10 joerg stt $f5, 296($16)
637 1.10 joerg stt $f6, 304($16)
638 1.10 joerg stt $f7, 312($16)
639 1.10 joerg stt $f8, 320($16)
640 1.10 joerg stt $f9, 328($16)
641 1.10 joerg stt $f10, 336($16)
642 1.10 joerg stt $f11, 344($16)
643 1.10 joerg stt $f12, 352($16)
644 1.10 joerg stt $f13, 360($16)
645 1.10 joerg stt $f14, 368($16)
646 1.10 joerg stt $f15, 376($16)
647 1.10 joerg stt $f16, 384($16)
648 1.10 joerg stt $f17, 392($16)
649 1.10 joerg stt $f18, 400($16)
650 1.10 joerg stt $f19, 408($16)
651 1.10 joerg stt $f20, 416($16)
652 1.10 joerg stt $f21, 424($16)
653 1.10 joerg stt $f22, 432($16)
654 1.10 joerg stt $f23, 440($16)
655 1.10 joerg stt $f24, 448($16)
656 1.10 joerg stt $f25, 456($16)
657 1.10 joerg stt $f26, 464($16)
658 1.10 joerg stt $f27, 472($16)
659 1.10 joerg stt $f28, 480($16)
660 1.10 joerg stt $f29, 488($16)
661 1.10 joerg stt $f30, 496($16)
662 1.10 joerg ret $31, ($26), 1
663 1.10 joerg END(_ZN7_Unwind15Registers_AlphaC1Ev)
664 1.10 joerg
665 1.10 joerg .set nomacro
666 1.10 joerg .set noat
667 1.10 joerg .hidden _ZNK7_Unwind15Registers_Alpha6jumptoEv
668 1.10 joerg LEAF_NOPROFILE(_ZNK7_Unwind15Registers_Alpha6jumptoEv, 1)
669 1.10 joerg ldq $0, 0($16)
670 1.10 joerg ldq $1, 8($16)
671 1.10 joerg ldq $2, 16($16)
672 1.10 joerg ldq $3, 24($16)
673 1.10 joerg ldq $4, 32($16)
674 1.10 joerg ldq $5, 40($16)
675 1.10 joerg ldq $6, 48($16)
676 1.10 joerg ldq $7, 56($16)
677 1.10 joerg ldq $8, 64($16)
678 1.10 joerg ldq $9, 72($16)
679 1.10 joerg ldq $10, 80($16)
680 1.10 joerg ldq $11, 88($16)
681 1.10 joerg ldq $12, 96($16)
682 1.10 joerg ldq $13, 104($16)
683 1.10 joerg ldq $14, 112($16)
684 1.10 joerg ldq $15, 120($16)
685 1.10 joerg ldq $17, 136($16)
686 1.10 joerg ldq $18, 144($16)
687 1.10 joerg ldq $19, 152($16)
688 1.10 joerg ldq $20, 160($16)
689 1.10 joerg ldq $21, 168($16)
690 1.10 joerg ldq $22, 176($16)
691 1.10 joerg ldq $23, 184($16)
692 1.10 joerg ldq $24, 192($16)
693 1.10 joerg ldq $25, 200($16)
694 1.10 joerg ldq $27, 216($16)
695 1.10 joerg ldq $28, 224($16)
696 1.10 joerg ldq $29, 232($16)
697 1.10 joerg ldq $30, 240($16)
698 1.10 joerg ldq $26, 248($16)
699 1.10 joerg
700 1.10 joerg ldt $f0, 256($16)
701 1.10 joerg ldt $f1, 264($16)
702 1.10 joerg ldt $f2, 272($16)
703 1.10 joerg ldt $f3, 280($16)
704 1.10 joerg ldt $f4, 288($16)
705 1.10 joerg ldt $f5, 296($16)
706 1.10 joerg ldt $f6, 304($16)
707 1.10 joerg ldt $f7, 312($16)
708 1.10 joerg ldt $f8, 320($16)
709 1.10 joerg ldt $f9, 328($16)
710 1.10 joerg ldt $f10, 336($16)
711 1.10 joerg ldt $f11, 344($16)
712 1.10 joerg ldt $f12, 352($16)
713 1.10 joerg ldt $f13, 360($16)
714 1.10 joerg ldt $f14, 368($16)
715 1.10 joerg ldt $f15, 376($16)
716 1.10 joerg ldt $f16, 384($16)
717 1.10 joerg ldt $f17, 392($16)
718 1.10 joerg ldt $f18, 400($16)
719 1.10 joerg ldt $f19, 408($16)
720 1.10 joerg ldt $f20, 416($16)
721 1.10 joerg ldt $f21, 424($16)
722 1.10 joerg ldt $f22, 432($16)
723 1.10 joerg ldt $f23, 440($16)
724 1.10 joerg ldt $f24, 448($16)
725 1.10 joerg ldt $f25, 456($16)
726 1.10 joerg ldt $f26, 464($16)
727 1.10 joerg ldt $f27, 472($16)
728 1.10 joerg ldt $f28, 480($16)
729 1.10 joerg ldt $f29, 488($16)
730 1.10 joerg ldt $f30, 496($16)
731 1.10 joerg ldq $16, 128($16)
732 1.10 joerg ret $31, ($26), 1
733 1.10 joerg END(_ZNK7_Unwind15Registers_Alpha6jumptoEv)
734 1.10 joerg #endif
735