]> git.wh0rd.org - ICEs.git/blob - 179353/sigsuspend.s.0
add bfin ice
[ICEs.git] / 179353 / sigsuspend.s.0
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