1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/*
* setjmp.S atp. Sept. 2001
* Jan-Benedict Glaw <jbglaw@lug-owl.de> 2006
*
* Save regs and info needed for a longjmp
*/
.globl __sigsetjmp
.align 4
__sigsetjmp:
.word 0x0000 /* We look after reg saving here - this */
/* must match longjmp. */
movl 0x4(%ap), %r0 /* Our scratch reg */
/* kenn would probably use movq here. :-) */
movl %r1, 0x14(%r0) /* save regs */
movl %r2, 0x18(%r0)
movl %r3, 0x1c(%r0)
movl %r4, 0x20(%r0)
movl %r5, 0x24(%r0)
movl %r6, 0x28(%r0)
movl %r7, 0x2c(%r0)
movl %r8, 0x30(%r0)
movl %r9, 0x34(%r0)
movl %r10, 0x38(%r0)
movl %r11, 0x3c(%r0)
/* Now save our call frame */
movl (%fp), (%r0) /* Condition handler (for VMS emulation) */
movl 0x4(%fp), 0x4(%r0) /* psw */
movl 0x8(%fp), 0x8(%r0) /* ap */
movl 0xc(%fp), 0xc(%r0) /* fp */
movl 0x10(%fp), 0x10(%r0) /* pc */
/* Call the sigjmp save routine */
pushl 8(%ap)
pushl %r0
calls $2, __sigjmp_save
/* Done */
ret
|