fpc/rtl/linux/m68k/cprt0.as

85 lines
2.7 KiB
ActionScript

#
# This file is part of the Free Pascal run time library.
# Copyright (c) 2001 by Free Pascal Core Team
#
# 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.
#
#**********************************************************************}
#
# Linux m68k ELF startup code for linking with C lib for Free Pascal
#
.file "cprt0.as"
.text
.globl _start
.type _start,@function
_start:
.globl __entry
.type __entry,@function
__entry:
######### This order of parameters is for ucLibc.
# move.l 8(%sp),%d0
# move.l %d0,operatingsystem_parameter_envp
# move.l %d0,__environ
# move.l 4(%sp),%d0
# move.l %d0,operatingsystem_parameter_argv
# move.l (%sp),%d0
# move.l %d0,operatingsystem_parameter_argc
#########
sub.l %fp,%fp
move.l (%sp)+,%d0
move.l %d0,operatingsystem_parameter_argc
move.l %sp,operatingsystem_parameter_argv
lea.l 8(%sp,%d0.l*4),%a0
move.l %a0,operatingsystem_parameter_envp
move.l %sp,%a0 /* argv */
pea (%sp) /* highest available stack address */
pea (%a1) /* termination function provided by kernel */
pea __libc_csu_fini
pea __libc_csu_init
pea (%a0) /* argv */
move.l %d0,-(%sp) /* argc */
pea PASCALMAIN
jsr __libc_start_main
illegal
.size _start,.-_start
# Used by System_exit procedure
.globl _haltproc
.type _haltproc,@function
_haltproc:
# Call C exit function
move.l operatingsystem_result,%d1
move.l %d1,-(%sp)
jsr exit
moveq.l #1,%d0
move.l (%sp)+,%d1
trap #0
bra _haltproc
.size _haltproc,.-_haltproc
.bss
.type __stkptr,@object
.size __stkptr,4
.global __stkptr
__stkptr:
.skip 4
.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