liblinux++

A hosted C++ runtime without any libc.
git clone git://henryandlizzy.uk/liblinux++
Log | Files | Refs

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