fpc/rtl/linux/aarch64/dllprt0.as
Jonas Maebe 4fa2edc638 + Linux/AArch64 RTL support (patch by Edmund Grimley Evans)
o uses new generic Linux syscall numbers, used for recent architectures

git-svn-id: trunk@30895 -
2015-05-23 21:04:08 +00:00

73 lines
1.5 KiB
ActionScript

/*
Start-up code for Free Pascal Compiler in a shared library,
not linking with C library.
Written by Edmund Grimley Evans in 2015 and released into the public domain.
*/
.text
.align 2
.globl _startlib
.type _startlib,#function
_startlib:
.globl FPC_SHARED_LIB_START
.type FPC_SHARED_LIB_START,#function
FPC_SHARED_LIB_START:
stp x29,x30,[sp,#-16]!
/* Save argc, argv and envp */
adrp x9,:got:operatingsystem_parameter_argc
ldr x9,[x9,#:got_lo12:operatingsystem_parameter_argc]
str x0,[x9]
adrp x9,:got:operatingsystem_parameter_argv
ldr x9,[x9,#:got_lo12:operatingsystem_parameter_argv]
str x1,[x9]
adrp x9,:got:operatingsystem_parameter_envp
ldr x9,[x9,#:got_lo12:operatingsystem_parameter_envp]
str x2,[x9]
/* Save initial stackpointer */
adrp x9,:got:__stkptr
ldr x9,[x9,#:got_lo12:__stkptr]
mov x10,sp
str x10,[x9]
/* Call main */
bl PASCALMAIN
/* Return */
ldp x29,x30,[sp],#16
ret
.globl _haltproc
.type _haltproc,#function
_haltproc:
adrp x0,:got:operatingsystem_result
ldr x0,[x0,#:got_lo12:operatingsystem_result]
ldr w0,[x0]
mov w8,#94 // syscall_nr_exit_group
svc #0
b _haltproc
/* Define a symbol for the first piece of initialized data. */
.data
.align 3
.globl __data_start
__data_start:
.long 0
.weak data_start
data_start = __data_start
.bss
.align 3
.comm __dl_fini,8
.comm __stkptr,8
.comm operatingsystem_parameter_envp,8
.comm operatingsystem_parameter_argc,8
.comm operatingsystem_parameter_argv,8
.section .note.GNU-stack,"",%progbits