void RegisterInterrupts() { s32 ret; DisableIntr(0x24, (int *)&ret); DisableIntr(0x28, (int *)&ret); DisableIntr(0x9, (int *)&ret); ReleaseIntrHandler(0x24); ReleaseIntrHandler(0x28); RegisterIntrHandler(0x24, 1, TransInterrupt, &TransIntrData[0]); RegisterIntrHandler(0x28, 1, TransInterrupt, &TransIntrData[1]); VoiceTransComplete[0] = 0; VoiceTransComplete[1] = 0; ReleaseIntrHandler(0x9); RegisterIntrHandler(0x9, 1, Spu2Interrupt, &Spu2IntrData); }
//////////////////////////////entrypoint///////////////////////////////[00] int _start(){ register int *v, i; _dprintf("%s\n", __FUNCTION__); if (v=QueryBootMode(3)){ _dprintf("bootmode: %x\n", v[1]); if (v[1] & 1){ printf("%s No SIF service(sifcmd)\n", __FUNCTION__);return 1;} if (v[1] & 2){ printf("%s No SIFCMD/RPC service\n", __FUNCTION__); return 1;} } if (SifCheckInit()==0) SifInit(); if (RegisterLibraryEntries(&sifcmd_stub)) return 1; cmd_common.sif1_rcvBuffer=sif1_rcvBuffer; cmd_common.b=b; cmd_common.sysCmdBuffer=sysCmds; cmd_common.sysCmdBufferSize=32; cmd_common.saddr=0; cmd_common.cmdBuffer=0; cmd_common.cmdBufferSize=0; cmd_common.Sreg=Sreg; cmd_common.func=0; cmd_common.param=0; for (i=0; i<32; i++) { sysCmds[i].func=0; sysCmds[i].data=0; } for (i=0; i<32; i++) { Sreg[i]=0; } sysCmds[0].func=(cmdh_func)cmd80000000_CHANGE_SADDR; sysCmds[0].data=&cmd_common; sysCmds[1].func=(cmdh_func)cmd80000001_SET_SREG; sysCmds[1].data=&cmd_common; cmd_common.systemStatusFlag=GetSystemStatusFlag(); sysCmds[2].func=(cmdh_func)cmd80000002_INIT_CMD; sysCmds[2].data=&cmd_common; RegisterIntrHandler(INT_DMA10, 1, SIF1_handler, (void*)&cmd_common); EnableIntr(INT_DMA10 | IMODE_DMA_IQE); SifSetIOPrcvaddr((u32)sif1_rcvBuffer); return 0; }
int _start ( int argc, const char** argv ) { int retVal = MODULE_NO_RESIDENT_END; if ( RegisterLibraryEntries ( &_exp_sio2man ) == 0 ) { int lState; int lThreadID; iop_thread_t lThread; iop_event_t lEvent; lEvent.attr = 2; lEvent.bits = 0; s_EventFlag = CreateEventFlag ( &lEvent ); lThread.attr = TH_C; lThread.thread = _MainThread; lThread.stacksize = 0x2000; lThread.priority = 24; lThreadID = CreateThread ( &lThread ); s_Callback0 = NULL; s_Callback1 = NULL; s_Callback2 = NULL; s_Callback3 = NULL; SIO2_SetCtrl3BC (); CpuSuspendIntr ( &lState ); RegisterIntrHandler ( IOP_IRQ_SIO2, 1, _IntHandler, &s_EventFlag ); EnableIntr ( IOP_IRQ_SIO2 ); CpuResumeIntr ( lState ); dmac_ch_set_dpcr ( IOP_DMAC_SIO2in, 3 ); dmac_ch_set_dpcr ( IOP_DMAC_SIO2out, 3 ); dmac_enable ( IOP_DMAC_SIO2in ); dmac_enable ( IOP_DMAC_SIO2out ); StartThread ( lThreadID, NULL ); retVal = MODULE_RESIDENT_END; } /* end if */ return retVal; } /* end _start */
int _start(int argc, char *argv[]) { iop_event_t event; int semid, evflg, res; if ((semid = CreateMutex(IOP_MUTEX_UNLOCKED)) < 0) { E_PRINTF("Unable to create %s (error %d).\n", "semaphore", semid); return 1; } eng_args.semid = semid; event.attr = event.bits = 0; if ((evflg = CreateEventFlag(&event)) < 0) { E_PRINTF("Unable to create %s (error %d).\n", "event flag", evflg); return 1; } eng_args.evflg = evflg; CpuEnableIntr(); DisableIntr(IOP_IRQ_DMA_DEV9, NULL); if ((res = RegisterIntrHandler(IOP_IRQ_DMA_DEV9, 1, dev9_dma_handler, &eng_args.evflg))) { E_PRINTF("Unable to register 0x%02x intr handler (error %d).\n", IOP_IRQ_DMA_DEV9, res); return 1; } _sw(_lw(0xbf801570) | 0x80, 0xbf801570); if ((res = ata_engine_init(&eng_args)) < 0) { E_PRINTF("Unable to initialize the %s DMA engine.\n", "ATA"); return 1; } if ((res = smap_engine_init(&eng_args)) < 0) { E_PRINTF("Unable to initialize the %s DMA engine.\n", "SMAP"); return 1; } M_PRINTF("ATA/SMAP DMA relay module initialized.\n"); return 0; }
/* * - Register SBUS handler * - Clear handler table */ int sbus_intr_init() { int i, state, res = 0; if (initialized) return res; CpuSuspendIntr(&state); for (i = 0; i < 32; ++i) { sbus_handler_table[i].handler = NULL; sbus_handler_table[i].arg = NULL; } if (RegisterIntrHandler(IOP_IRQ_SBUS, 1, sbus_dispatch, NULL) < 0) { res = -SBUS_E_INIT; goto out; } EnableIntr(IOP_IRQ_SBUS); initialized = 1; out: CpuResumeIntr(state); return res; }
int _start(int argc, const char **argv) { int state; shutdown(); if (RegisterLibraryEntries(&_exp_sio2man) != 0) return 1; if (init) return 1; init = 1; sio2_ctrl_set(0x3bc); cb1 = NULL; cb2 = NULL; cb3 = NULL; cb4 = NULL; event_flag = create_event_flag(); thid = create_main_thread(); CpuSuspendIntr(&state); RegisterIntrHandler(IOP_IRQ_SIO2, 1, sio2_intr_handler, &event_flag); EnableIntr(IOP_IRQ_SIO2); CpuResumeIntr(state); dmac_ch_set_dpcr(IOP_DMAC_SIO2in, 3); dmac_ch_set_dpcr(IOP_DMAC_SIO2out, 3); dmac_enable(IOP_DMAC_SIO2in); dmac_enable(IOP_DMAC_SIO2out); StartThread(thid, NULL); #ifndef XSIO2MAN EPRINTF("Logging started.\n"); #endif return 0; }