ARM GAS  /tmp/ccpaUy5E.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, 1
  13              		.eabi_attribute 34, 1
  14              		.eabi_attribute 18, 4
  15              		.file	"sysmem.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.file 1 "Core/Src/sysmem.c"
  20              		.section	.text._sbrk,"ax",%progbits
  21              		.align	1
  22              		.global	_sbrk
  23              		.syntax unified
  24              		.thumb
  25              		.thumb_func
  27              	_sbrk:
  28              	.LVL0:
  29              	.LFB0:
   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 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) 2024 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 <errno.h>
  25:Core/Src/sysmem.c **** #include <stdint.h>
  26:Core/Src/sysmem.c **** 
  27:Core/Src/sysmem.c **** /**
  28:Core/Src/sysmem.c ****  * Pointer to the current high watermark of the heap usage
  29:Core/Src/sysmem.c ****  */
ARM GAS  /tmp/ccpaUy5E.s 			page 2


  30:Core/Src/sysmem.c **** static uint8_t *__sbrk_heap_end = NULL;
  31:Core/Src/sysmem.c **** 
  32:Core/Src/sysmem.c **** /**
  33:Core/Src/sysmem.c ****  * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
  34:Core/Src/sysmem.c ****  *        and others from the C library
  35:Core/Src/sysmem.c ****  *
  36:Core/Src/sysmem.c ****  * @verbatim
  37:Core/Src/sysmem.c ****  * ############################################################################
  38:Core/Src/sysmem.c ****  * #  .data  #  .bss  #       newlib heap       #          MSP stack          #
  39:Core/Src/sysmem.c ****  * #         #        #                         # Reserved by _Min_Stack_Size #
  40:Core/Src/sysmem.c ****  * ############################################################################
  41:Core/Src/sysmem.c ****  * ^-- RAM start      ^-- _end                             _estack, RAM end --^
  42:Core/Src/sysmem.c ****  * @endverbatim
  43:Core/Src/sysmem.c ****  *
  44:Core/Src/sysmem.c ****  * This implementation starts allocating at the '_end' linker symbol
  45:Core/Src/sysmem.c ****  * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
  46:Core/Src/sysmem.c ****  * The implementation considers '_estack' linker symbol to be RAM end
  47:Core/Src/sysmem.c ****  * NOTE: If the MSP stack, at any point during execution, grows larger than the
  48:Core/Src/sysmem.c ****  * reserved size, please increase the '_Min_Stack_Size'.
  49:Core/Src/sysmem.c ****  *
  50:Core/Src/sysmem.c ****  * @param incr Memory size
  51:Core/Src/sysmem.c ****  * @return Pointer to allocated memory
  52:Core/Src/sysmem.c ****  */
  53:Core/Src/sysmem.c **** void *_sbrk(ptrdiff_t incr)
  54:Core/Src/sysmem.c **** {
  30              		.loc 1 54 1 view -0
  31              		.cfi_startproc
  32              		@ args = 0, pretend = 0, frame = 0
  33              		@ frame_needed = 0, uses_anonymous_args = 0
  34              		.loc 1 54 1 is_stmt 0 view .LVU1
  35 0000 10B5     		push	{r4, lr}
  36              		.cfi_def_cfa_offset 8
  37              		.cfi_offset 4, -8
  38              		.cfi_offset 14, -4
  39 0002 0346     		mov	r3, r0
  55:Core/Src/sysmem.c ****   extern uint8_t _end; /* Symbol defined in the linker script */
  40              		.loc 1 55 3 is_stmt 1 view .LVU2
  56:Core/Src/sysmem.c ****   extern uint8_t _estack; /* Symbol defined in the linker script */
  41              		.loc 1 56 3 view .LVU3
  57:Core/Src/sysmem.c ****   extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
  42              		.loc 1 57 3 view .LVU4
  58:Core/Src/sysmem.c ****   const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
  43              		.loc 1 58 3 view .LVU5
  44              	.LVL1:
  59:Core/Src/sysmem.c ****   const uint8_t *max_heap = (uint8_t *)stack_limit;
  45              		.loc 1 59 3 view .LVU6
  58:Core/Src/sysmem.c ****   const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
  46              		.loc 1 58 51 is_stmt 0 view .LVU7
  47 0004 0C4A     		ldr	r2, .L8
  48 0006 0D49     		ldr	r1, .L8+4
  49              	.LVL2:
  60:Core/Src/sysmem.c ****   uint8_t *prev_heap_end;
  50              		.loc 1 60 3 is_stmt 1 view .LVU8
  61:Core/Src/sysmem.c **** 
  62:Core/Src/sysmem.c ****   /* Initialize heap end at first call */
  63:Core/Src/sysmem.c ****   if (NULL == __sbrk_heap_end)
  51              		.loc 1 63 3 view .LVU9
ARM GAS  /tmp/ccpaUy5E.s 			page 3


  52              		.loc 1 63 12 is_stmt 0 view .LVU10
  53 0008 0D48     		ldr	r0, .L8+8
  54              	.LVL3:
  55              		.loc 1 63 12 view .LVU11
  56 000a 0068     		ldr	r0, [r0]
  57              		.loc 1 63 6 view .LVU12
  58 000c 40B1     		cbz	r0, .L6
  59              	.L2:
  64:Core/Src/sysmem.c ****   {
  65:Core/Src/sysmem.c ****     __sbrk_heap_end = &_end;
  66:Core/Src/sysmem.c ****   }
  67:Core/Src/sysmem.c **** 
  68:Core/Src/sysmem.c ****   /* Protect heap from growing into the reserved MSP stack */
  69:Core/Src/sysmem.c ****   if (__sbrk_heap_end + incr > max_heap)
  60              		.loc 1 69 3 is_stmt 1 view .LVU13
  61              		.loc 1 69 23 is_stmt 0 view .LVU14
  62 000e 0C48     		ldr	r0, .L8+8
  63 0010 0068     		ldr	r0, [r0]
  64 0012 0344     		add	r3, r3, r0
  65              	.LVL4:
  66              		.loc 1 69 6 view .LVU15
  67 0014 521A     		subs	r2, r2, r1
  68 0016 9342     		cmp	r3, r2
  69 0018 06D8     		bhi	.L7
  70:Core/Src/sysmem.c ****   {
  71:Core/Src/sysmem.c ****     errno = ENOMEM;
  72:Core/Src/sysmem.c ****     return (void *)-1;
  73:Core/Src/sysmem.c ****   }
  74:Core/Src/sysmem.c **** 
  75:Core/Src/sysmem.c ****   prev_heap_end = __sbrk_heap_end;
  70              		.loc 1 75 3 is_stmt 1 view .LVU16
  71              	.LVL5:
  76:Core/Src/sysmem.c ****   __sbrk_heap_end += incr;
  72              		.loc 1 76 3 view .LVU17
  73              		.loc 1 76 19 is_stmt 0 view .LVU18
  74 001a 094A     		ldr	r2, .L8+8
  75 001c 1360     		str	r3, [r2]
  77:Core/Src/sysmem.c **** 
  78:Core/Src/sysmem.c ****   return (void *)prev_heap_end;
  76              		.loc 1 78 3 is_stmt 1 view .LVU19
  77              	.LVL6:
  78              	.L1:
  79:Core/Src/sysmem.c **** }
  79              		.loc 1 79 1 is_stmt 0 view .LVU20
  80 001e 10BD     		pop	{r4, pc}
  81              	.LVL7:
  82              	.L6:
  65:Core/Src/sysmem.c ****   }
  83              		.loc 1 65 5 is_stmt 1 view .LVU21
  65:Core/Src/sysmem.c ****   }
  84              		.loc 1 65 21 is_stmt 0 view .LVU22
  85 0020 0748     		ldr	r0, .L8+8
  86 0022 084C     		ldr	r4, .L8+12
  87 0024 0460     		str	r4, [r0]
  88 0026 F2E7     		b	.L2
  89              	.LVL8:
  90              	.L7:
