initial import
[ICEs.git] / 179353 / sigsuspend.s
1 .globl __sigsuspend;
2 .align 4;
3 .type __sigsuspend, @function;
4 .usepv __sigsuspend, std;
5 .cfi_startproc;
6 __sigsuspend:
7 ldgp $29, 0($27);
8 ldq $16, 0($16);
9 ldah $1, __libc_multiple_threads($29) !gprelhigh;
10 ldl $1, __libc_multiple_threads($1) !gprellow;
11 bne $1, $pseudo_cancel;
12 lda $0, 111;
13 call_pal 131;
14 bne $19, $syscall_error;
15 $pseudo_ret:
16 .subsection 2;
17 .cfi_startproc;
18 $pseudo_cancel:
19 subq $30, 64, $30;
20 .cfi_def_cfa_offset 64;
21 stq $26, 0($30);
22 .cfi_offset $26, -64;
23 stq $16, 8($30);
24 jsr $26, __libc_enable_asynccancel;
25 ldgp $26, 0($29);
26 ldq $16, 8($30);
27 mov $0, $26;
28 lda $0, 111;
29 call_pal 131;
30 stq $0, 8($30);
31 mov $26, $16;
32 bne $19, $multi_error;
33 jsr $26, __libc_disable_asynccancel;
34 ldgp $26, 0($29);
35 ldq $26, 0($30);
36 ldq $0, 8($30);
37 addq $30, 64, $30;
38 .cfi_remember_state;
39 .cfi_restore $26;
40 .cfi_def_cfa_offset 0;
41 ret;
42 .cfi_restore_state;
43 $multi_error:
44 jsr $26, __libc_disable_asynccancel;
45 ldgp $26, 0($29);
46 ldq $26, 0($30);
47 ldq $0, 8($30);
48 addq $30, 64, $30;
49 .cfi_restore $26;
50 .cfi_def_cfa_offset 0;
51 $syscall_error:
52 jmp $31, __syscall_error;
53 .cfi_endproc;
54 .previous
55 ret
56 .cfi_endproc;
57 .subsection 2;
58 .size __sigsuspend, .-__sigsuspend