This repository has been archived on 2022-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
Luma3DS-3GX/haxloader/data/loader/loader.s

42 lines
773 B
ArmAsm
Raw Normal View History

2016-09-23 18:07:45 +02:00
.section .text
start_:
@ Initial setup
ldr r1, =0x24F7FFFC @ void *r1 = (void*) 0x24F7FFFC;
ldr r2, =0x23EFFFFC @ void *r2 = (void*) 0x23EFFFFC;
ldr r3, =0x24EFFFFC @ void *r3 = (void*) 0x24EFFFFC;
copy_loop:
ldr r0, [r3, #4]! @ u32 r0 = *((u32*)(r3 + 4)); r3 += 4;
str r0, [r2, #4]! @ *((u32*)(r2 + 4)) = r0; r2 += 4;
cmp r3, r1 @ if r3 != 0x24F7FFFC
bne copy_loop @ goto copy_loop;
@ Cache flush routine by gemarcano (aka Gelex)
mov r1, #0
outer_loop:
mov r0, #0
inner_loop:
orr r2, r1, r0
mcr p15, 0, r2, c7, c14, 2
add r0, r0, #0x20
cmp r0, #0x400
bne inner_loop
add r1, r1, #0x40000000
cmp r1, #0x0
bne outer_loop
mov r0, #0
mcr p15, 0, r0, c7, c5, 0
mcr p15, 0, r0, c7, c10, 4
ldr r3, =0x23F00000
bx r3