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