2025-03-21 15:35:07 +01:00

232 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ARM GAS C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s page 1
1 .cpu cortex-m7
2 .arch armv7e-m
3 .fpu fpv5-d16
4 .eabi_attribute 28, 1
5 .eabi_attribute 20, 1
6 .eabi_attribute 21, 1
7 .eabi_attribute 23, 3
8 .eabi_attribute 24, 1
9 .eabi_attribute 25, 1
10 .eabi_attribute 26, 1
11 .eabi_attribute 30, 1
12 .eabi_attribute 34, 1
13 .eabi_attribute 18, 4
14 .file "sysmem.c"
15 .text
16 .Ltext0:
17 .cfi_sections .debug_frame
18 .file 1 "Core/Src/sysmem.c"
19 .section .text._sbrk,"ax",%progbits
20 .align 1
21 .global _sbrk
22 .syntax unified
23 .thumb
24 .thumb_func
26 _sbrk:
27 .LVL0:
28 .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 **** */
30:Core/Src/sysmem.c **** static uint8_t *__sbrk_heap_end = NULL;
ARM GAS C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s page 2
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 **** {
29 .loc 1 54 1 view -0
30 .cfi_startproc
31 @ args = 0, pretend = 0, frame = 0
32 @ frame_needed = 0, uses_anonymous_args = 0
33 .loc 1 54 1 is_stmt 0 view .LVU1
34 0000 10B5 push {r4, lr}
35 .cfi_def_cfa_offset 8
36 .cfi_offset 4, -8
37 .cfi_offset 14, -4
38 0002 0346 mov r3, r0
55:Core/Src/sysmem.c **** extern uint8_t _end; /* Symbol defined in the linker script */
39 .loc 1 55 3 is_stmt 1 view .LVU2
56:Core/Src/sysmem.c **** extern uint8_t _estack; /* Symbol defined in the linker script */
40 .loc 1 56 3 view .LVU3
57:Core/Src/sysmem.c **** extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
41 .loc 1 57 3 view .LVU4
58:Core/Src/sysmem.c **** const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
42 .loc 1 58 3 view .LVU5
43 .LVL1:
59:Core/Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit;
44 .loc 1 59 3 view .LVU6
58:Core/Src/sysmem.c **** const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
45 .loc 1 58 51 is_stmt 0 view .LVU7
46 0004 0C4A ldr r2, .L8
47 0006 0D49 ldr r1, .L8+4
48 .LVL2:
60:Core/Src/sysmem.c **** uint8_t *prev_heap_end;
49 .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)
50 .loc 1 63 3 view .LVU9
51 .loc 1 63 12 is_stmt 0 view .LVU10
ARM GAS C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s page 3
52 0008 0D48 ldr r0, .L8+8
53 .LVL3:
54 .loc 1 63 12 view .LVU11
55 000a 0068 ldr r0, [r0]
56 .loc 1 63 6 view .LVU12
57 000c 40B1 cbz r0, .L6
58 .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)
59 .loc 1 69 3 is_stmt 1 view .LVU13
60 .loc 1 69 23 is_stmt 0 view .LVU14
61 000e 0C48 ldr r0, .L8+8
62 0010 0068 ldr r0, [r0]
63 0012 0344 add r3, r3, r0
64 .LVL4:
65 .loc 1 69 6 view .LVU15
66 0014 521A subs r2, r2, r1
67 0016 9342 cmp r3, r2
68 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;
69 .loc 1 75 3 is_stmt 1 view .LVU16
70 .LVL5:
76:Core/Src/sysmem.c **** __sbrk_heap_end += incr;
71 .loc 1 76 3 view .LVU17
72 .loc 1 76 19 is_stmt 0 view .LVU18
73 001a 094A ldr r2, .L8+8
74 001c 1360 str r3, [r2]
77:Core/Src/sysmem.c ****
78:Core/Src/sysmem.c **** return (void *)prev_heap_end;
75 .loc 1 78 3 is_stmt 1 view .LVU19
76 .LVL6:
77 .L1:
79:Core/Src/sysmem.c **** }
78 .loc 1 79 1 is_stmt 0 view .LVU20
79 001e 10BD pop {r4, pc}
80 .LVL7:
81 .L6:
65:Core/Src/sysmem.c **** }
82 .loc 1 65 5 is_stmt 1 view .LVU21
65:Core/Src/sysmem.c **** }
83 .loc 1 65 21 is_stmt 0 view .LVU22
84 0020 0748 ldr r0, .L8+8
85 0022 084C ldr r4, .L8+12
86 0024 0460 str r4, [r0]
87 0026 F2E7 b .L2
88 .LVL8:
89 .L7:
71:Core/Src/sysmem.c **** return (void *)-1;
ARM GAS C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s page 4
90 .loc 1 71 5 is_stmt 1 view .LVU23
91 0028 FFF7FEFF bl __errno
92 .LVL9:
71:Core/Src/sysmem.c **** return (void *)-1;
93 .loc 1 71 11 is_stmt 0 discriminator 1 view .LVU24
94 002c 0C23 movs r3, #12
95 002e 0360 str r3, [r0]
72:Core/Src/sysmem.c **** }
96 .loc 1 72 5 is_stmt 1 view .LVU25
72:Core/Src/sysmem.c **** }
97 .loc 1 72 12 is_stmt 0 view .LVU26
98 0030 4FF0FF30 mov r0, #-1
99 0034 F3E7 b .L1
100 .L9:
101 0036 00BF .align 2
102 .L8:
103 0038 00000000 .word _estack
104 003c 00000000 .word _Min_Stack_Size
105 0040 00000000 .word __sbrk_heap_end
106 0044 00000000 .word _end
107 .cfi_endproc
108 .LFE0:
110 .section .bss.__sbrk_heap_end,"aw",%nobits
111 .align 2
114 __sbrk_heap_end:
115 0000 00000000 .space 4
116 .text
117 .Letext0:
118 .file 2 "C:/Users/lenex/AppData/Roaming/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-to
119 .file 3 "C:/Users/lenex/AppData/Roaming/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-to
120 .file 4 "C:/Users/lenex/AppData/Roaming/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-to
121 .file 5 "C:/Users/lenex/AppData/Roaming/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-to
ARM GAS C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s page 5
DEFINED SYMBOLS
*ABS*:00000000 sysmem.c
C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s:20 .text._sbrk:00000000 $t
C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s:26 .text._sbrk:00000000 _sbrk
C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s:103 .text._sbrk:00000038 $d
C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s:114 .bss.__sbrk_heap_end:00000000 __sbrk_heap_end
C:\Users\lenex\AppData\Local\Temp\ccCuXYaT.s:111 .bss.__sbrk_heap_end:00000000 $d
UNDEFINED SYMBOLS
__errno
_estack
_Min_Stack_Size
_end