ctr_firmware/trunk/bootrom/build/libraries/init/ARM11/crt0_app.c
nakasima 847aa44731 アプリケーションのMMUテーブルとスタックをメインメモリへ移動。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@250 b871894f-2f95-9b40-918c-086798483c85
2009-02-04 09:30:21 +00:00

88 lines
2.6 KiB
C

/*---------------------------------------------------------------------------*
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 <brom/code32.h>
#include <brom/os.h>
#include <app/memorymap.h>
#undef BROM_TARGET_BROM
#define BROM_TARGET_APP
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_APP_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_APP_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_APP_SYS_STACK_END
mov sp, r0
//---- disable cp15
bl stupDisableCP15
//---- initialize MMU
ldr r0, =HW_APP_MMU_T1
ldr r1, =HW_APP_MMU_T1_END
ldr r2, =HW_APP_MMU_T2
ldr r3, =HW_APP_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>