Merge pull request #1217 from ipatix/fix_O3
rewrite MultiBootWaitCycles as naked function
This commit is contained in:
+17
-16
@@ -1,3 +1,4 @@
|
|||||||
|
#include "global.h"
|
||||||
#include "gba/gba.h"
|
#include "gba/gba.h"
|
||||||
#include "multiboot.h"
|
#include "multiboot.h"
|
||||||
|
|
||||||
@@ -435,23 +436,23 @@ static int MultiBootHandShake(struct MultiBootParam *mp)
|
|||||||
#undef must_data
|
#undef must_data
|
||||||
}
|
}
|
||||||
|
|
||||||
static NOINLINE void MultiBootWaitCycles(u32 cycles)
|
NAKED
|
||||||
|
static void MultiBootWaitCycles(u32 cycles)
|
||||||
{
|
{
|
||||||
asm("mov r2, pc");
|
asm_unified("\
|
||||||
asm("lsr r2, #24");
|
mov r2, pc\n\
|
||||||
asm("mov r1, #12");
|
lsrs r2, 24\n\
|
||||||
asm("cmp r2, #0x02");
|
movs r1, 12\n\
|
||||||
asm("beq MultiBootWaitCyclesLoop");
|
cmp r2, 2\n\
|
||||||
|
beq MultiBootWaitCyclesLoop\n\
|
||||||
asm("mov r1, #13");
|
movs r1, 13\n\
|
||||||
asm("cmp r2, #0x08");
|
cmp r2, 8\n\
|
||||||
asm("beq MultiBootWaitCyclesLoop");
|
beq MultiBootWaitCyclesLoop\n\
|
||||||
|
movs r1, 4\n\
|
||||||
asm("mov r1, #4");
|
MultiBootWaitCyclesLoop:\n\
|
||||||
|
subs r0, r1\n\
|
||||||
asm("MultiBootWaitCyclesLoop:");
|
bgt MultiBootWaitCyclesLoop\n\
|
||||||
asm("sub r0, r1");
|
bx lr\n");
|
||||||
asm("bgt MultiBootWaitCyclesLoop");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MultiBootWaitSendDone(void)
|
static void MultiBootWaitSendDone(void)
|
||||||
|
|||||||
Reference in New Issue
Block a user