21#define gif_chcr 0x1000a000
23#define gif_madr 0x1000a010
25#define gif_qwc 0x1000a020
26#define gif_tadr 0x1000a030
28 #define DMA_TAG_REFE 0x00
29 #define DMA_TAG_CNT 0x01
30 #define DMA_TAG_NEXT 0x02
31 #define DMA_TAG_REF 0x03
32 #define DMA_TAG_REFS 0x04
33 #define DMA_TAG_CALL 0x05
34 #define DMA_TAG_RET 0x06
35 #define DMA_TAG_END 0x07
88void GsDmaSend(
const void *addr, u32 qwords)
93 if((u32)addr >= 0x70000000 && (u32)addr <= 0x70003fff)
102 *((vu32 *)(gif_madr)) = ( u32 )((( u32 )addr) & 0x7FFFFFFF) << 0 | (u32)((spr) & 0x00000001) << 31;;
104 *((vu32 *)(gif_qwc)) = qwords;
120 *((
volatile DMA_CHCR *)(gif_chcr)) = chcr;
123void GsDmaSend_tag(
const void *addr, u32 qwords,
const GS_GIF_DMACHAIN_TAG *tag)
128 if((u32)addr >= 0x70000000 && (u32)addr <= 0x70003fff)
137 *((vu32 *)(gif_madr)) = ( u32 )((( u32 )addr) & 0x7FFFFFFF) << 0 | (u32)((spr) & 0x00000001) << 31;
138 *((vu32 *)(gif_qwc)) = qwords;
139 *((vu32 *)(gif_tadr)) = ( u32 )((( u32 )tag) & 0x7FFFFFFF) << 0 | (u32)((0) & 0x00000001) << 31;
155 *((
volatile DMA_CHCR *)(gif_chcr)) = chcr;
160 while(*((vu32 *)(0x1000a000)) & ((u32)1<<8));