1
2.syntax unified
3
4miniloader_vectors:
5	.word 0x20003FF0
6	.word miniloader_reset + 1
7	.word miniloader_fault + 1
8	.word miniloader_fault + 1
9	.word miniloader_fault + 1
10	.word miniloader_fault + 1
11	.word miniloader_fault + 1
12	.word miniloader_fault + 1
13	.word miniloader_fault + 1
14	.word miniloader_fault + 1
15	.word miniloader_fault + 1
16	.word miniloader_fault + 1
17	.word miniloader_fault + 1
18	.word miniloader_fault + 1
19	.word miniloader_fault + 1
20	.word miniloader_fault + 1
21
22// miniloader_boot(unsigned src, unsigned count)
23miniloader_boot:
24	mov r2, #0x10000000
25miniloader_boot_loop:
26	ldr r3, [r0], #4
27	str r3, [r2], #4
28	subs r1, #1
29	bne miniloader_boot_loop
30	mov r0, #0x10000000
31	ldr sp, [r0]
32	ldr r0, [r0, #4]
33	bx r0
34
35miniloader_reset:
36	ldr r0, =0x20003FF8
37	ldr r1, =0xAA113377
38	ldr r2, =0xAA773311
39	ldr r3, [r0]
40	ldr r4, [r0, #4]
41	mov r5, #0
42	str r5, [r0]
43	str r5, [r0, #4]
44	cmp r1, r3
45	bne start_bootloader
46	cmp r2, r4
47	bne start_bootloader
48start_app:
49	ldr r0, =0x8000
50	ldr r1, =(131072/4)
51	b miniloader_boot
52start_bootloader:
53	ldr r0, =0x00001000
54	ldr r1, =(32768/4)
55	b miniloader_boot
56
57miniloader_fault:
58	b .
59