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(); }
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); } }