#include "libultra_internal.h" #include "hardware.h" s32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size) { if (__osSpDeviceBusy()) return -1; HW_REG(SP_MEM_ADDR_REG, void *) = sp_ptr; HW_REG(SP_DRAM_ADDR_REG, void *) = (void *) osVirtualToPhysical(dram_ptr); if (dir == 0) HW_REG(SP_WR_LEN_REG, u32) = size - 1; else HW_REG(SP_RD_LEN_REG, u32) = size - 1; return 0; }