diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-07 21:07:40 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-07 21:47:28 -0400 |
commit | 509c3aeb568821fbde76ffe6c0ebb327fcd043c0 (patch) | |
tree | 9e829e1075a6fe28986bb00a159864c601124a52 /src | |
parent | 049085c761424a69011c8fd2ccf6202ec671e37d (diff) |
Stack-free IWRAM clear
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 15 |
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 |