]>
Commit | Line | Data |
---|---|---|
45516216 | 1 | .globl __sigsuspend_nocancel; |
2 | .align 4; | |
3 | .ent __sigsuspend_nocancel,0; | |
4 | __sigsuspend_nocancel: .frame $30, 0, $26; | |
5 | ldgp $29,0($27); | |
6 | .prologue 1; | |
7 | ldq $16, 0($16); | |
8 | lda $0, 111; | |
9 | call_pal 131; | |
10 | bne $19, $syscall_error | |
11 | ret | |
12 | ||
13 | ||
14 | .end __sigsuspend_nocancel | |
15 | ||
16 | ||
17 | .globl __sigsuspend; | |
18 | .align 4; | |
19 | .type __sigsuspend, @function; | |
20 | .usepv __sigsuspend, std; | |
21 | .cfi_startproc; | |
22 | __sigsuspend: ldgp $29, 0($27); | |
23 | ; | |
24 | ldq $16, 0($16); | |
25 | ldah $1, __libc_multiple_threads($29) !gprelhigh; | |
26 | ldl $1, __libc_multiple_threads($1) !gprellow; | |
27 | bne $1, $pseudo_cancel; | |
28 | lda $0, 111; | |
29 | call_pal 131; | |
30 | bne $19, $syscall_error; | |
31 | $pseudo_ret: .subsection 2; | |
32 | .cfi_startproc; | |
33 | $pseudo_cancel: subq $30, 64, $30; | |
34 | .cfi_def_cfa_offset 64; | |
35 | stq $26, 0($30); | |
36 | .cfi_offset $26, -64; | |
37 | ; | |
38 | stq $16, 8($30); | |
39 | jsr $26, __libc_enable_asynccancel; | |
40 | ldgp $26, 0($29); | |
41 | ; | |
42 | ldq $16, 8($30); | |
43 | mov $0, $26; | |
44 | lda $0, 111; | |
45 | call_pal 131; | |
46 | stq $0, 8($30); | |
47 | mov $26, $16; | |
48 | bne $19, $multi_error; | |
49 | jsr $26, __libc_disable_asynccancel; | |
50 | ldgp $26, 0($29); | |
51 | ldq $26, 0($30); | |
52 | ldq $0, 8($30); | |
53 | addq $30, 64, $30; | |
54 | .cfi_remember_state; | |
55 | .cfi_restore $26; | |
56 | .cfi_def_cfa_offset 0; | |
57 | ret; | |
58 | .cfi_restore_state; | |
59 | $multi_error: jsr $26, __libc_disable_asynccancel; | |
60 | ldgp $26, 0($29); | |
61 | ldq $26, 0($30); | |
62 | ldq $0, 8($30); | |
63 | addq $30, 64, $30; | |
64 | .cfi_restore $26; | |
65 | .cfi_def_cfa_offset 0; | |
66 | $syscall_error: jmp $31, __syscall_error; | |
67 | .cfi_endproc; | |
68 | .previous | |
69 | ret | |
70 | .cfi_endproc; | |
71 | .subsection 2; | |
72 | .size __sigsuspend, .-__sigsuspend | |
73 | ||
74 | .weak sigsuspend ; | |
75 | sigsuspend = __sigsuspend | |
76 | .globl __libc_sigsuspend ; | |
77 | __libc_sigsuspend = __sigsuspend |