#include "SpuFakeDma.h" #include //for btAssert //Disabling memcpy sometimes helps debugging DMA #define USE_MEMCPY 1 ///this unalignedDma should not be frequently used, only for small data. It handles alignment and performs check on size (<16 bytes) int stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size) { btAssert(size<16); ATTRIBUTE_ALIGNED16(char tmpBuffer[32]); char* mainMem = (char*)ea; char* localStore = (char*)ls; uint32_t i; ///make sure last 4 bits are the same, for cellDmaSmallGet uint32_t last4BitsOffset = ea & 0x0f; char* tmpTarget = tmpBuffer + last4BitsOffset; #ifdef WIN32 #ifdef USE_MEMCPY memcpy(tmpTarget,mainMem,size); #else for ( i=0;i