unwind_registers.S revision 1.13 1 //===------------------------- unwind_registers.S -------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //
9 // Abstracts accessing local vs remote address spaces.
10 //
11 //===----------------------------------------------------------------------===//
12 #include <machine/asm.h>
13
14 #ifdef __i386__
15 .hidden _ZN7_Unwind13Registers_x86C1Ev
16 ENTRY(_ZN7_Unwind13Registers_x86C1Ev)
17 pushl %eax
18 movl 8(%esp), %eax /* Load this */
19 /* Save all registers except EAX, EIP and ESP */
20 /* Skip ECX */
21 /* Skip EDX */
22 movl %ebx, 12(%eax)
23 movl %ebp, 20(%eax)
24 movl %esi, 24(%eax)
25 movl %edi, 28(%eax)
26
27 leal 8(%esp), %edx /* Compute ESP from the call site */
28 movl %edx, 16(%eax) /* ...and store it as ESP */
29 movl 4(%esp), %edx /* Load return address */
30 movl %edx, 32(%eax) /* ...and store it as EIP */
31 popl %edx /* Take old EAX from stack */
32 movl %edx, 0(%eax) /* ...and store it */ // XXX skip
33 ret
34
35 .hidden _ZNK7_Unwind13Registers_x866jumptoEv
36 ENTRY(_ZNK7_Unwind13Registers_x866jumptoEv)
37 movl 4(%esp), %eax /* Load this */
38 movl 16(%eax), %edx /* Load new stack pointer */
39 subl $4, %edx /* Reserve space on new stack for EIP */
40 movl 32(%eax), %ebx /* Load new EIP */
41 movl %ebx, 0(%edx) /* ...and save it on the new stack */
42 pushl %edx /* Save new stack pointer on old stack */
43 /* New stack is prepared, now restore all registers except ESP */
44 /* EAX is the index register and must be restored last */
45 movl 4(%eax), %ecx
46 movl 8(%eax), %edx
47 movl 12(%eax), %ebx
48 movl 20(%eax), %ebp
49 /* 16 is ESP */
50 movl 24(%eax), %esi
51 movl 28(%eax), %edi
52 movl 0(%eax), %eax
53 /* Now load new stack pointer pushed on the old stack earlier */
54 popl %esp
55 /* Return address is already on the new stack. */
56 ret
57 #endif
58
59 #ifdef __x86_64
60 .hidden _ZN7_Unwind16Registers_x86_64C1Ev
61 ENTRY(_ZN7_Unwind16Registers_x86_64C1Ev)
62 /* RDI == this */
63 /* Skip RAX */
64 /* Skip RDX */
65 /* Skip RCX */
66 movq %rbx, 24(%rdi)
67 /* Skip RSI */
68 /* Skip RDI */
69 movq %rbp, 48(%rdi)
70 leaq 8(%rsp), %rax
71 movq %rax, 56(%rdi)
72 /* Skip R8 */
73 /* Skip R9 */
74 /* Skip R10 */
75 /* Skip R11 */
76 movq %r12, 96(%rdi)
77 movq %r13, 104(%rdi)
78 movq %r14, 112(%rdi)
79 movq %r15, 120(%rdi)
80 movq (%rsp), %rax
81 movq %rax, 128(%rdi)
82 ret
83
84 .hidden _ZNK7_Unwind16Registers_x86_646jumptoEv
85 ENTRY(_ZNK7_Unwind16Registers_x86_646jumptoEv)
86 /* RDI == this */
87 movq 56(%rdi), %rax
88 subq $8, %rax /* Reserve space on new stack for RIP */
89 movq 128(%rdi), %rbx /* Load new RIP */
90 movq %rbx, 0(%rax) /* ...and save it on the new stack */
91 pushq %rax /* Save new stack pointer on old stack */
92 /* New stack is prepared, now restore all registers */
93 movq 0(%rdi), %rax
94 movq 8(%rdi), %rdx
95 movq 16(%rdi), %rcx
96 movq 24(%rdi), %rbx
97 movq 32(%rdi), %rsi
98 /* RDI restored later as it is still used as index register */
99 movq 48(%rdi), %rbp
100 /* RSP is restored later */
101 movq 64(%rdi), %r8
102 movq 72(%rdi), %r9
103 movq 80(%rdi), %r10
104 movq 88(%rdi), %r11
105 movq 96(%rdi), %r12
106 movq 104(%rdi), %r13
107 movq 112(%rdi), %r14
108 movq 120(%rdi), %r15
109 movq 40(%rdi), %rdi
110 /* Now load new stack pointer pushed on the old stack earlier */
111 popq %rsp
112 /* Return address is already on the new stack. */
113 ret
114 #endif
115
116 #ifdef __powerpc__
117 .hidden _ZN7_Unwind15Registers_ppc32C1Ev
118 ENTRY(_ZN7_Unwind15Registers_ppc32C1Ev)
119 /* TODO: skip non-callee-safe registers */
120 stw %r0, 0(%r3)
121 stw %r1, 4(%r3)
122 stw %r2, 8(%r3)
123 stw %r3, 12(%r3)
124 stw %r4, 16(%r3)
125 stw %r5, 20(%r3)
126 stw %r6, 24(%r3)
127 stw %r7, 28(%r3)
128 stw %r8, 32(%r3)
129 stw %r9, 36(%r3)
130 stw %r10, 40(%r3)
131 stw %r11, 44(%r3)
132 stw %r12, 48(%r3)
133 stw %r13, 52(%r3)
134 stw %r14, 56(%r3)
135 stw %r15, 60(%r3)
136 stw %r16, 64(%r3)
137 stw %r17, 68(%r3)
138 stw %r18, 72(%r3)
139 stw %r19, 76(%r3)
140 stw %r20, 80(%r3)
141 stw %r21, 84(%r3)
142 stw %r22, 88(%r3)
143 stw %r23, 92(%r3)
144 stw %r24, 96(%r3)
145 stw %r25,100(%r3)
146 stw %r26,104(%r3)
147 stw %r27,108(%r3)
148 stw %r28,112(%r3)
149 stw %r29,116(%r3)
150 stw %r30,120(%r3)
151 stw %r31,124(%r3)
152 mflr %r0
153 stw %r0, 136(%r3) /* SRR0 */
154 mfcr %r0
155 stw %r0, 132(%r3) /* CR */
156
157 stfd %f0, 144(%r3)
158 stfd %f1, 152(%r3)
159 stfd %f2, 160(%r3)
160 stfd %f3, 168(%r3)
161 stfd %f4, 176(%r3)
162 stfd %f5, 184(%r3)
163 stfd %f6, 192(%r3)
164 stfd %f7, 200(%r3)
165 stfd %f8, 208(%r3)
166 stfd %f9, 216(%r3)
167 stfd %f10, 224(%r3)
168 stfd %f11, 232(%r3)
169 stfd %f12, 240(%r3)
170 stfd %f13, 248(%r3)
171 stfd %f14, 256(%r3)
172 stfd %f15, 264(%r3)
173 stfd %f16, 272(%r3)
174 stfd %f17, 280(%r3)
175 stfd %f18, 288(%r3)
176 stfd %f19, 296(%r3)
177 stfd %f20, 304(%r3)
178 stfd %f21, 312(%r3)
179 stfd %f22, 320(%r3)
180 stfd %f23, 328(%r3)
181 stfd %f24, 336(%r3)
182 stfd %f25, 344(%r3)
183 stfd %f26, 352(%r3)
184 stfd %f27, 360(%r3)
185 stfd %f28, 368(%r3)
186 stfd %f29, 376(%r3)
187 stfd %f30, 384(%r3)
188 stfd %f31, 392(%r3)
189
190 /* LR is undefined */
191 blr
192
193 .hidden _ZNK7_Unwind15Registers_ppc326jumptoEv
194 ENTRY(_ZNK7_Unwind15Registers_ppc326jumptoEv)
195 lfd %f0, 144(%r3)
196 lfd %f1, 152(%r3)
197 lfd %f2, 160(%r3)
198 lfd %f3, 168(%r3)
199 lfd %f4, 176(%r3)
200 lfd %f5, 184(%r3)
201 lfd %f6, 192(%r3)
202 lfd %f7, 200(%r3)
203 lfd %f8, 208(%r3)
204 lfd %f9, 216(%r3)
205 lfd %f10, 224(%r3)
206 lfd %f11, 232(%r3)
207 lfd %f12, 240(%r3)
208 lfd %f13, 248(%r3)
209 lfd %f14, 256(%r3)
210 lfd %f15, 264(%r3)
211 lfd %f16, 272(%r3)
212 lfd %f17, 280(%r3)
213 lfd %f18, 288(%r3)
214 lfd %f19, 296(%r3)
215 lfd %f20, 304(%r3)
216 lfd %f21, 312(%r3)
217 lfd %f22, 320(%r3)
218 lfd %f23, 328(%r3)
219 lfd %f24, 336(%r3)
220 lfd %f25, 344(%r3)
221 lfd %f26, 352(%r3)
222 lfd %f27, 360(%r3)
223 lfd %f28, 368(%r3)
224 lfd %f29, 376(%r3)
225 lfd %f30, 384(%r3)
226 lfd %f31, 392(%r3)
227
228 lwz %r2, 8(%r3)
229 /* skip r3 for now */
230 lwz %r4, 16(%r3)
231 lwz %r5, 20(%r3)
232 lwz %r6, 24(%r3)
233 lwz %r7, 28(%r3)
234 lwz %r8, 32(%r3)
235 lwz %r9, 36(%r3)
236 lwz %r10, 40(%r3)
237 lwz %r11, 44(%r3)
238 lwz %r12, 48(%r3)
239 lwz %r13, 52(%r3)
240 lwz %r14, 56(%r3)
241 lwz %r15, 60(%r3)
242 lwz %r16, 64(%r3)
243 lwz %r17, 68(%r3)
244 lwz %r18, 72(%r3)
245 lwz %r19, 76(%r3)
246 lwz %r20, 80(%r3)
247 lwz %r21, 84(%r3)
248 lwz %r22, 88(%r3)
249 lwz %r23, 92(%r3)
250 lwz %r24, 96(%r3)
251 lwz %r25,100(%r3)
252 lwz %r26,104(%r3)
253 lwz %r27,108(%r3)
254 lwz %r28,112(%r3)
255 lwz %r29,116(%r3)
256 lwz %r30,120(%r3)
257 lwz %r31,124(%r3)
258
259 lwz %r0, 128(%r3) /* LR */
260 mtlr %r0
261 lwz %r0, 132(%r3) /* CR */
262 mtcr %r0
263 lwz %r0, 136(%r3) /* SRR0 */
264 mtctr %r0
265
266 lwz %r0, 0(%r3) /* do r0 now */
267 lwz %r1, 4(%r3) /* do sp now */
268 lwz %r3, 12(%r3) /* do r3 last */
269 bctr
270 #endif
271
272 #if defined(__arm__)
273 .fpu vfpv3
274 .hidden _ZN7_Unwind15Registers_arm32C1Ev
275 ENTRY(_ZN7_Unwind15Registers_arm32C1Ev)
276 stmia r0, {r0-r14}
277 str lr, [r0, #60] /* PC */
278 mrs r1, cpsr
279 str r1, [r0, #64] /* CPSR */
280 mov r1, #0
281 str r1, [r0, #68]
282 RET
283 END(_ZN7_Unwind15Registers_arm32C1Ev)
284
285 .hidden _ZN7_Unwind15Registers_arm328lazyVFP1Ev
286 ENTRY(_ZN7_Unwind15Registers_arm328lazyVFP1Ev)
287 add r0, #72
288 vstmia r0, {d0-d15}
289 END(_ZN7_Unwind15Registers_arm328lazyVFP1Ev)
290
291 .hidden _ZN7_Unwind15Registers_arm328lazyVFP3Ev
292 ENTRY(_ZN7_Unwind15Registers_arm328lazyVFP3Ev)
293 add r0, #200
294 vstmia r0, {d16-d31}
295 END(_ZN7_Unwind15Registers_arm328lazyVFP3Ev)
296
297 .hidden _ZNK7_Unwind15Registers_arm326jumptoEv
298 ENTRY(_ZNK7_Unwind15Registers_arm326jumptoEv)
299 ldrb r1, [r0, #68]
300 tst r1, #1
301 beq .Lnovfp1
302 add r2, r0, #72
303 vldmia r2, {d0-d15}
304 .Lnovfp1:
305 tst r1, #2
306 beq .Lnovfp3
307 add r2, r0, #200
308 vldmia r2, {d16-d31}
309 .Lnovfp3:
310 ldr r1, [r0, #64]
311 msr cpsr_sxc, r1
312 ldmia r0, {r0-r15}
313 END(_ZNK7_Unwind15Registers_arm326jumptoEv)
314 #endif
315
316 #if defined(__vax__)
317 .hidden _ZN7_Unwind13Registers_vaxC1Ev
318 ENTRY(_ZN7_Unwind13Registers_vaxC1Ev, R0)
319 subl2 $4, %sp
320 movl 4(%ap), %r0
321 movl %r1, 4(%r0)
322 movl %r2, 8(%r0)
323 movl %r3, 12(%r0)
324 movl %r4, 16(%r0)
325 movl %r5, 20(%r0)
326 movl %r6, 24(%r0)
327 movl %r7, 28(%r0)
328 movl %r8, 32(%r0)
329 movl %r9, 36(%r0)
330 movl %r10, 40(%r0)
331 movl %r11, 44(%r0)
332 movl 8(%fp), 48(%r0)
333 movl 12(%fp), 52(%r0)
334 addl3 $36, %sp, 56(%r0)
335 /* Return PC */
336 movl 16(%fp), 60(%r0)
337 /* Load saved value of r0 as r1 */
338 movl 20(%fp), 0(%r0)
339 /* Saved PSW */
340 movl 4(%fp), 64(%r0)
341 ret
342 END(_ZN7_Unwind13Registers_vaxC1Ev)
343
344 .hidden _ZNK7_Unwind13Registers_vax6jumptoEv
345 ENTRY(_ZNK7_Unwind13Registers_vax6jumptoEv, 0)
346 subl2 $4, %sp
347 movl 4(%ap), %r0
348 movl 4(%r0), %r1
349 movl 8(%r0), %r2
350 movl 12(%r0), %r3
351 movl 16(%r0), %r4
352 movl 20(%r0), %r5
353 movl 24(%r0), %r6
354 movl 28(%r0), %r7
355 movl 32(%r0), %r8
356 movl 36(%r0), %r9
357 movl 40(%r0), %r10
358 movl 44(%r0), %r11
359 movl 48(%r0), %r12
360 movl 52(%r0), %r13
361 movl 56(%r0), %r14
362 movl 60(%r0), -(%sp)
363 movl 0(%r0), %r0
364 /* XXX restore PSW */
365 rsb
366 END(_ZNK7_Unwind13Registers_vax6jumptoEv)
367 #endif
368
369 #if defined(__m68k__)
370 ENTRY(_ZN7_Unwind14Registers_M68KC1Ev)
371 move.l 4(%sp), %a0
372 movem.l %d0-%d7/%a0-%a7, (%a0)
373 fmovem %fp0-%fp7, 72(%a0)
374 move.l 0(%sp), %a1
375 move.l %a1, 64(%a0)
376 addq.l #4, 60(%a0)
377 rts
378 END(_ZN7_Unwind14Registers_M68KC1Ev)
379
380 ENTRY(_ZNK7_Unwind14Registers_M68K6jumptoEv)
381 move.l 4(%sp), %a0
382 subq.l #4, 60(%a0)
383 move.l 64(%a0), %a1
384 move.l 60(%a0), %a2
385 move.l %a1, (%a2)
386 fmovem 72(%a0), %fp0-%fp7
387 movem.l (%a0), %d0-%d7/%a0-%a7
388 rts
389 END(_ZNK7_Unwind14Registers_M68K6jumptoEv)
390 #endif
391
392 #if defined(__sh3__)
393 .hidden _ZN7_Unwind13Registers_SH3C1Ev
394 ENTRY(_ZN7_Unwind13Registers_SH3C1Ev)
395 add #64, r4
396 mov.l r8, @-r15
397 sts.l pr, @-r15
398 mov.l @r15+, r8
399 mov.l r8, @r4
400 mov.l @r15+, r8
401
402 mov.l r15, @-r4
403 mov.l r14, @-r4
404 mov.l r13, @-r4
405 mov.l r12, @-r4
406 mov.l r11, @-r4
407 mov.l r10, @-r4
408 mov.l r9, @-r4
409 mov.l r8, @-r4
410 mov.l r7, @-r4
411 mov.l r6, @-r4
412 mov.l r5, @-r4
413 add #-4, r4
414 mov.l r3, @-r4
415 mov.l r2, @-r4
416 mov.l r1, @-r4
417 mov.l r0, @-r4
418 rts
419 mov.l r4, @(16,r4)
420 SET_ENTRY_SIZE(_ZN7_Unwind13Registers_SH3C1Ev)
421
422 .hidden _ZNK7_Unwind13Registers_SH36jumptoEv
423 ENTRY(_ZNK7_Unwind13Registers_SH36jumptoEv)
424 mov r4, r0
425 add #4, r0
426 mov.l @r0+, r1
427 mov.l @r0+, r2
428 mov.l @r0+, r3
429 mov.l @r0+, r4
430 mov.l @r0+, r5
431 mov.l @r0+, r6
432 mov.l @r0+, r7
433 mov.l @r0+, r8
434 mov.l @r0+, r9
435 mov.l @r0+, r10
436 mov.l @r0+, r11
437 mov.l @r0+, r12
438 mov.l @r0+, r13
439 mov.l @(12, r0), r14
440 lds r14, pr
441 mov.l @r0+, r14
442 mov.l @r0+, r15
443 mov.l @r0, r0
444 jmp @r0
445 nop
446 SET_ENTRY_SIZE(_ZNK7_Unwind13Registers_SH36jumptoEv)
447 #endif
448
449 #if defined(__sparc64__)
450 #include <machine/trap.h>
451 .register %g2, #ignore
452 .register %g3, #ignore
453 .register %g6, #ignore
454 .register %g7, #ignore
455 .hidden _ZN7_Unwind17Registers_SPARC64C1Ev
456 ENTRY(_ZN7_Unwind17Registers_SPARC64C1Ev)
457 t ST_FLUSHWIN
458 stx %g0, [%o0 + 0]
459 stx %g1, [%o0 + 8]
460 stx %g2, [%o0 + 16]
461 stx %g3, [%o0 + 24]
462 stx %g4, [%o0 + 32]
463 stx %g5, [%o0 + 40]
464 stx %g6, [%o0 + 48]
465 stx %g7, [%o0 + 56]
466 stx %o0, [%o0 + 64]
467 stx %o1, [%o0 + 72]
468 stx %o2, [%o0 + 80]
469 stx %o3, [%o0 + 88]
470 stx %o4, [%o0 + 96]
471 stx %o5, [%o0 + 104]
472 stx %o6, [%o0 + 112]
473 stx %o7, [%o0 + 120]
474 stx %l0, [%o0 + 128]
475 stx %l1, [%o0 + 136]
476 stx %l2, [%o0 + 144]
477 stx %l3, [%o0 + 152]
478 stx %l4, [%o0 + 160]
479 stx %l5, [%o0 + 168]
480 stx %l6, [%o0 + 176]
481 stx %l7, [%o0 + 184]
482 stx %i0, [%o0 + 192]
483 stx %i1, [%o0 + 200]
484 stx %i2, [%o0 + 208]
485 stx %i3, [%o0 + 216]
486 stx %i4, [%o0 + 224]
487 stx %i5, [%o0 + 232]
488 stx %i6, [%o0 + 240]
489 stx %i7, [%o0 + 248]
490 add %o7, 8, %g1
491 retl
492 stx %g1, [%o0 + 256]
493 END(_ZN7_Unwind17Registers_SPARC64C1Ev)
494
495 .hidden _ZNK7_Unwind17Registers_SPARC646jumptoEv
496 ENTRY(_ZNK7_Unwind17Registers_SPARC646jumptoEv)
497 t ST_FLUSHWIN
498 ldx [%o0 + 0], %g0
499 ldx [%o0 + 8], %g1
500 ldx [%o0 + 16], %g2
501 ldx [%o0 + 24], %g3
502 ldx [%o0 + 32], %g4
503 ldx [%o0 + 40], %g5
504 ldx [%o0 + 48], %g6
505 ldx [%o0 + 56], %g7
506 ldx [%o0 + 72], %o1
507 ldx [%o0 + 80], %o2
508 ldx [%o0 + 88], %o3
509 ldx [%o0 + 96], %o4
510 ldx [%o0 + 104], %o5
511 ldx [%o0 + 112], %g1
512 sub %g1, 2047, %o6
513 ldx [%o0 + 120], %o7
514 ldx [%o0 + 128], %l0
515 ldx [%o0 + 136], %l1
516 ldx [%o0 + 144], %l2
517 ldx [%o0 + 152], %l3
518 ldx [%o0 + 160], %l4
519 ldx [%o0 + 168], %l5
520 ldx [%o0 + 176], %l6
521 ldx [%o0 + 184], %l7
522 ldx [%o0 + 192], %i0
523 ldx [%o0 + 200], %i1
524 ldx [%o0 + 208], %i2
525 ldx [%o0 + 216], %i3
526 ldx [%o0 + 224], %i4
527 ldx [%o0 + 232], %i5
528 ldx [%o0 + 240], %i6
529 ldx [%o0 + 248], %i7
530 ldx [%o0 + 256], %g1
531 jmpl %g1, %g0
532 ldx [%o0 + 64], %o0
533 END(_ZNK7_Unwind17Registers_SPARC646jumptoEv)
534 #elif defined(__sparc__)
535 #include <machine/trap.h>
536
537 .hidden _ZN7_Unwind15Registers_SPARCC1Ev
538 ENTRY(_ZN7_Unwind15Registers_SPARCC1Ev)
539 t ST_FLUSHWIN
540 st %g0, [%o0 + 0]
541 st %g1, [%o0 + 4]
542 st %g2, [%o0 + 8]
543 st %g3, [%o0 + 12]
544 st %g4, [%o0 + 16]
545 st %g5, [%o0 + 20]
546 st %g6, [%o0 + 24]
547 st %g7, [%o0 + 28]
548 st %o0, [%o0 + 32]
549 st %o1, [%o0 + 36]
550 st %o2, [%o0 + 40]
551 st %o3, [%o0 + 44]
552 st %o4, [%o0 + 48]
553 st %o5, [%o0 + 52]
554 st %o6, [%o0 + 56]
555 st %o7, [%o0 + 60]
556 st %l0, [%o0 + 64]
557 st %l1, [%o0 + 68]
558 st %l2, [%o0 + 72]
559 st %l3, [%o0 + 76]
560 st %l4, [%o0 + 80]
561 st %l5, [%o0 + 84]
562 st %l6, [%o0 + 88]
563 st %l7, [%o0 + 92]
564 st %i0, [%o0 + 96]
565 st %i1, [%o0 + 100]
566 st %i2, [%o0 + 104]
567 st %i3, [%o0 + 108]
568 st %i4, [%o0 + 112]
569 st %i5, [%o0 + 116]
570 st %i6, [%o0 + 120]
571 st %i7, [%o0 + 124 ]
572 add %o7, 8, %g1
573 retl
574 st %g1, [%o0 + 128]
575 END(_ZN7_Unwind15Registers_SPARCC1Ev)
576
577 .hidden _ZNK7_Unwind15Registers_SPARC6jumptoEv
578 ENTRY(_ZNK7_Unwind15Registers_SPARC6jumptoEv)
579 t ST_FLUSHWIN
580 ld [%o0 + 0], %g0
581 ld [%o0 + 4], %g1
582 ld [%o0 + 8], %g2
583 ld [%o0 + 12], %g3
584 ld [%o0 + 16], %g4
585 ld [%o0 + 20], %g5
586 ld [%o0 + 24], %g6
587 ld [%o0 + 28], %g7
588 ld [%o0 + 36], %o1
589 ld [%o0 + 40], %o2
590 ld [%o0 + 44], %o3
591 ld [%o0 + 48], %o4
592 ld [%o0 + 52], %o5
593 ld [%o0 + 56], %o6
594 ld [%o0 + 60], %o7
595 ld [%o0 + 64], %l0
596 ld [%o0 + 68], %l1
597 ld [%o0 + 72], %l2
598 ld [%o0 + 76], %l3
599 ld [%o0 + 80], %l4
600 ld [%o0 + 84], %l5
601 ld [%o0 + 88], %l6
602 ld [%o0 + 92], %l7
603 ld [%o0 + 96], %i0
604 ld [%o0 + 100], %i1
605 ld [%o0 + 104], %i2
606 ld [%o0 + 108], %i3
607 ld [%o0 + 112], %i4
608 ld [%o0 + 116], %i5
609 ld [%o0 + 120], %i6
610 ld [%o0 + 124], %i7
611 ld [%o0 + 128], %g1
612 jmpl %g1, %g0
613 ld [%o0 + 32], %o0
614 END(_ZNK7_Unwind15Registers_SPARC6jumptoEv)
615 #endif
616
617 #if defined(__alpha__)
618 .set nomacro
619 .set noat
620 .hidden _ZN7_Unwind15Registers_AlphaC1Ev
621 LEAF_NOPROFILE(_ZN7_Unwind15Registers_AlphaC1Ev, 1)
622 stq $0, 0($16)
623 stq $1, 8($16)
624 stq $2, 16($16)
625 stq $3, 24($16)
626 stq $4, 32($16)
627 stq $5, 40($16)
628 stq $6, 48($16)
629 stq $7, 56($16)
630 stq $8, 64($16)
631 stq $9, 72($16)
632 stq $10, 80($16)
633 stq $11, 88($16)
634 stq $12, 96($16)
635 stq $13, 104($16)
636 stq $14, 112($16)
637 stq $15, 120($16)
638 stq $16, 128($16)
639 stq $17, 136($16)
640 stq $18, 144($16)
641 stq $19, 152($16)
642 stq $20, 160($16)
643 stq $21, 168($16)
644 stq $22, 176($16)
645 stq $23, 184($16)
646 stq $24, 192($16)
647 stq $25, 200($16)
648 stq $26, 208($16)
649 stq $27, 216($16)
650 stq $28, 224($16)
651 stq $29, 232($16)
652 stq $30, 240($16)
653 stq $26, 248($16)
654
655 stt $f0, 256($16)
656 stt $f1, 264($16)
657 stt $f2, 272($16)
658 stt $f3, 280($16)
659 stt $f4, 288($16)
660 stt $f5, 296($16)
661 stt $f6, 304($16)
662 stt $f7, 312($16)
663 stt $f8, 320($16)
664 stt $f9, 328($16)
665 stt $f10, 336($16)
666 stt $f11, 344($16)
667 stt $f12, 352($16)
668 stt $f13, 360($16)
669 stt $f14, 368($16)
670 stt $f15, 376($16)
671 stt $f16, 384($16)
672 stt $f17, 392($16)
673 stt $f18, 400($16)
674 stt $f19, 408($16)
675 stt $f20, 416($16)
676 stt $f21, 424($16)
677 stt $f22, 432($16)
678 stt $f23, 440($16)
679 stt $f24, 448($16)
680 stt $f25, 456($16)
681 stt $f26, 464($16)
682 stt $f27, 472($16)
683 stt $f28, 480($16)
684 stt $f29, 488($16)
685 stt $f30, 496($16)
686 ret $31, ($26), 1
687 END(_ZN7_Unwind15Registers_AlphaC1Ev)
688
689 .set nomacro
690 .set noat
691 .hidden _ZNK7_Unwind15Registers_Alpha6jumptoEv
692 LEAF_NOPROFILE(_ZNK7_Unwind15Registers_Alpha6jumptoEv, 1)
693 ldq $0, 0($16)
694 ldq $1, 8($16)
695 ldq $2, 16($16)
696 ldq $3, 24($16)
697 ldq $4, 32($16)
698 ldq $5, 40($16)
699 ldq $6, 48($16)
700 ldq $7, 56($16)
701 ldq $8, 64($16)
702 ldq $9, 72($16)
703 ldq $10, 80($16)
704 ldq $11, 88($16)
705 ldq $12, 96($16)
706 ldq $13, 104($16)
707 ldq $14, 112($16)
708 ldq $15, 120($16)
709 ldq $17, 136($16)
710 ldq $18, 144($16)
711 ldq $19, 152($16)
712 ldq $20, 160($16)
713 ldq $21, 168($16)
714 ldq $22, 176($16)
715 ldq $23, 184($16)
716 ldq $24, 192($16)
717 ldq $25, 200($16)
718 ldq $27, 216($16)
719 ldq $28, 224($16)
720 ldq $29, 232($16)
721 ldq $30, 240($16)
722 ldq $26, 248($16)
723
724 ldt $f0, 256($16)
725 ldt $f1, 264($16)
726 ldt $f2, 272($16)
727 ldt $f3, 280($16)
728 ldt $f4, 288($16)
729 ldt $f5, 296($16)
730 ldt $f6, 304($16)
731 ldt $f7, 312($16)
732 ldt $f8, 320($16)
733 ldt $f9, 328($16)
734 ldt $f10, 336($16)
735 ldt $f11, 344($16)
736 ldt $f12, 352($16)
737 ldt $f13, 360($16)
738 ldt $f14, 368($16)
739 ldt $f15, 376($16)
740 ldt $f16, 384($16)
741 ldt $f17, 392($16)
742 ldt $f18, 400($16)
743 ldt $f19, 408($16)
744 ldt $f20, 416($16)
745 ldt $f21, 424($16)
746 ldt $f22, 432($16)
747 ldt $f23, 440($16)
748 ldt $f24, 448($16)
749 ldt $f25, 456($16)
750 ldt $f26, 464($16)
751 ldt $f27, 472($16)
752 ldt $f28, 480($16)
753 ldt $f29, 488($16)
754 ldt $f30, 496($16)
755 ldq $16, 128($16)
756 ret $31, ($26), 1
757 END(_ZNK7_Unwind15Registers_Alpha6jumptoEv)
758 #endif
759
760 #if defined(__mips_n64) || defined(__mips_n32)
761 .set noat
762 LEAF(_ZN7_Unwind16Registers_MIPS64C1Ev)
763 #if 0
764 FP_S $f0, 256($4)
765 FP_S $f1, 264($4)
766 FP_S $f2, 272($4)
767 FP_S $f3, 280($4)
768 FP_S $f4, 288($4)
769 FP_S $f5, 296($4)
770 FP_S $f6, 304($4)
771 FP_S $f7, 312($4)
772 FP_S $f8, 320($4)
773 FP_S $f9, 328($4)
774 FP_S $f10, 336($4)
775 FP_S $f11, 344($4)
776 FP_S $f12, 352($4)
777 FP_S $f13, 360($4)
778 FP_S $f14, 368($4)
779 FP_S $f15, 376($4)
780 FP_S $f16, 384($4)
781 FP_S $f17, 392($4)
782 FP_S $f18, 400($4)
783 FP_S $f19, 408($4)
784 FP_S $f20, 416($4)
785 FP_S $f21, 424($4)
786 FP_S $f22, 432($4)
787 FP_S $f23, 440($4)
788 FP_S $f24, 448($4)
789 FP_S $f25, 456($4)
790 FP_S $f26, 464($4)
791 FP_S $f27, 472($4)
792 FP_S $f28, 480($4)
793 FP_S $f29, 488($4)
794 FP_S $f30, 496($4)
795 FP_S $f31, 504($4)
796 #endif
797 sd $31, 0($4)
798 sd $1, 4($4)
799 sd $2, 8($4)
800 sd $3, 12($4)
801 sd $4, 16($4)
802 sd $5, 20($4)
803 sd $6, 24($4)
804 sd $7, 28($4)
805 sd $8, 32($4)
806 sd $9, 36($4)
807 sd $10, 40($4)
808 sd $11, 44($4)
809 sd $12, 48($4)
810 sd $13, 52($4)
811 sd $14, 56($4)
812 sd $15, 60($4)
813 sd $16, 64($4)
814 sd $17, 68($4)
815 sd $18, 72($4)
816 sd $19, 76($4)
817 sd $20, 80($4)
818 sd $21, 84($4)
819 sd $22, 88($4)
820 sd $23, 92($4)
821 sd $24, 96($4)
822 sd $25, 100($4)
823 sd $26, 104($4)
824 sd $27, 108($4)
825 sd $28, 112($4)
826 sd $29, 116($4)
827 sd $30, 120($4)
828 sd $31, 124($4)
829 jr $31
830 nop
831 END(_ZN7_Unwind16Registers_MIPS64C1Ev)
832
833 LEAF(_ZNK7_Unwind16Registers_MIPS646jumptoEv)
834 #if 0
835 FP_L $f0, 256($4)
836 FP_L $f1, 264($4)
837 FP_L $f2, 272($4)
838 FP_L $f3, 280($4)
839 FP_L $f4, 288($4)
840 FP_L $f5, 296($4)
841 FP_L $f6, 304($4)
842 FP_L $f7, 312($4)
843 FP_L $f8, 320($4)
844 FP_L $f9, 328($4)
845 FP_L $f10, 336($4)
846 FP_L $f11, 344($4)
847 FP_L $f12, 352($4)
848 FP_L $f13, 360($4)
849 FP_L $f14, 368($4)
850 FP_L $f15, 376($4)
851 FP_L $f16, 384($4)
852 FP_L $f17, 392($4)
853 FP_L $f18, 400($4)
854 FP_L $f19, 408($4)
855 FP_L $f20, 416($4)
856 FP_L $f21, 424($4)
857 FP_L $f22, 432($4)
858 FP_L $f23, 440($4)
859 FP_L $f24, 448($4)
860 FP_L $f25, 456($4)
861 FP_L $f26, 464($4)
862 FP_L $f27, 472($4)
863 FP_L $f28, 480($4)
864 FP_L $f29, 488($4)
865 FP_L $f30, 496($4)
866 FP_L $f31, 504($4)
867 #endif
868
869 ld $31, 0($4)
870 ld $1, 8($4)
871 ld $2, 16($4)
872 ld $3, 24($4)
873 ld $5, 40($4)
874 ld $6, 48($4)
875 ld $7, 56($4)
876 ld $8, 64($4)
877 ld $9, 72($4)
878 ld $10, 80($4)
879 ld $11, 88($4)
880 ld $12, 96($4)
881 ld $13, 104($4)
882 ld $14, 112($4)
883 ld $15, 120($4)
884 ld $16, 128($4)
885 ld $17, 136($4)
886 ld $18, 144($4)
887 ld $19, 152($4)
888 ld $20, 160($4)
889 ld $21, 168($4)
890 ld $22, 176($4)
891 ld $23, 184($4)
892 ld $24, 192($4)
893 ld $25, 200($4)
894 ld $26, 208($4)
895 ld $27, 216($4)
896 ld $28, 224($4)
897 ld $29, 232($4)
898 ld $30, 240($4)
899 ld $4, 32($4)
900 jr $31
901 nop
902 END(_ZNK7_Unwind16Registers_MIPS646jumptoEv)
903 #elif defined(__mips__)
904 .set noat
905 LEAF(_ZN7_Unwind14Registers_MIPSC1Ev)
906 #if 0
907 #if __mips > 1
908 FP_S $f0, 128($4)
909 FP_S $f1, 136($4)
910 FP_S $f2, 144($4)
911 FP_S $f3, 152($4)
912 FP_S $f4, 160($4)
913 FP_S $f5, 168($4)
914 FP_S $f6, 176($4)
915 FP_S $f7, 184($4)
916 FP_S $f8, 192($4)
917 FP_S $f9, 200($4)
918 FP_S $f10, 208($4)
919 FP_S $f11, 216($4)
920 FP_S $f12, 224($4)
921 FP_S $f13, 232($4)
922 FP_S $f14, 240($4)
923 FP_S $f15, 248($4)
924 FP_S $f16, 256($4)
925 FP_S $f17, 264($4)
926 FP_S $f18, 272($4)
927 FP_S $f19, 280($4)
928 FP_S $f20, 288($4)
929 FP_S $f21, 296($4)
930 FP_S $f22, 304($4)
931 FP_S $f23, 312($4)
932 FP_S $f24, 320($4)
933 FP_S $f25, 328($4)
934 FP_S $f26, 336($4)
935 FP_S $f27, 344($4)
936 FP_S $f28, 352($4)
937 FP_S $f29, 360($4)
938 FP_S $f30, 368($4)
939 FP_S $f31, 376($4)
940 #endif
941 #endif
942 sw $31, 0($4)
943 sw $1, 4($4)
944 sw $2, 8($4)
945 sw $3, 12($4)
946 sw $4, 16($4)
947 sw $5, 20($4)
948 sw $6, 24($4)
949 sw $7, 28($4)
950 sw $8, 32($4)
951 sw $9, 36($4)
952 sw $10, 40($4)
953 sw $11, 44($4)
954 sw $12, 48($4)
955 sw $13, 52($4)
956 sw $14, 56($4)
957 sw $15, 60($4)
958 sw $16, 64($4)
959 sw $17, 68($4)
960 sw $18, 72($4)
961 sw $19, 76($4)
962 sw $20, 80($4)
963 sw $21, 84($4)
964 sw $22, 88($4)
965 sw $23, 92($4)
966 sw $24, 96($4)
967 sw $25, 100($4)
968 sw $26, 104($4)
969 sw $27, 108($4)
970 sw $28, 112($4)
971 sw $29, 116($4)
972 sw $30, 120($4)
973 sw $31, 124($4)
974 jr $31
975 nop
976 END(_ZN7_Unwind14Registers_MIPSC1Ev)
977
978 LEAF(_ZNK7_Unwind14Registers_MIPS6jumptoEv)
979 #if 0
980 #if __mips > 1
981 FP_L $f0, 128($4)
982 FP_L $f1, 136($4)
983 FP_L $f2, 144($4)
984 FP_L $f3, 152($4)
985 FP_L $f4, 160($4)
986 FP_L $f5, 168($4)
987 FP_L $f6, 176($4)
988 FP_L $f7, 184($4)
989 FP_L $f8, 192($4)
990 FP_L $f9, 200($4)
991 FP_L $f10, 208($4)
992 FP_L $f11, 216($4)
993 FP_L $f12, 224($4)
994 FP_L $f13, 232($4)
995 FP_L $f14, 240($4)
996 FP_L $f15, 248($4)
997 FP_L $f16, 256($4)
998 FP_L $f17, 264($4)
999 FP_L $f18, 272($4)
1000 FP_L $f19, 280($4)
1001 FP_L $f20, 288($4)
1002 FP_L $f21, 296($4)
1003 FP_L $f22, 304($4)
1004 FP_L $f23, 312($4)
1005 FP_L $f24, 320($4)
1006 FP_L $f25, 328($4)
1007 FP_L $f26, 336($4)
1008 FP_L $f27, 344($4)
1009 FP_L $f28, 352($4)
1010 FP_L $f29, 360($4)
1011 FP_L $f30, 368($4)
1012 FP_L $f31, 376($4)
1013 #endif
1014 #endif
1015
1016 lw $31, 0($4)
1017 lw $1, 4($4)
1018 lw $2, 8($4)
1019 lw $3, 12($4)
1020 lw $5, 20($4)
1021 lw $6, 24($4)
1022 lw $7, 28($4)
1023 lw $8, 32($4)
1024 lw $9, 36($4)
1025 lw $10, 40($4)
1026 lw $11, 44($4)
1027 lw $12, 48($4)
1028 lw $13, 52($4)
1029 lw $14, 56($4)
1030 lw $15, 60($4)
1031 lw $16, 64($4)
1032 lw $17, 68($4)
1033 lw $18, 72($4)
1034 lw $19, 76($4)
1035 lw $20, 80($4)
1036 lw $21, 84($4)
1037 lw $22, 88($4)
1038 lw $23, 92($4)
1039 lw $24, 96($4)
1040 lw $25, 100($4)
1041 lw $26, 104($4)
1042 lw $27, 108($4)
1043 lw $28, 112($4)
1044 lw $29, 116($4)
1045 lw $30, 120($4)
1046 lw $4, 16($4)
1047 jr $31
1048 nop
1049 END(_ZNK7_Unwind14Registers_MIPS6jumptoEv)
1050 #endif
1051
1052 #if defined(__hppa__)
1053 LEAF_ENTRY_NOPROFILE(_ZN7_Unwind14Registers_HPPAC1Ev)
1054 stw %r2, 0(%r26)
1055 stw %r1, 4(%r26)
1056 stw %r2, 8(%r26)
1057 stw %r3, 12(%r26)
1058 stw %r4, 16(%r26)
1059 stw %r5, 20(%r26)
1060 stw %r6, 24(%r26)
1061 stw %r7, 28(%r26)
1062 stw %r8, 32(%r26)
1063 stw %r9, 36(%r26)
1064 stw %r10, 40(%r26)
1065 stw %r11, 44(%r26)
1066 stw %r12, 48(%r26)
1067 stw %r13, 52(%r26)
1068 stw %r14, 56(%r26)
1069 stw %r15, 60(%r26)
1070 stw %r16, 64(%r26)
1071 stw %r17, 68(%r26)
1072 stw %r18, 72(%r26)
1073 stw %r19, 76(%r26)
1074 stw %r20, 80(%r26)
1075 stw %r21, 84(%r26)
1076 stw %r22, 88(%r26)
1077 stw %r23, 92(%r26)
1078 stw %r24, 96(%r26)
1079 stw %r25, 100(%r26)
1080 stw %r26, 104(%r26)
1081 stw %r27, 108(%r26)
1082 stw %r28, 112(%r26)
1083 stw %r29, 116(%r26)
1084 stw %r30, 120(%r26)
1085 stw %r31, 124(%r26)
1086 ldi 128, %r19
1087 addl %r19, %r26, %r19
1088 fstds,ma %fr4, 8(%r19)
1089 fstds,ma %fr5, 8(%r19)
1090 fstds,ma %fr6, 8(%r19)
1091 fstds,ma %fr7, 8(%r19)
1092 fstds,ma %fr8, 8(%r19)
1093 fstds,ma %fr9, 8(%r19)
1094 fstds,ma %fr10, 8(%r19)
1095 fstds,ma %fr11, 8(%r19)
1096 fstds,ma %fr12, 8(%r19)
1097 fstds,ma %fr13, 8(%r19)
1098 fstds,ma %fr14, 8(%r19)
1099 fstds,ma %fr15, 8(%r19)
1100 fstds,ma %fr16, 8(%r19)
1101 fstds,ma %fr17, 8(%r19)
1102 fstds,ma %fr18, 8(%r19)
1103 fstds,ma %fr19, 8(%r19)
1104 fstds,ma %fr20, 8(%r19)
1105 fstds,ma %fr21, 8(%r19)
1106 fstds,ma %fr22, 8(%r19)
1107 fstds,ma %fr23, 8(%r19)
1108 fstds,ma %fr24, 8(%r19)
1109 fstds,ma %fr25, 8(%r19)
1110 fstds,ma %fr19, 8(%r19)
1111 fstds,ma %fr27, 8(%r19)
1112 fstds,ma %fr28, 8(%r19)
1113 fstds,ma %fr29, 8(%r19)
1114 fstds,ma %fr30, 8(%r19)
1115 fstds,ma %fr31, 8(%r19)
1116 ldw 76(%r26), %r19
1117 bv,n %r0(%r2)
1118 EXIT(_ZN7_Unwind14Registers_HPPAC1Ev)
1119
1120 LEAF_ENTRY_NOPROFILE(_ZNK7_Unwind14Registers_HPPA6jumptoEv)
1121 ldi 128, %r19
1122 addl %r19, %r26, %r19
1123 fldds,ma 8(%r19), %fr4
1124 fldds,ma 8(%r19), %fr5
1125 fldds,ma 8(%r19), %fr6
1126 fldds,ma 8(%r19), %fr7
1127 fldds,ma 8(%r19), %fr8
1128 fldds,ma 8(%r19), %fr9
1129 fldds,ma 8(%r19), %fr10
1130 fldds,ma 8(%r19), %fr11
1131 fldds,ma 8(%r19), %fr12
1132 fldds,ma 8(%r19), %fr13
1133 fldds,ma 8(%r19), %fr14
1134 fldds,ma 8(%r19), %fr15
1135 fldds,ma 8(%r19), %fr16
1136 fldds,ma 8(%r19), %fr17
1137 fldds,ma 8(%r19), %fr18
1138 fldds,ma 8(%r19), %fr19
1139 fldds,ma 8(%r19), %fr20
1140 fldds,ma 8(%r19), %fr21
1141 fldds,ma 8(%r19), %fr22
1142 fldds,ma 8(%r19), %fr23
1143 fldds,ma 8(%r19), %fr24
1144 fldds,ma 8(%r19), %fr25
1145 fldds,ma 8(%r19), %fr26
1146 fldds,ma 8(%r19), %fr27
1147 fldds,ma 8(%r19), %fr28
1148 fldds,ma 8(%r19), %fr29
1149 fldds,ma 8(%r19), %fr30
1150 fldds,ma 8(%r19), %fr31
1151 ldw 0(%r26), %r2
1152 ldw 4(%r26), %r1
1153 ldw 12(%r26), %r3
1154 ldw 16(%r26), %r4
1155 ldw 20(%r26), %r5
1156 ldw 24(%r26), %r6
1157 ldw 28(%r26), %r7
1158 ldw 32(%r26), %r8
1159 ldw 36(%r26), %r9
1160 ldw 40(%r26), %r10
1161 ldw 44(%r26), %r11
1162 ldw 48(%r26), %r12
1163 ldw 52(%r26), %r13
1164 ldw 56(%r26), %r14
1165 ldw 60(%r26), %r15
1166 ldw 64(%r26), %r16
1167 ldw 68(%r26), %r17
1168 ldw 72(%r26), %r18
1169 ldw 76(%r26), %r19
1170 ldw 80(%r26), %r20
1171 ldw 84(%r26), %r21
1172 ldw 88(%r26), %r22
1173 ldw 92(%r26), %r23
1174 ldw 96(%r26), %r24
1175 ldw 100(%r26), %r25
1176 ldw 108(%r26), %r27
1177 ldw 112(%r26), %r28
1178 ldw 116(%r26), %r29
1179 ldw 120(%r26), %r30
1180 ldw 124(%r26), %r31
1181 ldw 104(%r26), %r26
1182 bv,n %r0(%r2)
1183 EXIT(_ZNK7_Unwind14Registers_HPPA6jumptoEv)
1184 #endif
1185