| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- 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 <errno.h>
- 25:Core/Src/sysmem.c **** #include <stdint.h>
- 26:Core/Src/sysmem.c **** #include <stddef.h>
- 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
|