42 lines
788 B
ArmAsm
Raw Normal View History

2017-07-26 21:39:30 +02:00
@ This file was kindly provided by Wolfvak - thank you!
.section .text.boot
.arm
2017-08-08 23:04:17 -03:00
#include <arm.h>
2017-07-26 21:39:30 +02:00
.global __boot
__boot:
@ Disable interrupts and switch to IRQ
2017-08-08 23:04:17 -03:00
cpsid aif, #(SR_SVC_MODE)
2017-07-26 21:39:30 +02:00
@ Writeback and invalidate caches
mov r0, #0
mcr p15, 0, r0, c7, c7, 0
mcr p15, 0, r0, c7, c14, 0
mcr p15, 0, r0, c7, c10, 4
2017-08-08 23:04:17 -03:00
ldr sp, =__stack_top
2017-07-26 21:39:30 +02:00
@ Reset values
ldr r0, =0x00054078
ldr r1, =0x0000000F
ldr r2, =0x00000000
@ MMU disabled, Caches disabled, other misc crap going on
mcr p15, 0, r0, c1, c0, 0
mcr p15, 0, r1, c1, c0, 1
mcr p15, 0, r2, c1, c0, 2
ldr r0, =__bss_start
ldr r1, =__bss_end
mov r2, #0
.Lclearbss:
str r2, [r0], #4
cmp r0, r1
blt .Lclearbss
2017-07-26 21:39:30 +02:00
bl main
b __boot