123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * This file is part of the Free Pascal run time library.
- * Copyright (c) 2011 by Thomas Schatzl,
- * member of the Free Pascal development team.
- *
- * Startup code for shared libraries, ARM version.
- *
- * See the file COPYING.FPC, included in this distribution,
- * for details about the copyright.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
- .file "dllprt0.as"
- .text
- .globl _startlib
- .type _startlib,#function
- _startlib:
- .globl FPC_SHARED_LIB_START
- .type FPC_SHARED_LIB_START,#function
- FPC_SHARED_LIB_START:
- mov ip, sp
- stmfd sp!,{fp, ip, lr, pc}
- sub fp, ip, #4
- /* a1 contains argc, a2 contains argv and a3 contains envp */
- ldr ip, =operatingsystem_parameter_argc
- str a1, [ip]
- ldr ip, =operatingsystem_parameter_argv
- str a2, [ip]
- ldr ip, =operatingsystem_parameter_envp
- str a3, [ip]
- /* save initial stackpointer */
- ldr ip, =__stklen
- str sp, [ip]
- /* call main and exit normally */
- bl PASCALMAIN
- ldmdb fp, {fp, sp, pc}
- .globl _haltproc
- .type _haltproc,#function
- _haltproc:
- /* reload exitcode */
- ldr r0,=operatingsystem_result
- ldr r0,[r0]
- swi 0x900001
- b _haltproc
- .globl _haltproc_eabi
- .type _haltproc_eabi,#function
- _haltproc_eabi:
- /* reload exitcode */
- ldr r0,=operatingsystem_result
- ldr r0,[r0]
- mov r7,#248
- swi 0x0
- b _haltproc_eabi
- .data
- .type operatingsystem_parameters,#object
- .size operatingsystem_parameters,12
- operatingsystem_parameters:
- .skip 3*4
- .global operatingsystem_parameter_envp
- .global operatingsystem_parameter_argc
- .global operatingsystem_parameter_argv
- .set operatingsystem_parameter_envp,operatingsystem_parameters+0
- .set operatingsystem_parameter_argc,operatingsystem_parameters+4
- .set operatingsystem_parameter_argv,operatingsystem_parameters+8
- .bss
- .comm __stkptr,4
|