mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 19:09:23 +02:00

o uses new generic Linux syscall numbers, used for recent architectures git-svn-id: trunk@30895 -
73 lines
1.5 KiB
ActionScript
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
|