aboutsummaryrefslogtreecommitdiff
path: root/STM32F429ZIT6_HelloWorld/boot.S
diff options
context:
space:
mode:
Diffstat (limited to 'STM32F429ZIT6_HelloWorld/boot.S')
-rw-r--r--STM32F429ZIT6_HelloWorld/boot.S34
1 files changed, 34 insertions, 0 deletions
diff --git a/STM32F429ZIT6_HelloWorld/boot.S b/STM32F429ZIT6_HelloWorld/boot.S
new file mode 100644
index 0000000..81e0a47
--- /dev/null
+++ b/STM32F429ZIT6_HelloWorld/boot.S
@@ -0,0 +1,34 @@
+.syntax unified
+.cpu cortex-m4
+.fpu vfp
+.thumb
+.global reset_handler
+.type reset_handler, %function
+reset_handler:
+ LDR r0, =_estack
+ MOV sp, r0
+ MOVS r0, #0
+ LDR r1, =_sdata
+ LDR r2, =_edata
+ LDR r3, =_sidata
+ B copy_sidata_loop
+ copy_sidata:
+ LDR r4, [r3, r0]
+ STR r4, [r1, r0]
+ ADDS r0, r0, #4
+ copy_sidata_loop:
+ ADDS r4, r0, r1
+ CMP r4, r2
+ BCC copy_sidata
+ MOVS r0, #0
+ LDR r1, =_sbss
+ LDR r2, =_ebss
+ B reset_bss_loop
+ reset_bss:
+ STR r0, [r1]
+ ADDS r1, r1, #4
+ reset_bss_loop:
+ CMP r1, r2
+ BCC reset_bss
+ B main
+.size reset_handler, .-reset_handler \ No newline at end of file