61 lines
1.2 KiB
C++
61 lines
1.2 KiB
C++
|
|
#include "SpuFakeDma.h"
|
|
|
|
//Disabling memcpy sometimes helps debugging DMA
|
|
|
|
#define USE_MEMCPY 1
|
|
|
|
int cellDmaLargeGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid)
|
|
{
|
|
char* mainMem = (char*)ea;
|
|
char* localStore = (char*)ls;
|
|
|
|
#ifdef USE_MEMCPY
|
|
memcpy(localStore,mainMem,size);
|
|
#else
|
|
for (uint32_t i=0;i<size;i++)
|
|
{
|
|
localStore[i] = mainMem[i];
|
|
}
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
int cellDmaGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid)
|
|
{
|
|
char* mainMem = (char*)ea;
|
|
char* localStore = (char*)ls;
|
|
#ifdef USE_MEMCPY
|
|
memcpy(localStore,mainMem,size);
|
|
#else
|
|
for (uint32_t i=0;i<size;i++)
|
|
{
|
|
localStore[i] = mainMem[i];
|
|
}
|
|
#endif //#ifdef USE_MEMCPY
|
|
return 0;
|
|
}
|
|
|
|
int cellDmaLargePut(const void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid)
|
|
{
|
|
char* mainMem = (char*)ea;
|
|
const char* localStore = (const char*)ls;
|
|
#ifdef USE_MEMCPY
|
|
memcpy(mainMem,localStore,size);
|
|
#else
|
|
for (uint32_t i=0;i<size;i++)
|
|
{
|
|
mainMem[i] = localStore[i];
|
|
}
|
|
#endif //#ifdef USE_MEMCPY
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void cellDmaWaitTagStatusAll(int ignore)
|
|
{
|
|
|
|
}
|