summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-07 21:07:30 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-07 21:41:11 -0400
commit7fd327d63279bb01492da57be6d6091be435d19c (patch)
tree0d102c901918b610df5c0b6fa89102eea402e757 /src/main.c
parent8d224bf941d86a6603d2ae217c87caa2743994f7 (diff)
Stack-free IWRAM clear
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 47a957ce0..06425e661 100644
--- a/src/main.c
+++ b/src/main.c
@@ -89,7 +89,20 @@ void AgbMain()
// Modern compilers are liberal with the stack on entry to this function,
// so RegisterRamReset may crash if it resets IWRAM.
RegisterRamReset(RESET_ALL & ~RESET_IWRAM);
- DmaFill32(3, 0, IWRAM_START, 0x7E00);
+ asm("mov\tr1, #0xC0\n"
+ "\tlsl\tr1, r1, #0x12\n"
+ "\tmov r2, #0xFC\n"
+ "\tlsl r2, r2, #0x7\n"
+ "\tadd\tr2, r1, r2\n"
+ "\tmov\tr0, #0\n"
+ "\tmov\tr3, r0\n"
+ "\tmov\tr4, r0\n"
+ "\tmov\tr5, r0\n"
+ ".LCU0:\n"
+ "\tstmia r1!, {r0, r3, r4, r5}\n"
+ "\tcmp\tr1, r2\n"
+ "\tbcc\t.LCU0\n"
+ );
#else
RegisterRamReset(RESET_ALL);
#endif //MODERN