Esempio n. 1
0
void bootstrapArm7()
{
	REG_IME = 1;
	#ifndef BOOTHB
	while(sendipcmsg(12, 0x10<<8)<0);
	#endif
	while(REG_VCOUNT!=192);//Wait for Arm7 to enter TWL SDK bootstub, by waiting for a vblank.
	while(REG_VCOUNT==192);
	REG_IME = 0;

	REG_IE = 0;
	REG_IF = ~0;

	#ifndef BOOTHB
	#ifndef TWL
	*((vu32*)0x027e3ffc) = 0;//Disable the IRQ handler.
	#else
	*((vu32*)0x02fe3ffc) = 0;
	#endif
	#endif

	#ifndef BOOTHB
	if(DSi_mode)bootstrapArm7DSiSync();
	while(IPC_GetSync()!=1);
	IPC_SendSync(1);
	#endif

	#ifndef BOOTHB
	while(IPC_GetSync()==1);
	#endif
	ndsloadstub();
}
Esempio n. 2
0
void InterruptHandler_IPC_SYNC(void) 
{
    u8 sync;

    sync = IPC_GetSync();

    {
        int oldval, newval;
        
        newval = oldval = readPowerManagement(PM_CONTROL_REG);

        if(sync == IPC2_REQUEST_SET_BACKLIGHTS_OFF)
            newval = oldval & ~PM_BACKLIGHT_TOP & ~PM_BACKLIGHT_BOTTOM;

        else if(sync == IPC2_REQUEST_SET_BACKLIGHTS_ON)
            newval = oldval | PM_BACKLIGHT_TOP | PM_BACKLIGHT_BOTTOM;

        else if(sync == IPC2_REQUEST_LEDBLINK_OFF)
            newval = oldval & ~PM_LED_BLINK;

        else if(sync == IPC2_REQUEST_LEDBLINK_ON)
            newval = oldval | PM_LED_BLINK;

        writePowerManagement(PM_CONTROL_REG, newval);
    }
}