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