/*************************************************************************** * Copyright (c) 2003-2010, Broadcom Corporation * All Rights Reserved * Confidential Property of Broadcom Corporation * * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. * * $brcm_Workfile: $ * $brcm_Revision: $ * $brcm_Date: $ * * Module Description: C runtime startup code. This file sets up initial stack, * clears BSS and calls main. * * Revision History: * * $brcm_Log: $ * ***************************************************************************/ #include "mips.h" #define CRT_STACK_SIZE 0x400 #define START_STATUS (C0_STATUS_CU0_BIT | C0_STATUS_BEV_BIT | C0_STATUS_EXL_BIT) .set mips32 .extern _fbss .extern _end .data .comm crt_stack, CRT_STACK_SIZE .text .align 4 .globl start .ent start start: j start_crt nop start_crt: li t0, START_STATUS mtc0 t0, C0_STATUS la sp, crt_stack + (CRT_STACK_SIZE - 8) la a0, _fbss la a1, _end beq a1, a0, 2f nop 1: sw zero, 0(a0) addi a0, a0, 4 bne a0, a1, 1b nop 2: move a0, zero move a1, zero jal bcm_main nop loop: j loop .end start