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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
// Assembly code for making arm syscalls.
//
// arm syscall argument register ordering is the similar to the arm
// userspace argument register ordering except that the syscall number
// (nr) is passed in r7.
//
// nr_last.rs takes care of reordering the nr argument to the end for us,
// so we only need to move nr into r7 and take care of r4 and r5 if needed.
.file "arm.s"
.arch armv5t
.section .text.rustix_syscall0_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall0_nr_last
.hidden rustix_syscall0_nr_last
.type rustix_syscall0_nr_last, %function
rustix_syscall0_nr_last:
.fnstart
.cantunwind
push {r7, lr}
mov r7, r0
svc #0
pop {r7, pc}
.fnend
.size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
.section .text.rustix_syscall1_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall1_nr_last
.hidden rustix_syscall1_nr_last
.type rustix_syscall1_nr_last, %function
rustix_syscall1_nr_last:
.fnstart
.cantunwind
push {r7, lr}
mov r7, r1
svc #0
pop {r7, pc}
.fnend
.size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
.section .text.rustix_syscall1_noreturn_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall1_noreturn_nr_last
.hidden rustix_syscall1_noreturn_nr_last
.type rustix_syscall1_noreturn_nr_last, %function
rustix_syscall1_noreturn_nr_last:
.fnstart
.cantunwind
// Don't save r7 and lr; this is noreturn, so we'll never restore them.
mov r7, r1
svc #0
udf #16 // Trap instruction
.fnend
.size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
.section .text.rustix_syscall2_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall2_nr_last
.hidden rustix_syscall2_nr_last
.type rustix_syscall2_nr_last, %function
rustix_syscall2_nr_last:
.fnstart
.cantunwind
push {r7, lr}
mov r7, r2
svc #0
pop {r7, pc}
.fnend
.size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
.section .text.rustix_syscall3_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall3_nr_last
.hidden rustix_syscall3_nr_last
.type rustix_syscall3_nr_last, %function
rustix_syscall3_nr_last:
.fnstart
.cantunwind
push {r7, lr}
mov r7, r3
svc #0
pop {r7, pc}
.fnend
.size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
.section .text.rustix_syscall4_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall4_nr_last
.hidden rustix_syscall4_nr_last
.type rustix_syscall4_nr_last, %function
rustix_syscall4_nr_last:
.fnstart
.cantunwind
push {r7, lr}
ldr r7, [sp, #8]
svc #0
pop {r7, pc}
.fnend
.size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
.section .text.rustix_syscall5_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall5_nr_last
.hidden rustix_syscall5_nr_last
.type rustix_syscall5_nr_last, %function
rustix_syscall5_nr_last:
.fnstart
.cantunwind
push {r4, r7, r11, lr}
ldr r7, [sp, #20]
ldr r4, [sp, #16]
svc #0
pop {r4, r7, r11, pc}
.fnend
.size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
.section .text.rustix_syscall6_nr_last,"ax",%progbits
.p2align 4
.weak rustix_syscall6_nr_last
.hidden rustix_syscall6_nr_last
.type rustix_syscall6_nr_last, %function
rustix_syscall6_nr_last:
.fnstart
.cantunwind
push {r4, r5, r7, lr}
add r7, sp, #16
ldm r7, {r4, r5, r7}
svc #0
pop {r4, r5, r7, pc}
.fnend
.size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
.section .note.GNU-stack,"",%progbits
|