aarch64.s (1405B)
1 # Syscall numbers https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/syscalls/#arm64-64-bit 2 3 .global start 4 5 .text 6 7 start: # start is the entry point known to the linker 8 ldr x0, [sp] // get argc from the stack 9 add x1, sp, #8 // take the address of argv from the stack 10 add x2, sp, #16 // take the address of envp from the stack 11 bl main 12 b exit 13 14 .macro extern_alias, name 15 .global \name 16 \name: 17 .endm 18 19 .macro extern, name 20 .section .text.\name 21 extern_alias \name 22 .endm 23 24 .macro syscall, num 25 mov w8, #\num 26 svc #0 27 ret 28 .endm 29 30 .text 31 .global exit 32 33 extern unlinkat 34 extern_alias _Z8unlinkat4file5c_str12unlink_flags 35 syscall 35 36 37 extern getdents64 38 extern_alias _Z10getdents644fileP14linux_dirent64m 39 syscall 61 40 41 extern read 42 extern_alias _Z4read4filePcm 43 extern_alias _Z4read4file4spanIcE 44 syscall 63 45 46 extern write 47 extern_alias _Z5write4filePKcm 48 extern_alias _Z5write4file4spanIKcE 49 syscall 64 50 51 extern openat 52 extern_alias _Z6openat4file5c_strii 53 syscall 56 54 55 extern writev 56 extern_alias _Z5write4file4spanIKS0_IKcEE 57 syscall 66 58 59 extern close 60 extern_alias _Z5close4file 61 syscall 57 62 63 extern exit 64 extern_alias _Z4exiti 65 syscall 93 66 67 extern nanosleep 68 extern_alias _Z9nanosleepRK8timespecPS_ 69 syscall 101 70 71 extern munmap 72 extern_alias _Z6munmapPvm 73 syscall 215 74 75 extern mmap 76 extern_alias _Z4mmapPvmmm4filem 77 syscall 222 78 79 extern renameat2 80 extern_alias _Z9renameat24file5c_strS_S0_12rename_flags 81 syscall 276