diff --git a/build/libraries_sysmenu/boot/ARM7/src/boot.c b/build/libraries_sysmenu/boot/ARM7/src/boot.c index 21c6cca5..6fc310d8 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/boot.c +++ b/build/libraries_sysmenu/boot/ARM7/src/boot.c @@ -17,6 +17,7 @@ #include #include +#include //#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 diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index f020e251..e6a1a339 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -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); } diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index cbd6738d..900e3fa0 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -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 クリア