sysmenuのbootライブラリを調整中

調査のため一時コミット

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@124 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2007-11-08 09:01:42 +00:00
parent 5156877b6e
commit 51a28badb2
3 changed files with 18 additions and 11 deletions

View File

@ -17,6 +17,7 @@
#include <twl.h>
#include <sysmenu/boot/common/boot.h>
#include <sysmenu/mmap.h>
//#include "loader.h"
//#include "mb_child.h"
@ -58,7 +59,7 @@ static asm void ClearMemory( void )
// bl CpuClear32Byte
ldr r0, = HW_WRAM // ARM7WRAMのクリア
ldr r1, = 1//RETURN_FROM_MAIN_ARM7_FUNCP
ldr r1, = RETURN_FROM_MAIN_ARM7_FUNCP
bl CpuClear32Byte
@ -107,7 +108,7 @@ static asm void ClearBankREG_Stack( void )
bl CpuClear32Byte
#endif // ISDBG_MB_CHILD_
sub r0, r2, #1 //#( HW_PRV_WRAM_END - RETURN_FROM_MAIN_ARM7_FUNCP )
sub r0, r2, #( HW_PRV_WRAM_END - RETURN_FROM_MAIN_ARM7_FUNCP )
ldr r1, = ClearMemory
bl CpuClear32Byte

View File

@ -21,7 +21,7 @@
//#include "mb_child.h"
// define data-------------------------------------------------------
#define MAINP_SEND_IF 0x0200
#define MAINP_SEND_IF 0xff00
// extern data-------------------------------------------------------
@ -68,7 +68,7 @@ static void BOOTi_ClearREG_RAM( void )
// SVC_CpuClearFast(0x0000, IPL2_PRV_WRAM_ARENA_LO, RETURN_FROM_MAIN_ARM7_FUNCP - IPL2_PRV_WRAM_ARENA_LO );
// アリーナのクリア
for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止
MI_StopDma( i );
MI_StopDma( (u16)i );
}
// レジスタのクリア
SVC_CpuClearFast( 0x0000, (void*)(HW_REG_BASE + 0x0b0), (0x13c - 0x0b0) );
@ -79,5 +79,5 @@ static void BOOTi_ClearREG_RAM( void )
reg_SPI_SPICNT = 0;
reg_PXI_MAINP_FIFO_CNT = 0x4008;
// クリアしていないレジスタは、VCOUNT, JOY, PIFCNT, MC-, EXMEMCNT, IME, PAUSE, POWLCDCNT, 他セキュリティ系です。
(void)OS_ResetRequestIrqMask(~0);
(void)OS_ResetRequestIrqMask((u16)~0);
}

View File

@ -22,6 +22,7 @@
//#include "define.h"
// define data-------------------------------------------------------
#define SUBP_RECV_IF_ENABLE 0x0f
// extern data-------------------------------------------------------
@ -39,6 +40,10 @@ void BOOT_Init( void )
reg_PXI_SUBPINTF = 0x0000;
}
static void ie_subphandler( void )
{
OS_SetIrqCheckFlag( OS_IE_SUBP );
}
// ブート準備をして、ARM7からの通知を待つ。
void BOOT_Ready( void )
@ -49,17 +54,18 @@ void BOOT_Ready( void )
// SYSMi_CheckEntryAddress();
for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止
MI_StopDma( i );
MI_StopDma( (u16)i );
}
// FinalizeCardPulledOut(); // カード抜け検出終了処理
BOOTi_ClearREG_RAM(); // レジスタRAMクリア
(void)GX_VBlankIntr( FALSE );
(void)OS_SetIrqFunction( OS_IE_SUBP, NULL );
(void)OS_SetIrqFunction( OS_IE_SUBP, ie_subphandler );
(void)OS_SetIrqMask( OS_IE_SUBP ); // サブプロセッサ割り込みのみを許可。
// reg_PXI_SUBPINTF = SUBP_RECV_IF_ENABLE | 0x0f00; // ARM9ステートを "0x0f" に
reg_PXI_SUBPINTF = SUBP_RECV_IF_ENABLE | 0x0f00; // ARM9ステートを "0x0f" に
// ※もうFIFOはクリア済みなので、使わない。
OS_EnableIrq();
// ARM7からの通知待ち
OS_WaitIrq( 1, OS_IE_SUBP );
@ -67,7 +73,7 @@ void BOOT_Ready( void )
reg_PXI_SUBPINTF &= 0x0f00; // サブプロセッサ割り込み許可フラグをクリア
(void)OS_DisableIrq();
(void)OS_SetIrqMask( 0 );
(void)OS_ResetRequestIrqMask( ~0 );
(void)OS_ResetRequestIrqMask( (u16)~0 );
BOOT_Core(); // never return
}
@ -78,7 +84,7 @@ static void BOOTi_ClearREG_RAM( void )
{
// 最後がサブプロセッサ割り込み待ちなので、IMEはクリアしない。
(void)OS_SetIrqMask( 0 );
(void)OS_ResetRequestIrqMask( ~0 );
(void)OS_ResetRequestIrqMask( (u16)~0 );
// メモリクリア
GX_SetBankForLCDC( GX_VRAM_LCDC_ALL ); // VRAM クリア