00001 #include <spu_mfcio.h> 00002 #include <string.h> 00003 00004 #include <moc.h> 00005 #include <spu/moc_dma_spu.h> 00006 #include <internal/imoc.h> 00007 #include <internal/imoc_macros.h> 00008 #include <internal/spu/imoc_dma_spu.h> 00009 00010 int MOC_IGet_data(void* target, uint64_t source, int count, 00011 MOC_Datatype datatype, MOC_Request *request) 00012 { 00013 int bytecount; 00014 00015 if (((datatype & 0xF0) >> 4) == 0) 00016 bytecount = count; 00017 else 00018 bytecount = count * (((datatype & 0xF0) >> 4) * 2); 00019 00020 if (target == 0 || source == 0 || bytecount == 0) 00021 return 0; 00022 if ((((uint32_t) target) % 16) != 0 || (source % 16) != 0) 00023 return MOC_ERR_BAD_ALIGNMENT; 00024 IMOC_TEST_BYTECOUNT(bytecount) 00025 00026 request->request_type = MOC_REQ_TYPE_DMA; 00027 00028 return IMOC_iget_data(target, source, bytecount, 00029 &request->request_data.dma_data); 00030 } 00031
1.5.6