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 <twl.h>
|
||||||
#include <sysmenu/boot/common/boot.h>
|
#include <sysmenu/boot/common/boot.h>
|
||||||
|
#include <sysmenu/mmap.h>
|
||||||
//#include "loader.h"
|
//#include "loader.h"
|
||||||
//#include "mb_child.h"
|
//#include "mb_child.h"
|
||||||
|
|
||||||
@ -58,7 +59,7 @@ static asm void ClearMemory( void )
|
|||||||
// bl CpuClear32Byte
|
// bl CpuClear32Byte
|
||||||
|
|
||||||
ldr r0, = HW_WRAM // ARM7WRAMのクリア
|
ldr r0, = HW_WRAM // ARM7WRAMのクリア
|
||||||
ldr r1, = 1//RETURN_FROM_MAIN_ARM7_FUNCP
|
ldr r1, = RETURN_FROM_MAIN_ARM7_FUNCP
|
||||||
bl CpuClear32Byte
|
bl CpuClear32Byte
|
||||||
|
|
||||||
|
|
||||||
@ -107,7 +108,7 @@ static asm void ClearBankREG_Stack( void )
|
|||||||
bl CpuClear32Byte
|
bl CpuClear32Byte
|
||||||
#endif // ISDBG_MB_CHILD_
|
#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
|
ldr r1, = ClearMemory
|
||||||
bl CpuClear32Byte
|
bl CpuClear32Byte
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
//#include "mb_child.h"
|
//#include "mb_child.h"
|
||||||
|
|
||||||
// define data-------------------------------------------------------
|
// define data-------------------------------------------------------
|
||||||
#define MAINP_SEND_IF 0x0200
|
#define MAINP_SEND_IF 0xff00
|
||||||
|
|
||||||
// extern data-------------------------------------------------------
|
// 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 );
|
// 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の停止
|
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) );
|
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_SPI_SPICNT = 0;
|
||||||
reg_PXI_MAINP_FIFO_CNT = 0x4008;
|
reg_PXI_MAINP_FIFO_CNT = 0x4008;
|
||||||
// クリアしていないレジスタは、VCOUNT, JOY, PIFCNT, MC-, EXMEMCNT, IME, PAUSE, POWLCDCNT, 他セキュリティ系です。
|
// クリアしていないレジスタは、VCOUNT, JOY, PIFCNT, MC-, EXMEMCNT, IME, PAUSE, POWLCDCNT, 他セキュリティ系です。
|
||||||
(void)OS_ResetRequestIrqMask(~0);
|
(void)OS_ResetRequestIrqMask((u16)~0);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
//#include "define.h"
|
//#include "define.h"
|
||||||
|
|
||||||
// define data-------------------------------------------------------
|
// define data-------------------------------------------------------
|
||||||
|
#define SUBP_RECV_IF_ENABLE 0x0f
|
||||||
|
|
||||||
// extern data-------------------------------------------------------
|
// extern data-------------------------------------------------------
|
||||||
|
|
||||||
@ -39,6 +40,10 @@ void BOOT_Init( void )
|
|||||||
reg_PXI_SUBPINTF = 0x0000;
|
reg_PXI_SUBPINTF = 0x0000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ie_subphandler( void )
|
||||||
|
{
|
||||||
|
OS_SetIrqCheckFlag( OS_IE_SUBP );
|
||||||
|
}
|
||||||
|
|
||||||
// ブート準備をして、ARM7からの通知を待つ。
|
// ブート準備をして、ARM7からの通知を待つ。
|
||||||
void BOOT_Ready( void )
|
void BOOT_Ready( void )
|
||||||
@ -49,17 +54,18 @@ void BOOT_Ready( void )
|
|||||||
// SYSMi_CheckEntryAddress();
|
// SYSMi_CheckEntryAddress();
|
||||||
|
|
||||||
for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止
|
for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止
|
||||||
MI_StopDma( i );
|
MI_StopDma( (u16)i );
|
||||||
}
|
}
|
||||||
|
|
||||||
// FinalizeCardPulledOut(); // カード抜け検出終了処理
|
// FinalizeCardPulledOut(); // カード抜け検出終了処理
|
||||||
BOOTi_ClearREG_RAM(); // レジスタ&RAMクリア
|
BOOTi_ClearREG_RAM(); // レジスタ&RAMクリア
|
||||||
(void)GX_VBlankIntr( FALSE );
|
(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 ); // サブプロセッサ割り込みのみを許可。
|
(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はクリア済みなので、使わない。
|
// ※もうFIFOはクリア済みなので、使わない。
|
||||||
|
|
||||||
|
OS_EnableIrq();
|
||||||
// ARM7からの通知待ち
|
// ARM7からの通知待ち
|
||||||
OS_WaitIrq( 1, OS_IE_SUBP );
|
OS_WaitIrq( 1, OS_IE_SUBP );
|
||||||
|
|
||||||
@ -67,7 +73,7 @@ void BOOT_Ready( void )
|
|||||||
reg_PXI_SUBPINTF &= 0x0f00; // サブプロセッサ割り込み許可フラグをクリア
|
reg_PXI_SUBPINTF &= 0x0f00; // サブプロセッサ割り込み許可フラグをクリア
|
||||||
(void)OS_DisableIrq();
|
(void)OS_DisableIrq();
|
||||||
(void)OS_SetIrqMask( 0 );
|
(void)OS_SetIrqMask( 0 );
|
||||||
(void)OS_ResetRequestIrqMask( ~0 );
|
(void)OS_ResetRequestIrqMask( (u16)~0 );
|
||||||
|
|
||||||
BOOT_Core(); // never return
|
BOOT_Core(); // never return
|
||||||
}
|
}
|
||||||
@ -78,7 +84,7 @@ static void BOOTi_ClearREG_RAM( void )
|
|||||||
{
|
{
|
||||||
// 最後がサブプロセッサ割り込み待ちなので、IMEはクリアしない。
|
// 最後がサブプロセッサ割り込み待ちなので、IMEはクリアしない。
|
||||||
(void)OS_SetIrqMask( 0 );
|
(void)OS_SetIrqMask( 0 );
|
||||||
(void)OS_ResetRequestIrqMask( ~0 );
|
(void)OS_ResetRequestIrqMask( (u16)~0 );
|
||||||
|
|
||||||
// メモリクリア
|
// メモリクリア
|
||||||
GX_SetBankForLCDC( GX_VRAM_LCDC_ALL ); // VRAM クリア
|
GX_SetBankForLCDC( GX_VRAM_LCDC_ALL ); // VRAM クリア
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user