summaryrefslogtreecommitdiff
path: root/arm7/lib/src/MI_dma.c
diff options
context:
space:
mode:
authorCleverking2003 <30466983+Cleverking2003@users.noreply.github.com>2020-06-12 20:59:21 +0300
committerGitHub <noreply@github.com>2020-06-12 20:59:21 +0300
commit45f97db651b38ea41d33402efea293e50a31725a (patch)
tree88356e29ef6430c23f215e782ff38bc6f166b901 /arm7/lib/src/MI_dma.c
parente672765bfe4b9272e91309872b01730dc3b6d3f7 (diff)
parent89552d3e1637383b6c974100a89ea0909d121125 (diff)
Merge pull request #161 from Cleverking2003/master
Decompile arm7 MI
Diffstat (limited to 'arm7/lib/src/MI_dma.c')
-rw-r--r--arm7/lib/src/MI_dma.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/arm7/lib/src/MI_dma.c b/arm7/lib/src/MI_dma.c
new file mode 100644
index 00000000..fc2ff0c9
--- /dev/null
+++ b/arm7/lib/src/MI_dma.c
@@ -0,0 +1,36 @@
+#include "function_target.h"
+#include "MI_dma.h"
+#include "OS_system.h"
+
+ARM_FUNC void MI_WaitDma(u32 channel) {
+ OSIntrMode mode = OS_DisableInterrupts();
+ vu32 * addr = (vu32 *)(REG_ADDR_DMA0SAD + (channel * 3 + 2) * 4);
+ while(addr[0] & 0x80000000) ;
+ if (channel == 0) {
+ addr = (vu32 *)(REG_ADDR_DMA0SAD + channel * 12);
+ addr[0] = 0;
+ addr[1] = 0;
+ addr[2] = 0x81400001;
+ }
+ mode = OS_RestoreInterrupts(mode);
+}
+
+ARM_FUNC void MI_StopDma(u32 channel) {
+ OSIntrMode mode = OS_DisableInterrupts();
+ vu16 * addr = (vu16 *)(REG_ADDR_DMA0SAD + (channel * 6 + 5) * 2);
+ addr[0] &= ~(DMA_START_MASK | DMA_REPEAT);
+ addr[0] &= ~DMA_ENABLE;
+ {
+ s32 dummy = addr[0];
+ }
+ {
+ s32 dummy = addr[0];
+ }
+ if (channel == 0) {
+ vu32 * addr32 = (vu32 *)(REG_ADDR_DMA0SAD + channel * 12);
+ addr32[0] = 0;
+ addr32[1] = 0;
+ addr32[2] = 0x81400001;
+ }
+ mode = OS_RestoreInterrupts(mode);
+}