.file   "dllcprt0.as"
.data
        .align 4
default_environ:
        .long 0
.text
.globl initialize_after
        .type    initialize_after,@function
initialize_after:
        .globl FPC_SHARED_LIB_START
        .type FPC_SHARED_LIB_START,@function
FPC_SHARED_LIB_START:
        /* We are in a library if we link something against this code */
        movb $1,operatingsystem_islibrary
        /* Initialize freepascal variables in the shared object so they 
           can be used as expected.
           
           As we link with libroot (our libc), just copy values from the 
           corresponding external variables in the Freepascal ones. 
           They are already initialized by libroot initialization. 
           
           Inspired by /haiku/src/system/glue/start_dyn.c 
           and /haiku/src/system/libroot/libroot_init.c
        */        
        movl __libc_argc,%eax
        movl %eax,operatingsystem_parameter_argc
        movl __libc_argv,%eax
        movl %eax,operatingsystem_parameter_argv
        movl environ,%eax
        movl %eax,operatingsystem_parameter_envp
        xorl %ebp,%ebp
        call PASCALMAIN

.globl  _haltproc
.type   _haltproc,@function
_haltproc:
        call _thread_do_exit_notification
        xorl %ebx,%ebx
    movw operatingsystem_result,%bx
        pushl %ebx
        call exit

.bss
        .comm operatingsystem_parameter_envp,4
        .comm operatingsystem_parameter_argc,4
        .comm operatingsystem_parameter_argv,4