00001 #include <string.h> 00002 #include <stdint.h> 00003 #include <free_align.h> 00004 #include <spu_mfcio.h> 00005 00006 #include <moc.h> 00007 #include <internal/spu/imoc_dma_spu.h> 00008 00009 int IMOC_wait_dma(imoc_dma_request* request) 00010 { 00011 mfc_write_tag_mask(1 << request->tag_id); 00012 mfc_read_tag_status_all(); 00013 if (request->remainder != 0) // check if buffer was used and copy back data from there to target 00014 { 00015 memcpy(request->target + request->size, request->buffer, 00016 request->remainder); 00017 free(request->buffer); 00018 } 00019 mfc_tag_release(request->tag_id); 00020 return MOC_SUCCESS; 00021 }
1.5.6