From 07af35779d14fa930822b74572d41ea3d712b578 Mon Sep 17 00:00:00 2001 From: nakasima Date: Thu, 12 Apr 2007 10:47:01 +0000 Subject: [PATCH] marge from NitroSDK4.0. git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@22 4ee2a332-4b2b-5046-8439-1ba90f034370 --- build/buildtools/modulerules.cctype.RVCT | 20 ++++++++ build/libraries/ctrdg/ARM9/ctrdg_proc.c | 56 +++++++++++++++-------- build/libraries/ctrdg/common/ctrdg.c | 5 +- build/libraries/init/ARM9/crt0.c | 11 ++++- build/libraries/os/ARM7/os_terminate_sp.c | 7 ++- build/libraries/os/common/os_init.c | 28 ++++++++++++ include/nitro/hw/common/mmap_shared.h | 3 ++ 7 files changed, 106 insertions(+), 24 deletions(-) create mode 100644 build/buildtools/modulerules.cctype.RVCT diff --git a/build/buildtools/modulerules.cctype.RVCT b/build/buildtools/modulerules.cctype.RVCT new file mode 100644 index 0000000..b015ac0 --- /dev/null +++ b/build/buildtools/modulerules.cctype.RVCT @@ -0,0 +1,20 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlBromSDK - buildtools - compiler dependant settings for RVCT +# File: modulerules.cctype.RVCT +# +# Copyright 2005 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. +# +# $Log: $ +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +-include $(BROM_BUILDTOOLSDIR)/modulerules.cctype.$(NITRO_CCTYPE) + +#----- End of modulerules.cctype.RVCT ----- diff --git a/build/libraries/ctrdg/ARM9/ctrdg_proc.c b/build/libraries/ctrdg/ARM9/ctrdg_proc.c index d6cfac9..9e3d2b0 100644 --- a/build/libraries/ctrdg/ARM9/ctrdg_proc.c +++ b/build/libraries/ctrdg/ARM9/ctrdg_proc.c @@ -2,7 +2,7 @@ Project: NitroSDK - CTRDG File: ctrdg.c - Copyright 2003-2006 Nintendo. All rights reserved. + Copyright 2003-2007 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo @@ -11,6 +11,15 @@ in whole or in part, without the prior written consent of Nintendo. $Log: ctrdg_proc.c,v $ + Revision 1.31 2007/02/20 00:28:11 kitase_hirotake + indent source + + Revision 1.30 2006/08/10 00:25:57 okubata_ryoma + small fix + + Revision 1.29 2006/08/10 00:02:52 okubata_ryoma + カートリッジの活線挿抜に関する不具合修正 + Revision 1.28 2006/05/02 02:04:47 kitase_hirotake 不必要なデバッグ出力の削除 @@ -170,7 +179,7 @@ void CTRDG_Init(void) CTRDGi_InitTaskThread(&CTRDGTaskList); } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG_PHI, CTRDGi_CallbackForSetPhi ); + PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG_PHI, CTRDGi_CallbackForSetPhi); /* * ユーザが明示的に enable を指定しない限りアクセス無効. @@ -209,8 +218,6 @@ void CTRDGi_InitModuleInfo(void) OSIrqMask lastIE; BOOL lastIME; - CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); - if (isInitialized) { return; @@ -254,10 +261,14 @@ void CTRDGi_InitModuleInfo(void) //---- release privilege for accessing cartridge CTRDGi_UnlockByProcessor(CTRDGi_Work.lockID, &lockInfo); - //---- copy the information of peripheral devices to system area + // 前回チェックでカートリッジが挿入されていた場合、または + // ソフトリセットが一度も実行されていない場合のみカートリッジデータを更新する + if ((*(u8 *)HW_IS_CTRDG_EXIST) || !(*(u8 *)HW_SET_CTRDG_MODULE_INFO_ONCE)) { + //---- copy the information of peripheral devices to system area int i; CTRDGHeader *chb = &headerBuf; + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); cip->moduleID.raw = chb->moduleID; for (i = 0; i < 3; i++) @@ -266,6 +277,11 @@ void CTRDGi_InitModuleInfo(void) } cip->makerCode = chb->makerCode; cip->gameCode = chb->gameCode; + + // カートリッジが挿入されているのかチェック + *(u8 *)HW_IS_CTRDG_EXIST = (u8)((CTRDG_IsExisting())? 1 : 0); + // カートリッジの情報が一回でも更新されればTRUE + (*(u8 *)HW_SET_CTRDG_MODULE_INFO_ONCE) = TRUE; } //---- copy NINTENDO logo data in the ARM9 system ROM to main memory @@ -360,7 +376,7 @@ static void CTRDGi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err) } else { -OS_Printf(">>>tag[%x] data[%x] err[%x]\n", tag, data, err); + OS_Printf(">>>tag[%x] data[%x] err[%x]\n", tag, data, err); #ifndef SDK_FINALROM OS_Panic("illegal Cartridge pxi command."); #else @@ -431,7 +447,7 @@ void CTRDG_CheckPulledOut(void) { return; } - + //---------------- check cartridge pulled out //---- check cartridge isCartridgePullOut = CTRDG_IsPulledOut(); @@ -466,26 +482,26 @@ void CTRDG_CheckPulledOut(void) *---------------------------------------------------------------------------*/ void CTRDG_SetPhiClock(CTRDGPhiClock clock) { - u32 data = ((u32)clock << CTRDG_PXI_COMMAND_PARAM_SHIFT)| CTRDG_PXI_COMMAND_SET_PHI; + u32 data = ((u32)clock << CTRDG_PXI_COMMAND_PARAM_SHIFT) | CTRDG_PXI_COMMAND_SET_PHI; - //---- check parameter range - SDK_ASSERT( (u32)clock <= CTRDG_PHI_CLOCK_16MHZ ); + //---- check parameter range + SDK_ASSERT((u32)clock <= CTRDG_PHI_CLOCK_16MHZ); - //---- set ARM9 PHI output clock - MIi_SetPhiClock( (MIiPhiClock)clock ); + //---- set ARM9 PHI output clock + MIi_SetPhiClock((MIiPhiClock) clock); - //---- send command to set ARM7 phi clock - CTRDGi_Lock = TRUE; + //---- send command to set ARM7 phi clock + CTRDGi_Lock = TRUE; while (PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG_PHI, data, FALSE) != PXI_FIFO_SUCCESS) { SVC_WaitByLoop(1); } - //---- wait response - while( CTRDGi_Lock ) - { - SVC_WaitByLoop(1); - } + //---- wait response + while (CTRDGi_Lock) + { + SVC_WaitByLoop(1); + } } /*---------------------------------------------------------------------------* @@ -502,5 +518,5 @@ void CTRDG_SetPhiClock(CTRDGPhiClock clock) static void CTRDGi_CallbackForSetPhi(PXIFifoTag tag, u32 data, BOOL err) { #pragma unused(tag, data, err) - CTRDGi_Lock = FALSE; + CTRDGi_Lock = FALSE; } diff --git a/build/libraries/ctrdg/common/ctrdg.c b/build/libraries/ctrdg/common/ctrdg.c index 9100742..a95c2c0 100644 --- a/build/libraries/ctrdg/common/ctrdg.c +++ b/build/libraries/ctrdg/common/ctrdg.c @@ -11,6 +11,9 @@ in whole or in part, without the prior written consent of Nintendo. $Log: ctrdg.c,v $ + Revision 1.24 2007/02/20 00:28:11 kitase_hirotake + indent source + Revision 1.23 2006/04/24 00:05:09 okubata_ryoma CW2.0の警告レベル強化に伴った変更 @@ -418,7 +421,7 @@ BOOL CTRDG_IsExisting(void) } #if defined(SDK_ARM7) //---- get privilege for accessing cartridge - if(CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo) == FALSE) + if (CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo) == FALSE) { (void)OS_RestoreInterrupts(lockInfo.irq); return TRUE; diff --git a/build/libraries/init/ARM9/crt0.c b/build/libraries/init/ARM9/crt0.c index 016a62e..b591ff5 100644 --- a/build/libraries/init/ARM9/crt0.c +++ b/build/libraries/init/ARM9/crt0.c @@ -11,6 +11,9 @@ in whole or in part, without the prior written consent of Nintendo. $Log: $ + Revision 1.50 2006/08/09 06:11:26 yosizaki + change to wait vcount. + $NoKeywords: $ *---------------------------------------------------------------------------*/ #include @@ -63,6 +66,12 @@ SDK_WEAK_SYMBOL asm void _start( void ) mov r12, #HW_REG_BASE str r12, [r12, #REG_IME_OFFSET] + //---- adjust VCOUNT. +@wait_vcount_0: + ldrh r0, [r12, #REG_VCOUNT_OFFSET] + cmp r0, #0 + bne @wait_vcount_0 + //---- initialize cp15 bl init_cp15 @@ -203,7 +212,7 @@ void *const _start_ModuleParams[] = { (void *)SDK_STATIC_BSS_START, (void *)SDK_STATIC_BSS_END, (void *)0, // CompressedStaticEnd - (void *)0, //SDK_VERSION_ID, // SDK version info + (void *)SDK_VERSION_ID, // SDK version info (void *)SDK_NITROCODE_BE, // Checker 1 (void *)SDK_NITROCODE_LE, // Checker 2 }; diff --git a/build/libraries/os/ARM7/os_terminate_sp.c b/build/libraries/os/ARM7/os_terminate_sp.c index 8b63e13..65c7017 100644 --- a/build/libraries/os/ARM7/os_terminate_sp.c +++ b/build/libraries/os/ARM7/os_terminate_sp.c @@ -11,6 +11,9 @@ in whole or in part, without the prior written consent of Nintendo. $Log: os_terminate_sp.c,v $ + Revision 1.3 2006/07/05 09:25:28 yosizaki + fix about include header. + Revision 1.2 2006/01/18 02:11:30 kitase_hirotake do-indent @@ -19,8 +22,8 @@ $NoKeywords: $ *---------------------------------------------------------------------------*/ -#include -#include +#include +#include //============================================================================ // TERMINATE and HALT diff --git a/build/libraries/os/common/os_init.c b/build/libraries/os/common/os_init.c index cc93bcd..0dd5cc3 100644 --- a/build/libraries/os/common/os_init.c +++ b/build/libraries/os/common/os_init.c @@ -11,6 +11,12 @@ in whole or in part, without the prior written consent of Nintendo. $Log: os_init.c,v $ + Revision 1.52 2006/11/14 04:33:19 okubata_ryoma + small fix + + Revision 1.51 2006/11/14 01:36:26 okubata_ryoma + ARM9のOS_Init終了時にvcountを0に揃える処理を追加 + Revision 1.50 2006/01/18 02:11:30 kitase_hirotake do-indent @@ -173,6 +179,25 @@ #include #endif +#include +static asm void OSi_WaitVCount0( void ) +{ + //---- set IME = 0 + // ( use that LSB of HW_REG_BASE equal to 0 ) + mov r12, #HW_REG_BASE + ldr r1, [r12, #REG_IME_OFFSET] + str r12, [r12, #REG_IME_OFFSET] + + //---- adjust VCOUNT. +@wait_vcount_0: + ldrh r0, [r12, #REG_VCOUNT_OFFSET] + cmp r0, #0 + bne @wait_vcount_0 + str r1, [r12, #REG_IME_OFFSET] + bx lr +} +#include + /*---------------------------------------------------------------------------* Name: OS_Init @@ -253,6 +278,9 @@ void OS_Init(void) // PM_Init(); #endif + //---- adjust VCOUNT + OSi_WaitVCount0(); + #else // SDK_ARM9 //---------------------------------------------------------------- // for ARM7 diff --git a/include/nitro/hw/common/mmap_shared.h b/include/nitro/hw/common/mmap_shared.h index 6c7d41b..c3e2c25 100644 --- a/include/nitro/hw/common/mmap_shared.h +++ b/include/nitro/hw/common/mmap_shared.h @@ -282,6 +282,9 @@ extern "C" { #define HW_WM_CALLBACK_CONTROL (HW_MAIN_MEM_SYSTEM + 0x396) // WM コールバック同期用パラメータ #define HW_WM_RSSI_POOL (HW_MAIN_MEM_SYSTEM + 0x398) // WM 受信強度による乱数源 +#define HW_SET_CTRDG_MODULE_INFO_ONCE (HW_MAIN_MEM_SYSTEM + 0x39a) // set ctrdg module info flag +#define HW_IS_CTRDG_EXIST (HW_MAIN_MEM_SYSTEM + 0x39b) // ctrdg exist flag + #define HW_COMPONENT_PARAM (HW_MAIN_MEM_SYSTEM + 0x39c) // Component 同期用パラメータ #define HW_THREADINFO_MAIN (HW_MAIN_MEM_SYSTEM + 0x3a0) // ThreadInfo for Main processor