sysmem.lst 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s page 1
  2. 1 .cpu cortex-m4
  3. 2 .arch armv7e-m
  4. 3 .fpu fpv4-sp-d16
  5. 4 .eabi_attribute 27, 1
  6. 5 .eabi_attribute 28, 1
  7. 6 .eabi_attribute 20, 1
  8. 7 .eabi_attribute 21, 1
  9. 8 .eabi_attribute 23, 3
  10. 9 .eabi_attribute 24, 1
  11. 10 .eabi_attribute 25, 1
  12. 11 .eabi_attribute 26, 1
  13. 12 .eabi_attribute 30, 2
  14. 13 .eabi_attribute 34, 1
  15. 14 .eabi_attribute 18, 4
  16. 15 .file "sysmem.c"
  17. 16 .text
  18. 17 .Ltext0:
  19. 18 .cfi_sections .debug_frame
  20. 19 .section .text._sbrk,"ax",%progbits
  21. 20 .align 1
  22. 21 .p2align 2,,3
  23. 22 .global _sbrk
  24. 23 .syntax unified
  25. 24 .thumb
  26. 25 .thumb_func
  27. 27 _sbrk:
  28. 28 .LVL0:
  29. 29 .LFB0:
  30. 30 .file 1 "Core/Src/sysmem.c"
  31. 1:Core/Src/sysmem.c **** /**
  32. 2:Core/Src/sysmem.c **** ******************************************************************************
  33. 3:Core/Src/sysmem.c **** * @file sysmem.c
  34. 4:Core/Src/sysmem.c **** * @author Generated by STM32CubeMX
  35. 5:Core/Src/sysmem.c **** * @brief System Memory calls file
  36. 6:Core/Src/sysmem.c **** *
  37. 7:Core/Src/sysmem.c **** * For more information about which C functions
  38. 8:Core/Src/sysmem.c **** * need which of these lowlevel functions
  39. 9:Core/Src/sysmem.c **** * please consult the Newlib or Picolibc libc manual
  40. 10:Core/Src/sysmem.c **** ******************************************************************************
  41. 11:Core/Src/sysmem.c **** * @attention
  42. 12:Core/Src/sysmem.c **** *
  43. 13:Core/Src/sysmem.c **** * Copyright (c) 2025 STMicroelectronics.
  44. 14:Core/Src/sysmem.c **** * All rights reserved.
  45. 15:Core/Src/sysmem.c **** *
  46. 16:Core/Src/sysmem.c **** * This software is licensed under terms that can be found in the LICENSE file
  47. 17:Core/Src/sysmem.c **** * in the root directory of this software component.
  48. 18:Core/Src/sysmem.c **** * If no LICENSE file comes with this software, it is provided AS-IS.
  49. 19:Core/Src/sysmem.c **** *
  50. 20:Core/Src/sysmem.c **** ******************************************************************************
  51. 21:Core/Src/sysmem.c **** */
  52. 22:Core/Src/sysmem.c ****
  53. 23:Core/Src/sysmem.c **** /* Includes */
  54. 24:Core/Src/sysmem.c **** #include <errno.h>
  55. 25:Core/Src/sysmem.c **** #include <stdint.h>
  56. 26:Core/Src/sysmem.c **** #include <stddef.h>
  57. 27:Core/Src/sysmem.c ****
  58. 28:Core/Src/sysmem.c **** /**
  59. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s page 2
  60. 29:Core/Src/sysmem.c **** * Pointer to the current high watermark of the heap usage
  61. 30:Core/Src/sysmem.c **** */
  62. 31:Core/Src/sysmem.c **** static uint8_t *__sbrk_heap_end = NULL;
  63. 32:Core/Src/sysmem.c ****
  64. 33:Core/Src/sysmem.c **** /**
  65. 34:Core/Src/sysmem.c **** * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
  66. 35:Core/Src/sysmem.c **** * and others from the C library
  67. 36:Core/Src/sysmem.c **** *
  68. 37:Core/Src/sysmem.c **** * @verbatim
  69. 38:Core/Src/sysmem.c **** * ############################################################################
  70. 39:Core/Src/sysmem.c **** * # .data # .bss # newlib heap # MSP stack #
  71. 40:Core/Src/sysmem.c **** * # # # # Reserved by _Min_Stack_Size #
  72. 41:Core/Src/sysmem.c **** * ############################################################################
  73. 42:Core/Src/sysmem.c **** * ^-- RAM start ^-- _end _estack, RAM end --^
  74. 43:Core/Src/sysmem.c **** * @endverbatim
  75. 44:Core/Src/sysmem.c **** *
  76. 45:Core/Src/sysmem.c **** * This implementation starts allocating at the '_end' linker symbol
  77. 46:Core/Src/sysmem.c **** * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
  78. 47:Core/Src/sysmem.c **** * The implementation considers '_estack' linker symbol to be RAM end
  79. 48:Core/Src/sysmem.c **** * NOTE: If the MSP stack, at any point during execution, grows larger than the
  80. 49:Core/Src/sysmem.c **** * reserved size, please increase the '_Min_Stack_Size'.
  81. 50:Core/Src/sysmem.c **** *
  82. 51:Core/Src/sysmem.c **** * @param incr Memory size
  83. 52:Core/Src/sysmem.c **** * @return Pointer to allocated memory
  84. 53:Core/Src/sysmem.c **** */
  85. 54:Core/Src/sysmem.c **** void *_sbrk(ptrdiff_t incr)
  86. 55:Core/Src/sysmem.c **** {
  87. 31 .loc 1 55 1 view -0
  88. 32 .cfi_startproc
  89. 33 @ args = 0, pretend = 0, frame = 0
  90. 34 @ frame_needed = 0, uses_anonymous_args = 0
  91. 56:Core/Src/sysmem.c **** extern uint8_t _end; /* Symbol defined in the linker script */
  92. 35 .loc 1 56 3 view .LVU1
  93. 57:Core/Src/sysmem.c **** extern uint8_t _estack; /* Symbol defined in the linker script */
  94. 36 .loc 1 57 3 view .LVU2
  95. 58:Core/Src/sysmem.c **** extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
  96. 37 .loc 1 58 3 view .LVU3
  97. 59:Core/Src/sysmem.c **** const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
  98. 38 .loc 1 59 3 view .LVU4
  99. 60:Core/Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit;
  100. 39 .loc 1 60 3 view .LVU5
  101. 55:Core/Src/sysmem.c **** extern uint8_t _end; /* Symbol defined in the linker script */
  102. 40 .loc 1 55 1 is_stmt 0 view .LVU6
  103. 41 0000 10B5 push {r4, lr}
  104. 42 .LCFI0:
  105. 43 .cfi_def_cfa_offset 8
  106. 44 .cfi_offset 4, -8
  107. 45 .cfi_offset 14, -4
  108. 61:Core/Src/sysmem.c **** uint8_t *prev_heap_end;
  109. 62:Core/Src/sysmem.c ****
  110. 63:Core/Src/sysmem.c **** /* Initialize heap end at first call */
  111. 64:Core/Src/sysmem.c **** if (NULL == __sbrk_heap_end)
  112. 46 .loc 1 64 12 view .LVU7
  113. 47 0002 0C4C ldr r4, .L9
  114. 59:Core/Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit;
  115. 48 .loc 1 59 18 view .LVU8
  116. 49 0004 0C4B ldr r3, .L9+4
  117. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s page 3
  118. 50 0006 0D49 ldr r1, .L9+8
  119. 51 .loc 1 64 12 view .LVU9
  120. 52 0008 2268 ldr r2, [r4]
  121. 59:Core/Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit;
  122. 53 .loc 1 59 18 view .LVU10
  123. 54 000a 591A subs r1, r3, r1
  124. 55 .LVL1:
  125. 61:Core/Src/sysmem.c **** uint8_t *prev_heap_end;
  126. 56 .loc 1 61 3 is_stmt 1 view .LVU11
  127. 57 .loc 1 64 3 view .LVU12
  128. 58 .loc 1 64 6 is_stmt 0 view .LVU13
  129. 59 000c 2AB1 cbz r2, .L7
  130. 65:Core/Src/sysmem.c **** {
  131. 66:Core/Src/sysmem.c **** __sbrk_heap_end = &_end;
  132. 67:Core/Src/sysmem.c **** }
  133. 68:Core/Src/sysmem.c ****
  134. 69:Core/Src/sysmem.c **** /* Protect heap from growing into the reserved MSP stack */
  135. 70:Core/Src/sysmem.c **** if (__sbrk_heap_end + incr > max_heap)
  136. 60 .loc 1 70 3 is_stmt 1 view .LVU14
  137. 61 .loc 1 70 23 is_stmt 0 view .LVU15
  138. 62 000e 1044 add r0, r0, r2
  139. 63 .LVL2:
  140. 64 .loc 1 70 6 view .LVU16
  141. 65 0010 8842 cmp r0, r1
  142. 66 0012 07D8 bhi .L8
  143. 67 .L3:
  144. 71:Core/Src/sysmem.c **** {
  145. 72:Core/Src/sysmem.c **** errno = ENOMEM;
  146. 73:Core/Src/sysmem.c **** return (void *)-1;
  147. 74:Core/Src/sysmem.c **** }
  148. 75:Core/Src/sysmem.c ****
  149. 76:Core/Src/sysmem.c **** prev_heap_end = __sbrk_heap_end;
  150. 68 .loc 1 76 3 is_stmt 1 view .LVU17
  151. 69 .LVL3:
  152. 77:Core/Src/sysmem.c **** __sbrk_heap_end += incr;
  153. 70 .loc 1 77 3 view .LVU18
  154. 71 .loc 1 77 19 is_stmt 0 view .LVU19
  155. 72 0014 2060 str r0, [r4]
  156. 73 .LVL4:
  157. 78:Core/Src/sysmem.c ****
  158. 79:Core/Src/sysmem.c **** return (void *)prev_heap_end;
  159. 74 .loc 1 79 3 is_stmt 1 view .LVU20
  160. 80:Core/Src/sysmem.c **** }
  161. 75 .loc 1 80 1 is_stmt 0 view .LVU21
  162. 76 0016 1046 mov r0, r2
  163. 77 0018 10BD pop {r4, pc}
  164. 78 .LVL5:
  165. 79 .L7:
  166. 66:Core/Src/sysmem.c **** }
  167. 80 .loc 1 66 5 is_stmt 1 view .LVU22
  168. 66:Core/Src/sysmem.c **** }
  169. 81 .loc 1 66 21 is_stmt 0 view .LVU23
  170. 82 001a 094A ldr r2, .L9+12
  171. 83 001c 2260 str r2, [r4]
  172. 70:Core/Src/sysmem.c **** {
  173. 84 .loc 1 70 3 is_stmt 1 view .LVU24
  174. 70:Core/Src/sysmem.c **** {
  175. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s page 4
  176. 85 .loc 1 70 23 is_stmt 0 view .LVU25
  177. 86 001e 1044 add r0, r0, r2
  178. 87 .LVL6:
  179. 70:Core/Src/sysmem.c **** {
  180. 88 .loc 1 70 6 view .LVU26
  181. 89 0020 8842 cmp r0, r1
  182. 90 0022 F7D9 bls .L3
  183. 91 .L8:
  184. 72:Core/Src/sysmem.c **** return (void *)-1;
  185. 92 .loc 1 72 5 is_stmt 1 view .LVU27
  186. 93 0024 FFF7FEFF bl __errno
  187. 94 .LVL7:
  188. 72:Core/Src/sysmem.c **** return (void *)-1;
  189. 95 .loc 1 72 11 is_stmt 0 view .LVU28
  190. 96 0028 0C23 movs r3, #12
  191. 73:Core/Src/sysmem.c **** }
  192. 97 .loc 1 73 12 view .LVU29
  193. 98 002a 4FF0FF32 mov r2, #-1
  194. 72:Core/Src/sysmem.c **** return (void *)-1;
  195. 99 .loc 1 72 11 view .LVU30
  196. 100 002e 0360 str r3, [r0]
  197. 73:Core/Src/sysmem.c **** }
  198. 101 .loc 1 73 5 is_stmt 1 view .LVU31
  199. 102 .loc 1 80 1 is_stmt 0 view .LVU32
  200. 103 0030 1046 mov r0, r2
  201. 104 0032 10BD pop {r4, pc}
  202. 105 .L10:
  203. 106 .align 2
  204. 107 .L9:
  205. 108 0034 00000000 .word .LANCHOR0
  206. 109 0038 00000000 .word _estack
  207. 110 003c 00000000 .word _Min_Stack_Size
  208. 111 0040 00000000 .word _end
  209. 112 .cfi_endproc
  210. 113 .LFE0:
  211. 115 .section .bss.__sbrk_heap_end,"aw",%nobits
  212. 116 .align 2
  213. 117 .set .LANCHOR0,. + 0
  214. 120 __sbrk_heap_end:
  215. 121 0000 00000000 .space 4
  216. 122 .text
  217. 123 .Letext0:
  218. 124 .file 2 "d:\\arm-gcc\\lib\\gcc\\arm-none-eabi\\10.3.1\\include\\stddef.h"
  219. 125 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h"
  220. 126 .file 4 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h"
  221. 127 .file 5 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\errno.h"
  222. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s page 5
  223. DEFINED SYMBOLS
  224. *ABS*:00000000 sysmem.c
  225. C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s:20 .text._sbrk:00000000 $t
  226. C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s:27 .text._sbrk:00000000 _sbrk
  227. C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s:108 .text._sbrk:00000034 $d
  228. C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s:116 .bss.__sbrk_heap_end:00000000 $d
  229. C:\Users\zl835\AppData\Local\Temp\ccL4Tk29.s:120 .bss.__sbrk_heap_end:00000000 __sbrk_heap_end
  230. UNDEFINED SYMBOLS
  231. __errno
  232. _estack
  233. _Min_Stack_Size
  234. _end