rem: kprintf("e");
context: WarpUpCallMixer( struct AHIPrivAudioCtrl* audioctrl,                 void* dst ){#ifdef __PPC__  // Crash and burn! We shouldn't be here!  KPrintF( "WarpUpCallMixer() called from PPC code!\n" );#else  // Calls the PPC mixing code to fill a buffer with mixed samples  struct AHISoundData *sd;  int                  i;  BOOL                 flushed = FALSE;kprintf("M");  // Flush all DYNAMICSAMPLE's  sd = audioctrl->ahiac_SoundDatas;  for( i = 0; i < audioctrl->ac.ahiac_Sounds; i++)  {    if( sd->sd_Type == AHIST_DYNAMICSAMPLE )    {      if( sd->sd_Addr == NULL )      {kprintf("a");        // Flush all and exit        CacheClearU();        flushed = TRUE;        break;      }      else      {kprintf("b");        SetCache68K( CACHE_DCACHEFLUSH,                     sd->sd_Addr,                     sd->sd_Length * AHI_SampleFrameSize( sd->sd_Type ) );      }kprintf("c");    }    sd++;  }kprintf("d");  if( ! flushed )  {    /* Since the PPC mix buffer is m68k cacheable in WarpUp, we have to       flush, or better, *invalidate* the cache before mixing starts. */    SetCache68K( CACHE_DCACHEFLUSH,                 audioctrl->ahiac_PowerPCContext->MixBuffer,                 audioctrl->ahiac_BuffSizeNow );  }kprintf("e");  audioctrl->ahiac_PowerPCContext->Hook         = audioctrl->ac.ahiac_MixerFunc;  audioctrl->ahiac_PowerPCContext->Dst          = audioctrl->ahiac_PowerPCContext->MixBuffer;  audioctrl->ahiac_PowerPCContext->Active       = TRUE;  audioctrl->ahiac_PowerPCContext->Command      = PPCC_COM_START;  CausePPCInterrupt();kprintf("f");  while( audioctrl->ahiac_PowerPCContext->Command != PPCC_COM_ACK );kprintf("g");  audioctrl->ahiac_PowerPCContext->Command      = PPCC_COM_CONTINUE;kprintf("h");  while( audioctrl->ahiac_PowerPCContext->Command != PPCC_COM_FINISHED );kprintf("i");#endif /* __PPC__ */}