X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2F32x%2Fsh2soc.c;h=04d33748185bd83c7a043a1075758ef506491921;hb=ae214f1c37e5b02b6413040649a40f8ba3874e1b;hp=bdf349f27b16b54ca04df85503fee96eb14ddc83;hpb=f8675e282e7aa72bc6ab0edbb1dada4395d1c44c;p=picodrive.git diff --git a/pico/32x/sh2soc.c b/pico/32x/sh2soc.c index bdf349f..04d3374 100644 --- a/pico/32x/sh2soc.c +++ b/pico/32x/sh2soc.c @@ -73,7 +73,7 @@ static void dmac_transfer_complete(SH2 *sh2, struct dma_chan *chan) { chan->chcr |= DMA_TE; // DMA has ended normally - p32x_sh2_poll_event(sh2, SH2_STATE_SLEEP, SekCyclesDoneT()); + p32x_sh2_poll_event(sh2, SH2_STATE_SLEEP, SekCyclesDone()); if (chan->chcr & DMA_IE) dmac_te_irq(sh2, chan); } @@ -150,6 +150,10 @@ static void dmac_trigger(SH2 *sh2, struct dma_chan *chan) return; } + // DREQ1 + if ((chan->dar & 0xc7fffff0) == 0x00004030) + return; + elprintf(EL_32XP|EL_ANOMALY, "unhandled DMA: " "%08x->%08x, cnt %d, chcr %04x @%06x", chan->sar, chan->dar, chan->tcr, chan->chcr, sh2->pc); @@ -497,8 +501,19 @@ void p32x_dreq1_trigger(void) hit = 1; } - if (!hit) - elprintf(EL_32XP|EL_ANOMALY, "dreq1: nobody cared"); + // debug +#if (EL_LOGMASK & (EL_32XP|EL_ANOMALY)) + { + static int miss_count; + if (!hit) { + if (++miss_count == 4) + elprintf(EL_32XP|EL_ANOMALY, "dreq1: nobody cared"); + } + else + miss_count = 0; + } +#endif + (void)hit; } // vim:shiftwidth=2:ts=2:expandtab