229 lines
9.9 KiB
Plaintext
229 lines
9.9 KiB
Plaintext
ARM GAS /tmp/ccQxFjE3.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, 6
|
||
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 .bss.__sbrk_heap_end,"aw",%nobits
|
||
21 .align 2
|
||
24 __sbrk_heap_end:
|
||
25 0000 00000000 .space 4
|
||
26 .section .text._sbrk,"ax",%progbits
|
||
27 .align 1
|
||
28 .global _sbrk
|
||
29 .syntax unified
|
||
30 .thumb
|
||
31 .thumb_func
|
||
33 _sbrk:
|
||
34 .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 ****
|
||
ARM GAS /tmp/ccQxFjE3.s page 2
|
||
|
||
|
||
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;
|
||
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 **** {
|
||
35 .loc 1 54 1
|
||
36 .cfi_startproc
|
||
37 @ args = 0, pretend = 0, frame = 24
|
||
38 @ frame_needed = 1, uses_anonymous_args = 0
|
||
39 0000 80B5 push {r7, lr}
|
||
40 .cfi_def_cfa_offset 8
|
||
41 .cfi_offset 7, -8
|
||
42 .cfi_offset 14, -4
|
||
43 0002 86B0 sub sp, sp, #24
|
||
44 .cfi_def_cfa_offset 32
|
||
45 0004 00AF add r7, sp, #0
|
||
46 .cfi_def_cfa_register 7
|
||
47 0006 7860 str r0, [r7, #4]
|
||
55:Core/Src/sysmem.c **** extern uint8_t _end; /* Symbol defined in the linker script */
|
||
56:Core/Src/sysmem.c **** extern uint8_t _estack; /* Symbol defined in the linker script */
|
||
57:Core/Src/sysmem.c **** extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
|
||
58:Core/Src/sysmem.c **** const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
|
||
48 .loc 1 58 32
|
||
49 0008 144A ldr r2, .L5
|
||
50 .loc 1 58 53
|
||
51 000a 154B ldr r3, .L5+4
|
||
52 .loc 1 58 18
|
||
53 000c D31A subs r3, r2, r3
|
||
54 000e 7B61 str r3, [r7, #20]
|
||
59:Core/Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit;
|
||
55 .loc 1 59 18
|
||
56 0010 7B69 ldr r3, [r7, #20]
|
||
57 0012 3B61 str r3, [r7, #16]
|
||
60:Core/Src/sysmem.c **** uint8_t *prev_heap_end;
|
||
ARM GAS /tmp/ccQxFjE3.s page 3
|
||
|
||
|
||
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)
|
||
58 .loc 1 63 12
|
||
59 0014 134B ldr r3, .L5+8
|
||
60 0016 1B68 ldr r3, [r3]
|
||
61 .loc 1 63 6
|
||
62 0018 002B cmp r3, #0
|
||
63 001a 02D1 bne .L2
|
||
64:Core/Src/sysmem.c **** {
|
||
65:Core/Src/sysmem.c **** __sbrk_heap_end = &_end;
|
||
64 .loc 1 65 21
|
||
65 001c 114B ldr r3, .L5+8
|
||
66 001e 124A ldr r2, .L5+12
|
||
67 0020 1A60 str r2, [r3]
|
||
68 .L2:
|
||
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)
|
||
69 .loc 1 69 23
|
||
70 0022 104B ldr r3, .L5+8
|
||
71 0024 1A68 ldr r2, [r3]
|
||
72 0026 7B68 ldr r3, [r7, #4]
|
||
73 0028 1344 add r3, r3, r2
|
||
74 .loc 1 69 6
|
||
75 002a 3A69 ldr r2, [r7, #16]
|
||
76 002c 9A42 cmp r2, r3
|
||
77 002e 07D2 bcs .L3
|
||
70:Core/Src/sysmem.c **** {
|
||
71:Core/Src/sysmem.c **** errno = ENOMEM;
|
||
78 .loc 1 71 5
|
||
79 0030 FFF7FEFF bl __errno
|
||
80 0034 0346 mov r3, r0
|
||
81 .loc 1 71 11 discriminator 1
|
||
82 0036 0C22 movs r2, #12
|
||
83 0038 1A60 str r2, [r3]
|
||
72:Core/Src/sysmem.c **** return (void *)-1;
|
||
84 .loc 1 72 12
|
||
85 003a 4FF0FF33 mov r3, #-1
|
||
86 003e 09E0 b .L4
|
||
87 .L3:
|
||
73:Core/Src/sysmem.c **** }
|
||
74:Core/Src/sysmem.c ****
|
||
75:Core/Src/sysmem.c **** prev_heap_end = __sbrk_heap_end;
|
||
88 .loc 1 75 17
|
||
89 0040 084B ldr r3, .L5+8
|
||
90 0042 1B68 ldr r3, [r3]
|
||
91 0044 FB60 str r3, [r7, #12]
|
||
76:Core/Src/sysmem.c **** __sbrk_heap_end += incr;
|
||
92 .loc 1 76 19
|
||
93 0046 074B ldr r3, .L5+8
|
||
94 0048 1A68 ldr r2, [r3]
|
||
95 004a 7B68 ldr r3, [r7, #4]
|
||
96 004c 1344 add r3, r3, r2
|
||
97 004e 054A ldr r2, .L5+8
|
||
98 0050 1360 str r3, [r2]
|
||
ARM GAS /tmp/ccQxFjE3.s page 4
|
||
|
||
|
||
77:Core/Src/sysmem.c ****
|
||
78:Core/Src/sysmem.c **** return (void *)prev_heap_end;
|
||
99 .loc 1 78 10
|
||
100 0052 FB68 ldr r3, [r7, #12]
|
||
101 .L4:
|
||
79:Core/Src/sysmem.c **** }
|
||
102 .loc 1 79 1
|
||
103 0054 1846 mov r0, r3
|
||
104 0056 1837 adds r7, r7, #24
|
||
105 .cfi_def_cfa_offset 8
|
||
106 0058 BD46 mov sp, r7
|
||
107 .cfi_def_cfa_register 13
|
||
108 @ sp needed
|
||
109 005a 80BD pop {r7, pc}
|
||
110 .L6:
|
||
111 .align 2
|
||
112 .L5:
|
||
113 005c 00000000 .word _estack
|
||
114 0060 00000000 .word _Min_Stack_Size
|
||
115 0064 00000000 .word __sbrk_heap_end
|
||
116 0068 00000000 .word _end
|
||
117 .cfi_endproc
|
||
118 .LFE0:
|
||
120 .text
|
||
121 .Letext0:
|
||
122 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/lib/gcc/arm-none-e
|
||
123 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
124 .file 4 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
125 .file 5 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
ARM GAS /tmp/ccQxFjE3.s page 5
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:00000000 sysmem.c
|
||
/tmp/ccQxFjE3.s:21 .bss.__sbrk_heap_end:00000000 $d
|
||
/tmp/ccQxFjE3.s:24 .bss.__sbrk_heap_end:00000000 __sbrk_heap_end
|
||
/tmp/ccQxFjE3.s:27 .text._sbrk:00000000 $t
|
||
/tmp/ccQxFjE3.s:33 .text._sbrk:00000000 _sbrk
|
||
/tmp/ccQxFjE3.s:113 .text._sbrk:0000005c $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
__errno
|
||
_estack
|
||
_Min_Stack_Size
|
||
_end
|