forked from Mirrors/tinycc
35 lines
473 B
ArmAsm
35 lines
473 B
ArmAsm
.global _start
|
|
.global __syscall
|
|
|
|
.text
|
|
_start:
|
|
// Run main
|
|
call main
|
|
|
|
// Exit process
|
|
mov %rax, %rdi
|
|
mov $60, %rax
|
|
syscall
|
|
|
|
__syscall:
|
|
// Save the config (except rax)
|
|
push %rdi
|
|
push %rsi
|
|
push %rdx
|
|
push %r10
|
|
|
|
// Make the syscall
|
|
mov %rdi, %rax
|
|
mov %rsi, %rdi
|
|
mov %rdx, %rsi
|
|
mov %rcx, %rdx
|
|
mov %r8d, %r10d
|
|
syscall
|
|
|
|
// Restore and return
|
|
pop %r10
|
|
pop %rdx
|
|
pop %rsi
|
|
pop %rdi
|
|
retq
|