Annotation of GNUtools/cc/config/sparc/sol2-c1.asm, revision 1.1

1.1     ! root        1: ! crt1.s for solaris 2.0.
        !             2: 
        !             3: !   Copyright (C) 1992 Free Software Foundation, Inc.
        !             4: !   Written By David Vinayak Henkel-Wallace, June 1992
        !             5: ! 
        !             6: ! This file is free software; you can redistribute it and/or modify it
        !             7: ! under the terms of the GNU General Public License as published by the
        !             8: ! Free Software Foundation; either version 2, or (at your option) any
        !             9: ! later version.
        !            10: ! 
        !            11: ! In addition to the permissions in the GNU General Public License, the
        !            12: ! Free Software Foundation gives you unlimited permission to link the
        !            13: ! compiled version of this file with other programs, and to distribute
        !            14: ! those programs without any restriction coming from the use of this
        !            15: ! file.  (The General Public License restrictions do apply in other
        !            16: ! respects; for example, they cover modification of the file, and
        !            17: ! distribution when not linked into another program.)
        !            18: ! 
        !            19: ! This file is distributed in the hope that it will be useful, but
        !            20: ! WITHOUT ANY WARRANTY; without even the implied warranty of
        !            21: ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            22: ! General Public License for more details.
        !            23: ! 
        !            24: ! You should have received a copy of the GNU General Public License
        !            25: ! along with this program; see the file COPYING.  If not, write to
        !            26: ! the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
        !            27: ! 
        !            28: !    As a special exception, if you link this library with files
        !            29: !    compiled with GCC to produce an executable, this does not cause
        !            30: !    the resulting executable to be covered by the GNU General Public License.
        !            31: !    This exception does not however invalidate any other reasons why
        !            32: !    the executable file might be covered by the GNU General Public License.
        !            33: ! 
        !            34: 
        !            35: ! This file takes control of the process from the kernel, as specified
        !            36: ! in section 3 of the SVr4 ABI.
        !            37: ! This file is the first thing linked into any executable.
        !            38: 
        !            39:        .section        ".text"
        !            40:        .proc   022
        !            41:        .global _start
        !            42: 
        !            43: _start:
        !            44:        mov     0, %fp          ! Mark bottom frame pointer
        !            45:        ld      [%sp + 64], %l0 ! argc
        !            46:        add     %sp, 68, %l1    ! argv
        !            47: 
        !            48:        ! Leave some room for a call.  Sun leaves 32 octets (to sit on
        !            49:        ! a cache line?) so we do too.
        !            50:        sub     %sp, 32, %sp
        !            51: 
        !            52:        ! %g1 may contain a function to be registered w/atexit
        !            53:        orcc    %g0, %g1, %g0
        !            54:        be      .nope
        !            55:        mov     %g1, %o0
        !            56:        call    atexit
        !            57:        nop   
        !            58: .nope:
        !            59:        ! Now make sure constructors and destructors are handled.
        !            60:        set     _fini, %o0
        !            61:        call    atexit, 1
        !            62:        nop
        !            63:        call    _init, 0
        !            64:        nop
        !            65: 
        !            66:        ! We ignore the auxiliary vector; there's no defined way to
        !            67:        ! access those data anyway.  Instead, go straight to main:
        !            68:        mov     %l0, %o0        ! argc
        !            69:        mov     %l1, %o1        ! argv
        !            70:        ! Skip argc words past argv, to env:
        !            71:        sll     %l0, 2, %o2
        !            72:        add     %o2, 4, %o2
        !            73:        add     %l1, %o2, %o2   ! env
        !            74:        set     _environ, %o3
        !            75:        st      %o2, [%o3]      ! *_environ
        !            76:        call    main, 4
        !            77:        nop   
        !            78:        call    exit, 0
        !            79:        nop   
        !            80:        call    _exit, 0
        !            81:        nop   
        !            82:        ! We should never get here.
        !            83: 
        !            84:        .type   _start,#function
        !            85:        .size   _start,.-_start

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.