/*---------------------------------------------------------------------------* Project: CtrBrom - library - init File: crt0_app.c Copyright 2008 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Date:: $ $Rev$ $Author$ *---------------------------------------------------------------------------*/ #include #include #undef BROM_TARGET_BROM #define BROM_TARGET_APP #define STUPi_HW_DTCM |Image$$DTCM$$Base| void _start(void); /*---------------------------------------------------------------------------* Name: _start Description: Start up Arguments: None Returns: None. *---------------------------------------------------------------------------*/ asm void _start( void ) { PRESERVE8 INASM_EXTERN( STUPi_HW_DTCM ) INASM_EXTERN( BromSpMain ) INASM_EXTERN( main ) //---- initialize stack pointer // SVC mode mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE msr cpsr_fsxc, r0 ldr sp, =HW_BROM_SVC_STACK_END // IRQ mode mov r0, #HW_PSR_IRQ_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE msr cpsr_fsxc, r0 ldr r0, =HW_BROM_IRQ_STACK_END mov sp, r0 // System mode mov r0, #HW_PSR_SYS_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE msr cpsr_fsxc, r0 ldr r0, =HW_BROM_SYS_STACK_END mov sp, r0 //---- initialize cp15 bl i_stupInitCP15 //---- clear wram // DTCM (16KB) mov r0, #0 ldr r1, =STUPi_HW_DTCM mov r2, #HW_DTCM_SIZE bl i_stupCpuClear32 // 64B mov r0, #0 ldr r1, =HW_PRV_WRAM_SYSRV ldr r2, =HW_EXCP_VENEER_BUF sub r2, r2, r1 bl i_stupCpuClear32 ldr r1, =HW_EXCP_VENEER_BUF_END ldr r2, =HW_PRV_WRAM_SYSRV_END sub r2, r2, r1 bl i_stupCpuClear32 //---- lnitialize sections bl stupInitSections //---- start (to 16bit code) ldr r1, =BromSpMain adr lr, terminate bx r1 terminate b terminate } #include <./crt0_pu.c> #include <./crt0_misc_sp.c>