OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [i386/] [cygmon-crt0.S] - Blame information for rev 825

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/*
2
 * crt0 startup code for user programs running under Cygmon
3
 *
4
 * Copyright (c) 1998, 2000 Cygnus Support
5
 *
6
 * The authors hereby grant permission to use, copy, modify, distribute,
7
 * and license this software and its documentation for any purpose, provided
8
 * that existing copyright notices are retained in all copies and that this
9
 * notice is included verbatim in any distributions. No written agreement,
10
 * license, or royalty fee is required for any of the authorized uses.
11
 * Modifications to this software may be copyrighted by their authors
12
 * and need not follow the licensing terms described here, provided that
13
 * the new terms are clearly indicated on the first page of each file where
14
 * they apply.
15
 */
16
 
17
#define _S2(P,X) P ## X
18
#define _S1(P,X) _S2(P,X)
19
#define SYM(X) _S1(__USER_LABEL_PREFIX__,X)
20
 
21
.data
22
        .align  8
23
SYM(environ):
24
        .long   0
25
 
26
SYM(argc):
27
        .long   0
28
 
29
        .text
30
        .align 4
31
 
32
        .globl __start
33
__start:
34
        /* see if the stack is already setup. if not, then default
35
         *  to using the value of %sp as set by the ROM monitor
36
         */
37
        movl    $__stack, %eax
38
        testl   %eax, %eax
39
        jz      1f
40
        movl    %eax, %esp
41
1:
42
        mov $0, %ebp
43
 
44
        movl    $__bss_start, %edi
45
        movl    $__bss_end, %ecx
46
        subl    %edi, %ecx
47
        xorl    %eax, %eax
48
        rep; stosb
49
 
50
        pushl   $SYM(__sigtramp)
51
        pushl   $0
52
        call    SYM(__install_signal_handler)
53
        popl    %eax
54
 
55
        pushl   $SYM(__do_global_dtors)
56
        call    SYM(atexit)
57
        popl    %eax
58
 
59
        call    SYM(__do_global_ctors)
60
 
61
        pushl   $SYM(argc)
62
        call    SYM(__get_program_arguments)
63
        popl    %ecx
64
 
65
        movl    SYM(argc), %ecx
66
        pushl   %eax
67
        pushl   %ecx
68
        call    SYM(main)
69
        popl    %ecx
70
        popl    %edx
71
 
72
        /* call exit from the C library so atexit gets called, and the
73
         * C++ destructors get run. This calls our exit routine below
74
         * when it's done.
75
         */
76
        pushl   %eax
77
        call    SYM(exit)
78
3:
79
        jmp     3b

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.