diff options
author | YamaArashi <shadow962@live.com> | 2016-01-31 04:29:44 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-01-31 04:29:44 -0800 |
commit | 6f1c90830216227a428e60c12da7c8b7a8f01b46 (patch) | |
tree | 1200c7e03ccb10df9ea7a82938781813da4d30a2 /include/gba/macro.h | |
parent | 179ebd2dbc75c65b41c9ccd634f356266649d13a (diff) |
string_util.c
Diffstat (limited to 'include/gba/macro.h')
-rw-r--r-- | include/gba/macro.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/include/gba/macro.h b/include/gba/macro.h new file mode 100644 index 000000000..42830d47c --- /dev/null +++ b/include/gba/macro.h @@ -0,0 +1,52 @@ +#ifndef GUARD_GBA_MACRO_H +#define GUARD_GBA_MACRO_H + +#define CPU_FILL(dest, value, size, bit) \ +do { \ + vu##bit tmp = (vu##bit)(value); \ + CpuSet((void *)&tmp, \ + dest, \ + CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size)/(bit/8) & 0x1FFFFF)); \ +} while (0) + +#define CpuFill16(dest, value, size) CPU_FILL(dest, value, size, 16) +#define CpuFill32(dest, value, size) CPU_FILL(dest, value, size, 32) + +#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size)/(bit/8) & 0x1FFFFF)) + +#define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16) +#define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32) + +#define DmaSet(dmaNum, src, dest, controlData) \ +do { \ + vu32 *dmaRegs = (vu32 *)REG_ADDR_DMA##dmaNum; \ + dmaRegs[0] = (vu32)(src); \ + dmaRegs[1] = (vu32)(dest); \ + dmaRegs[2] = (vu32)(controlData); \ + dmaRegs[2]; \ +} while (0) + +#define DMA_FILL(dmaNum, dest, value, size, bit) \ +do { \ + vu##bit tmp = (vu##bit)(value); \ + DmaSet(dmaNum, \ + &tmp, \ + dest, \ + (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 \ + | ((size)/(bit/8))); \ +} while (0) + +#define DmaFill16(dmaNum, dest, value, size) DMA_FILL(dmaNum, dest, value, size, 16) +#define DmaFill32(dmaNum, dest, value, size) DMA_FILL(dmaNum, dest, value, size, 32) + +#define DMA_COPY(dmaNum, src, dest, size, bit) \ + DmaSet(dmaNum, \ + src, \ + dest, \ + (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 \ + | ((size)/(bit/8))) + +#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) +#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) + +#endif // GUARD_GBA_MACRO_H |