Files
bassofono/codice/build/stm32g4xx_hal_flash.lst
2021-07-03 18:17:05 +02:00

3386 lines
201 KiB
Plaintext
Raw 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 /tmp/ccUpFCH8.s page 1
1 .cpu cortex-m4
2 .eabi_attribute 27, 1
3 .eabi_attribute 28, 1
4 .eabi_attribute 23, 1
5 .eabi_attribute 24, 1
6 .eabi_attribute 25, 1
7 .eabi_attribute 26, 1
8 .eabi_attribute 30, 2
9 .eabi_attribute 34, 1
10 .eabi_attribute 18, 4
11 .file "stm32g4xx_hal_flash.c"
12 .text
13 .Ltext0:
14 .cfi_sections .debug_frame
15 .section .text.HAL_FLASH_Program,"ax",%progbits
16 .align 1
17 .p2align 2,,3
18 .global HAL_FLASH_Program
19 .syntax unified
20 .thumb
21 .thumb_func
22 .fpu fpv4-sp-d16
24 HAL_FLASH_Program:
25 .LFB329:
26 .file 1 "Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c"
1:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
2:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ******************************************************************************
3:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @file stm32g4xx_hal_flash.c
4:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @author MCD Application Team
5:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH HAL module driver.
6:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This file provides firmware functions to manage the following
7:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * functionalities of the internal FLASH memory:
8:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * + Program operations functions
9:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * + Memory Control functions
10:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * + Peripheral Errors functions
11:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
12:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
13:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ==============================================================================
14:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### FLASH peripheral features #####
15:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ==============================================================================
16:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
17:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses
18:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations
19:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** and the read and write protection mechanisms.
20:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
21:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction
22:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prefetch and cache lines.
23:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
24:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..] The FLASH main features are:
25:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Flash memory read operations
26:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Flash memory program/erase operations
27:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Read / write protections
28:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Option bytes programming
29:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Prefetch on I-Code
30:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) 32 cache lines of 4*64 or 2*128 bits on I-Code
31:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) 8 cache lines of 4*64 or 2*128 bits on D-Code
32:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Error code correction (ECC) : Data in flash are 72-bits word
ARM GAS /tmp/ccUpFCH8.s page 2
33:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (8 bits added per double word)
34:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
35:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
36:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### How to use this driver #####
37:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ==============================================================================
38:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
39:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH
40:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** memory of all STM32G4xx devices.
41:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
42:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (#) Flash Memory IO Programming functions:
43:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and
44:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_Lock() functions
45:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Program functions: double word and fast program (full row programming)
46:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) There are two modes of programming :
47:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function
48:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function
49:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
50:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (#) Interrupts and flags management functions:
51:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler()
52:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Callback functions are called when the flash operations are finished :
53:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback() when everything is ok, otherwise
54:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback()
55:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Get error flag status by calling HAL_GetError()
56:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
57:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (#) Option bytes management functions:
58:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Lock and Unlock the option bytes using HAL_FLASH_OB_Unlock() and
59:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OB_Lock() functions
60:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (++) Launch the reload of the option bytes using HAL_FLASH_Launch() function.
61:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** In this case, a reset is generated
62:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
63:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
64:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing
65:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** to handle the following operations:
66:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Set the latency
67:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer
68:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache
69:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache
70:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Enable/Disable the Flash power-down during low-power run and sleep modes
71:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Enable/Disable the Flash interrupts
72:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (+) Monitor the Flash flags status
73:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
74:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
75:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ******************************************************************************
76:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @attention
77:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
78:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
79:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
80:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This software component is licensed by ST under BSD 3-Clause license,
81:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * the "License"; You may not use this file except in compliance with the
82:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * License. You may obtain a copy of the License at:
83:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * opensource.org/licenses/BSD-3-Clause
84:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
85:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ******************************************************************************
86:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
87:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
88:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/
89:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #include "stm32g4xx_hal.h"
ARM GAS /tmp/ccUpFCH8.s page 3
90:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
91:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @addtogroup STM32G4xx_HAL_Driver
92:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
93:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
94:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
95:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH FLASH
96:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH HAL module driver
97:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
98:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
99:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
100:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED
101:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
102:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/
103:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private defines -----------------------------------------------------------*/
104:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Constants FLASH Private Constants
105:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
106:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
107:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #define FLASH_NB_DOUBLE_WORDS_IN_ROW 32
108:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
109:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
110:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
111:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
112:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private macros ------------------------------------------------------------*/
113:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/
114:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Variables FLASH Private Variables
115:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
116:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
117:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
118:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
119:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Variable used for Program/Erase sectors under interruption
120:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
121:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash = {.Lock = HAL_UNLOCKED,
122:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .ErrorCode = HAL_FLASH_ERROR_NONE,
123:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .ProcedureOnGoing = FLASH_PROC_NONE,
124:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Address = 0U,
125:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Bank = FLASH_BANK_1,
126:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Page = 0U,
127:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .NbPagesToErase = 0U,
128:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .CacheToReactivate = FLASH_CACHE_DISABLED};
129:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
130:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
131:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
132:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
133:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/
134:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Functions FLASH Private Functions
135:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
136:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
137:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data);
138:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress);
139:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
140:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
141:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
142:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
143:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Exported functions --------------------------------------------------------*/
144:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions
145:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
146:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
ARM GAS /tmp/ccUpFCH8.s page 4
147:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
148:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions
149:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Programming operation functions
150:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
151:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
152:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
153:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Programming operation functions #####
154:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
155:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
156:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH
157:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** program operations.
158:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
159:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
160:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
161:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
162:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
163:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
164:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Program double word or fast program of a row at a specified address.
165:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
166:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program.
167:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
168:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Data specifies the data to be programmed.
169:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter is the data for the double word program and the address where
170:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * are stored the data for the row fast program.
171:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
172:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
173:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
27 .loc 1 175 0
28 .cfi_startproc
29 @ args = 0, pretend = 0, frame = 0
30 @ frame_needed = 0, uses_anonymous_args = 0
31 .LVL0:
32 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr}
33 .LCFI0:
34 .cfi_def_cfa_offset 32
35 .cfi_offset 4, -32
36 .cfi_offset 5, -28
37 .cfi_offset 6, -24
38 .cfi_offset 7, -20
39 .cfi_offset 8, -16
40 .cfi_offset 9, -12
41 .cfi_offset 10, -8
42 .cfi_offset 14, -4
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
177:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t prog_bit = 0;
178:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
180:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
181:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Locked */
183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_LOCK(&pFlash);
43 .loc 1 183 0
44 0004 DFF82081 ldr r8, .L32+4
45 0008 98F80060 ldrb r6, [r8] @ zero_extendqisi2
46 .LVL1:
ARM GAS /tmp/ccUpFCH8.s page 5
47 000c 012E cmp r6, #1
48 000e 56D0 beq .L17
49 0010 9A46 mov r10, r3
50 .loc 1 183 0 is_stmt 0 discriminator 2
51 0012 0123 movs r3, #1
52 0014 1446 mov r4, r2
53 0016 0D46 mov r5, r1
54 0018 8146 mov r9, r0
55 001a 88F80030 strb r3, [r8]
56 .LVL2:
57 .LBB54:
58 .LBB55:
184:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
186:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
188:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (status == HAL_OK)
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
190:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
191:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD)
193:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
194:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program double-word (64-bit) at a specified address */
195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
197:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((TypeProgram == FLASH_TYPEPROGRAM_FAST) || (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_
199:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Fast program a 32 row double-word (64-bit) at a specified address */
201:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_Fast(Address, (uint32_t)Data);
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
203:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If it is the last row, the bit will be cleared at the end of the operation */
204:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_LAST)
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_FSTPG;
207:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
209:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
210:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
213:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
215:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If the program operation is completed, disable the PG or FSTPG Bit */
218:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (prog_bit != 0U)
219:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
220:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, prog_bit);
221:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
222:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
223:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
224:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
227:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* return status */
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
ARM GAS /tmp/ccUpFCH8.s page 6
229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
231:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
232:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Program double word or fast program of a row at a specified address with interrupt enab
233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program.
235:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
236:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Data specifies the data to be programmed.
237:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter is the data for the double word program and the address where
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * are stored the data for the row fast program.
239:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
240:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
246:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
247:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
248:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
249:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Locked */
250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_LOCK(&pFlash);
251:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
252:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Reset error code */
253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
254:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
255:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
258:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (status != HAL_OK)
259:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
261:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
262:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
264:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
265:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set internal variables used by the IRQ handler */
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_LAST)
267:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_LAST;
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
270:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
271:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM;
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Address = Address;
275:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
276:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Enable End of Operation and Error interrupts */
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_OPERR);
278:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
279:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD)
280:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program double-word (64-bit) at a specified address */
282:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
284:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((TypeProgram == FLASH_TYPEPROGRAM_FAST) || (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_
285:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccUpFCH8.s page 7
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Fast program a 32 row double-word (64-bit) at a specified address */
287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_Fast(Address, (uint32_t)Data);
288:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
289:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
290:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
292:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
294:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
295:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
298:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Handle FLASH interrupt request.
300:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
301:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void)
303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tmp_page;
305:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
306:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_ProcedureTypeDef procedure;
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
308:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If the operation is completed, disable the PG, PNB, MER1, MER2 and PER Bit */
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_MER1 | FLASH_CR_PER | FLASH_CR_PNB));
310:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
311:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_MER2);
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #endif
313:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
314:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable the FSTPG Bit only if it is the last row programmed */
315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAM_LAST)
316:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_FSTPG);
318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
319:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
320:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH operation error flags */
321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
322:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
323:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0U)
324:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
325:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Save the error code */
326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode |= error;
327:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
328:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear error programming flags */
329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(error);
330:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
331:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
332:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches() ;
333:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
334:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH error interrupt user callback */
335:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
336:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
337:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
338:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Page);
339:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if (procedure == FLASH_PROC_MASS_ERASE)
341:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Bank);
ARM GAS /tmp/ccUpFCH8.s page 8
343:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
344:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((procedure == FLASH_PROC_PROGRAM) ||
345:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
347:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Address);
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
349:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
350:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
352:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /*Stop the procedure ongoing*/
355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
356:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
358:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH End of Operation flag */
359:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
362:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
364:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_PAGE_ERASE)
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
366:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nb of pages to erased can be decreased */
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.NbPagesToErase--;
368:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check if there are still pages to erase*/
370:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.NbPagesToErase != 0U)
371:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Indicate user which page has been erased*/
373:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Page);
374:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
375:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Increment page number */
376:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Page++;
377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
378:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
379:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
381:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
382:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* No more pages to Erase */
383:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Reset Address and stop Erase pages procedure */
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Page = 0xFFFFFFFFU;
385:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
386:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
388:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches() ;
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
391:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Page);
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
394:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
396:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
397:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches() ;
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
399:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
ARM GAS /tmp/ccUpFCH8.s page 9
400:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
404:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank);
405:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
406:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((procedure == FLASH_PROC_PROGRAM) ||
407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
408:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program ended. Return the selected address */
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
411:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address);
412:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
414:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
415:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
417:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
418:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /*Clear the procedure ongoing*/
419:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
420:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
421:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_NONE)
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable End of Operation and Error interrupts */
426:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_OPERR);
427:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
428:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
430:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
432:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
433:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
434:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback.
435:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure:
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Mass Erase: Bank number which has been requested to erase
437:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Page Erase: Page which has been erased
438:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * (if 0xFFFFFFFF, it means that all the selected pages have been erase
439:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Program: Address which was selected for data program
440:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
443:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
445:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** UNUSED(ReturnValue);
446:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
447:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* NOTE : This function should not be modified, when the callback is needed,
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file
449:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
450:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
452:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH operation error interrupt callback.
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure:
455:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Mass Erase: Bank number which has been requested to erase
456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Page Erase: Page number which returned an error
ARM GAS /tmp/ccUpFCH8.s page 10
457:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Program: Address which was selected for data program
458:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
459:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
461:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
463:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** UNUSED(ReturnValue);
464:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
465:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* NOTE : This function should not be modified, when the callback is needed,
466:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file
467:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
468:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
469:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
470:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
471:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
472:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
473:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
474:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions
475:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Management functions
476:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
477:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
478:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
479:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Peripheral Control functions #####
480:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
481:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
482:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH
483:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** memory operations.
484:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
485:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
486:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
487:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
488:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
489:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
490:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Unlock the FLASH control register access.
491:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
492:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void)
494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
496:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
497:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
498:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Authorize the FLASH Registers access */
500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1);
501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
502:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
503:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify Flash is unlocked */
504:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
505:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
506:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_ERROR;
507:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
508:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
510:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
511:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
512:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
513:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
ARM GAS /tmp/ccUpFCH8.s page 11
514:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Lock the FLASH control register access.
515:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
516:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
517:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void)
518:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
519:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
521:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_LOCK);
523:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
524:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify Flash is locked */
525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
526:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
527:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_OK;
528:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
530:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
532:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
533:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
534:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Unlock the FLASH Option Bytes Registers access.
535:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
536:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
537:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
538:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
539:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
540:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
541:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
542:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
543:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1);
545:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
546:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
547:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify option bytes are unlocked */
548:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
549:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_ERROR;
551:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
552:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
553:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
554:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
556:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
557:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
558:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Lock the FLASH Option Bytes Registers access.
559:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
560:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
561:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
562:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
563:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
565:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTLOCK);
567:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
568:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Verify option bytes are locked */
569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
570:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccUpFCH8.s page 12
571:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_OK;
572:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
574:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
576:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
577:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
578:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Launch the option byte loading.
579:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
580:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
581:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
582:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
583:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the bit to force the option byte reloading */
584:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_OBL_LAUNCH);
585:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
586:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
587:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE));
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
589:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
590:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
591:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
593:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions
595:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Peripheral Errors functions
596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
597:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
598:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
599:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Peripheral Errors functions #####
600:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
601:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
602:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral.
603:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
604:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
605:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
606:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
607:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
608:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
609:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Get the specific FLASH error flag.
610:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval FLASH_ErrorCode. The returned value can be:
611:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP)
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag
613:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag
614:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag
615:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag
616:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag
617:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_NONE: No error set
618:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OP: FLASH Operation error
619:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PROG: FLASH Programming error
620:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protection error
621:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming alignment error
622:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_SIZ: FLASH Size error
623:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming sequence error
624:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_MIS: FLASH Fast programming data miss error
625:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_FAST: FLASH Fast programming error
626:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH PCROP read error
627:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPTV: FLASH Option validity error
ARM GAS /tmp/ccUpFCH8.s page 13
628:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
629:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void)
630:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
631:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return pFlash.ErrorCode;
632:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
633:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
634:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
635:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
636:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
637:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
638:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
639:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
641:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
642:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private functions ---------------------------------------------------------*/
643:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
644:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions
645:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
646:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
647:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
648:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
649:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete.
650:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Timeout maximum flash operation timeout.
651:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
652:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
653:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
654:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
655:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error
657:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** flag will be set */
658:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick();
59 .loc 1 659 0 is_stmt 1 discriminator 2
60 001e FFF7FEFF bl HAL_GetTick
61 .LVL3:
660:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
661:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
62 .loc 1 662 0 discriminator 2
63 0022 404E ldr r6, .L32
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
64 .loc 1 659 0 discriminator 2
65 0024 0746 mov r7, r0
66 .LVL4:
67 0026 05E0 b .L3
68 .LVL5:
69 .L5:
663:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if ((HAL_GetTick() - tickstart) > Timeout)
70 .loc 1 664 0
71 0028 FFF7FEFF bl HAL_GetTick
72 .LVL6:
73 002c C01B subs r0, r0, r7
74 002e B0F57A7F cmp r0, #1000
75 0032 3ED8 bhi .L18
76 .L3:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccUpFCH8.s page 14
77 .loc 1 662 0
78 0034 3269 ldr r2, [r6, #16]
79 0036 D103 lsls r1, r2, #15
80 0038 F6D4 bmi .L5
665:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_TIMEOUT;
667:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
668:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
669:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
670:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH operation error flags */
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
81 .loc 1 671 0
82 003a 3769 ldr r7, [r6, #16]
83 .LVL7:
84 003c 4CF2FA33 movw r3, #50170
85 .LVL8:
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
86 .loc 1 672 0
87 0040 1F40 ands r7, r7, r3
88 .LVL9:
89 0042 3FD1 bne .L30
90 .LVL10:
91 .LBB56:
92 .LBB57:
673:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
674:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Save the error code */
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode |= error;
676:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
677:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear error programming flags */
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(error);
679:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_ERROR;
681:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
682:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
683:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH End of Operation flag */
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
93 .loc 1 684 0
94 0044 3369 ldr r3, [r6, #16]
95 0046 DA07 lsls r2, r3, #31
685:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
686:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
96 .loc 1 687 0
97 0048 44BF itt mi
98 004a 0123 movmi r3, #1
99 004c 3361 strmi r3, [r6, #16]
100 .LVL11:
101 .LBE57:
102 .LBE56:
103 .LBE55:
104 .LBE54:
190:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
105 .loc 1 190 0
106 004e 0023 movs r3, #0
107 0050 C8F80430 str r3, [r8, #4]
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
108 .loc 1 192 0
ARM GAS /tmp/ccUpFCH8.s page 15
109 0054 B9F1000F cmp r9, #0
110 0058 3CD1 bne .L8
111 .LVL12:
112 .LBB60:
113 .LBB61:
688:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
690:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If there is an error flag set */
691:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_OK;
692:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
693:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
694:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
695:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Program double-word (64-bit) at a specified address.
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Data specifies the data to be programmed.
698:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
699:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data)
701:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
702:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
704:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set PG bit */
706:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_PG);
114 .loc 1 706 0
115 005a 324A ldr r2, .L32
116 005c 5369 ldr r3, [r2, #20]
117 005e 43F00103 orr r3, r3, #1
118 0062 5361 str r3, [r2, #20]
707:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
708:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program first word */
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *(uint32_t *)Address = (uint32_t)Data;
119 .loc 1 709 0
120 0064 2C60 str r4, [r5]
121 .LBB62:
122 .LBB63:
123 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h"
1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//**
2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h
3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file
4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.2.0
5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 08. May 2019
6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/
7:Drivers/CMSIS/Include/cmsis_gcc.h **** /*
8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
9:Drivers/CMSIS/Include/cmsis_gcc.h **** *
10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0
11:Drivers/CMSIS/Include/cmsis_gcc.h **** *
12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may
13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License.
14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at
15:Drivers/CMSIS/Include/cmsis_gcc.h **** *
16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0
17:Drivers/CMSIS/Include/cmsis_gcc.h **** *
18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software
19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT
20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ARM GAS /tmp/ccUpFCH8.s page 16
21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and
22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License.
23:Drivers/CMSIS/Include/cmsis_gcc.h **** */
24:Drivers/CMSIS/Include/cmsis_gcc.h ****
25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
27:Drivers/CMSIS/Include/cmsis_gcc.h ****
28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0)
37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
38:Drivers/CMSIS/Include/cmsis_gcc.h ****
39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline
45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE
47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline
48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE
50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN
53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__))
54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED
56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used))
57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK
59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak))
60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED
62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1)))
63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT
65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION
68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1)))
69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */
71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; };
75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
ARM GAS /tmp/ccUpFCH8.s page 17
78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE
79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))-
85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ
87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add
93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE
95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))-
101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ
103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add
109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED
111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x)))
112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT
114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict
115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
116:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __COMPILER_BARRIER
117:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __COMPILER_BARRIER() __ASM volatile("":::"memory")
118:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
119:Drivers/CMSIS/Include/cmsis_gcc.h ****
120:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ######################### Startup and Lowlevel Init ######################## */
121:Drivers/CMSIS/Include/cmsis_gcc.h ****
122:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PROGRAM_START
123:Drivers/CMSIS/Include/cmsis_gcc.h ****
124:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Initializes data and bss sections
126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details This default implementations initialized all data and additional bss
127:Drivers/CMSIS/Include/cmsis_gcc.h **** sections relying on .copy.table and .zero.table specified properly
128:Drivers/CMSIS/Include/cmsis_gcc.h **** in the used linker script.
129:Drivers/CMSIS/Include/cmsis_gcc.h ****
130:Drivers/CMSIS/Include/cmsis_gcc.h **** */
131:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)
132:Drivers/CMSIS/Include/cmsis_gcc.h **** {
133:Drivers/CMSIS/Include/cmsis_gcc.h **** extern void _start(void) __NO_RETURN;
134:Drivers/CMSIS/Include/cmsis_gcc.h ****
ARM GAS /tmp/ccUpFCH8.s page 18
135:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct {
136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t const* src;
137:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest;
138:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen;
139:Drivers/CMSIS/Include/cmsis_gcc.h **** } __copy_table_t;
140:Drivers/CMSIS/Include/cmsis_gcc.h ****
141:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct {
142:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest;
143:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen;
144:Drivers/CMSIS/Include/cmsis_gcc.h **** } __zero_table_t;
145:Drivers/CMSIS/Include/cmsis_gcc.h ****
146:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_start__;
147:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_end__;
148:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_start__;
149:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_end__;
150:Drivers/CMSIS/Include/cmsis_gcc.h ****
151:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable
152:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; i<pTable->wlen; ++i) {
153:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = pTable->src[i];
154:Drivers/CMSIS/Include/cmsis_gcc.h **** }
155:Drivers/CMSIS/Include/cmsis_gcc.h **** }
156:Drivers/CMSIS/Include/cmsis_gcc.h ****
157:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable
158:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; i<pTable->wlen; ++i) {
159:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = 0u;
160:Drivers/CMSIS/Include/cmsis_gcc.h **** }
161:Drivers/CMSIS/Include/cmsis_gcc.h **** }
162:Drivers/CMSIS/Include/cmsis_gcc.h ****
163:Drivers/CMSIS/Include/cmsis_gcc.h **** _start();
164:Drivers/CMSIS/Include/cmsis_gcc.h **** }
165:Drivers/CMSIS/Include/cmsis_gcc.h ****
166:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PROGRAM_START __cmsis_start
167:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
168:Drivers/CMSIS/Include/cmsis_gcc.h ****
169:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INITIAL_SP
170:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INITIAL_SP __StackTop
171:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
172:Drivers/CMSIS/Include/cmsis_gcc.h ****
173:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STACK_LIMIT
174:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STACK_LIMIT __StackLimit
175:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
176:Drivers/CMSIS/Include/cmsis_gcc.h ****
177:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE
178:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE __Vectors
179:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
180:Drivers/CMSIS/Include/cmsis_gcc.h ****
181:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE_ATTRIBUTE
182:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors")))
183:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
184:Drivers/CMSIS/Include/cmsis_gcc.h ****
185:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */
186:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface
187:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
188:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
189:Drivers/CMSIS/Include/cmsis_gcc.h **** */
190:Drivers/CMSIS/Include/cmsis_gcc.h ****
191:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
ARM GAS /tmp/ccUpFCH8.s page 19
192:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts
193:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
194:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
195:Drivers/CMSIS/Include/cmsis_gcc.h **** */
196:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void)
197:Drivers/CMSIS/Include/cmsis_gcc.h **** {
198:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
199:Drivers/CMSIS/Include/cmsis_gcc.h **** }
200:Drivers/CMSIS/Include/cmsis_gcc.h ****
201:Drivers/CMSIS/Include/cmsis_gcc.h ****
202:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
203:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
204:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
205:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
206:Drivers/CMSIS/Include/cmsis_gcc.h **** */
207:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void)
208:Drivers/CMSIS/Include/cmsis_gcc.h **** {
209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory");
210:Drivers/CMSIS/Include/cmsis_gcc.h **** }
211:Drivers/CMSIS/Include/cmsis_gcc.h ****
212:Drivers/CMSIS/Include/cmsis_gcc.h ****
213:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
214:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register
215:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register.
216:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value
217:Drivers/CMSIS/Include/cmsis_gcc.h **** */
218:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
219:Drivers/CMSIS/Include/cmsis_gcc.h **** {
220:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
221:Drivers/CMSIS/Include/cmsis_gcc.h ****
222:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) );
223:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
224:Drivers/CMSIS/Include/cmsis_gcc.h **** }
225:Drivers/CMSIS/Include/cmsis_gcc.h ****
226:Drivers/CMSIS/Include/cmsis_gcc.h ****
227:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
228:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure)
230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode.
231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value
232:Drivers/CMSIS/Include/cmsis_gcc.h **** */
233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
234:Drivers/CMSIS/Include/cmsis_gcc.h **** {
235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
236:Drivers/CMSIS/Include/cmsis_gcc.h ****
237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
239:Drivers/CMSIS/Include/cmsis_gcc.h **** }
240:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
241:Drivers/CMSIS/Include/cmsis_gcc.h ****
242:Drivers/CMSIS/Include/cmsis_gcc.h ****
243:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
244:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register
245:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register.
246:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
247:Drivers/CMSIS/Include/cmsis_gcc.h **** */
248:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
ARM GAS /tmp/ccUpFCH8.s page 20
249:Drivers/CMSIS/Include/cmsis_gcc.h **** {
250:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
251:Drivers/CMSIS/Include/cmsis_gcc.h **** }
252:Drivers/CMSIS/Include/cmsis_gcc.h ****
253:Drivers/CMSIS/Include/cmsis_gcc.h ****
254:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
255:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
256:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure)
257:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state.
258:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
259:Drivers/CMSIS/Include/cmsis_gcc.h **** */
260:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
261:Drivers/CMSIS/Include/cmsis_gcc.h **** {
262:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
263:Drivers/CMSIS/Include/cmsis_gcc.h **** }
264:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
265:Drivers/CMSIS/Include/cmsis_gcc.h ****
266:Drivers/CMSIS/Include/cmsis_gcc.h ****
267:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
268:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register
269:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register.
270:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value
271:Drivers/CMSIS/Include/cmsis_gcc.h **** */
272:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
273:Drivers/CMSIS/Include/cmsis_gcc.h **** {
274:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
275:Drivers/CMSIS/Include/cmsis_gcc.h ****
276:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
277:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
278:Drivers/CMSIS/Include/cmsis_gcc.h **** }
279:Drivers/CMSIS/Include/cmsis_gcc.h ****
280:Drivers/CMSIS/Include/cmsis_gcc.h ****
281:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
282:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register
283:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register.
284:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value
285:Drivers/CMSIS/Include/cmsis_gcc.h **** */
286:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void)
287:Drivers/CMSIS/Include/cmsis_gcc.h **** {
288:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
289:Drivers/CMSIS/Include/cmsis_gcc.h ****
290:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) );
291:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
292:Drivers/CMSIS/Include/cmsis_gcc.h **** }
293:Drivers/CMSIS/Include/cmsis_gcc.h ****
294:Drivers/CMSIS/Include/cmsis_gcc.h ****
295:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
296:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register
297:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register.
298:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value
299:Drivers/CMSIS/Include/cmsis_gcc.h **** */
300:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void)
301:Drivers/CMSIS/Include/cmsis_gcc.h **** {
302:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
303:Drivers/CMSIS/Include/cmsis_gcc.h ****
304:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
305:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
ARM GAS /tmp/ccUpFCH8.s page 21
306:Drivers/CMSIS/Include/cmsis_gcc.h **** }
307:Drivers/CMSIS/Include/cmsis_gcc.h ****
308:Drivers/CMSIS/Include/cmsis_gcc.h ****
309:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
310:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer
311:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP).
312:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
313:Drivers/CMSIS/Include/cmsis_gcc.h **** */
314:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void)
315:Drivers/CMSIS/Include/cmsis_gcc.h **** {
316:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
317:Drivers/CMSIS/Include/cmsis_gcc.h ****
318:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) );
319:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
320:Drivers/CMSIS/Include/cmsis_gcc.h **** }
321:Drivers/CMSIS/Include/cmsis_gcc.h ****
322:Drivers/CMSIS/Include/cmsis_gcc.h ****
323:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
324:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
325:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure)
326:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s
327:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
328:Drivers/CMSIS/Include/cmsis_gcc.h **** */
329:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
330:Drivers/CMSIS/Include/cmsis_gcc.h **** {
331:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
332:Drivers/CMSIS/Include/cmsis_gcc.h ****
333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) );
334:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
335:Drivers/CMSIS/Include/cmsis_gcc.h **** }
336:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
337:Drivers/CMSIS/Include/cmsis_gcc.h ****
338:Drivers/CMSIS/Include/cmsis_gcc.h ****
339:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
340:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer
341:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP).
342:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
343:Drivers/CMSIS/Include/cmsis_gcc.h **** */
344:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
345:Drivers/CMSIS/Include/cmsis_gcc.h **** {
346:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
347:Drivers/CMSIS/Include/cmsis_gcc.h **** }
348:Drivers/CMSIS/Include/cmsis_gcc.h ****
349:Drivers/CMSIS/Include/cmsis_gcc.h ****
350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
351:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure)
353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta
354:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
355:Drivers/CMSIS/Include/cmsis_gcc.h **** */
356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
357:Drivers/CMSIS/Include/cmsis_gcc.h **** {
358:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
359:Drivers/CMSIS/Include/cmsis_gcc.h **** }
360:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
361:Drivers/CMSIS/Include/cmsis_gcc.h ****
362:Drivers/CMSIS/Include/cmsis_gcc.h ****
ARM GAS /tmp/ccUpFCH8.s page 22
363:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
364:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer
365:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP).
366:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
367:Drivers/CMSIS/Include/cmsis_gcc.h **** */
368:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void)
369:Drivers/CMSIS/Include/cmsis_gcc.h **** {
370:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
371:Drivers/CMSIS/Include/cmsis_gcc.h ****
372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) );
373:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
374:Drivers/CMSIS/Include/cmsis_gcc.h **** }
375:Drivers/CMSIS/Include/cmsis_gcc.h ****
376:Drivers/CMSIS/Include/cmsis_gcc.h ****
377:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
378:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
379:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure)
380:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat
381:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
382:Drivers/CMSIS/Include/cmsis_gcc.h **** */
383:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
384:Drivers/CMSIS/Include/cmsis_gcc.h **** {
385:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
386:Drivers/CMSIS/Include/cmsis_gcc.h ****
387:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
388:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
389:Drivers/CMSIS/Include/cmsis_gcc.h **** }
390:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
391:Drivers/CMSIS/Include/cmsis_gcc.h ****
392:Drivers/CMSIS/Include/cmsis_gcc.h ****
393:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
394:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer
395:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP).
396:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
397:Drivers/CMSIS/Include/cmsis_gcc.h **** */
398:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
399:Drivers/CMSIS/Include/cmsis_gcc.h **** {
400:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
401:Drivers/CMSIS/Include/cmsis_gcc.h **** }
402:Drivers/CMSIS/Include/cmsis_gcc.h ****
403:Drivers/CMSIS/Include/cmsis_gcc.h ****
404:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
405:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
406:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure)
407:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
408:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
409:Drivers/CMSIS/Include/cmsis_gcc.h **** */
410:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
411:Drivers/CMSIS/Include/cmsis_gcc.h **** {
412:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
413:Drivers/CMSIS/Include/cmsis_gcc.h **** }
414:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
415:Drivers/CMSIS/Include/cmsis_gcc.h ****
416:Drivers/CMSIS/Include/cmsis_gcc.h ****
417:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
418:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
419:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure)
ARM GAS /tmp/ccUpFCH8.s page 23
420:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
421:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value
422:Drivers/CMSIS/Include/cmsis_gcc.h **** */
423:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
424:Drivers/CMSIS/Include/cmsis_gcc.h **** {
425:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
426:Drivers/CMSIS/Include/cmsis_gcc.h ****
427:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
428:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
429:Drivers/CMSIS/Include/cmsis_gcc.h **** }
430:Drivers/CMSIS/Include/cmsis_gcc.h ****
431:Drivers/CMSIS/Include/cmsis_gcc.h ****
432:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
433:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure)
434:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
435:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set
436:Drivers/CMSIS/Include/cmsis_gcc.h **** */
437:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
438:Drivers/CMSIS/Include/cmsis_gcc.h **** {
439:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
440:Drivers/CMSIS/Include/cmsis_gcc.h **** }
441:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
442:Drivers/CMSIS/Include/cmsis_gcc.h ****
443:Drivers/CMSIS/Include/cmsis_gcc.h ****
444:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
445:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask
446:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register.
447:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
448:Drivers/CMSIS/Include/cmsis_gcc.h **** */
449:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
450:Drivers/CMSIS/Include/cmsis_gcc.h **** {
451:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
452:Drivers/CMSIS/Include/cmsis_gcc.h ****
453:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
454:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
455:Drivers/CMSIS/Include/cmsis_gcc.h **** }
456:Drivers/CMSIS/Include/cmsis_gcc.h ****
457:Drivers/CMSIS/Include/cmsis_gcc.h ****
458:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
459:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
460:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure)
461:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg
462:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
463:Drivers/CMSIS/Include/cmsis_gcc.h **** */
464:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
465:Drivers/CMSIS/Include/cmsis_gcc.h **** {
466:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
467:Drivers/CMSIS/Include/cmsis_gcc.h ****
468:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory");
469:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
470:Drivers/CMSIS/Include/cmsis_gcc.h **** }
471:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
472:Drivers/CMSIS/Include/cmsis_gcc.h ****
473:Drivers/CMSIS/Include/cmsis_gcc.h ****
474:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
475:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask
476:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register.
ARM GAS /tmp/ccUpFCH8.s page 24
477:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
478:Drivers/CMSIS/Include/cmsis_gcc.h **** */
479:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
480:Drivers/CMSIS/Include/cmsis_gcc.h **** {
481:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
482:Drivers/CMSIS/Include/cmsis_gcc.h **** }
483:Drivers/CMSIS/Include/cmsis_gcc.h ****
484:Drivers/CMSIS/Include/cmsis_gcc.h ****
485:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
486:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure)
488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
490:Drivers/CMSIS/Include/cmsis_gcc.h **** */
491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
492:Drivers/CMSIS/Include/cmsis_gcc.h **** {
493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
494:Drivers/CMSIS/Include/cmsis_gcc.h **** }
495:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
496:Drivers/CMSIS/Include/cmsis_gcc.h ****
497:Drivers/CMSIS/Include/cmsis_gcc.h ****
498:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
499:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
500:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
501:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
502:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ
503:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
504:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
505:Drivers/CMSIS/Include/cmsis_gcc.h **** */
506:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void)
507:Drivers/CMSIS/Include/cmsis_gcc.h **** {
508:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory");
509:Drivers/CMSIS/Include/cmsis_gcc.h **** }
510:Drivers/CMSIS/Include/cmsis_gcc.h ****
511:Drivers/CMSIS/Include/cmsis_gcc.h ****
512:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
513:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ
514:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR.
515:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
516:Drivers/CMSIS/Include/cmsis_gcc.h **** */
517:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void)
518:Drivers/CMSIS/Include/cmsis_gcc.h **** {
519:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory");
520:Drivers/CMSIS/Include/cmsis_gcc.h **** }
521:Drivers/CMSIS/Include/cmsis_gcc.h ****
522:Drivers/CMSIS/Include/cmsis_gcc.h ****
523:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
524:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority
525:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register.
526:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
527:Drivers/CMSIS/Include/cmsis_gcc.h **** */
528:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
529:Drivers/CMSIS/Include/cmsis_gcc.h **** {
530:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
531:Drivers/CMSIS/Include/cmsis_gcc.h ****
532:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) );
533:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
ARM GAS /tmp/ccUpFCH8.s page 25
534:Drivers/CMSIS/Include/cmsis_gcc.h **** }
535:Drivers/CMSIS/Include/cmsis_gcc.h ****
536:Drivers/CMSIS/Include/cmsis_gcc.h ****
537:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
538:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
539:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure)
540:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state.
541:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
542:Drivers/CMSIS/Include/cmsis_gcc.h **** */
543:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
544:Drivers/CMSIS/Include/cmsis_gcc.h **** {
545:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
546:Drivers/CMSIS/Include/cmsis_gcc.h ****
547:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
548:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
549:Drivers/CMSIS/Include/cmsis_gcc.h **** }
550:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
551:Drivers/CMSIS/Include/cmsis_gcc.h ****
552:Drivers/CMSIS/Include/cmsis_gcc.h ****
553:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
554:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority
555:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register.
556:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
557:Drivers/CMSIS/Include/cmsis_gcc.h **** */
558:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
559:Drivers/CMSIS/Include/cmsis_gcc.h **** {
560:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
561:Drivers/CMSIS/Include/cmsis_gcc.h **** }
562:Drivers/CMSIS/Include/cmsis_gcc.h ****
563:Drivers/CMSIS/Include/cmsis_gcc.h ****
564:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
565:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
566:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure)
567:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state.
568:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
569:Drivers/CMSIS/Include/cmsis_gcc.h **** */
570:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
571:Drivers/CMSIS/Include/cmsis_gcc.h **** {
572:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
573:Drivers/CMSIS/Include/cmsis_gcc.h **** }
574:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
575:Drivers/CMSIS/Include/cmsis_gcc.h ****
576:Drivers/CMSIS/Include/cmsis_gcc.h ****
577:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
578:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition
579:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable
580:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level.
581:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
582:Drivers/CMSIS/Include/cmsis_gcc.h **** */
583:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
584:Drivers/CMSIS/Include/cmsis_gcc.h **** {
585:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
586:Drivers/CMSIS/Include/cmsis_gcc.h **** }
587:Drivers/CMSIS/Include/cmsis_gcc.h ****
588:Drivers/CMSIS/Include/cmsis_gcc.h ****
589:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
590:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask
ARM GAS /tmp/ccUpFCH8.s page 26
591:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register.
592:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value
593:Drivers/CMSIS/Include/cmsis_gcc.h **** */
594:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
595:Drivers/CMSIS/Include/cmsis_gcc.h **** {
596:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
597:Drivers/CMSIS/Include/cmsis_gcc.h ****
598:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
599:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
600:Drivers/CMSIS/Include/cmsis_gcc.h **** }
601:Drivers/CMSIS/Include/cmsis_gcc.h ****
602:Drivers/CMSIS/Include/cmsis_gcc.h ****
603:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
604:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
605:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure)
606:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state.
607:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value
608:Drivers/CMSIS/Include/cmsis_gcc.h **** */
609:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
610:Drivers/CMSIS/Include/cmsis_gcc.h **** {
611:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
612:Drivers/CMSIS/Include/cmsis_gcc.h ****
613:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
614:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
615:Drivers/CMSIS/Include/cmsis_gcc.h **** }
616:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
617:Drivers/CMSIS/Include/cmsis_gcc.h ****
618:Drivers/CMSIS/Include/cmsis_gcc.h ****
619:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
620:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask
621:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register.
622:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set
623:Drivers/CMSIS/Include/cmsis_gcc.h **** */
624:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
625:Drivers/CMSIS/Include/cmsis_gcc.h **** {
626:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
627:Drivers/CMSIS/Include/cmsis_gcc.h **** }
628:Drivers/CMSIS/Include/cmsis_gcc.h ****
629:Drivers/CMSIS/Include/cmsis_gcc.h ****
630:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
631:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
632:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure)
633:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state.
634:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set
635:Drivers/CMSIS/Include/cmsis_gcc.h **** */
636:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
637:Drivers/CMSIS/Include/cmsis_gcc.h **** {
638:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
639:Drivers/CMSIS/Include/cmsis_gcc.h **** }
640:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
641:Drivers/CMSIS/Include/cmsis_gcc.h ****
642:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
643:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
644:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */
645:Drivers/CMSIS/Include/cmsis_gcc.h ****
646:Drivers/CMSIS/Include/cmsis_gcc.h ****
647:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
ARM GAS /tmp/ccUpFCH8.s page 27
648:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
649:Drivers/CMSIS/Include/cmsis_gcc.h ****
650:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit
652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure
654:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
655:Drivers/CMSIS/Include/cmsis_gcc.h ****
656:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
657:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value
658:Drivers/CMSIS/Include/cmsis_gcc.h **** */
659:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
660:Drivers/CMSIS/Include/cmsis_gcc.h **** {
661:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
662:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
663:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
664:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
665:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
666:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
667:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) );
668:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
669:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
670:Drivers/CMSIS/Include/cmsis_gcc.h **** }
671:Drivers/CMSIS/Include/cmsis_gcc.h ****
672:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
673:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
674:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure)
675:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
676:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always.
677:Drivers/CMSIS/Include/cmsis_gcc.h ****
678:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in
679:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value
680:Drivers/CMSIS/Include/cmsis_gcc.h **** */
681:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
682:Drivers/CMSIS/Include/cmsis_gcc.h **** {
683:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
684:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
685:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
686:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
687:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
688:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) );
689:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
690:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
691:Drivers/CMSIS/Include/cmsis_gcc.h **** }
692:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
693:Drivers/CMSIS/Include/cmsis_gcc.h ****
694:Drivers/CMSIS/Include/cmsis_gcc.h ****
695:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
696:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit
697:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
698:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure
699:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
700:Drivers/CMSIS/Include/cmsis_gcc.h ****
701:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
702:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set
703:Drivers/CMSIS/Include/cmsis_gcc.h **** */
704:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
ARM GAS /tmp/ccUpFCH8.s page 28
705:Drivers/CMSIS/Include/cmsis_gcc.h **** {
706:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
707:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
708:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
709:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit;
710:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
711:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
712:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
713:Drivers/CMSIS/Include/cmsis_gcc.h **** }
714:Drivers/CMSIS/Include/cmsis_gcc.h ****
715:Drivers/CMSIS/Include/cmsis_gcc.h ****
716:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
717:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
718:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure)
719:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
720:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored.
721:Drivers/CMSIS/Include/cmsis_gcc.h ****
722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s
723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set
724:Drivers/CMSIS/Include/cmsis_gcc.h **** */
725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
726:Drivers/CMSIS/Include/cmsis_gcc.h **** {
727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
728:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
729:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit;
730:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
731:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
732:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
733:Drivers/CMSIS/Include/cmsis_gcc.h **** }
734:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
735:Drivers/CMSIS/Include/cmsis_gcc.h ****
736:Drivers/CMSIS/Include/cmsis_gcc.h ****
737:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
738:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit
739:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
740:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure
741:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
742:Drivers/CMSIS/Include/cmsis_gcc.h ****
743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
744:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value
745:Drivers/CMSIS/Include/cmsis_gcc.h **** */
746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
747:Drivers/CMSIS/Include/cmsis_gcc.h **** {
748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
749:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
750:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
751:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
752:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
753:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
754:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) );
755:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
756:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
757:Drivers/CMSIS/Include/cmsis_gcc.h **** }
758:Drivers/CMSIS/Include/cmsis_gcc.h ****
759:Drivers/CMSIS/Include/cmsis_gcc.h ****
760:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
761:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
ARM GAS /tmp/ccUpFCH8.s page 29
762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure)
763:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
764:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always.
765:Drivers/CMSIS/Include/cmsis_gcc.h ****
766:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec
767:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value
768:Drivers/CMSIS/Include/cmsis_gcc.h **** */
769:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
770:Drivers/CMSIS/Include/cmsis_gcc.h **** {
771:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
772:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
773:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
774:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
775:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
776:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
777:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
778:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
779:Drivers/CMSIS/Include/cmsis_gcc.h **** }
780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
781:Drivers/CMSIS/Include/cmsis_gcc.h ****
782:Drivers/CMSIS/Include/cmsis_gcc.h ****
783:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
784:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit
785:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
786:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure
787:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
788:Drivers/CMSIS/Include/cmsis_gcc.h ****
789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set
791:Drivers/CMSIS/Include/cmsis_gcc.h **** */
792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
793:Drivers/CMSIS/Include/cmsis_gcc.h **** {
794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
795:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
796:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
797:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit;
798:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
799:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
800:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
801:Drivers/CMSIS/Include/cmsis_gcc.h **** }
802:Drivers/CMSIS/Include/cmsis_gcc.h ****
803:Drivers/CMSIS/Include/cmsis_gcc.h ****
804:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
805:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
806:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure)
807:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
808:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored.
809:Drivers/CMSIS/Include/cmsis_gcc.h ****
810:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu
811:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set
812:Drivers/CMSIS/Include/cmsis_gcc.h **** */
813:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
814:Drivers/CMSIS/Include/cmsis_gcc.h **** {
815:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
816:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
817:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit;
818:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
ARM GAS /tmp/ccUpFCH8.s page 30
819:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
820:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
821:Drivers/CMSIS/Include/cmsis_gcc.h **** }
822:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
823:Drivers/CMSIS/Include/cmsis_gcc.h ****
824:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
825:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */
826:Drivers/CMSIS/Include/cmsis_gcc.h ****
827:Drivers/CMSIS/Include/cmsis_gcc.h ****
828:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
829:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR
830:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register.
831:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value
832:Drivers/CMSIS/Include/cmsis_gcc.h **** */
833:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
834:Drivers/CMSIS/Include/cmsis_gcc.h **** {
835:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
836:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
837:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr)
838:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed
839:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
840:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
841:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr();
842:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
843:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
844:Drivers/CMSIS/Include/cmsis_gcc.h ****
845:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
846:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
847:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
848:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
849:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U);
850:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
851:Drivers/CMSIS/Include/cmsis_gcc.h **** }
852:Drivers/CMSIS/Include/cmsis_gcc.h ****
853:Drivers/CMSIS/Include/cmsis_gcc.h ****
854:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
855:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR
856:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register.
857:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set
858:Drivers/CMSIS/Include/cmsis_gcc.h **** */
859:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
860:Drivers/CMSIS/Include/cmsis_gcc.h **** {
861:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
862:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
863:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr)
864:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed
865:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
866:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
867:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr);
868:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
869:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory");
870:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
871:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
872:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr;
873:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
874:Drivers/CMSIS/Include/cmsis_gcc.h **** }
875:Drivers/CMSIS/Include/cmsis_gcc.h ****
ARM GAS /tmp/ccUpFCH8.s page 31
876:Drivers/CMSIS/Include/cmsis_gcc.h ****
877:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */
878:Drivers/CMSIS/Include/cmsis_gcc.h ****
879:Drivers/CMSIS/Include/cmsis_gcc.h ****
880:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */
881:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
882:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions
883:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
884:Drivers/CMSIS/Include/cmsis_gcc.h **** */
885:Drivers/CMSIS/Include/cmsis_gcc.h ****
886:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2.
887:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l"
888:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */
889:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__)
890:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r)
891:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r)
892:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r)
893:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
894:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r)
895:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r)
896:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r)
897:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
898:Drivers/CMSIS/Include/cmsis_gcc.h ****
899:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
900:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation
901:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes.
902:Drivers/CMSIS/Include/cmsis_gcc.h **** */
903:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop")
904:Drivers/CMSIS/Include/cmsis_gcc.h ****
905:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
906:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt
907:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o
908:Drivers/CMSIS/Include/cmsis_gcc.h **** */
909:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi")
910:Drivers/CMSIS/Include/cmsis_gcc.h ****
911:Drivers/CMSIS/Include/cmsis_gcc.h ****
912:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
913:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event
914:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter
915:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs.
916:Drivers/CMSIS/Include/cmsis_gcc.h **** */
917:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe")
918:Drivers/CMSIS/Include/cmsis_gcc.h ****
919:Drivers/CMSIS/Include/cmsis_gcc.h ****
920:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
921:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event
922:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
923:Drivers/CMSIS/Include/cmsis_gcc.h **** */
924:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev")
925:Drivers/CMSIS/Include/cmsis_gcc.h ****
926:Drivers/CMSIS/Include/cmsis_gcc.h ****
927:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
928:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier
929:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor,
930:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory,
931:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed.
932:Drivers/CMSIS/Include/cmsis_gcc.h **** */
ARM GAS /tmp/ccUpFCH8.s page 32
933:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void)
934:Drivers/CMSIS/Include/cmsis_gcc.h **** {
935:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory");
124 .loc 2 935 0
125 .syntax unified
126 @ 935 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
127 0066 BFF36F8F isb 0xF
128 @ 0 "" 2
129 .thumb
130 .syntax unified
131 .LBE63:
132 .LBE62:
133 .LBE61:
134 .LBE60:
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
135 .loc 1 196 0
136 006a 0127 movs r7, #1
137 .LBB65:
138 .LBB64:
710:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
711:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (independently of compiler optimization behavior) */
713:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __ISB();
714:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
715:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program second word */
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U);
139 .loc 1 716 0
140 006c C5F804A0 str r10, [r5, #4]
141 .LVL13:
142 .L9:
143 .LBE64:
144 .LBE65:
145 .LBB66:
146 .LBB67:
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
147 .loc 1 659 0
148 0070 FFF7FEFF bl HAL_GetTick
149 .LVL14:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
150 .loc 1 662 0
151 0074 2B4C ldr r4, .L32
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
152 .loc 1 659 0
153 0076 0546 mov r5, r0
154 .LVL15:
155 0078 05E0 b .L13
156 .LVL16:
157 .L15:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
158 .loc 1 664 0
159 007a FFF7FEFF bl HAL_GetTick
160 .LVL17:
161 007e 401B subs r0, r0, r5
162 0080 B0F57A7F cmp r0, #1000
163 0084 43D8 bhi .L19
164 .L13:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccUpFCH8.s page 33
165 .loc 1 662 0
166 0086 2369 ldr r3, [r4, #16]
167 0088 DB03 lsls r3, r3, #15
168 008a F6D4 bmi .L15
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
169 .loc 1 671 0
170 008c 2369 ldr r3, [r4, #16]
171 008e 4CF2FA32 movw r2, #50170
172 .LVL18:
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
173 .loc 1 672 0
174 0092 1340 ands r3, r3, r2
175 .LVL19:
176 0094 3DD1 bne .L31
177 .LVL20:
178 .LBB68:
179 .LBB69:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
180 .loc 1 684 0
181 0096 2069 ldr r0, [r4, #16]
182 0098 10F00100 ands r0, r0, #1
183 009c 02D0 beq .L14
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
184 .loc 1 687 0
185 009e 0122 movs r2, #1
186 00a0 1846 mov r0, r3
187 00a2 2261 str r2, [r4, #16]
188 .LVL21:
189 .L14:
190 .LBE69:
191 .LBE68:
192 .LBE67:
193 .LBE66:
218:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
194 .loc 1 218 0
195 00a4 37B1 cbz r7, .L4
220:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
196 .loc 1 220 0
197 00a6 1F4A ldr r2, .L32
198 00a8 5369 ldr r3, [r2, #20]
199 00aa 23EA0707 bic r7, r3, r7
200 .LVL22:
201 00ae 5761 str r7, [r2, #20]
202 00b0 00E0 b .L4
203 .LVL23:
204 .L18:
205 .LBB71:
206 .LBB58:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
207 .loc 1 664 0
208 00b2 0320 movs r0, #3
209 .LVL24:
210 .L4:
211 .LBE58:
212 .LBE71:
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
213 .loc 1 225 0
ARM GAS /tmp/ccUpFCH8.s page 34
214 00b4 0023 movs r3, #0
215 00b6 88F80030 strb r3, [r8]
229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
216 .loc 1 229 0
217 00ba BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
218 .LVL25:
219 .L17:
183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
220 .loc 1 183 0
221 00be 0220 movs r0, #2
222 .LVL26:
229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
223 .loc 1 229 0
224 00c0 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
225 .LVL27:
226 .L30:
227 .LBB72:
228 .LBB59:
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
229 .loc 1 675 0
230 00c4 D8F80430 ldr r3, [r8, #4]
231 00c8 3B43 orrs r3, r3, r7
232 00ca C8F80430 str r3, [r8, #4]
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
233 .loc 1 680 0
234 00ce 0120 movs r0, #1
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
235 .loc 1 678 0
236 00d0 3761 str r7, [r6, #16]
237 .LVL28:
238 00d2 EFE7 b .L4
239 .LVL29:
240 .L8:
241 .LBE59:
242 .LBE72:
198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
243 .loc 1 198 0
244 00d4 09F1FF33 add r3, r9, #-1
245 00d8 012B cmp r3, #1
246 00da C9D8 bhi .L9
247 .LVL30:
248 .LBB73:
249 .LBB74:
717:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
718:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
719:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
720:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Fast program a row double-word (64-bit) at a specified address.
721:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
722:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param DataAddress specifies the address where the data are stored.
723:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
724:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
725:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress)
726:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
727:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint8_t row_index = (2 * FLASH_NB_DOUBLE_WORDS_IN_ROW);
728:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t *dest_addr = (uint32_t *)Address;
729:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t *src_addr = (uint32_t *)DataAddress;
730:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t primask_bit;
ARM GAS /tmp/ccUpFCH8.s page 35
731:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
732:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
733:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_MAIN_MEM_ADDRESS(Address));
734:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
735:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set FSTPG bit */
736:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_FSTPG);
250 .loc 1 736 0
251 00dc 1149 ldr r1, .L32
252 00de 4B69 ldr r3, [r1, #20]
253 00e0 43F48023 orr r3, r3, #262144
729:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t primask_bit;
254 .loc 1 729 0
255 00e4 2246 mov r2, r4
256 .LVL31:
257 .loc 1 736 0
258 00e6 4B61 str r3, [r1, #20]
259 .LBB75:
260 .LBB76:
453:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
261 .loc 2 453 0
262 .syntax unified
263 @ 453 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
264 00e8 EFF31080 MRS r0, primask
265 @ 0 "" 2
266 .thumb
267 .syntax unified
268 .LBE76:
269 .LBE75:
270 .LBB77:
271 .LBB78:
209:Drivers/CMSIS/Include/cmsis_gcc.h **** }
272 .loc 2 209 0
273 .syntax unified
274 @ 209 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
275 00ec 72B6 cpsid i
276 @ 0 "" 2
277 .thumb
278 .syntax unified
279 00ee 2D1B subs r5, r5, r4
280 .LVL32:
281 00f0 04F58071 add r1, r4, #256
282 .LVL33:
283 .L11:
284 .LBE78:
285 .LBE77:
737:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
738:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Enter critical section: Disable interrupts to avoid any interruption during the loop */
739:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** primask_bit = __get_PRIMASK();
740:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __disable_irq();
741:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
742:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program the double words of the row */
743:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** do
744:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
745:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *dest_addr = *src_addr;
286 .loc 1 745 0
287 00f4 1368 ldr r3, [r2]
288 00f6 5351 str r3, [r2, r5]
ARM GAS /tmp/ccUpFCH8.s page 36
289 .LVL34:
746:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** dest_addr++;
747:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** src_addr++;
290 .loc 1 747 0
291 00f8 0432 adds r2, r2, #4
292 .LVL35:
748:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** row_index--;
749:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
750:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** while (row_index != 0U);
293 .loc 1 750 0
294 00fa 8A42 cmp r2, r1
295 00fc FAD1 bne .L11
296 .LVL36:
297 .LBB79:
298 .LBB80:
481:Drivers/CMSIS/Include/cmsis_gcc.h **** }
299 .loc 2 481 0
300 .syntax unified
301 @ 481 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
302 00fe 80F31088 MSR primask, r0
303 @ 0 "" 2
304 .LVL37:
305 .thumb
306 .syntax unified
307 .LBE80:
308 .LBE79:
309 .LBE74:
310 .LBE73:
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
311 .loc 1 206 0
312 0102 B9F1020F cmp r9, #2
313 0106 08BF it eq
314 0108 4FF48027 moveq r7, #262144
315 010c B0E7 b .L9
316 .LVL38:
317 .L19:
318 .LBB81:
319 .LBB70:
666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
320 .loc 1 666 0
321 010e 0320 movs r0, #3
322 0110 C8E7 b .L14
323 .LVL39:
324 .L31:
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
325 .loc 1 675 0
326 0112 D8F80420 ldr r2, [r8, #4]
327 0116 1A43 orrs r2, r2, r3
328 0118 C8F80420 str r2, [r8, #4]
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
329 .loc 1 680 0
330 011c 0120 movs r0, #1
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
331 .loc 1 678 0
332 011e 2361 str r3, [r4, #16]
333 0120 C0E7 b .L14
334 .L33:
ARM GAS /tmp/ccUpFCH8.s page 37
335 0122 00BF .align 2
336 .L32:
337 0124 00200240 .word 1073881088
338 0128 00000000 .word .LANCHOR0
339 .LBE70:
340 .LBE81:
341 .cfi_endproc
342 .LFE329:
344 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
345 .align 1
346 .p2align 2,,3
347 .global HAL_FLASH_Program_IT
348 .syntax unified
349 .thumb
350 .thumb_func
351 .fpu fpv4-sp-d16
353 HAL_FLASH_Program_IT:
354 .LFB330:
243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
355 .loc 1 243 0
356 .cfi_startproc
357 @ args = 0, pretend = 0, frame = 0
358 @ frame_needed = 0, uses_anonymous_args = 0
359 .LVL40:
360 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr}
361 .LCFI1:
362 .cfi_def_cfa_offset 32
363 .cfi_offset 4, -32
364 .cfi_offset 5, -28
365 .cfi_offset 6, -24
366 .cfi_offset 7, -20
367 .cfi_offset 8, -16
368 .cfi_offset 9, -12
369 .cfi_offset 10, -8
370 .cfi_offset 14, -4
250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
371 .loc 1 250 0
372 0004 DFF8F490 ldr r9, .L55+4
373 0008 99F80060 ldrb r6, [r9] @ zero_extendqisi2
374 000c 012E cmp r6, #1
375 000e 42D0 beq .L45
376 0010 9A46 mov r10, r3
377 0012 1446 mov r4, r2
253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
378 .loc 1 253 0 discriminator 2
379 0014 0023 movs r3, #0
250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
380 .loc 1 250 0 discriminator 2
381 0016 0122 movs r2, #1
382 .LVL41:
383 0018 0D46 mov r5, r1
384 001a 0746 mov r7, r0
385 001c 89F80020 strb r2, [r9]
253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
386 .loc 1 253 0 discriminator 2
387 0020 C9F80430 str r3, [r9, #4]
388 .LVL42:
ARM GAS /tmp/ccUpFCH8.s page 38
389 .LBB98:
390 .LBB99:
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
391 .loc 1 659 0 discriminator 2
392 0024 FFF7FEFF bl HAL_GetTick
393 .LVL43:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
394 .loc 1 662 0 discriminator 2
395 0028 334E ldr r6, .L55
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
396 .loc 1 659 0 discriminator 2
397 002a 8046 mov r8, r0
398 .LVL44:
399 002c 06E0 b .L36
400 .LVL45:
401 .L38:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
402 .loc 1 664 0
403 002e FFF7FEFF bl HAL_GetTick
404 .LVL46:
405 0032 A0EB0800 sub r0, r0, r8
406 0036 B0F57A7F cmp r0, #1000
407 003a 26D8 bhi .L46
408 .L36:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
409 .loc 1 662 0
410 003c 3269 ldr r2, [r6, #16]
411 003e D203 lsls r2, r2, #15
412 0040 F5D4 bmi .L38
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
413 .loc 1 671 0
414 0042 3369 ldr r3, [r6, #16]
415 0044 4CF2FA32 movw r2, #50170
416 .LVL47:
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
417 .loc 1 672 0
418 0048 1340 ands r3, r3, r2
419 .LVL48:
420 004a 27D1 bne .L53
421 .LVL49:
422 .LBB100:
423 .LBB101:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
424 .loc 1 684 0
425 004c 3369 ldr r3, [r6, #16]
426 .LVL50:
427 004e DB07 lsls r3, r3, #31
428 0050 01D5 bpl .L40
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
429 .loc 1 687 0
430 0052 0123 movs r3, #1
431 0054 3361 str r3, [r6, #16]
432 .LVL51:
433 .L40:
434 .LBE101:
435 .LBE100:
436 .LBE99:
ARM GAS /tmp/ccUpFCH8.s page 39
437 .LBE98:
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
438 .loc 1 266 0
439 0056 022F cmp r7, #2
440 0058 28D0 beq .L54
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
441 .loc 1 272 0
442 005a 0322 movs r2, #3
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
443 .loc 1 277 0
444 005c 264B ldr r3, .L55
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
445 .loc 1 272 0
446 005e 89F80820 strb r2, [r9, #8]
274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
447 .loc 1 274 0
448 0062 C9F80C50 str r5, [r9, #12]
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
449 .loc 1 277 0
450 0066 5A69 ldr r2, [r3, #20]
451 0068 42F04072 orr r2, r2, #50331648
452 006c 5A61 str r2, [r3, #20]
279:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
453 .loc 1 279 0
454 006e 002F cmp r7, #0
455 0070 3BD1 bne .L43
456 .LVL52:
457 .LBB104:
458 .LBB105:
706:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
459 .loc 1 706 0
460 0072 5A69 ldr r2, [r3, #20]
461 0074 42F00102 orr r2, r2, #1
462 0078 5A61 str r2, [r3, #20]
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
463 .loc 1 709 0
464 007a 2C60 str r4, [r5]
465 .LBB106:
466 .LBB107:
467 .loc 2 935 0
468 .syntax unified
469 @ 935 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
470 007c BFF36F8F isb 0xF
471 @ 0 "" 2
472 .thumb
473 .syntax unified
474 .LBE107:
475 .LBE106:
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
476 .loc 1 716 0
477 0080 C5F804A0 str r10, [r5, #4]
478 0084 3846 mov r0, r7
479 .LBE105:
480 .LBE104:
296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
481 .loc 1 296 0
482 0086 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
ARM GAS /tmp/ccUpFCH8.s page 40
483 .LVL53:
484 .L46:
485 .LBB108:
486 .LBB102:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
487 .loc 1 664 0
488 008a 0320 movs r0, #3
489 .LVL54:
490 .L37:
491 .LBE102:
492 .LBE108:
261:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
493 .loc 1 261 0
494 008c 0023 movs r3, #0
495 008e 89F80030 strb r3, [r9]
496 .LVL55:
497 .L35:
296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
498 .loc 1 296 0
499 0092 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
500 .LVL56:
501 .L45:
250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
502 .loc 1 250 0
503 0096 0220 movs r0, #2
504 .LVL57:
296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
505 .loc 1 296 0
506 0098 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
507 .LVL58:
508 .L53:
509 .LBB109:
510 .LBB103:
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
511 .loc 1 675 0
512 009c D9F80420 ldr r2, [r9, #4]
513 00a0 1A43 orrs r2, r2, r3
514 00a2 C9F80420 str r2, [r9, #4]
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
515 .loc 1 680 0
516 00a6 0120 movs r0, #1
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
517 .loc 1 678 0
518 00a8 3361 str r3, [r6, #16]
519 .LVL59:
520 00aa EFE7 b .L37
521 .LVL60:
522 .L54:
523 .LBE103:
524 .LBE109:
268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
525 .loc 1 268 0
526 00ac 0423 movs r3, #4
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
527 .loc 1 277 0
528 00ae 124A ldr r2, .L55
268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
ARM GAS /tmp/ccUpFCH8.s page 41
529 .loc 1 268 0
530 00b0 89F80830 strb r3, [r9, #8]
274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
531 .loc 1 274 0
532 00b4 C9F80C50 str r5, [r9, #12]
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
533 .loc 1 277 0
534 00b8 5369 ldr r3, [r2, #20]
535 00ba 43F04073 orr r3, r3, #50331648
536 00be 5361 str r3, [r2, #20]
537 .LVL61:
538 .L42:
539 .LBB110:
540 .LBB111:
736:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
541 .loc 1 736 0
542 00c0 0D49 ldr r1, .L55
543 00c2 4B69 ldr r3, [r1, #20]
544 00c4 43F48023 orr r3, r3, #262144
729:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t primask_bit;
545 .loc 1 729 0
546 00c8 2246 mov r2, r4
547 .LVL62:
736:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
548 .loc 1 736 0
549 00ca 4B61 str r3, [r1, #20]
550 .LBB112:
551 .LBB113:
453:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
552 .loc 2 453 0
553 .syntax unified
554 @ 453 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
555 00cc EFF31080 MRS r0, primask
556 @ 0 "" 2
557 .thumb
558 .syntax unified
559 .LBE113:
560 .LBE112:
561 .LBB114:
562 .LBB115:
209:Drivers/CMSIS/Include/cmsis_gcc.h **** }
563 .loc 2 209 0
564 .syntax unified
565 @ 209 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
566 00d0 72B6 cpsid i
567 @ 0 "" 2
568 .thumb
569 .syntax unified
570 00d2 2D1B subs r5, r5, r4
571 .LVL63:
572 00d4 04F58071 add r1, r4, #256
573 .LVL64:
574 .L44:
575 .LBE115:
576 .LBE114:
745:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** dest_addr++;
577 .loc 1 745 0
ARM GAS /tmp/ccUpFCH8.s page 42
578 00d8 1368 ldr r3, [r2]
579 00da 5351 str r3, [r2, r5]
580 .LVL65:
747:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** row_index--;
581 .loc 1 747 0
582 00dc 0432 adds r2, r2, #4
583 .LVL66:
584 .loc 1 750 0
585 00de 8A42 cmp r2, r1
586 00e0 FAD1 bne .L44
587 .LVL67:
588 .LBB116:
589 .LBB117:
481:Drivers/CMSIS/Include/cmsis_gcc.h **** }
590 .loc 2 481 0
591 .syntax unified
592 @ 481 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
593 00e2 80F31088 MSR primask, r0
594 @ 0 "" 2
595 .LVL68:
596 .thumb
597 .syntax unified
598 00e6 0020 movs r0, #0
599 00e8 D3E7 b .L35
600 .LVL69:
601 .L43:
602 .LBE117:
603 .LBE116:
604 .LBE111:
605 .LBE110:
284:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
606 .loc 1 284 0
607 00ea 013F subs r7, r7, #1
608 .LVL70:
609 00ec 012F cmp r7, #1
610 00ee 88BF it hi
611 00f0 0020 movhi r0, #0
612 00f2 CED8 bhi .L35
613 00f4 E4E7 b .L42
614 .L56:
615 00f6 00BF .align 2
616 .L55:
617 00f8 00200240 .word 1073881088
618 00fc 00000000 .word .LANCHOR0
619 .cfi_endproc
620 .LFE330:
622 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits
623 .align 1
624 .p2align 2,,3
625 .weak HAL_FLASH_EndOfOperationCallback
626 .syntax unified
627 .thumb
628 .thumb_func
629 .fpu fpv4-sp-d16
631 HAL_FLASH_EndOfOperationCallback:
632 .LFB332:
443:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
ARM GAS /tmp/ccUpFCH8.s page 43
633 .loc 1 443 0
634 .cfi_startproc
635 @ args = 0, pretend = 0, frame = 0
636 @ frame_needed = 0, uses_anonymous_args = 0
637 @ link register save eliminated.
638 .LVL71:
450:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
639 .loc 1 450 0
640 0000 7047 bx lr
641 .cfi_endproc
642 .LFE332:
644 0002 00BF .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits
645 .align 1
646 .p2align 2,,3
647 .weak HAL_FLASH_OperationErrorCallback
648 .syntax unified
649 .thumb
650 .thumb_func
651 .fpu fpv4-sp-d16
653 HAL_FLASH_OperationErrorCallback:
654 .LFB345:
655 .cfi_startproc
656 @ args = 0, pretend = 0, frame = 0
657 @ frame_needed = 0, uses_anonymous_args = 0
658 @ link register save eliminated.
659 0000 7047 bx lr
660 .cfi_endproc
661 .LFE345:
663 0002 00BF .section .text.HAL_FLASH_IRQHandler,"ax",%progbits
664 .align 1
665 .p2align 2,,3
666 .global HAL_FLASH_IRQHandler
667 .syntax unified
668 .thumb
669 .thumb_func
670 .fpu fpv4-sp-d16
672 HAL_FLASH_IRQHandler:
673 .LFB331:
303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tmp_page;
674 .loc 1 303 0
675 .cfi_startproc
676 @ args = 0, pretend = 0, frame = 0
677 @ frame_needed = 0, uses_anonymous_args = 0
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
678 .loc 1 309 0
679 0000 3A4A ldr r2, .L84
680 0002 5369 ldr r3, [r2, #20]
681 0004 23F4FF73 bic r3, r3, #510
303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tmp_page;
682 .loc 1 303 0
683 0008 10B5 push {r4, lr}
684 .LCFI2:
685 .cfi_def_cfa_offset 8
686 .cfi_offset 4, -8
687 .cfi_offset 14, -4
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
688 .loc 1 309 0
ARM GAS /tmp/ccUpFCH8.s page 44
689 000a 23F00103 bic r3, r3, #1
315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
690 .loc 1 315 0
691 000e 384C ldr r4, .L84+4
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
692 .loc 1 309 0
693 0010 5361 str r3, [r2, #20]
315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
694 .loc 1 315 0
695 0012 237A ldrb r3, [r4, #8] @ zero_extendqisi2
696 0014 042B cmp r3, #4
697 0016 03D1 bne .L60
317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
698 .loc 1 317 0
699 0018 5369 ldr r3, [r2, #20]
700 001a 23F48023 bic r3, r3, #262144
701 001e 5361 str r3, [r2, #20]
702 .L60:
321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
703 .loc 1 321 0
704 0020 3249 ldr r1, .L84
705 0022 0B69 ldr r3, [r1, #16]
706 0024 4CF2FA32 movw r2, #50170
707 .LVL72:
323:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
708 .loc 1 323 0
709 0028 1340 ands r3, r3, r2
710 .LVL73:
711 002a 2FD1 bne .L78
712 .LVL74:
713 .L61:
359:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
714 .loc 1 359 0
715 002c 2F4B ldr r3, .L84
716 002e 1A69 ldr r2, [r3, #16]
717 0030 D207 lsls r2, r2, #31
718 0032 14D5 bpl .L65
362:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
719 .loc 1 362 0 discriminator 4
720 0034 0122 movs r2, #1
721 0036 1A61 str r2, [r3, #16]
364:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
722 .loc 1 364 0 discriminator 4
723 0038 237A ldrb r3, [r4, #8] @ zero_extendqisi2
724 003a 9342 cmp r3, r2
725 003c 1AD1 bne .L66
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
726 .loc 1 367 0
727 003e A369 ldr r3, [r4, #24]
728 0040 013B subs r3, r3, #1
729 0042 A361 str r3, [r4, #24]
370:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
730 .loc 1 370 0
731 0044 A369 ldr r3, [r4, #24]
732 0046 002B cmp r3, #0
733 0048 32D0 beq .L67
373:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
ARM GAS /tmp/ccUpFCH8.s page 45
734 .loc 1 373 0
735 004a 6069 ldr r0, [r4, #20]
736 004c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
737 .LVL75:
376:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
738 .loc 1 376 0
739 0050 6369 ldr r3, [r4, #20]
740 0052 0133 adds r3, r3, #1
741 0054 6361 str r3, [r4, #20]
377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
742 .loc 1 377 0
743 0056 6069 ldr r0, [r4, #20]
744 .LVL76:
378:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
745 .loc 1 378 0
746 0058 2169 ldr r1, [r4, #16]
747 005a FFF7FEFF bl FLASH_PageErase
748 .LVL77:
749 .L65:
423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
750 .loc 1 423 0
751 005e 237A ldrb r3, [r4, #8] @ zero_extendqisi2
752 0060 03F0FF01 and r1, r3, #255
753 0064 2BB9 cbnz r3, .L59
426:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
754 .loc 1 426 0 discriminator 4
755 0066 214A ldr r2, .L84
756 0068 5369 ldr r3, [r2, #20]
757 006a 23F04073 bic r3, r3, #50331648
758 006e 5361 str r3, [r2, #20]
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
759 .loc 1 429 0 discriminator 4
760 0070 2170 strb r1, [r4]
761 .L59:
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
762 .loc 1 431 0
763 0072 10BD pop {r4, pc}
764 .L66:
397:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
765 .loc 1 397 0
766 0074 FFF7FEFF bl FLASH_FlushCaches
767 .LVL78:
399:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
768 .loc 1 399 0
769 0078 237A ldrb r3, [r4, #8] @ zero_extendqisi2
770 007a DBB2 uxtb r3, r3
771 .LVL79:
400:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
772 .loc 1 400 0
773 007c 022B cmp r3, #2
774 007e 29D0 beq .L79
406:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
775 .loc 1 406 0
776 0080 033B subs r3, r3, #3
777 .LVL80:
778 0082 012B cmp r3, #1
779 0084 2ED9 bls .L80
ARM GAS /tmp/ccUpFCH8.s page 46
780 .LVL81:
781 .L69:
419:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
782 .loc 1 419 0
783 0086 0023 movs r3, #0
784 0088 2372 strb r3, [r4, #8]
785 008a E8E7 b .L65
786 .LVL82:
787 .L78:
326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
788 .loc 1 326 0
789 008c 6268 ldr r2, [r4, #4]
790 008e 1A43 orrs r2, r2, r3
791 0090 6260 str r2, [r4, #4]
329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
792 .loc 1 329 0
793 0092 0B61 str r3, [r1, #16]
332:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
794 .loc 1 332 0
795 0094 FFF7FEFF bl FLASH_FlushCaches
796 .LVL83:
335:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
797 .loc 1 335 0
798 0098 237A ldrb r3, [r4, #8] @ zero_extendqisi2
799 009a DBB2 uxtb r3, r3
800 .LVL84:
336:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
801 .loc 1 336 0
802 009c 012B cmp r3, #1
803 009e 11D0 beq .L81
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
804 .loc 1 340 0
805 00a0 022B cmp r3, #2
806 00a2 13D0 beq .L82
344:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
807 .loc 1 344 0
808 00a4 033B subs r3, r3, #3
809 .LVL85:
810 00a6 012B cmp r3, #1
811 00a8 18D9 bls .L83
812 .LVL86:
813 .L63:
355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
814 .loc 1 355 0
815 00aa 0023 movs r3, #0
816 00ac 2372 strb r3, [r4, #8]
817 00ae BDE7 b .L61
818 .L67:
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
819 .loc 1 384 0
820 00b0 4FF0FF32 mov r2, #-1
821 00b4 6261 str r2, [r4, #20]
385:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
822 .loc 1 385 0
823 00b6 2372 strb r3, [r4, #8]
388:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
824 .loc 1 388 0
ARM GAS /tmp/ccUpFCH8.s page 47
825 00b8 FFF7FEFF bl FLASH_FlushCaches
826 .LVL87:
391:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
827 .loc 1 391 0
828 00bc 6069 ldr r0, [r4, #20]
829 00be FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
830 .LVL88:
831 00c2 CCE7 b .L65
832 .LVL89:
833 .L81:
338:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
834 .loc 1 338 0
835 00c4 6069 ldr r0, [r4, #20]
836 00c6 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
837 .LVL90:
838 00ca EEE7 b .L63
839 .LVL91:
840 .L82:
342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
841 .loc 1 342 0
842 00cc 2069 ldr r0, [r4, #16]
843 00ce FFF7FEFF bl HAL_FLASH_OperationErrorCallback
844 .LVL92:
845 00d2 EAE7 b .L63
846 .LVL93:
847 .L79:
404:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
848 .loc 1 404 0
849 00d4 2069 ldr r0, [r4, #16]
850 00d6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
851 .LVL94:
852 00da D4E7 b .L69
853 .LVL95:
854 .L83:
347:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
855 .loc 1 347 0
856 00dc E068 ldr r0, [r4, #12]
857 00de FFF7FEFF bl HAL_FLASH_OperationErrorCallback
858 .LVL96:
859 00e2 E2E7 b .L63
860 .LVL97:
861 .L80:
411:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
862 .loc 1 411 0
863 00e4 E068 ldr r0, [r4, #12]
864 00e6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
865 .LVL98:
866 00ea CCE7 b .L69
867 .L85:
868 .align 2
869 .L84:
870 00ec 00200240 .word 1073881088
871 00f0 00000000 .word .LANCHOR0
872 .cfi_endproc
873 .LFE331:
875 .section .text.HAL_FLASH_Unlock,"ax",%progbits
876 .align 1
ARM GAS /tmp/ccUpFCH8.s page 48
877 .p2align 2,,3
878 .global HAL_FLASH_Unlock
879 .syntax unified
880 .thumb
881 .thumb_func
882 .fpu fpv4-sp-d16
884 HAL_FLASH_Unlock:
885 .LFB334:
494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
886 .loc 1 494 0
887 .cfi_startproc
888 @ args = 0, pretend = 0, frame = 0
889 @ frame_needed = 0, uses_anonymous_args = 0
890 @ link register save eliminated.
891 .LVL99:
497:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
892 .loc 1 497 0
893 0000 064B ldr r3, .L90
894 0002 5A69 ldr r2, [r3, #20]
895 0004 002A cmp r2, #0
896 0006 01DB blt .L89
495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
897 .loc 1 495 0
898 0008 0020 movs r0, #0
899 .LVL100:
511:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
900 .loc 1 511 0
901 000a 7047 bx lr
902 .LVL101:
903 .L89:
500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
904 .loc 1 500 0
905 000c 0449 ldr r1, .L90+4
501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
906 .loc 1 501 0
907 000e 054A ldr r2, .L90+8
500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
908 .loc 1 500 0
909 0010 9960 str r1, [r3, #8]
501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
910 .loc 1 501 0
911 0012 9A60 str r2, [r3, #8]
504:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
912 .loc 1 504 0
913 0014 5869 ldr r0, [r3, #20]
495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
914 .loc 1 495 0
915 0016 C00F lsrs r0, r0, #31
916 0018 7047 bx lr
917 .L91:
918 001a 00BF .align 2
919 .L90:
920 001c 00200240 .word 1073881088
921 0020 23016745 .word 1164378403
922 0024 AB89EFCD .word -839939669
923 .cfi_endproc
924 .LFE334:
ARM GAS /tmp/ccUpFCH8.s page 49
926 .section .text.HAL_FLASH_Lock,"ax",%progbits
927 .align 1
928 .p2align 2,,3
929 .global HAL_FLASH_Lock
930 .syntax unified
931 .thumb
932 .thumb_func
933 .fpu fpv4-sp-d16
935 HAL_FLASH_Lock:
936 .LFB335:
518:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
937 .loc 1 518 0
938 .cfi_startproc
939 @ args = 0, pretend = 0, frame = 0
940 @ frame_needed = 0, uses_anonymous_args = 0
941 @ link register save eliminated.
942 .LVL102:
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
943 .loc 1 522 0
944 0000 044B ldr r3, .L93
945 0002 5A69 ldr r2, [r3, #20]
946 0004 42F00042 orr r2, r2, #-2147483648
947 0008 5A61 str r2, [r3, #20]
525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
948 .loc 1 525 0
949 000a 5869 ldr r0, [r3, #20]
950 .LVL103:
531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
951 .loc 1 531 0
952 000c C043 mvns r0, r0
953 .LVL104:
954 000e C00F lsrs r0, r0, #31
955 .LVL105:
956 0010 7047 bx lr
957 .L94:
958 0012 00BF .align 2
959 .L93:
960 0014 00200240 .word 1073881088
961 .cfi_endproc
962 .LFE335:
964 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
965 .align 1
966 .p2align 2,,3
967 .global HAL_FLASH_OB_Unlock
968 .syntax unified
969 .thumb
970 .thumb_func
971 .fpu fpv4-sp-d16
973 HAL_FLASH_OB_Unlock:
974 .LFB336:
538:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
975 .loc 1 538 0
976 .cfi_startproc
977 @ args = 0, pretend = 0, frame = 0
978 @ frame_needed = 0, uses_anonymous_args = 0
979 @ link register save eliminated.
980 .LVL106:
ARM GAS /tmp/ccUpFCH8.s page 50
541:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
981 .loc 1 541 0
982 0000 064B ldr r3, .L98
983 0002 5869 ldr r0, [r3, #20]
984 0004 10F08040 ands r0, r0, #1073741824
985 0008 06D0 beq .L96
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
986 .loc 1 544 0
987 000a 0549 ldr r1, .L98+4
545:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
988 .loc 1 545 0
989 000c 054A ldr r2, .L98+8
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
990 .loc 1 544 0
991 000e D960 str r1, [r3, #12]
545:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
992 .loc 1 545 0
993 0010 DA60 str r2, [r3, #12]
548:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
994 .loc 1 548 0
995 0012 5869 ldr r0, [r3, #20]
539:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
996 .loc 1 539 0
997 0014 C0F38070 ubfx r0, r0, #30, #1
998 .L96:
999 .LVL107:
555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1000 .loc 1 555 0
1001 0018 7047 bx lr
1002 .L99:
1003 001a 00BF .align 2
1004 .L98:
1005 001c 00200240 .word 1073881088
1006 0020 3B2A1908 .word 135866939
1007 0024 7F6E5D4C .word 1281191551
1008 .cfi_endproc
1009 .LFE336:
1011 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
1012 .align 1
1013 .p2align 2,,3
1014 .global HAL_FLASH_OB_Lock
1015 .syntax unified
1016 .thumb
1017 .thumb_func
1018 .fpu fpv4-sp-d16
1020 HAL_FLASH_OB_Lock:
1021 .LFB337:
562:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
1022 .loc 1 562 0
1023 .cfi_startproc
1024 @ args = 0, pretend = 0, frame = 0
1025 @ frame_needed = 0, uses_anonymous_args = 0
1026 @ link register save eliminated.
1027 .LVL108:
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1028 .loc 1 566 0
1029 0000 054B ldr r3, .L101
ARM GAS /tmp/ccUpFCH8.s page 51
1030 0002 5A69 ldr r2, [r3, #20]
1031 0004 42F08042 orr r2, r2, #1073741824
1032 0008 5A61 str r2, [r3, #20]
569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1033 .loc 1 569 0
1034 000a 5869 ldr r0, [r3, #20]
1035 .LVL109:
1036 000c 80F08040 eor r0, r0, #1073741824
1037 .LVL110:
575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1038 .loc 1 575 0
1039 0010 C0F38070 ubfx r0, r0, #30, #1
1040 .LVL111:
1041 0014 7047 bx lr
1042 .L102:
1043 0016 00BF .align 2
1044 .L101:
1045 0018 00200240 .word 1073881088
1046 .cfi_endproc
1047 .LFE337:
1049 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1050 .align 1
1051 .p2align 2,,3
1052 .global HAL_FLASH_OB_Launch
1053 .syntax unified
1054 .thumb
1055 .thumb_func
1056 .fpu fpv4-sp-d16
1058 HAL_FLASH_OB_Launch:
1059 .LFB338:
582:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the bit to force the option byte reloading */
1060 .loc 1 582 0
1061 .cfi_startproc
1062 @ args = 0, pretend = 0, frame = 0
1063 @ frame_needed = 0, uses_anonymous_args = 0
1064 0000 38B5 push {r3, r4, r5, lr}
1065 .LCFI3:
1066 .cfi_def_cfa_offset 16
1067 .cfi_offset 3, -16
1068 .cfi_offset 4, -12
1069 .cfi_offset 5, -8
1070 .cfi_offset 14, -4
584:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1071 .loc 1 584 0
1072 0002 144C ldr r4, .L112
1073 0004 6369 ldr r3, [r4, #20]
1074 0006 43F00063 orr r3, r3, #134217728
1075 000a 6361 str r3, [r4, #20]
1076 .LVL112:
1077 .LBB122:
1078 .LBB123:
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
1079 .loc 1 659 0
1080 000c FFF7FEFF bl HAL_GetTick
1081 .LVL113:
1082 0010 0546 mov r5, r0
1083 .LVL114:
ARM GAS /tmp/ccUpFCH8.s page 52
1084 0012 05E0 b .L104
1085 .LVL115:
1086 .L106:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1087 .loc 1 664 0
1088 0014 FFF7FEFF bl HAL_GetTick
1089 .LVL116:
1090 0018 401B subs r0, r0, r5
1091 001a B0F57A7F cmp r0, #1000
1092 001e 16D8 bhi .L108
1093 .L104:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1094 .loc 1 662 0
1095 0020 2369 ldr r3, [r4, #16]
1096 0022 DB03 lsls r3, r3, #15
1097 0024 F6D4 bmi .L106
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
1098 .loc 1 671 0
1099 0026 2369 ldr r3, [r4, #16]
1100 0028 4CF2FA32 movw r2, #50170
1101 .LVL117:
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1102 .loc 1 672 0
1103 002c 1340 ands r3, r3, r2
1104 .LVL118:
1105 002e 07D1 bne .L111
1106 .LVL119:
1107 .LBB124:
1108 .LBB125:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1109 .loc 1 684 0
1110 0030 2069 ldr r0, [r4, #16]
1111 0032 10F00100 ands r0, r0, #1
1112 0036 02D0 beq .L105
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1113 .loc 1 687 0
1114 0038 0122 movs r2, #1
1115 003a 1846 mov r0, r3
1116 003c 2261 str r2, [r4, #16]
1117 .L105:
1118 .LVL120:
1119 .LBE125:
1120 .LBE124:
1121 .LBE123:
1122 .LBE122:
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1123 .loc 1 588 0
1124 003e 38BD pop {r3, r4, r5, pc}
1125 .LVL121:
1126 .L111:
1127 .LBB128:
1128 .LBB126:
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1129 .loc 1 675 0
1130 0040 0549 ldr r1, .L112+4
1131 0042 4A68 ldr r2, [r1, #4]
1132 0044 1A43 orrs r2, r2, r3
ARM GAS /tmp/ccUpFCH8.s page 53
1133 0046 4A60 str r2, [r1, #4]
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1134 .loc 1 680 0
1135 0048 0120 movs r0, #1
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1136 .loc 1 678 0
1137 004a 2361 str r3, [r4, #16]
1138 .LVL122:
1139 .LBE126:
1140 .LBE128:
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1141 .loc 1 588 0
1142 004c 38BD pop {r3, r4, r5, pc}
1143 .LVL123:
1144 .L108:
1145 .LBB129:
1146 .LBB127:
666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1147 .loc 1 666 0
1148 004e 0320 movs r0, #3
1149 .LVL124:
1150 .LBE127:
1151 .LBE129:
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1152 .loc 1 588 0
1153 0050 38BD pop {r3, r4, r5, pc}
1154 .L113:
1155 0052 00BF .align 2
1156 .L112:
1157 0054 00200240 .word 1073881088
1158 0058 00000000 .word .LANCHOR0
1159 .cfi_endproc
1160 .LFE338:
1162 .section .text.HAL_FLASH_GetError,"ax",%progbits
1163 .align 1
1164 .p2align 2,,3
1165 .global HAL_FLASH_GetError
1166 .syntax unified
1167 .thumb
1168 .thumb_func
1169 .fpu fpv4-sp-d16
1171 HAL_FLASH_GetError:
1172 .LFB339:
630:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return pFlash.ErrorCode;
1173 .loc 1 630 0
1174 .cfi_startproc
1175 @ args = 0, pretend = 0, frame = 0
1176 @ frame_needed = 0, uses_anonymous_args = 0
1177 @ link register save eliminated.
631:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1178 .loc 1 631 0
1179 0000 014B ldr r3, .L115
1180 0002 5868 ldr r0, [r3, #4]
632:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1181 .loc 1 632 0
1182 0004 7047 bx lr
1183 .L116:
ARM GAS /tmp/ccUpFCH8.s page 54
1184 0006 00BF .align 2
1185 .L115:
1186 0008 00000000 .word .LANCHOR0
1187 .cfi_endproc
1188 .LFE339:
1190 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
1191 .align 1
1192 .p2align 2,,3
1193 .global FLASH_WaitForLastOperation
1194 .syntax unified
1195 .thumb
1196 .thumb_func
1197 .fpu fpv4-sp-d16
1199 FLASH_WaitForLastOperation:
1200 .LFB340:
654:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
1201 .loc 1 654 0
1202 .cfi_startproc
1203 @ args = 0, pretend = 0, frame = 0
1204 @ frame_needed = 0, uses_anonymous_args = 0
1205 .LVL125:
1206 0000 70B5 push {r4, r5, r6, lr}
1207 .LCFI4:
1208 .cfi_def_cfa_offset 16
1209 .cfi_offset 4, -16
1210 .cfi_offset 5, -12
1211 .cfi_offset 6, -8
1212 .cfi_offset 14, -4
654:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
1213 .loc 1 654 0
1214 0002 0646 mov r6, r0
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
1215 .loc 1 659 0
1216 0004 FFF7FEFF bl HAL_GetTick
1217 .LVL126:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1218 .loc 1 662 0
1219 0008 104C ldr r4, .L126
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
1220 .loc 1 659 0
1221 000a 0546 mov r5, r0
1222 .LVL127:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1223 .loc 1 662 0
1224 000c 04E0 b .L118
1225 .LVL128:
1226 .L120:
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1227 .loc 1 664 0
1228 000e FFF7FEFF bl HAL_GetTick
1229 .LVL129:
1230 0012 401B subs r0, r0, r5
1231 0014 B042 cmp r0, r6
1232 0016 16D8 bhi .L122
1233 .L118:
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1234 .loc 1 662 0
ARM GAS /tmp/ccUpFCH8.s page 55
1235 0018 2369 ldr r3, [r4, #16]
1236 001a DB03 lsls r3, r3, #15
1237 001c F7D4 bmi .L120
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
1238 .loc 1 671 0
1239 001e 2369 ldr r3, [r4, #16]
1240 0020 4CF2FA32 movw r2, #50170
1241 .LVL130:
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1242 .loc 1 672 0
1243 0024 1340 ands r3, r3, r2
1244 .LVL131:
1245 0026 07D1 bne .L125
1246 .LVL132:
1247 .LBB132:
1248 .LBB133:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1249 .loc 1 684 0
1250 0028 2069 ldr r0, [r4, #16]
1251 002a 10F00100 ands r0, r0, #1
1252 002e 02D0 beq .L119
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1253 .loc 1 687 0
1254 0030 0122 movs r2, #1
1255 0032 1846 mov r0, r3
1256 0034 2261 str r2, [r4, #16]
1257 .L119:
1258 .LBE133:
1259 .LBE132:
692:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1260 .loc 1 692 0
1261 0036 70BD pop {r4, r5, r6, pc}
1262 .LVL133:
1263 .L125:
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1264 .loc 1 675 0
1265 0038 0549 ldr r1, .L126+4
1266 003a 4A68 ldr r2, [r1, #4]
1267 003c 1A43 orrs r2, r2, r3
1268 003e 4A60 str r2, [r1, #4]
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1269 .loc 1 680 0
1270 0040 0120 movs r0, #1
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1271 .loc 1 678 0
1272 0042 2361 str r3, [r4, #16]
692:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1273 .loc 1 692 0
1274 0044 70BD pop {r4, r5, r6, pc}
1275 .LVL134:
1276 .L122:
666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1277 .loc 1 666 0
1278 0046 0320 movs r0, #3
692:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1279 .loc 1 692 0
1280 0048 70BD pop {r4, r5, r6, pc}
ARM GAS /tmp/ccUpFCH8.s page 56
1281 .LVL135:
1282 .L127:
1283 004a 00BF .align 2
1284 .L126:
1285 004c 00200240 .word 1073881088
1286 0050 00000000 .word .LANCHOR0
1287 .cfi_endproc
1288 .LFE340:
1290 .global pFlash
1291 .section .data.pFlash,"aw",%progbits
1292 .align 2
1293 .set .LANCHOR0,. + 0
1296 pFlash:
1297 0000 00 .byte 0
1298 0001 000000 .space 3
1299 0004 00000000 .word 0
1300 0008 00 .byte 0
1301 0009 000000 .space 3
1302 000c 00000000 .word 0
1303 0010 01000000 .word 1
1304 0014 00000000 .word 0
1305 0018 00000000 .word 0
1306 001c 00 .byte 0
1307 001d 000000 .space 3
1308 .text
1309 .Letext0:
1310 .file 3 "/usr/include/newlib/machine/_default_types.h"
1311 .file 4 "/usr/include/newlib/sys/_stdint.h"
1312 .file 5 "Drivers/CMSIS/Include/core_cm4.h"
1313 .file 6 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/system_stm32g4xx.h"
1314 .file 7 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h"
1315 .file 8 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h"
1316 .file 9 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h"
1317 .file 10 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h"
1318 .file 11 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h"
1319 .file 12 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ex.h"
ARM GAS /tmp/ccUpFCH8.s page 57
DEFINED SYMBOLS
*ABS*:0000000000000000 stm32g4xx_hal_flash.c
/tmp/ccUpFCH8.s:16 .text.HAL_FLASH_Program:0000000000000000 $t
/tmp/ccUpFCH8.s:24 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program
/tmp/ccUpFCH8.s:337 .text.HAL_FLASH_Program:0000000000000124 $d
/tmp/ccUpFCH8.s:345 .text.HAL_FLASH_Program_IT:0000000000000000 $t
/tmp/ccUpFCH8.s:353 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT
/tmp/ccUpFCH8.s:617 .text.HAL_FLASH_Program_IT:00000000000000f8 $d
/tmp/ccUpFCH8.s:623 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t
/tmp/ccUpFCH8.s:631 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback
/tmp/ccUpFCH8.s:645 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t
/tmp/ccUpFCH8.s:653 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback
/tmp/ccUpFCH8.s:664 .text.HAL_FLASH_IRQHandler:0000000000000000 $t
/tmp/ccUpFCH8.s:672 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler
/tmp/ccUpFCH8.s:870 .text.HAL_FLASH_IRQHandler:00000000000000ec $d
/tmp/ccUpFCH8.s:876 .text.HAL_FLASH_Unlock:0000000000000000 $t
/tmp/ccUpFCH8.s:884 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock
/tmp/ccUpFCH8.s:920 .text.HAL_FLASH_Unlock:000000000000001c $d
/tmp/ccUpFCH8.s:927 .text.HAL_FLASH_Lock:0000000000000000 $t
/tmp/ccUpFCH8.s:935 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock
/tmp/ccUpFCH8.s:960 .text.HAL_FLASH_Lock:0000000000000014 $d
/tmp/ccUpFCH8.s:965 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t
/tmp/ccUpFCH8.s:973 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock
/tmp/ccUpFCH8.s:1005 .text.HAL_FLASH_OB_Unlock:000000000000001c $d
/tmp/ccUpFCH8.s:1012 .text.HAL_FLASH_OB_Lock:0000000000000000 $t
/tmp/ccUpFCH8.s:1020 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock
/tmp/ccUpFCH8.s:1045 .text.HAL_FLASH_OB_Lock:0000000000000018 $d
/tmp/ccUpFCH8.s:1050 .text.HAL_FLASH_OB_Launch:0000000000000000 $t
/tmp/ccUpFCH8.s:1058 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch
/tmp/ccUpFCH8.s:1157 .text.HAL_FLASH_OB_Launch:0000000000000054 $d
/tmp/ccUpFCH8.s:1163 .text.HAL_FLASH_GetError:0000000000000000 $t
/tmp/ccUpFCH8.s:1171 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError
/tmp/ccUpFCH8.s:1186 .text.HAL_FLASH_GetError:0000000000000008 $d
/tmp/ccUpFCH8.s:1191 .text.FLASH_WaitForLastOperation:0000000000000000 $t
/tmp/ccUpFCH8.s:1199 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation
/tmp/ccUpFCH8.s:1285 .text.FLASH_WaitForLastOperation:000000000000004c $d
/tmp/ccUpFCH8.s:1296 .data.pFlash:0000000000000000 pFlash
/tmp/ccUpFCH8.s:1292 .data.pFlash:0000000000000000 $d
UNDEFINED SYMBOLS
HAL_GetTick
FLASH_PageErase
FLASH_FlushCaches