diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 85ad4e3d..fedfe86a 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -68,6 +68,7 @@ BOOL BOOT_WaitStart( void ) (void)OS_DisableIrq(); // ここで割り込み禁止にしないとダメ。 (void)OS_SetIrqMask(0); // SDKバージョンのサーチに時間がかかると、ARM9がHALTにかかってしまい、ARM7のサウンドスレッドがARM9にFIFOでデータ送信しようとしてもFIFOが一杯で送信できない状態で無限ループに入ってしまう。 + (void)OS_SetIrqMaskEx(0); /* #ifdef ISDBG_MB_CHILD_ if( ( GetIpl2WorkAddr()->ipl2_type != 0xff ) && ( GetIpl2WorkAddr()->ipl2_type & 0x28 ) ) @@ -183,5 +184,6 @@ static void BOOTi_ClearREG_RAM( void ) // レジスタクリアは基本的に OS_Boot で行う // クリアしていないレジスタは、VCOUNT, JOY, PIFCNT, MC-, EXMEMCNT, IME, PAUSE, POWLCDCNT, 他セキュリティ系です。 - (void)OS_ResetRequestIrqMask((u16)~0); + (void)OS_ResetRequestIrqMask((u32)~0); + (void)OS_ResetRequestIrqMaskEx((u32)~0); } diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index fad653e5..559aa44f 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -16,6 +16,7 @@ *---------------------------------------------------------------------------*/ #include +#include #include #include #include @@ -59,13 +60,17 @@ void BOOT_Ready( void ) // エントリアドレスの正当性をチェックし、無効な場合は無限ループに入る。 // SYSMi_CheckEntryAddress(); - for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止 - MI_StopDma( (u16)i ); - } + CAMERA_PowerOffCore(); // FinalizeCardPulledOut(); // カード抜け検出終了処理 BOOTi_ClearREG_RAM(); // レジスタ&RAMクリア (void)GX_VBlankIntr( FALSE ); + + for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // 割り込み禁止状態でDMA停止 + MI_StopDma( (u16)i ); + MI_StopNDma( (u16)i ); + } + (void)OS_SetIrqFunction( OS_IE_SUBP, ie_subphandler ); OS_EnableInterrupts(); (void)OS_SetIrqMask( OS_IE_SUBP ); // サブプロセッサ割り込みのみを許可。 @@ -79,7 +84,7 @@ void BOOT_Ready( void ) reg_PXI_SUBPINTF &= 0x0f00; // サブプロセッサ割り込み許可フラグをクリア (void)OS_DisableIrq(); (void)OS_SetIrqMask( 0 ); - (void)OS_ResetRequestIrqMask( (u16)~0 ); + (void)OS_ResetRequestIrqMask( (u32)~0 ); // WRAMの配置 { @@ -140,7 +145,7 @@ static void BOOTi_ClearREG_RAM( void ) { // 最後がサブプロセッサ割り込み待ちなので、IMEはクリアしない。 (void)OS_SetIrqMask( 0 ); - (void)OS_ResetRequestIrqMask( (u16)~0 ); + (void)OS_ResetRequestIrqMask( (u32)~0 ); // レジスタクリアは基本的に OS_Boot で行う }