mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
sysmenuのbootライブラリを調整中
調査のため一時コミット git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@124 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
5156877b6e
commit
51a28badb2
@ -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
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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 クリア
|
||||
|
||||
Loading…
Reference in New Issue
Block a user