Advertisement
PecaJ

startup_code.s

Nov 4th, 2023
1,022
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 1.88 KB | None | 0 0
  1. .cpu cortex-m3
  2. .fpu softvfp
  3. .syntax unified
  4. .thumb
  5.  
  6.  
  7. .extern _main_stack_pointer_value
  8.  
  9. .weak nmi_handler
  10. .thumb_set nmi_handler, default_handler
  11.  
  12. .weak hard_fault_handler
  13. .thumb_set hard_fault_handler, default_handler
  14.  
  15. .weak mem_fault_handler
  16. .thumb_set mem_fault_handler, default_handler
  17.  
  18. .weak bus_fault_handler
  19. .thumb_set bus_fault_handler, default_handler
  20.  
  21. .weak usage_fault_handler
  22. .thumb_set usage_fault_handler, default_handler
  23.  
  24. .weak sv_call_handler
  25. .thumb_set sv_call_handler, default_handler
  26.  
  27. .weak pend_sv_handler
  28. .thumb_set pend_sv_handler, default_handler
  29.  
  30. .weak systick_handler
  31. .thumb_set systick_handler, default_handler
  32.  
  33. .weak irq0
  34. .thumb_set irq0, default_handler
  35.  
  36. .weak irq1
  37. .thumb_set irq1, default_handler
  38.  
  39. .weak irq2
  40. .thumb_set irq2, default_handler
  41.  
  42. # =============== Vector table ==================
  43. .section .vector_table, "a"
  44. .word _main_stack_pointer_value
  45. .word reset_handler
  46. .word nmi_handler
  47. .word hard_fault_handler
  48. .word mem_fault_handler
  49. .word bus_fault_handler
  50. .word usage_fault_handler
  51. .rept 4
  52.     .word default_handler
  53. .endr
  54. .word sv_call_handler
  55. .rept 2
  56.     .word default_handler
  57. .endr
  58. .word pend_sv_handler
  59. .word systick_handler
  60. .word irq0
  61. .word irq1
  62. .word irq2
  63. .rept 65
  64.     .word default_handler
  65. .endr
  66. # ============= End vector table =================
  67.  
  68.  
  69. .extern main
  70.  
  71. .extern _vma_data_start
  72. .extern _vma_data_end
  73. .extern _lma_data_start
  74.  
  75. .section .text.reset_handler
  76. .type reset_handler, %function
  77. reset_handler:
  78.     ldr r0, =_lma_data_start
  79.     ldr r1, =_vma_data_start
  80.     ldr r2, =_vma_data_end
  81.  
  82.     cmp r0, r1
  83.     beq branch_to_main
  84. copy_loop:
  85.     ldr r3, [r0], 4
  86.     str r3, [r1], 4
  87.     cmp r1, r2
  88.     blo copy_loop
  89.  
  90. branch_to_main:
  91.     b main
  92.  
  93. inf_loop:
  94.     b inf_loop
  95.  
  96.  
  97.  
  98. .section .text.default_handler
  99. .type default_handler, %function
  100. default_handler:
  101.     b default_handler
  102.  
  103. .end
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement