URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [i386/] [cygmon-crt0.S] - Rev 816
Compare with Previous | Blame | View Log
/** crt0 startup code for user programs running under Cygmon** Copyright (c) 1998, 2000 Cygnus Support** The authors hereby grant permission to use, copy, modify, distribute,* and license this software and its documentation for any purpose, provided* that existing copyright notices are retained in all copies and that this* notice is included verbatim in any distributions. No written agreement,* license, or royalty fee is required for any of the authorized uses.* Modifications to this software may be copyrighted by their authors* and need not follow the licensing terms described here, provided that* the new terms are clearly indicated on the first page of each file where* they apply.*/#define _S2(P,X) P ## X#define _S1(P,X) _S2(P,X)#define SYM(X) _S1(__USER_LABEL_PREFIX__,X).data.align 8SYM(environ):.long 0SYM(argc):.long 0.text.align 4.globl __start__start:/* see if the stack is already setup. if not, then default* to using the value of %sp as set by the ROM monitor*/movl $__stack, %eaxtestl %eax, %eaxjz 1fmovl %eax, %esp1:mov $0, %ebpmovl $__bss_start, %edimovl $__bss_end, %ecxsubl %edi, %ecxxorl %eax, %eaxrep; stosbpushl $SYM(__sigtramp)pushl $0call SYM(__install_signal_handler)popl %eaxpushl $SYM(__do_global_dtors)call SYM(atexit)popl %eaxcall SYM(__do_global_ctors)pushl $SYM(argc)call SYM(__get_program_arguments)popl %ecxmovl SYM(argc), %ecxpushl %eaxpushl %ecxcall SYM(main)popl %ecxpopl %edx/* call exit from the C library so atexit gets called, and the* C++ destructors get run. This calls our exit routine below* when it's done.*/pushl %eaxcall SYM(exit)3:jmp 3b
