summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-07 21:07:40 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-07 21:47:28 -0400
commit509c3aeb568821fbde76ffe6c0ebb327fcd043c0 (patch)
tree9e829e1075a6fe28986bb00a159864c601124a52 /src
parent049085c761424a69011c8fd2ccf6202ec671e37d (diff)
Stack-free IWRAM clear
Diffstat (limited to 'src')
-rw-r--r--src/main.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 75845213f..5cb8039c7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -93,7 +93,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, (void *)0x03000000, 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