• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Assembly code for making aarch64 syscalls.
2//
3// aarch64 syscall argument register ordering is the same as the aarch64
4// userspace argument register ordering except that the syscall number
5// (nr) is passed in w8.
6//
7// outline.rs takes care of reordering the nr argument to the end for us,
8// so we only need to move nr into w8.
9//
10// arm64-ilp32 is not yet supported.
11
12    .file       "aarch64.s"
13    .arch       armv8-a
14
15    .section    .text.rustix_syscall0_nr_last,"ax",@progbits
16    .p2align    2
17    .weak       rustix_syscall0_nr_last
18    .hidden     rustix_syscall0_nr_last
19    .type       rustix_syscall0_nr_last, @function
20rustix_syscall0_nr_last:
21    .cfi_startproc
22    mov    w8, w0
23    svc    #0
24    ret
25    .cfi_endproc
26    .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
27
28    .section    .text.rustix_syscall1_nr_last,"ax",@progbits
29    .p2align    2
30    .weak       rustix_syscall1_nr_last
31    .hidden     rustix_syscall1_nr_last
32    .type       rustix_syscall1_nr_last, @function
33rustix_syscall1_nr_last:
34    .cfi_startproc
35    mov    w8, w1
36    svc    #0
37    ret
38    .cfi_endproc
39    .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
40
41    .section    .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
42    .p2align    2
43    .weak       rustix_syscall1_noreturn_nr_last
44    .hidden     rustix_syscall1_noreturn_nr_last
45    .type       rustix_syscall1_noreturn_nr_last, @function
46rustix_syscall1_noreturn_nr_last:
47    .cfi_startproc
48    mov    w8, w1
49    svc    #0
50    brk    #0x1
51    .cfi_endproc
52    .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
53
54    .section    .text.rustix_syscall2_nr_last,"ax",@progbits
55    .p2align    2
56    .weak       rustix_syscall2_nr_last
57    .hidden     rustix_syscall2_nr_last
58    .type       rustix_syscall2_nr_last, @function
59rustix_syscall2_nr_last:
60    .cfi_startproc
61    mov    w8, w2
62    svc    #0
63    ret
64    .cfi_endproc
65    .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
66
67    .section    .text.rustix_syscall3_nr_last,"ax",@progbits
68    .p2align    2
69    .weak       rustix_syscall3_nr_last
70    .hidden     rustix_syscall3_nr_last
71    .type       rustix_syscall3_nr_last, @function
72rustix_syscall3_nr_last:
73    .cfi_startproc
74    mov    w8, w3
75    svc    #0
76    ret
77    .cfi_endproc
78    .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
79
80    .section    .text.rustix_syscall4_nr_last,"ax",@progbits
81    .p2align    2
82    .weak       rustix_syscall4_nr_last
83    .hidden     rustix_syscall4_nr_last
84    .type       rustix_syscall4_nr_last, @function
85rustix_syscall4_nr_last:
86    .cfi_startproc
87    mov    w8, w4
88    svc    #0
89    ret
90    .cfi_endproc
91    .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
92
93    .section    .text.rustix_syscall5_nr_last,"ax",@progbits
94    .p2align    2
95    .weak       rustix_syscall5_nr_last
96    .hidden     rustix_syscall5_nr_last
97    .type       rustix_syscall5_nr_last, @function
98rustix_syscall5_nr_last:
99    .cfi_startproc
100    mov    w8, w5
101    svc    #0
102    ret
103    .cfi_endproc
104    .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
105
106    .section    .text.rustix_syscall6_nr_last,"ax",@progbits
107    .p2align    2
108    .weak       rustix_syscall6_nr_last
109    .hidden     rustix_syscall6_nr_last
110    .type       rustix_syscall6_nr_last, @function
111rustix_syscall6_nr_last:
112    .cfi_startproc
113    mov    w8, w6
114    svc    #0
115    ret
116    .cfi_endproc
117    .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
118
119    .section .note.GNU-stack,"",@progbits
120