Home | History | Annotate | Line # | Download | only in common
start.S revision 1.1.2.2
      1  1.1.2.2  nathanw /* $NetBSD: start.S,v 1.1.2.2 2002/11/11 22:03:43 nathanw Exp $ */
      2  1.1.2.2  nathanw 
      3  1.1.2.2  nathanw /*
      4  1.1.2.2  nathanw  * Copyright 2000, 2001
      5  1.1.2.2  nathanw  * Broadcom Corporation. All rights reserved.
      6  1.1.2.2  nathanw  *
      7  1.1.2.2  nathanw  * This software is furnished under license and may be used and copied only
      8  1.1.2.2  nathanw  * in accordance with the following terms and conditions.  Subject to these
      9  1.1.2.2  nathanw  * conditions, you may download, copy, install, use, modify and distribute
     10  1.1.2.2  nathanw  * modified or unmodified copies of this software in source and/or binary
     11  1.1.2.2  nathanw  * form. No title or ownership is transferred hereby.
     12  1.1.2.2  nathanw  *
     13  1.1.2.2  nathanw  * 1) Any source code used, modified or distributed must reproduce and
     14  1.1.2.2  nathanw  *    retain this copyright notice and list of conditions as they appear in
     15  1.1.2.2  nathanw  *    the source file.
     16  1.1.2.2  nathanw  *
     17  1.1.2.2  nathanw  * 2) No right is granted to use any trade name, trademark, or logo of
     18  1.1.2.2  nathanw  *    Broadcom Corporation. Neither the "Broadcom Corporation" name nor any
     19  1.1.2.2  nathanw  *    trademark or logo of Broadcom Corporation may be used to endorse or
     20  1.1.2.2  nathanw  *    promote products derived from this software without the prior written
     21  1.1.2.2  nathanw  *    permission of Broadcom Corporation.
     22  1.1.2.2  nathanw  *
     23  1.1.2.2  nathanw  * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
     24  1.1.2.2  nathanw  *    WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
     25  1.1.2.2  nathanw  *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
     26  1.1.2.2  nathanw  *    NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
     27  1.1.2.2  nathanw  *    FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
     28  1.1.2.2  nathanw  *    LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     29  1.1.2.2  nathanw  *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     30  1.1.2.2  nathanw  *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     31  1.1.2.2  nathanw  *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     32  1.1.2.2  nathanw  *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     33  1.1.2.2  nathanw  *    OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     34  1.1.2.2  nathanw  */
     35  1.1.2.2  nathanw 
     36  1.1.2.2  nathanw #define STACK_SIZE 8192
     37  1.1.2.2  nathanw 
     38  1.1.2.2  nathanw #include "include/asm.h"
     39  1.1.2.2  nathanw 
     40  1.1.2.2  nathanw 
     41  1.1.2.2  nathanw 	  .bss
     42  1.1.2.2  nathanw 
     43  1.1.2.2  nathanw 	  .comm stack_bottom,STACK_SIZE
     44  1.1.2.2  nathanw 
     45  1.1.2.2  nathanw 	.text
     46  1.1.2.2  nathanw 
     47  1.1.2.2  nathanw LEAF(start)
     48  1.1.2.2  nathanw 
     49  1.1.2.2  nathanw 	la	gp,_gp
     50  1.1.2.2  nathanw 
     51  1.1.2.2  nathanw 	la	sp,stack_bottom+STACK_SIZE-32
     52  1.1.2.2  nathanw 
     53  1.1.2.2  nathanw /*
     54  1.1.2.2  nathanw  * On entry: a0 = the firmware handle, a2 = firmware's
     55  1.1.2.2  nathanw  * for secondary bootstraps, a1 is the booted device handle
     56  1.1.2.2  nathanw  * Don't trash a0..a3 until main is called!
     57  1.1.2.2  nathanw  */
     58  1.1.2.2  nathanw 
     59  1.1.2.2  nathanw 
     60  1.1.2.2  nathanw #if defined(STANDALONE_PROGRAM)
     61  1.1.2.2  nathanw 	/*
     62  1.1.2.2  nathanw 	 * This should not be used anywhere.
     63  1.1.2.2  nathanw 	 */
     64  1.1.2.2  nathanw 
     65  1.1.2.2  nathanw #error "don't do this."
     66  1.1.2.2  nathanw 
     67  1.1.2.2  nathanw #else /* defined(STANDALONE_PROGRAM) */
     68  1.1.2.2  nathanw 
     69  1.1.2.2  nathanw #if !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK)
     70  1.1.2.2  nathanw 
     71  1.1.2.2  nathanw         la      sp,start
     72  1.1.2.2  nathanw 
     73  1.1.2.2  nathanw #endif /* !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) */
     74  1.1.2.2  nathanw 
     75  1.1.2.2  nathanw #endif /* defined(STANDALONE_PROGRAM) */
     76  1.1.2.2  nathanw 
     77  1.1.2.2  nathanw /*
     78  1.1.2.2  nathanw  * Zero BSS
     79  1.1.2.2  nathanw  */
     80  1.1.2.2  nathanw 
     81  1.1.2.2  nathanw 	la	t0,_edata		/* t0 = address */
     82  1.1.2.2  nathanw 	la	t1,_end
     83  1.1.2.2  nathanw 
     84  1.1.2.2  nathanw 1:	sw	zero,0(t0)
     85  1.1.2.2  nathanw 	sw	zero,4(t0)
     86  1.1.2.2  nathanw 	sw	zero,8(t0)
     87  1.1.2.2  nathanw 	sw	zero,16(t0)
     88  1.1.2.2  nathanw 	add	t0,16
     89  1.1.2.2  nathanw 	ble	t0,t1,1b
     90  1.1.2.2  nathanw 
     91  1.1.2.2  nathanw 
     92  1.1.2.2  nathanw /*
     93  1.1.2.2  nathanw  * Run the main program.
     94  1.1.2.2  nathanw  */
     95  1.1.2.2  nathanw 
     96  1.1.2.2  nathanw 	jal     main			/* transfer to C */
     97  1.1.2.2  nathanw 
     98  1.1.2.2  nathanw XLEAF(halt)
     99  1.1.2.2  nathanw 	li	t0,0xBFC00000		/* transfer back to firmware */
    100  1.1.2.2  nathanw 	j	t0
    101  1.1.2.2  nathanw END(start)
    102  1.1.2.2  nathanw 
    103  1.1.2.2  nathanw 
    104  1.1.2.2  nathanw 
    105  1.1.2.2  nathanw LEAF(__main)
    106  1.1.2.2  nathanw 	j	ra
    107  1.1.2.2  nathanw END(__main)
    108  1.1.2.2  nathanw 
    109  1.1.2.2  nathanw LEAF(_rtt)
    110  1.1.2.2  nathanw 	li	t0,0xBFC00000
    111  1.1.2.2  nathanw 	j	t0
    112  1.1.2.2  nathanw END(_rtt)
    113