| 463 | } |
| 464 | |
| 465 | void dmaGIF() |
| 466 | { |
| 467 | // DevCon.Warning("dmaGIFstart chcr = %lx, madr = %lx, qwc = %lx\n tadr = %lx, asr0 = %lx, asr1 = %lx", gifch.chcr._u32, gifch.madr, gifch.qwc, gifch.tadr, gifch.asr0, gifch.asr1); |
| 468 | |
| 469 | gif.gspath3done = false; // For some reason this doesn't clear? So when the system starts the thread, we will clear it :) |
| 470 | CPU_SET_DMASTALL(DMAC_GIF, false); |
| 471 | if (gifch.chcr.MOD == NORMAL_MODE) |
| 472 | { // Else it really is a normal transfer and we want to quit, else it gets confused with chains |
| 473 | gif.gspath3done = true; |
| 474 | } |
| 475 | |
| 476 | if (gifch.chcr.MOD == CHAIN_MODE && gifch.qwc > 0) |
| 477 | { |
| 478 | //DevCon.Warning(L"GIF QWC on Chain " + gifch.chcr.desc()); |
| 479 | if ((gifch.chcr.tag().ID == TAG_REFE) || (gifch.chcr.tag().ID == TAG_END) || (gifch.chcr.tag().IRQ && gifch.chcr.TIE)) |
| 480 | { |
| 481 | gif.gspath3done = true; |
| 482 | } |
| 483 | } |
| 484 | |
| 485 | gifInterrupt(); |
| 486 | } |
| 487 | |
| 488 | static u32 QWCinGIFMFIFO(u32 DrainADDR) |
| 489 | { |
nothing calls this directly
no test coverage detected