summaryrefslogtreecommitdiff
path: root/src/multiboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/multiboot.c')
-rw-r--r--src/multiboot.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/multiboot.c b/src/multiboot.c
index c7e14392e..19245b5b3 100644
--- a/src/multiboot.c
+++ b/src/multiboot.c
@@ -1,3 +1,4 @@
+#include "global.h"
#include "gba/gba.h"
#include "multiboot.h"
@@ -435,23 +436,23 @@ static int MultiBootHandShake(struct MultiBootParam *mp)
#undef must_data
}
-static NOINLINE void MultiBootWaitCycles(u32 cycles)
+NAKED
+static void MultiBootWaitCycles(u32 cycles)
{
- asm("mov r2, pc");
- asm("lsr r2, #24");
- asm("mov r1, #12");
- asm("cmp r2, #0x02");
- asm("beq MultiBootWaitCyclesLoop");
-
- asm("mov r1, #13");
- asm("cmp r2, #0x08");
- asm("beq MultiBootWaitCyclesLoop");
-
- asm("mov r1, #4");
-
- asm("MultiBootWaitCyclesLoop:");
- asm("sub r0, r1");
- asm("bgt MultiBootWaitCyclesLoop");
+ asm_unified("\
+ mov r2, pc\n\
+ lsrs r2, 24\n\
+ movs r1, 12\n\
+ cmp r2, 2\n\
+ beq MultiBootWaitCyclesLoop\n\
+ movs r1, 13\n\
+ cmp r2, 8\n\
+ beq MultiBootWaitCyclesLoop\n\
+ movs r1, 4\n\
+MultiBootWaitCyclesLoop:\n\
+ subs r0, r1\n\
+ bgt MultiBootWaitCyclesLoop\n\
+ bx lr\n");
}
static void MultiBootWaitSendDone(void)