static READ16_HANDLER(dsp_BIO_r) { if ( cpu_get_pc(space->cpu) == 0x0001 ) { if ( dsp_idle == 0 ) { dsp_idle = 1; dsp_BIO = 0; } return !dsp_BIO; } else if ( cpu_get_pc(space->cpu) == 0x0003 ) { if ( dsp_BIO == 1 ) { dsp_idle = 0; dsp_BIO = 0; cputag_resume(space->machine, "maincpu", SUSPEND_REASON_SPIN ); return 0; } else { assert(0); return 0; } } else { return !dsp_BIO; } }
static void IntReq(running_machine *machine, int num) { const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); UINT32 IntEn=memory_read_dword(space, 0x01800c08); UINT32 IntPend=memory_read_dword(space, 0x01800c0c); if(IntEn & (1 << num)) { IntPend |= (1 << num); memory_write_dword(space, 0x01800c0c, IntPend); cputag_set_input_line(machine, "maincpu", SE3208_INT, ASSERT_LINE); } #ifdef IDLE_LOOP_SPEEDUP FlipCntRead = 0; cputag_resume(machine, "maincpu", SUSPEND_REASON_SPIN); #endif }
void jaguar_dsp_resume(running_machine *machine) { cputag_resume(machine, "audiocpu", SUSPEND_REASON_SPIN); }