29 lines
727 B
C
29 lines
727 B
C
#include "common.h"
|
|
|
|
extern OSPiHandle* carthandle;
|
|
|
|
/* 1A4F0 8008A0F0 */
|
|
void romCopy(u32 devAddr, void* dramAddr, u32 size, s32 direction) {
|
|
OSIoMesg dmaIoMesgBuf;
|
|
OSMesgQueue dmaMessageQ;
|
|
void* dummyMesg;
|
|
|
|
osCreateMesgQueue(&dmaMessageQ, &dummyMesg, 1);
|
|
|
|
dmaIoMesgBuf.hdr.pri = OS_MESG_PRI_NORMAL;
|
|
dmaIoMesgBuf.hdr.retQueue = &dmaMessageQ;
|
|
dmaIoMesgBuf.dramAddr = dramAddr;
|
|
dmaIoMesgBuf.devAddr = devAddr;
|
|
dmaIoMesgBuf.size = size;
|
|
|
|
if (direction == OS_READ) {
|
|
osInvalDCache(dramAddr, size);
|
|
} else {
|
|
osWritebackDCache(dramAddr, size);
|
|
}
|
|
|
|
osEPiStartDma(carthandle, &dmaIoMesgBuf, direction);
|
|
osRecvMesg(&dmaMessageQ, &dummyMesg, OS_MESG_BLOCK);
|
|
}
|
|
|