ARM GAS  /tmp/ccpaUy5E.s 			page 4


  71:Core/Src/sysmem.c ****     return (void *)-1;
  91              		.loc 1 71 5 is_stmt 1 view .LVU23
  92 0028 FFF7FEFF 		bl	__errno
  93              	.LVL9:
  71:Core/Src/sysmem.c ****     return (void *)-1;
  94              		.loc 1 71 11 is_stmt 0 discriminator 1 view .LVU24
  95 002c 0C23     		movs	r3, #12
  96 002e 0360     		str	r3, [r0]
  72:Core/Src/sysmem.c ****   }
  97              		.loc 1 72 5 is_stmt 1 view .LVU25
  72:Core/Src/sysmem.c ****   }
  98              		.loc 1 72 12 is_stmt 0 view .LVU26
  99 0030 4FF0FF30 		mov	r0, #-1
 100 0034 F3E7     		b	.L1
 101              	.L9:
 102 0036 00BF     		.align	2
 103              	.L8:
 104 0038 00000000 		.word	_estack
 105 003c 00000000 		.word	_Min_Stack_Size
 106 0040 00000000 		.word	__sbrk_heap_end
 107 0044 00000000 		.word	_end
 108              		.cfi_endproc
 109              	.LFE0:
 111              		.section	.bss.__sbrk_heap_end,"aw",%nobits
 112              		.align	2
 115              	__sbrk_heap_end:
 116 0000 00000000 		.space	4
 117              		.text
 118              	.Letext0:
 119              		.file 2 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
 120              		.file 3 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
 121              		.file 4 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
 122              		.file 5 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
ARM GAS  /tmp/ccpaUy5E.s 			page 5


DEFINED SYMBOLS
                            *ABS*:00000000 sysmem.c
     /tmp/ccpaUy5E.s:21     .text._sbrk:00000000 $t
     /tmp/ccpaUy5E.s:27     .text._sbrk:00000000 _sbrk
     /tmp/ccpaUy5E.s:104    .text._sbrk:00000038 $d
     /tmp/ccpaUy5E.s:115    .bss.__sbrk_heap_end:00000000 __sbrk_heap_end
     /tmp/ccpaUy5E.s:112    .bss.__sbrk_heap_end:00000000 $d

UNDEFINED SYMBOLS
__errno
_estack
_Min_Stack_Size
_end
