ブート時のカメラ停止。

割り込み制御の48bit化。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@372 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2007-12-18 09:13:42 +00:00
parent d74e44c5ad
commit ff0868ebee
2 changed files with 13 additions and 6 deletions

View File

@ -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);
}

View File

@ -16,6 +16,7 @@
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <twl/camera.h>
#include <twl/os/common/format_rom.h>
#include <sysmenu.h>
#include <firm/format/wram_regs.h>
@ -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 で行う
}