/*---------------------------------------------------------------------------* Project: CtrBrom - library - init File: crt0_firm.c Copyright 2009 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 //#include #undef BROM_TARGET_BROM #define BROM_TARGET_FIRM void _start(void); /*---------------------------------------------------------------------------* Name: _start Description: Start up Arguments: None Returns: None. *---------------------------------------------------------------------------*/ asm void _start( void ) { PRESERVE8 INASM_EXTERN( BromMain ) 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_FIRM_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_FIRM_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_FIRM_SYS_STACK_END mov sp, r0 //---- disable cp15 bl stupDisableCP15 //---- initialize MMU ldr r0, =HW_FIRM_MMU_T1 ldr r1, =HW_FIRM_MMU_T1_END ldr r2, =HW_FIRM_MMU_T2 ldr r3, =HW_FIRM_MMU_T2_END bl stupInitMMU //---- enable cp15 bl stupEnableCP15 //---- lnitialize sections bl stupInitSections //---- start (to 16bit code) ldr r1, =BromMain adr lr, terminate bx r1 terminate b terminate } #include <./crt0_mmu.c> #include <./crt0_misc.c>