projects
/
musl
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
make sem_wait and sem_timedwait interruptible by signals
[musl]
/
src
/
thread
/
mips
/
syscall_cp.s
1
.set noreorder
2
3
.global __cp_begin
4
.hidden __cp_begin
5
.type __cp_begin,@function
6
.global __cp_end
7
.hidden __cp_end
8
.type __cp_end,@function
9
.global __cp_cancel
10
.hidden __cp_cancel
11
.type __cp_cancel,@function
12
.hidden __cancel
13
.global __syscall_cp_asm
14
.hidden __syscall_cp_asm
15
.type __syscall_cp_asm,@function
16
__syscall_cp_asm:
17
subu $sp, $sp, 32
18
__cp_begin:
19
lw $4, 0($4)
20
bne $4, $0, __cp_cancel
21
move $2, $5
22
move $4, $6
23
move $5, $7
24
lw $6, 48($sp)
25
lw $7, 52($sp)
26
lw $8, 56($sp)
27
lw $9, 60($sp)
28
lw $10,64($sp)
29
sw $8, 16($sp)
30
sw $9, 20($sp)
31
sw $10,24($sp)
32
sw $2, 28($sp)
33
lw $2, 28($sp)
34
syscall
35
__cp_end:
36
beq $7, $0, 1f
37
addu $sp, $sp, 32
38
subu $2, $0, $2
39
1: jr $ra
40
nop
41
42
__cp_cancel:
43
move $2, $ra
44
bal 1f
45
addu $sp, $sp, 32
46
.gpword .
47
.gpword __cancel
48
1: lw $3, ($ra)
49
subu $3, $ra, $3
50
lw $25, 4($ra)
51
addu $25, $25, $3
52
jr $25
53
move $ra, $2