Bring our own chainloader for *hax

This commit is contained in:
Aurora
2016-09-23 18:07:45 +02:00
parent 083806bfc9
commit 5196869634
36 changed files with 8818 additions and 161 deletions

View File

@@ -0,0 +1,25 @@
LD := arm-none-eabi-ld
AS := arm-none-eabi-as
OC := arm-none-eabi-objcopy
XXD := xxd
all: loader.h
loader.o: loader.s
$(AS) -o $@ $<
loader.elf: loader.o
$(LD) -T stub.ld -o $@ $<
loader.bin: loader.elf
$(OC) -O binary $< $@
loader.h: loader.bin
$(XXD) -i $< > $@
@rm -f *.elf *.o
@echo built loader
.PHONY: clean
clean:
@rm -f *.h *.bin *.elf *.o
@echo cleaned loader

View File

@@ -0,0 +1,41 @@
.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

View File

@@ -0,0 +1,5 @@
SECTIONS
{
.text : { *(.text.*) }
. = ALIGN(4);
}