#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); }