Files
squeow/squeow_sw/build/stm32g4xx_hal_flash.lst
2025-06-28 00:58:29 +02:00

3558 lines
221 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
ARM GAS /tmp/ccEvKRMz.s page 1
1 .cpu cortex-m4
2 .arch armv7e-m
3 .fpu fpv4-sp-d16
4 .eabi_attribute 27, 1
5 .eabi_attribute 28, 1
6 .eabi_attribute 20, 1
7 .eabi_attribute 21, 1
8 .eabi_attribute 23, 3
9 .eabi_attribute 24, 1
10 .eabi_attribute 25, 1
11 .eabi_attribute 26, 1
12 .eabi_attribute 30, 1
13 .eabi_attribute 34, 1
14 .eabi_attribute 18, 4
15 .file "stm32g4xx_hal_flash.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c"
20 .section .text.FLASH_Program_DoubleWord,"ax",%progbits
21 .align 1
22 .syntax unified
23 .thumb
24 .thumb_func
26 FLASH_Program_DoubleWord:
27 .LVL0:
28 .LFB341:
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
ARM GAS /tmp/ccEvKRMz.s page 2
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
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 **** * Copyright (c) 2019 STMicroelectronics.
79:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * All rights reserved.
80:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
81:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in
82:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * the root directory of this software component.
83:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS.
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 **** /* Includes ------------------------------------------------------------------*/
ARM GAS /tmp/ccEvKRMz.s page 3
88:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #include "stm32g4xx_hal.h"
89:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
90:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @addtogroup STM32G4xx_HAL_Driver
91:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
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 **** /** @defgroup FLASH FLASH
95:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH HAL module driver
96:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
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 **** #ifdef HAL_FLASH_MODULE_ENABLED
100:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
101:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/
102:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private defines -----------------------------------------------------------*/
103:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Constants FLASH Private Constants
104:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
105:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
106:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #define FLASH_NB_DOUBLE_WORDS_IN_ROW 32
107:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
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 **** /* Private macros ------------------------------------------------------------*/
112:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/
113:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Variables FLASH Private Variables
114:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
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 **** * @brief Variable used for Program/Erase sectors under interruption
119:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
120:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash = {.Lock = HAL_UNLOCKED,
121:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .ErrorCode = HAL_FLASH_ERROR_NONE,
122:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .ProcedureOnGoing = FLASH_PROC_NONE,
123:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Address = 0U,
124:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Bank = FLASH_BANK_1,
125:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .Page = 0U,
126:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .NbPagesToErase = 0U,
127:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** .CacheToReactivate = FLASH_CACHE_DISABLED};
128:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
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 **** /* Private function prototypes -----------------------------------------------*/
133:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Private_Functions FLASH Private Functions
134:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
135:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
136:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data);
137:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress);
138:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
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 **** /* Exported functions --------------------------------------------------------*/
143:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions
144:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
ARM GAS /tmp/ccEvKRMz.s page 4
145:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
146:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
147:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions
148:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Programming operation functions
149:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
150:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
151:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
152:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Programming operation functions #####
153:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
154:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
155:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH
156:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** program operations.
157:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
158:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
159:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
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 **** * @brief Program double word or fast program of a row at a specified address.
164:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
165:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program.
166:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
167:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Data specifies the data to be programmed.
168:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter is the data for the double word program and the address where
169:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * are stored the data for the row fast program.
170:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
171:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
172:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
173:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t prog_bit = 0;
177:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
178:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
180:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
181:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Locked */
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_LOCK(&pFlash);
183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
184:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
186:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (status == HAL_OK)
188:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
190:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
191:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Deactivate the data cache if they are activated to avoid data misbehavior */
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if(READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
193:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
194:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable data cache */
195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_DATA_CACHE_DISABLE();
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
197:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
199:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
201:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
ARM GAS /tmp/ccEvKRMz.s page 5
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD)
203:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
204:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program double-word (64-bit) at a specified address */
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
207:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((TypeProgram == FLASH_TYPEPROGRAM_FAST) || (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_
209:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
210:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Fast program a 32 row double-word (64-bit) at a specified address */
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_Fast(Address, (uint32_t)Data);
212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
213: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 */
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_LAST)
215:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_FSTPG;
217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
218:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
219:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
220:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
221:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
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 **** /* Wait for last operation to be completed */
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
227:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If the program operation is completed, disable the PG or FSTPG Bit */
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (prog_bit != 0U)
229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, prog_bit);
231:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
232:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches();
235:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
236:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
237:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
239:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
240:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* return status */
241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
245: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
246:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
247:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program.
248:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
249:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Data specifies the data to be programmed.
250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * This parameter is the data for the double word program and the address where
251:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * are stored the data for the row fast program.
252:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
254:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
255:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
258:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
ARM GAS /tmp/ccEvKRMz.s page 6
259:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
261:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
262:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Locked */
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_LOCK(&pFlash);
264:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
265:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Reset error code */
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
267:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Deactivate the data cache if they are activated to avoid data misbehavior */
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if(READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
270:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
271:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable data cache */
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_DATA_CACHE_DISABLE();
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
275:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
276:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
278:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
279:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
280:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
282:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (status != HAL_OK)
284:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
285:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
288:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
289:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
290:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set internal variables used by the IRQ handler */
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_LAST)
292:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_LAST;
294:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
295:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM;
298:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Address = Address;
300:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
301:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Enable End of Operation and Error interrupts */
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_OPERR);
303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD)
305:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
306:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program double-word (64-bit) at a specified address */
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
308:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((TypeProgram == FLASH_TYPEPROGRAM_FAST) || (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_
310:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
311:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Fast program a 32 row double-word (64-bit) at a specified address */
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_Program_Fast(Address, (uint32_t)Data);
313:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
314:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccEvKRMz.s page 7
316:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
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 **** return status;
321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
322:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
323:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
324:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Handle FLASH interrupt request.
325:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
327:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void)
328:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tmp_page;
330:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
331:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_ProcedureTypeDef procedure;
332:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
333:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If the operation is completed, disable the PG, PNB, MER1, MER2 and PER Bit */
334: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));
335:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
336:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_MER2);
337:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #endif
338:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
339:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable the FSTPG Bit only if it is the last row programmed */
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAM_LAST)
341:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_FSTPG);
343:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
344:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
345:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH operation error flags */
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
347:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0U)
349:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
350:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Save the error code */
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode |= error;
352:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear error programming flags */
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(error);
355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
356:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches();
358:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
359:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH error interrupt user callback */
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
362:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Page);
364:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if (procedure == FLASH_PROC_MASS_ERASE)
366:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Bank);
368:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((procedure == FLASH_PROC_PROGRAM) ||
370:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
371:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(pFlash.Address);
ARM GAS /tmp/ccEvKRMz.s page 8
373:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
374:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
375:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
376:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
378:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
379:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /*Stop the procedure ongoing*/
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
381:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
382:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
383:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH End of Operation flag */
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
385:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
386:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
388:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_PAGE_ERASE)
390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
391:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nb of pages to erased can be decreased */
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.NbPagesToErase--;
393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
394:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check if there are still pages to erase*/
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.NbPagesToErase != 0U)
396:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
397:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Indicate user which page has been erased*/
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Page);
399:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
400:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Increment page number */
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Page++;
402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
404:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
405:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
406:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* No more pages to Erase */
408:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Reset Address and stop Erase pages procedure */
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.Page = 0xFFFFFFFFU;
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
411:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
412:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches();
414:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
415:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Page);
417:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
418:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
419:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
420:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
421:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */
422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_FlushCaches();
423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
426:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
427:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */
428:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank);
ARM GAS /tmp/ccEvKRMz.s page 9
430:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else if ((procedure == FLASH_PROC_PROGRAM) ||
432:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
433:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
434:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program ended. Return the selected address */
435:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address);
437:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
438:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** else
439:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
440:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Nothing to do */
441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
443:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /*Clear the procedure ongoing*/
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
445:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
446:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
447:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_NONE)
449:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
450:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Disable End of Operation and Error interrupts */
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_OPERR);
452:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Process Unlocked */
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
455:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
457:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
458:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
459:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback.
460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure:
461:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Mass Erase: Bank number which has been requested to erase
462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Page Erase: Page which has been erased
463:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * (if 0xFFFFFFFF, it means that all the selected pages have been erase
464:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Program: Address which was selected for data program
465:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
466:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
467:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
468:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
469:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
470:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** UNUSED(ReturnValue);
471:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
472:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* NOTE : This function should not be modified, when the callback is needed,
473:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file
474:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
475:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
476:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
477:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
478:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief FLASH operation error interrupt callback.
479:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure:
480:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Mass Erase: Bank number which has been requested to erase
481:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Page Erase: Page number which returned an error
482:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg Program: Address which was selected for data program
483:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
484:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
485:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
486:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccEvKRMz.s page 10
487:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
488:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** UNUSED(ReturnValue);
489:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
490:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* NOTE : This function should not be modified, when the callback is needed,
491:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file
492:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
496:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
497:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
498:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions
500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Management functions
501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
502:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
503:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
504:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Peripheral Control functions #####
505:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
506:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
507:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH
508:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** memory operations.
509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
510:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
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 ****
514:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
515:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Unlock the FLASH control register access.
516:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
517:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
518:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void)
519:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
521:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
523:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
524:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Authorize the FLASH Registers access */
525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1);
526:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
527:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
528:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify Flash is unlocked */
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
530:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_ERROR;
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 ****
535:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
536:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
537:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
538:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
539:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Lock the FLASH control register access.
540:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
541:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
542:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void)
543:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccEvKRMz.s page 11
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
545:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
546:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */
547:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_LOCK);
548:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
549:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify Flash is locked */
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
551:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
552:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_OK;
553:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
554:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
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 **** /**
559:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Unlock the FLASH Option Bytes Registers access.
560:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
561:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
562:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
563:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
565:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
567:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
568:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */
569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1);
570:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
571:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
572:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* verify option bytes are unlocked */
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
574:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_ERROR;
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 ****
579:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
580:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
581:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
582:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
583:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Lock the FLASH Option Bytes Registers access.
584:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
585:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
586:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
587:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
589:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
590:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
591:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTLOCK);
592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
593:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Verify option bytes are locked */
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0U)
595:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** status = HAL_OK;
597:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
598:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
599:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return status;
600:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
ARM GAS /tmp/ccEvKRMz.s page 12
601:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
602:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
603:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Launch the option byte loading.
604:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
605:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
606:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
607:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
608:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the bit to force the option byte reloading */
609:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_OBL_LAUNCH);
610:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
611:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for last operation to be completed */
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE));
613:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
614:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
615:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
616:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
617:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
618:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
619:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions
620:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Peripheral Errors functions
621:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *
622:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @verbatim
623:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
624:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ##### Peripheral Errors functions #####
625:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** ===============================================================================
626:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** [..]
627:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral.
628:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
629:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** @endverbatim
630:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
631:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
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 **** * @brief Get the specific FLASH error flag.
635:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval FLASH_ErrorCode. The returned value can be:
636:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP)
637:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag
638:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag
639:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag
640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag
641:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag
642:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_NONE: No error set
643:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OP: FLASH Operation error
644:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PROG: FLASH Programming error
645:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protection error
646:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming alignment error
647:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_SIZ: FLASH Size error
648:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming sequence error
649:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_MIS: FLASH Fast programming data miss error
650:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_FAST: FLASH Fast programming error
651:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH PCROP read error
652:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPTV: FLASH Option validity error
653:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
654:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void)
655:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return pFlash.ErrorCode;
657:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
ARM GAS /tmp/ccEvKRMz.s page 13
658:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
660:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
661:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
663:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @}
665:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
667:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Private functions ---------------------------------------------------------*/
668:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
669:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions
670:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @{
671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
673:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
674:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete.
675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Timeout maximum flash operation timeout.
676:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval HAL_Status
677:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
679:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
681:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error
682:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** flag will be set */
683:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick();
685:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
686:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
688:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if ((HAL_GetTick() - tickstart) > Timeout)
690:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
691:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_TIMEOUT;
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 **** /* Check FLASH operation error flags */
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
698:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
699:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Save the error code */
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ErrorCode |= error;
701:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
702:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear error programming flags */
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(error);
704:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_ERROR;
706:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
707:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
708:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check FLASH End of Operation flag */
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
710:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
711:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
713:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
714:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
ARM GAS /tmp/ccEvKRMz.s page 14
715:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* If there is an error flag set */
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return HAL_OK;
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 Program 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 Data specifies the data to be programmed.
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_DoubleWord(uint32_t Address, uint64_t Data)
726:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
29 .loc 1 726 1 view -0
30 .cfi_startproc
31 @ args = 0, pretend = 0, frame = 0
32 @ frame_needed = 0, uses_anonymous_args = 0
33 @ link register save eliminated.
34 .loc 1 726 1 is_stmt 0 view .LVU1
35 0000 10B4 push {r4}
36 .LCFI0:
37 .cfi_def_cfa_offset 4
38 .cfi_offset 4, -4
727:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
728:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
39 .loc 1 728 3 is_stmt 1 view .LVU2
729:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
730:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set PG bit */
731:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_PG);
40 .loc 1 731 3 view .LVU3
41 0002 064C ldr r4, .L3
42 0004 6169 ldr r1, [r4, #20]
43 0006 41F00101 orr r1, r1, #1
44 000a 6161 str r1, [r4, #20]
732:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
733:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program first word */
734:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *(uint32_t *)Address = (uint32_t)Data;
45 .loc 1 734 3 view .LVU4
46 .loc 1 734 24 is_stmt 0 view .LVU5
47 000c 0260 str r2, [r0]
735:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
736:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order
737:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (independently of compiler optimization behavior) */
738:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __ISB();
48 .loc 1 738 3 is_stmt 1 view .LVU6
49 .LBB10:
50 .LBI10:
51 .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
ARM GAS /tmp/ccEvKRMz.s page 15
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.
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
ARM GAS /tmp/ccEvKRMz.s page 16
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
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 **** /**
ARM GAS /tmp/ccEvKRMz.s page 17
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 ****
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
ARM GAS /tmp/ccEvKRMz.s page 18
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 **** /**
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);
ARM GAS /tmp/ccEvKRMz.s page 19
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)
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 **** /**
ARM GAS /tmp/ccEvKRMz.s page 20
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);
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)
ARM GAS /tmp/ccEvKRMz.s page 21
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 ****
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 **** */
ARM GAS /tmp/ccEvKRMz.s page 22
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)
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;
ARM GAS /tmp/ccEvKRMz.s page 23
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.
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 **** /**
ARM GAS /tmp/ccEvKRMz.s page 24
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);
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.
ARM GAS /tmp/ccEvKRMz.s page 25
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
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 **** {
ARM GAS /tmp/ccEvKRMz.s page 26
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)) || \
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 ****
ARM GAS /tmp/ccEvKRMz.s page 27
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)
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;
ARM GAS /tmp/ccEvKRMz.s page 28
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 **** /**
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.
ARM GAS /tmp/ccEvKRMz.s page 29
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
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)
ARM GAS /tmp/ccEvKRMz.s page 30
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 ****
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.
ARM GAS /tmp/ccEvKRMz.s page 31
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 **** */
933:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void)
52 .loc 2 933 27 view .LVU7
53 .LBB11:
934:Drivers/CMSIS/Include/cmsis_gcc.h **** {
935:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory");
54 .loc 2 935 3 view .LVU8
55 .syntax unified
56 @ 935 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
57 000e BFF36F8F isb 0xF
58 @ 0 "" 2
59 .thumb
60 .syntax unified
61 .LBE11:
62 .LBE10:
739:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
740:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program second word */
741:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U);
63 .loc 1 741 3 view .LVU9
64 .loc 1 741 31 is_stmt 0 view .LVU10
65 0012 4360 str r3, [r0, #4]
742:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
66 .loc 1 742 1 view .LVU11
67 0014 5DF8044B ldr r4, [sp], #4
68 .LCFI1:
69 .cfi_restore 4
70 .cfi_def_cfa_offset 0
71 0018 7047 bx lr
72 .L4:
73 001a 00BF .align 2
74 .L3:
75 001c 00200240 .word 1073881088
76 .cfi_endproc
77 .LFE341:
79 .section .text.FLASH_Program_Fast,"ax",%progbits
80 .align 1
81 .syntax unified
82 .thumb
83 .thumb_func
85 FLASH_Program_Fast:
86 .LVL1:
87 .LFB342:
743:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
744:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /**
745:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @brief Fast program a row double-word (64-bit) at a specified address.
746:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param Address specifies the address to be programmed.
747:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @param DataAddress specifies the address where the data are stored.
748:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** * @retval None
ARM GAS /tmp/ccEvKRMz.s page 32
749:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** */
750:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress)
751:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
88 .loc 1 751 1 is_stmt 1 view -0
89 .cfi_startproc
90 @ args = 0, pretend = 0, frame = 0
91 @ frame_needed = 0, uses_anonymous_args = 0
92 @ link register save eliminated.
752:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint8_t row_index = (2 * FLASH_NB_DOUBLE_WORDS_IN_ROW);
93 .loc 1 752 3 view .LVU13
753:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t *dest_addr = (uint32_t *)Address;
94 .loc 1 753 3 view .LVU14
754:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t *src_addr = (uint32_t *)DataAddress;
95 .loc 1 754 3 view .LVU15
755:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t primask_bit;
96 .loc 1 755 3 view .LVU16
756:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
757:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Check the parameters */
758:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** assert_param(IS_FLASH_MAIN_MEM_ADDRESS(Address));
97 .loc 1 758 3 view .LVU17
759:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
760:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set FSTPG bit */
761:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_FSTPG);
98 .loc 1 761 3 view .LVU18
99 0000 094A ldr r2, .L7
100 0002 5369 ldr r3, [r2, #20]
101 0004 43F48023 orr r3, r3, #262144
102 0008 5361 str r3, [r2, #20]
762:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
763:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Enter critical section: Disable interrupts to avoid any interruption during the loop */
764:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** primask_bit = __get_PRIMASK();
103 .loc 1 764 3 view .LVU19
104 .LBB12:
105 .LBI12:
449:Drivers/CMSIS/Include/cmsis_gcc.h **** {
106 .loc 2 449 31 view .LVU20
107 .LBB13:
451:Drivers/CMSIS/Include/cmsis_gcc.h ****
108 .loc 2 451 3 view .LVU21
453:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
109 .loc 2 453 3 view .LVU22
110 .syntax unified
111 @ 453 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
112 000a EFF3108C MRS ip, primask
113 @ 0 "" 2
114 .LVL2:
454:Drivers/CMSIS/Include/cmsis_gcc.h **** }
115 .loc 2 454 3 view .LVU23
454:Drivers/CMSIS/Include/cmsis_gcc.h **** }
116 .loc 2 454 3 is_stmt 0 view .LVU24
117 .thumb
118 .syntax unified
119 .LBE13:
120 .LBE12:
765:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __disable_irq();
121 .loc 1 765 3 is_stmt 1 view .LVU25
122 .LBB14:
ARM GAS /tmp/ccEvKRMz.s page 33
123 .LBI14:
207:Drivers/CMSIS/Include/cmsis_gcc.h **** {
124 .loc 2 207 27 view .LVU26
125 .LBB15:
209:Drivers/CMSIS/Include/cmsis_gcc.h **** }
126 .loc 2 209 3 view .LVU27
127 .syntax unified
128 @ 209 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
129 000e 72B6 cpsid i
130 @ 0 "" 2
131 .thumb
132 .syntax unified
133 .LBE15:
134 .LBE14:
752:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t *dest_addr = (uint32_t *)Address;
135 .loc 1 752 11 is_stmt 0 view .LVU28
136 0010 4023 movs r3, #64
137 .LVL3:
138 .L6:
766:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
767:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Program the double words of the row */
768:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** do
139 .loc 1 768 3 is_stmt 1 view .LVU29
769:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
770:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** *dest_addr = *src_addr;
140 .loc 1 770 5 view .LVU30
141 .loc 1 770 18 is_stmt 0 view .LVU31
142 0012 51F8042B ldr r2, [r1], #4
143 .LVL4:
144 .loc 1 770 16 view .LVU32
145 0016 40F8042B str r2, [r0], #4
146 .LVL5:
771:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** dest_addr++;
147 .loc 1 771 5 is_stmt 1 view .LVU33
772:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** src_addr++;
148 .loc 1 772 5 view .LVU34
773:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** row_index--;
149 .loc 1 773 5 view .LVU35
150 .loc 1 773 14 is_stmt 0 view .LVU36
151 001a 013B subs r3, r3, #1
152 .LVL6:
774:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
775:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** while (row_index != 0U);
153 .loc 1 775 20 is_stmt 1 discriminator 1 view .LVU37
154 001c 13F0FF03 ands r3, r3, #255
155 .LVL7:
156 .loc 1 775 20 is_stmt 0 discriminator 1 view .LVU38
157 0020 F7D1 bne .L6
776:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
777:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Exit critical section: restore previous priority mask */
778:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** __set_PRIMASK(primask_bit);
158 .loc 1 778 3 is_stmt 1 view .LVU39
159 .LBB16:
160 .LBI16:
479:Drivers/CMSIS/Include/cmsis_gcc.h **** {
161 .loc 2 479 27 view .LVU40
162 .LBB17:
ARM GAS /tmp/ccEvKRMz.s page 34
481:Drivers/CMSIS/Include/cmsis_gcc.h **** }
163 .loc 2 481 3 view .LVU41
164 .syntax unified
165 @ 481 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
166 0022 8CF31088 MSR primask, ip
167 @ 0 "" 2
168 .thumb
169 .syntax unified
170 .LBE17:
171 .LBE16:
779:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
172 .loc 1 779 1 is_stmt 0 view .LVU42
173 0026 7047 bx lr
174 .L8:
175 .align 2
176 .L7:
177 0028 00200240 .word 1073881088
178 .cfi_endproc
179 .LFE342:
181 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits
182 .align 1
183 .weak HAL_FLASH_EndOfOperationCallback
184 .syntax unified
185 .thumb
186 .thumb_func
188 HAL_FLASH_EndOfOperationCallback:
189 .LVL8:
190 .LFB332:
468:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
191 .loc 1 468 1 is_stmt 1 view -0
192 .cfi_startproc
193 @ args = 0, pretend = 0, frame = 0
194 @ frame_needed = 0, uses_anonymous_args = 0
195 @ link register save eliminated.
470:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
196 .loc 1 470 3 view .LVU44
475:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
197 .loc 1 475 1 is_stmt 0 view .LVU45
198 0000 7047 bx lr
199 .cfi_endproc
200 .LFE332:
202 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits
203 .align 1
204 .weak HAL_FLASH_OperationErrorCallback
205 .syntax unified
206 .thumb
207 .thumb_func
209 HAL_FLASH_OperationErrorCallback:
210 .LVL9:
211 .LFB333:
486:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
212 .loc 1 486 1 is_stmt 1 view -0
213 .cfi_startproc
214 @ args = 0, pretend = 0, frame = 0
215 @ frame_needed = 0, uses_anonymous_args = 0
216 @ link register save eliminated.
488:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
ARM GAS /tmp/ccEvKRMz.s page 35
217 .loc 1 488 3 view .LVU47
493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
218 .loc 1 493 1 is_stmt 0 view .LVU48
219 0000 7047 bx lr
220 .cfi_endproc
221 .LFE333:
223 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits
224 .align 1
225 .global HAL_FLASH_IRQHandler
226 .syntax unified
227 .thumb
228 .thumb_func
230 HAL_FLASH_IRQHandler:
231 .LFB331:
328:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t tmp_page;
232 .loc 1 328 1 is_stmt 1 view -0
233 .cfi_startproc
234 @ args = 0, pretend = 0, frame = 0
235 @ frame_needed = 0, uses_anonymous_args = 0
236 0000 10B5 push {r4, lr}
237 .LCFI2:
238 .cfi_def_cfa_offset 8
239 .cfi_offset 4, -8
240 .cfi_offset 14, -4
329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
241 .loc 1 329 3 view .LVU50
330:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_ProcedureTypeDef procedure;
242 .loc 1 330 3 view .LVU51
331:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
243 .loc 1 331 3 view .LVU52
334:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** #if defined (FLASH_OPTR_DBANK)
244 .loc 1 334 3 view .LVU53
245 0002 434A ldr r2, .L31
246 0004 5369 ldr r3, [r2, #20]
247 0006 6FF30803 bfc r3, #0, #9
248 000a 5361 str r3, [r2, #20]
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
249 .loc 1 340 3 view .LVU54
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
250 .loc 1 340 13 is_stmt 0 view .LVU55
251 000c 414B ldr r3, .L31+4
252 000e 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
253 .loc 1 340 6 view .LVU56
254 0010 042B cmp r3, #4
255 0012 39D0 beq .L25
256 .L12:
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
257 .loc 1 346 3 is_stmt 1 view .LVU57
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
258 .loc 1 346 17 is_stmt 0 view .LVU58
259 0014 3E4B ldr r3, .L31
260 0016 1B69 ldr r3, [r3, #16]
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
261 .loc 1 346 9 view .LVU59
262 0018 4CF2FA32 movw r2, #50170
263 .LVL10:
ARM GAS /tmp/ccEvKRMz.s page 36
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
264 .loc 1 348 3 is_stmt 1 view .LVU60
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
265 .loc 1 348 6 is_stmt 0 view .LVU61
266 001c 1340 ands r3, r3, r2
267 .LVL11:
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
268 .loc 1 348 6 view .LVU62
269 001e 15D0 beq .L13
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
270 .loc 1 351 5 is_stmt 1 view .LVU63
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
271 .loc 1 351 11 is_stmt 0 view .LVU64
272 0020 3C49 ldr r1, .L31+4
273 0022 4A68 ldr r2, [r1, #4]
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
274 .loc 1 351 22 view .LVU65
275 0024 1A43 orrs r2, r2, r3
276 0026 4A60 str r2, [r1, #4]
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
277 .loc 1 354 5 is_stmt 1 view .LVU66
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
278 .loc 1 354 5 view .LVU67
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
279 .loc 1 354 5 discriminator 3 view .LVU68
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
280 .loc 1 354 5 discriminator 4 view .LVU69
281 0028 394A ldr r2, .L31
282 002a 1361 str r3, [r2, #16]
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
283 .loc 1 354 5 discriminator 6 view .LVU70
357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
284 .loc 1 357 5 view .LVU71
285 002c FFF7FEFF bl FLASH_FlushCaches
286 .LVL12:
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
287 .loc 1 360 5 view .LVU72
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
288 .loc 1 360 15 is_stmt 0 view .LVU73
289 0030 384B ldr r3, .L31+4
290 0032 1A7A ldrb r2, [r3, #8] @ zero_extendqisi2
291 0034 D3B2 uxtb r3, r2
292 .LVL13:
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
293 .loc 1 361 5 is_stmt 1 view .LVU74
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
294 .loc 1 361 8 is_stmt 0 view .LVU75
295 0036 012A cmp r2, #1
296 0038 2BD0 beq .L26
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
297 .loc 1 365 10 is_stmt 1 view .LVU76
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
298 .loc 1 365 13 is_stmt 0 view .LVU77
299 003a 022B cmp r3, #2
300 003c 2ED0 beq .L27
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
301 .loc 1 369 10 is_stmt 1 view .LVU78
ARM GAS /tmp/ccEvKRMz.s page 37
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
302 .loc 1 369 48 is_stmt 0 view .LVU79
303 003e 033B subs r3, r3, #3
304 .LVL14:
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
305 .loc 1 369 48 view .LVU80
306 0040 DBB2 uxtb r3, r3
307 .LVL15:
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
308 .loc 1 369 13 view .LVU81
309 0042 012B cmp r3, #1
310 0044 2FD9 bls .L28
311 .LVL16:
312 .L16:
377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
313 .loc 1 377 5 is_stmt 1 view .LVU82
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
314 .loc 1 380 5 view .LVU83
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
315 .loc 1 380 29 is_stmt 0 view .LVU84
316 0046 334B ldr r3, .L31+4
317 0048 0022 movs r2, #0
318 004a 1A72 strb r2, [r3, #8]
319 .LVL17:
320 .L13:
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
321 .loc 1 384 3 is_stmt 1 view .LVU85
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
322 .loc 1 384 7 is_stmt 0 view .LVU86
323 004c 304B ldr r3, .L31
324 004e 1B69 ldr r3, [r3, #16]
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
325 .loc 1 384 6 view .LVU87
326 0050 13F0010F tst r3, #1
327 0054 46D0 beq .L18
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
328 .loc 1 387 5 is_stmt 1 view .LVU88
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
329 .loc 1 387 5 view .LVU89
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
330 .loc 1 387 5 discriminator 3 view .LVU90
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
331 .loc 1 387 5 discriminator 4 view .LVU91
332 0056 2E4B ldr r3, .L31
333 0058 0122 movs r2, #1
334 005a 1A61 str r2, [r3, #16]
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
335 .loc 1 387 5 discriminator 6 view .LVU92
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
336 .loc 1 389 5 view .LVU93
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
337 .loc 1 389 15 is_stmt 0 view .LVU94
338 005c 2D4B ldr r3, .L31+4
339 005e 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
340 .loc 1 389 8 view .LVU95
341 0060 9342 cmp r3, r2
ARM GAS /tmp/ccEvKRMz.s page 38
342 0062 31D1 bne .L19
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
343 .loc 1 392 7 is_stmt 1 view .LVU96
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
344 .loc 1 392 13 is_stmt 0 view .LVU97
345 0064 2B4B ldr r3, .L31+4
346 0066 9A69 ldr r2, [r3, #24]
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
347 .loc 1 392 28 view .LVU98
348 0068 013A subs r2, r2, #1
349 006a 9A61 str r2, [r3, #24]
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
350 .loc 1 395 7 is_stmt 1 view .LVU99
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
351 .loc 1 395 17 is_stmt 0 view .LVU100
352 006c 9B69 ldr r3, [r3, #24]
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
353 .loc 1 395 10 view .LVU101
354 006e FBB1 cbz r3, .L20
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
355 .loc 1 398 9 is_stmt 1 view .LVU102
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
356 .loc 1 398 48 is_stmt 0 view .LVU103
357 0070 284C ldr r4, .L31+4
358 0072 6069 ldr r0, [r4, #20]
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
359 .loc 1 398 9 view .LVU104
360 0074 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
361 .LVL18:
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
362 .loc 1 401 9 is_stmt 1 view .LVU105
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
363 .loc 1 401 15 is_stmt 0 view .LVU106
364 0078 6369 ldr r3, [r4, #20]
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
365 .loc 1 401 20 view .LVU107
366 007a 0133 adds r3, r3, #1
367 007c 6361 str r3, [r4, #20]
402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
368 .loc 1 402 9 is_stmt 1 view .LVU108
402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
369 .loc 1 402 18 is_stmt 0 view .LVU109
370 007e 6069 ldr r0, [r4, #20]
371 .LVL19:
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
372 .loc 1 403 9 is_stmt 1 view .LVU110
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
373 .loc 1 403 41 is_stmt 0 view .LVU111
374 0080 2169 ldr r1, [r4, #16]
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
375 .loc 1 403 9 view .LVU112
376 0082 FFF7FEFF bl FLASH_PageErase
377 .LVL20:
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
378 .loc 1 403 9 view .LVU113
379 0086 2DE0 b .L18
380 .LVL21:
ARM GAS /tmp/ccEvKRMz.s page 39
381 .L25:
342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
382 .loc 1 342 5 is_stmt 1 view .LVU114
383 0088 5369 ldr r3, [r2, #20]
384 008a 23F48023 bic r3, r3, #262144
385 008e 5361 str r3, [r2, #20]
386 0090 C0E7 b .L12
387 .LVL22:
388 .L26:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
389 .loc 1 363 7 view .LVU115
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
390 .loc 1 363 46 is_stmt 0 view .LVU116
391 0092 204B ldr r3, .L31+4
392 .LVL23:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
393 .loc 1 363 46 view .LVU117
394 0094 5869 ldr r0, [r3, #20]
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
395 .loc 1 363 7 view .LVU118
396 0096 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
397 .LVL24:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
398 .loc 1 363 7 view .LVU119
399 009a D4E7 b .L16
400 .LVL25:
401 .L27:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
402 .loc 1 367 7 is_stmt 1 view .LVU120
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
403 .loc 1 367 46 is_stmt 0 view .LVU121
404 009c 1D4B ldr r3, .L31+4
405 .LVL26:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
406 .loc 1 367 46 view .LVU122
407 009e 1869 ldr r0, [r3, #16]
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
408 .loc 1 367 7 view .LVU123
409 00a0 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
410 .LVL27:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
411 .loc 1 367 7 view .LVU124
412 00a4 CFE7 b .L16
413 .LVL28:
414 .L28:
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
415 .loc 1 372 7 is_stmt 1 view .LVU125
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
416 .loc 1 372 46 is_stmt 0 view .LVU126
417 00a6 1B4B ldr r3, .L31+4
418 00a8 D868 ldr r0, [r3, #12]
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
419 .loc 1 372 7 view .LVU127
420 00aa FFF7FEFF bl HAL_FLASH_OperationErrorCallback
421 .LVL29:
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
422 .loc 1 372 7 view .LVU128
ARM GAS /tmp/ccEvKRMz.s page 40
423 00ae CAE7 b .L16
424 .LVL30:
425 .L20:
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
426 .loc 1 409 9 is_stmt 1 view .LVU129
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
427 .loc 1 409 21 is_stmt 0 view .LVU130
428 00b0 184C ldr r4, .L31+4
429 00b2 4FF0FF33 mov r3, #-1
430 00b6 6361 str r3, [r4, #20]
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
431 .loc 1 410 9 is_stmt 1 view .LVU131
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
432 .loc 1 410 33 is_stmt 0 view .LVU132
433 00b8 0023 movs r3, #0
434 00ba 2372 strb r3, [r4, #8]
413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
435 .loc 1 413 9 is_stmt 1 view .LVU133
436 00bc FFF7FEFF bl FLASH_FlushCaches
437 .LVL31:
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
438 .loc 1 416 9 view .LVU134
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
439 .loc 1 416 48 is_stmt 0 view .LVU135
440 00c0 6069 ldr r0, [r4, #20]
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
441 .loc 1 416 9 view .LVU136
442 00c2 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
443 .LVL32:
444 00c6 0DE0 b .L18
445 .L19:
422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
446 .loc 1 422 7 is_stmt 1 view .LVU137
447 00c8 FFF7FEFF bl FLASH_FlushCaches
448 .LVL33:
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
449 .loc 1 424 7 view .LVU138
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
450 .loc 1 424 17 is_stmt 0 view .LVU139
451 00cc 114B ldr r3, .L31+4
452 00ce 1A7A ldrb r2, [r3, #8] @ zero_extendqisi2
453 00d0 D3B2 uxtb r3, r2
454 .LVL34:
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
455 .loc 1 425 7 is_stmt 1 view .LVU140
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
456 .loc 1 425 10 is_stmt 0 view .LVU141
457 00d2 022A cmp r2, #2
458 00d4 12D0 beq .L29
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
459 .loc 1 431 12 is_stmt 1 view .LVU142
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
460 .loc 1 431 50 is_stmt 0 view .LVU143
461 00d6 033B subs r3, r3, #3
462 .LVL35:
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
463 .loc 1 431 50 view .LVU144
ARM GAS /tmp/ccEvKRMz.s page 41
464 00d8 DBB2 uxtb r3, r3
465 .LVL36:
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
466 .loc 1 431 15 view .LVU145
467 00da 012B cmp r3, #1
468 00dc 13D9 bls .L30
469 .LVL37:
470 .L22:
441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
471 .loc 1 441 7 is_stmt 1 view .LVU146
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
472 .loc 1 444 7 view .LVU147
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
473 .loc 1 444 31 is_stmt 0 view .LVU148
474 00de 0D4B ldr r3, .L31+4
475 00e0 0022 movs r2, #0
476 00e2 1A72 strb r2, [r3, #8]
477 .LVL38:
478 .L18:
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
479 .loc 1 448 3 is_stmt 1 view .LVU149
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
480 .loc 1 448 13 is_stmt 0 view .LVU150
481 00e4 0B4B ldr r3, .L31+4
482 00e6 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
483 .loc 1 448 6 view .LVU151
484 00e8 3BB9 cbnz r3, .L11
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
485 .loc 1 451 5 is_stmt 1 view .LVU152
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
486 .loc 1 451 5 view .LVU153
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
487 .loc 1 451 5 discriminator 3 view .LVU154
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
488 .loc 1 451 5 discriminator 4 view .LVU155
489 00ea 094A ldr r2, .L31
490 00ec 5369 ldr r3, [r2, #20]
491 00ee 23F04073 bic r3, r3, #50331648
492 00f2 5361 str r3, [r2, #20]
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
493 .loc 1 451 5 discriminator 6 view .LVU156
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
494 .loc 1 454 5 view .LVU157
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
495 .loc 1 454 5 view .LVU158
496 00f4 074B ldr r3, .L31+4
497 00f6 0022 movs r2, #0
498 00f8 1A70 strb r2, [r3]
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
499 .loc 1 454 5 discriminator 1 view .LVU159
500 .L11:
456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
501 .loc 1 456 1 is_stmt 0 view .LVU160
502 00fa 10BD pop {r4, pc}
503 .LVL39:
504 .L29:
ARM GAS /tmp/ccEvKRMz.s page 42
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
505 .loc 1 429 9 is_stmt 1 view .LVU161
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
506 .loc 1 429 48 is_stmt 0 view .LVU162
507 00fc 054B ldr r3, .L31+4
508 .LVL40:
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
509 .loc 1 429 48 view .LVU163
510 00fe 1869 ldr r0, [r3, #16]
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
511 .loc 1 429 9 view .LVU164
512 0100 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
513 .LVL41:
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
514 .loc 1 429 9 view .LVU165
515 0104 EBE7 b .L22
516 .LVL42:
517 .L30:
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
518 .loc 1 436 9 is_stmt 1 view .LVU166
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
519 .loc 1 436 48 is_stmt 0 view .LVU167
520 0106 034B ldr r3, .L31+4
521 0108 D868 ldr r0, [r3, #12]
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
522 .loc 1 436 9 view .LVU168
523 010a FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
524 .LVL43:
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
525 .loc 1 436 9 view .LVU169
526 010e E6E7 b .L22
527 .L32:
528 .align 2
529 .L31:
530 0110 00200240 .word 1073881088
531 0114 00000000 .word pFlash
532 .cfi_endproc
533 .LFE331:
535 .section .text.HAL_FLASH_Unlock,"ax",%progbits
536 .align 1
537 .global HAL_FLASH_Unlock
538 .syntax unified
539 .thumb
540 .thumb_func
542 HAL_FLASH_Unlock:
543 .LFB334:
519:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
544 .loc 1 519 1 is_stmt 1 view -0
545 .cfi_startproc
546 @ args = 0, pretend = 0, frame = 0
547 @ frame_needed = 0, uses_anonymous_args = 0
548 @ link register save eliminated.
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
549 .loc 1 520 3 view .LVU171
550 .LVL44:
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
551 .loc 1 522 3 view .LVU172
ARM GAS /tmp/ccEvKRMz.s page 43
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
552 .loc 1 522 7 is_stmt 0 view .LVU173
553 0000 094B ldr r3, .L38
554 0002 5B69 ldr r3, [r3, #20]
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
555 .loc 1 522 6 view .LVU174
556 0004 002B cmp r3, #0
557 0006 01DB blt .L37
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
558 .loc 1 520 21 view .LVU175
559 0008 0020 movs r0, #0
560 000a 7047 bx lr
561 .L37:
525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
562 .loc 1 525 5 is_stmt 1 view .LVU176
563 000c 064B ldr r3, .L38
564 000e 074A ldr r2, .L38+4
565 0010 9A60 str r2, [r3, #8]
526:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
566 .loc 1 526 5 view .LVU177
567 0012 02F18832 add r2, r2, #-2004318072
568 0016 9A60 str r2, [r3, #8]
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
569 .loc 1 529 5 view .LVU178
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
570 .loc 1 529 9 is_stmt 0 view .LVU179
571 0018 5B69 ldr r3, [r3, #20]
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
572 .loc 1 529 8 view .LVU180
573 001a 002B cmp r3, #0
574 001c 01DB blt .L36
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
575 .loc 1 520 21 view .LVU181
576 001e 0020 movs r0, #0
577 0020 7047 bx lr
578 .L36:
531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
579 .loc 1 531 14 view .LVU182
580 0022 0120 movs r0, #1
581 .LVL45:
535:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
582 .loc 1 535 3 is_stmt 1 view .LVU183
536:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
583 .loc 1 536 1 is_stmt 0 view .LVU184
584 0024 7047 bx lr
585 .L39:
586 0026 00BF .align 2
587 .L38:
588 0028 00200240 .word 1073881088
589 002c 23016745 .word 1164378403
590 .cfi_endproc
591 .LFE334:
593 .section .text.HAL_FLASH_Lock,"ax",%progbits
594 .align 1
595 .global HAL_FLASH_Lock
596 .syntax unified
597 .thumb
ARM GAS /tmp/ccEvKRMz.s page 44
598 .thumb_func
600 HAL_FLASH_Lock:
601 .LFB335:
543:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
602 .loc 1 543 1 is_stmt 1 view -0
603 .cfi_startproc
604 @ args = 0, pretend = 0, frame = 0
605 @ frame_needed = 0, uses_anonymous_args = 0
606 @ link register save eliminated.
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
607 .loc 1 544 3 view .LVU186
608 .LVL46:
547:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
609 .loc 1 547 3 view .LVU187
610 0000 054B ldr r3, .L43
611 0002 5A69 ldr r2, [r3, #20]
612 0004 42F00042 orr r2, r2, #-2147483648
613 0008 5A61 str r2, [r3, #20]
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
614 .loc 1 550 3 view .LVU188
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
615 .loc 1 550 7 is_stmt 0 view .LVU189
616 000a 5B69 ldr r3, [r3, #20]
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
617 .loc 1 550 6 view .LVU190
618 000c 002B cmp r3, #0
619 000e 01DB blt .L42
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
620 .loc 1 544 21 view .LVU191
621 0010 0120 movs r0, #1
622 0012 7047 bx lr
623 .L42:
552:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
624 .loc 1 552 12 view .LVU192
625 0014 0020 movs r0, #0
626 .LVL47:
555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
627 .loc 1 555 3 is_stmt 1 view .LVU193
556:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
628 .loc 1 556 1 is_stmt 0 view .LVU194
629 0016 7047 bx lr
630 .L44:
631 .align 2
632 .L43:
633 0018 00200240 .word 1073881088
634 .cfi_endproc
635 .LFE335:
637 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
638 .align 1
639 .global HAL_FLASH_OB_Unlock
640 .syntax unified
641 .thumb
642 .thumb_func
644 HAL_FLASH_OB_Unlock:
645 .LFB336:
563:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
646 .loc 1 563 1 is_stmt 1 view -0
ARM GAS /tmp/ccEvKRMz.s page 45
647 .cfi_startproc
648 @ args = 0, pretend = 0, frame = 0
649 @ frame_needed = 0, uses_anonymous_args = 0
650 @ link register save eliminated.
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
651 .loc 1 564 3 view .LVU196
652 .LVL48:
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
653 .loc 1 566 3 view .LVU197
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
654 .loc 1 566 7 is_stmt 0 view .LVU198
655 0000 0A4B ldr r3, .L49
656 0002 5B69 ldr r3, [r3, #20]
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
657 .loc 1 566 6 view .LVU199
658 0004 13F0804F tst r3, #1073741824
659 0008 0BD0 beq .L47
569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
660 .loc 1 569 5 is_stmt 1 view .LVU200
661 000a 084B ldr r3, .L49
662 000c 084A ldr r2, .L49+4
663 000e DA60 str r2, [r3, #12]
570:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
664 .loc 1 570 5 view .LVU201
665 0010 02F14432 add r2, r2, #1145324612
666 0014 DA60 str r2, [r3, #12]
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
667 .loc 1 573 5 view .LVU202
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
668 .loc 1 573 9 is_stmt 0 view .LVU203
669 0016 5B69 ldr r3, [r3, #20]
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
670 .loc 1 573 8 view .LVU204
671 0018 13F0804F tst r3, #1073741824
672 001c 03D1 bne .L48
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
673 .loc 1 564 21 view .LVU205
674 001e 0020 movs r0, #0
675 0020 7047 bx lr
676 .L47:
677 0022 0020 movs r0, #0
678 0024 7047 bx lr
679 .L48:
575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
680 .loc 1 575 14 view .LVU206
681 0026 0120 movs r0, #1
682 .LVL49:
579:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
683 .loc 1 579 3 is_stmt 1 view .LVU207
580:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
684 .loc 1 580 1 is_stmt 0 view .LVU208
685 0028 7047 bx lr
686 .L50:
687 002a 00BF .align 2
688 .L49:
689 002c 00200240 .word 1073881088
690 0030 3B2A1908 .word 135866939
ARM GAS /tmp/ccEvKRMz.s page 46
691 .cfi_endproc
692 .LFE336:
694 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
695 .align 1
696 .global HAL_FLASH_OB_Lock
697 .syntax unified
698 .thumb
699 .thumb_func
701 HAL_FLASH_OB_Lock:
702 .LFB337:
587:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
703 .loc 1 587 1 is_stmt 1 view -0
704 .cfi_startproc
705 @ args = 0, pretend = 0, frame = 0
706 @ frame_needed = 0, uses_anonymous_args = 0
707 @ link register save eliminated.
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
708 .loc 1 588 3 view .LVU210
709 .LVL50:
591:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
710 .loc 1 591 3 view .LVU211
711 0000 064B ldr r3, .L54
712 0002 5A69 ldr r2, [r3, #20]
713 0004 42F08042 orr r2, r2, #1073741824
714 0008 5A61 str r2, [r3, #20]
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
715 .loc 1 594 3 view .LVU212
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
716 .loc 1 594 7 is_stmt 0 view .LVU213
717 000a 5B69 ldr r3, [r3, #20]
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
718 .loc 1 594 6 view .LVU214
719 000c 13F0804F tst r3, #1073741824
720 0010 01D1 bne .L53
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
721 .loc 1 588 21 view .LVU215
722 0012 0120 movs r0, #1
723 0014 7047 bx lr
724 .L53:
596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
725 .loc 1 596 12 view .LVU216
726 0016 0020 movs r0, #0
727 .LVL51:
599:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
728 .loc 1 599 3 is_stmt 1 view .LVU217
600:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
729 .loc 1 600 1 is_stmt 0 view .LVU218
730 0018 7047 bx lr
731 .L55:
732 001a 00BF .align 2
733 .L54:
734 001c 00200240 .word 1073881088
735 .cfi_endproc
736 .LFE337:
738 .section .text.HAL_FLASH_GetError,"ax",%progbits
739 .align 1
740 .global HAL_FLASH_GetError
ARM GAS /tmp/ccEvKRMz.s page 47
741 .syntax unified
742 .thumb
743 .thumb_func
745 HAL_FLASH_GetError:
746 .LFB339:
655:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return pFlash.ErrorCode;
747 .loc 1 655 1 is_stmt 1 view -0
748 .cfi_startproc
749 @ args = 0, pretend = 0, frame = 0
750 @ frame_needed = 0, uses_anonymous_args = 0
751 @ link register save eliminated.
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
752 .loc 1 656 3 view .LVU220
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
753 .loc 1 656 16 is_stmt 0 view .LVU221
754 0000 014B ldr r3, .L57
755 0002 5868 ldr r0, [r3, #4]
657:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
756 .loc 1 657 1 view .LVU222
757 0004 7047 bx lr
758 .L58:
759 0006 00BF .align 2
760 .L57:
761 0008 00000000 .word pFlash
762 .cfi_endproc
763 .LFE339:
765 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
766 .align 1
767 .global FLASH_WaitForLastOperation
768 .syntax unified
769 .thumb
770 .thumb_func
772 FLASH_WaitForLastOperation:
773 .LVL52:
774 .LFB340:
679:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
775 .loc 1 679 1 is_stmt 1 view -0
776 .cfi_startproc
777 @ args = 0, pretend = 0, frame = 0
778 @ frame_needed = 0, uses_anonymous_args = 0
679:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
779 .loc 1 679 1 is_stmt 0 view .LVU224
780 0000 38B5 push {r3, r4, r5, lr}
781 .LCFI3:
782 .cfi_def_cfa_offset 16
783 .cfi_offset 3, -16
784 .cfi_offset 4, -12
785 .cfi_offset 5, -8
786 .cfi_offset 14, -4
787 0002 0546 mov r5, r0
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
788 .loc 1 684 3 is_stmt 1 view .LVU225
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
789 .loc 1 684 24 is_stmt 0 view .LVU226
790 0004 FFF7FEFF bl HAL_GetTick
791 .LVL53:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
ARM GAS /tmp/ccEvKRMz.s page 48
792 .loc 1 684 24 view .LVU227
793 0008 0446 mov r4, r0
794 .LVL54:
685:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
795 .loc 1 685 3 is_stmt 1 view .LVU228
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
796 .loc 1 687 3 view .LVU229
797 .L60:
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
798 .loc 1 687 10 view .LVU230
799 000a 134B ldr r3, .L70
800 000c 1B69 ldr r3, [r3, #16]
801 000e 13F4803F tst r3, #65536
802 0012 06D0 beq .L68
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
803 .loc 1 689 5 view .LVU231
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
804 .loc 1 689 10 is_stmt 0 view .LVU232
805 0014 FFF7FEFF bl HAL_GetTick
806 .LVL55:
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
807 .loc 1 689 24 discriminator 1 view .LVU233
808 0018 001B subs r0, r0, r4
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
809 .loc 1 689 8 discriminator 1 view .LVU234
810 001a A842 cmp r0, r5
811 001c F5D9 bls .L60
691:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
812 .loc 1 691 14 view .LVU235
813 001e 0320 movs r0, #3
814 .L61:
717:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
815 .loc 1 717 1 view .LVU236
816 0020 38BD pop {r3, r4, r5, pc}
817 .LVL56:
818 .L68:
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
819 .loc 1 696 3 is_stmt 1 view .LVU237
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
820 .loc 1 696 17 is_stmt 0 view .LVU238
821 0022 0D4B ldr r3, .L70
822 0024 1B69 ldr r3, [r3, #16]
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
823 .loc 1 696 9 view .LVU239
824 0026 4CF2FA32 movw r2, #50170
825 .LVL57:
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
826 .loc 1 697 3 is_stmt 1 view .LVU240
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
827 .loc 1 697 6 is_stmt 0 view .LVU241
828 002a 1340 ands r3, r3, r2
829 .LVL58:
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
830 .loc 1 697 6 view .LVU242
831 002c 09D1 bne .L69
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
832 .loc 1 709 3 is_stmt 1 view .LVU243
ARM GAS /tmp/ccEvKRMz.s page 49
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
833 .loc 1 709 7 is_stmt 0 view .LVU244
834 002e 0A4B ldr r3, .L70
835 .LVL59:
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
836 .loc 1 709 7 view .LVU245
837 0030 1B69 ldr r3, [r3, #16]
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
838 .loc 1 709 6 view .LVU246
839 0032 13F0010F tst r3, #1
840 0036 0CD0 beq .L66
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
841 .loc 1 712 5 is_stmt 1 view .LVU247
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
842 .loc 1 712 5 view .LVU248
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
843 .loc 1 712 5 discriminator 3 view .LVU249
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
844 .loc 1 712 5 discriminator 4 view .LVU250
845 0038 074B ldr r3, .L70
846 003a 0122 movs r2, #1
847 003c 1A61 str r2, [r3, #16]
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
848 .loc 1 716 10 is_stmt 0 view .LVU251
849 003e 0020 movs r0, #0
850 0040 EEE7 b .L61
851 .LVL60:
852 .L69:
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
853 .loc 1 700 5 is_stmt 1 view .LVU252
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
854 .loc 1 700 11 is_stmt 0 view .LVU253
855 0042 0649 ldr r1, .L70+4
856 0044 4A68 ldr r2, [r1, #4]
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
857 .loc 1 700 22 view .LVU254
858 0046 1A43 orrs r2, r2, r3
859 0048 4A60 str r2, [r1, #4]
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
860 .loc 1 703 5 is_stmt 1 view .LVU255
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
861 .loc 1 703 5 view .LVU256
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
862 .loc 1 703 5 discriminator 3 view .LVU257
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
863 .loc 1 703 5 discriminator 4 view .LVU258
864 004a 034A ldr r2, .L70
865 004c 1361 str r3, [r2, #16]
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
866 .loc 1 703 5 discriminator 6 view .LVU259
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
867 .loc 1 705 5 view .LVU260
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
868 .loc 1 705 12 is_stmt 0 view .LVU261
869 004e 0120 movs r0, #1
870 0050 E6E7 b .L61
871 .LVL61:
ARM GAS /tmp/ccEvKRMz.s page 50
872 .L66:
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
873 .loc 1 716 10 view .LVU262
874 0052 0020 movs r0, #0
875 0054 E4E7 b .L61
876 .L71:
877 0056 00BF .align 2
878 .L70:
879 0058 00200240 .word 1073881088
880 005c 00000000 .word pFlash
881 .cfi_endproc
882 .LFE340:
884 .section .text.HAL_FLASH_Program,"ax",%progbits
885 .align 1
886 .global HAL_FLASH_Program
887 .syntax unified
888 .thumb
889 .thumb_func
891 HAL_FLASH_Program:
892 .LVL62:
893 .LFB329:
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
894 .loc 1 174 1 is_stmt 1 view -0
895 .cfi_startproc
896 @ args = 0, pretend = 0, frame = 0
897 @ frame_needed = 0, uses_anonymous_args = 0
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
898 .loc 1 174 1 is_stmt 0 view .LVU264
899 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
900 .LCFI4:
901 .cfi_def_cfa_offset 24
902 .cfi_offset 4, -24
903 .cfi_offset 5, -20
904 .cfi_offset 6, -16
905 .cfi_offset 7, -12
906 .cfi_offset 8, -8
907 .cfi_offset 14, -4
908 0004 1646 mov r6, r2
175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t prog_bit = 0;
909 .loc 1 175 3 is_stmt 1 view .LVU265
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
910 .loc 1 176 3 view .LVU266
911 .LVL63:
179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
912 .loc 1 179 3 view .LVU267
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
913 .loc 1 182 3 view .LVU268
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
914 .loc 1 182 3 view .LVU269
915 0006 284A ldr r2, .L86
916 .LVL64:
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
917 .loc 1 182 3 is_stmt 0 view .LVU270
918 0008 1278 ldrb r2, [r2] @ zero_extendqisi2
919 000a 012A cmp r2, #1
920 000c 49D0 beq .L80
921 000e 0446 mov r4, r0
ARM GAS /tmp/ccEvKRMz.s page 51
922 0010 0D46 mov r5, r1
923 0012 9846 mov r8, r3
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
924 .loc 1 182 3 is_stmt 1 discriminator 2 view .LVU271
925 0014 244B ldr r3, .L86
926 0016 0122 movs r2, #1
927 0018 1A70 strb r2, [r3]
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
928 .loc 1 182 3 view .LVU272
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
929 .loc 1 185 3 view .LVU273
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
930 .loc 1 185 12 is_stmt 0 view .LVU274
931 001a 4FF47A70 mov r0, #1000
932 .LVL65:
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
933 .loc 1 185 12 view .LVU275
934 001e FFF7FEFF bl FLASH_WaitForLastOperation
935 .LVL66:
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
936 .loc 1 187 3 is_stmt 1 view .LVU276
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
937 .loc 1 187 6 is_stmt 0 view .LVU277
938 0022 0746 mov r7, r0
939 0024 08BB cbnz r0, .L74
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
940 .loc 1 189 5 is_stmt 1 view .LVU278
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
941 .loc 1 189 22 is_stmt 0 view .LVU279
942 0026 204B ldr r3, .L86
943 0028 0022 movs r2, #0
944 002a 5A60 str r2, [r3, #4]
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
945 .loc 1 192 5 is_stmt 1 view .LVU280
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
946 .loc 1 192 8 is_stmt 0 view .LVU281
947 002c 1F4B ldr r3, .L86+4
948 002e 1B68 ldr r3, [r3]
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
949 .loc 1 192 7 view .LVU282
950 0030 13F4806F tst r3, #1024
951 0034 1FD0 beq .L75
195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
952 .loc 1 195 7 is_stmt 1 view .LVU283
953 0036 1D4A ldr r2, .L86+4
954 0038 1368 ldr r3, [r2]
955 003a 23F48063 bic r3, r3, #1024
956 003e 1360 str r3, [r2]
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
957 .loc 1 196 7 view .LVU284
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
958 .loc 1 196 32 is_stmt 0 view .LVU285
959 0040 194B ldr r3, .L86
960 0042 0222 movs r2, #2
961 0044 1A77 strb r2, [r3, #28]
962 .L76:
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccEvKRMz.s page 52
963 .loc 1 202 5 is_stmt 1 view .LVU286
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
964 .loc 1 202 8 is_stmt 0 view .LVU287
965 0046 D4B1 cbz r4, .L84
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
966 .loc 1 208 10 is_stmt 1 view .LVU288
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
967 .loc 1 208 54 is_stmt 0 view .LVU289
968 0048 631E subs r3, r4, #1
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
969 .loc 1 208 13 view .LVU290
970 004a 012B cmp r3, #1
971 004c 1ED9 bls .L85
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
972 .loc 1 176 12 view .LVU291
973 004e 0024 movs r4, #0
974 .LVL67:
975 .L78:
222:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
976 .loc 1 222 5 is_stmt 1 view .LVU292
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
977 .loc 1 225 5 view .LVU293
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
978 .loc 1 225 14 is_stmt 0 view .LVU294
979 0050 4FF47A70 mov r0, #1000
980 0054 FFF7FEFF bl FLASH_WaitForLastOperation
981 .LVL68:
982 0058 0746 mov r7, r0
983 .LVL69:
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
984 .loc 1 228 5 is_stmt 1 view .LVU295
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
985 .loc 1 228 8 is_stmt 0 view .LVU296
986 005a 24B1 cbz r4, .L79
230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
987 .loc 1 230 7 is_stmt 1 view .LVU297
988 005c 134A ldr r2, .L86+4
989 005e 5369 ldr r3, [r2, #20]
990 0060 23EA0403 bic r3, r3, r4
991 0064 5361 str r3, [r2, #20]
992 .L79:
234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
993 .loc 1 234 5 view .LVU298
994 0066 FFF7FEFF bl FLASH_FlushCaches
995 .LVL70:
996 .L74:
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
997 .loc 1 238 3 view .LVU299
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
998 .loc 1 238 3 view .LVU300
999 006a 0F4B ldr r3, .L86
1000 006c 0022 movs r2, #0
1001 006e 1A70 strb r2, [r3]
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1002 .loc 1 238 3 view .LVU301
241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1003 .loc 1 241 3 view .LVU302
ARM GAS /tmp/ccEvKRMz.s page 53
1004 .LVL71:
1005 .L73:
242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1006 .loc 1 242 1 is_stmt 0 view .LVU303
1007 0070 3846 mov r0, r7
1008 0072 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
1009 .LVL72:
1010 .L75:
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1011 .loc 1 200 7 is_stmt 1 view .LVU304
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1012 .loc 1 200 32 is_stmt 0 view .LVU305
1013 0076 0C4B ldr r3, .L86
1014 0078 0022 movs r2, #0
1015 007a 1A77 strb r2, [r3, #28]
1016 007c E3E7 b .L76
1017 .L84:
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
1018 .loc 1 205 7 is_stmt 1 view .LVU306
1019 007e 3246 mov r2, r6
1020 0080 4346 mov r3, r8
1021 0082 2846 mov r0, r5
1022 .LVL73:
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
1023 .loc 1 205 7 is_stmt 0 view .LVU307
1024 0084 FFF7FEFF bl FLASH_Program_DoubleWord
1025 .LVL74:
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1026 .loc 1 206 7 is_stmt 1 view .LVU308
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1027 .loc 1 206 16 is_stmt 0 view .LVU309
1028 0088 0124 movs r4, #1
1029 .LVL75:
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1030 .loc 1 206 16 view .LVU310
1031 008a E1E7 b .L78
1032 .LVL76:
1033 .L85:
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1034 .loc 1 211 7 is_stmt 1 view .LVU311
1035 008c 3146 mov r1, r6
1036 008e 2846 mov r0, r5
1037 .LVL77:
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1038 .loc 1 211 7 is_stmt 0 view .LVU312
1039 0090 FFF7FEFF bl FLASH_Program_Fast
1040 .LVL78:
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1041 .loc 1 214 7 is_stmt 1 view .LVU313
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1042 .loc 1 214 10 is_stmt 0 view .LVU314
1043 0094 022C cmp r4, #2
1044 0096 01D0 beq .L82
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1045 .loc 1 176 12 view .LVU315
1046 0098 0024 movs r4, #0
1047 .LVL79:
ARM GAS /tmp/ccEvKRMz.s page 54
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1048 .loc 1 176 12 view .LVU316
1049 009a D9E7 b .L78
1050 .LVL80:
1051 .L82:
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1052 .loc 1 216 18 view .LVU317
1053 009c 4FF48024 mov r4, #262144
1054 .LVL81:
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1055 .loc 1 216 18 view .LVU318
1056 00a0 D6E7 b .L78
1057 .LVL82:
1058 .L80:
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1059 .loc 1 182 3 discriminator 1 view .LVU319
1060 00a2 0227 movs r7, #2
1061 00a4 E4E7 b .L73
1062 .L87:
1063 00a6 00BF .align 2
1064 .L86:
1065 00a8 00000000 .word pFlash
1066 00ac 00200240 .word 1073881088
1067 .cfi_endproc
1068 .LFE329:
1070 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
1071 .align 1
1072 .global HAL_FLASH_Program_IT
1073 .syntax unified
1074 .thumb
1075 .thumb_func
1077 HAL_FLASH_Program_IT:
1078 .LVL83:
1079 .LFB330:
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
1080 .loc 1 256 1 is_stmt 1 view -0
1081 .cfi_startproc
1082 @ args = 0, pretend = 0, frame = 0
1083 @ frame_needed = 0, uses_anonymous_args = 0
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
1084 .loc 1 256 1 is_stmt 0 view .LVU321
1085 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
1086 .LCFI5:
1087 .cfi_def_cfa_offset 24
1088 .cfi_offset 4, -24
1089 .cfi_offset 5, -20
1090 .cfi_offset 6, -16
1091 .cfi_offset 7, -12
1092 .cfi_offset 8, -8
1093 .cfi_offset 14, -4
1094 0004 1F46 mov r7, r3
257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1095 .loc 1 257 3 is_stmt 1 view .LVU322
260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1096 .loc 1 260 3 view .LVU323
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1097 .loc 1 263 3 view .LVU324
ARM GAS /tmp/ccEvKRMz.s page 55
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1098 .loc 1 263 3 view .LVU325
1099 0006 254B ldr r3, .L100
1100 0008 1B78 ldrb r3, [r3] @ zero_extendqisi2
1101 000a 012B cmp r3, #1
1102 000c 43D0 beq .L96
1103 000e 0446 mov r4, r0
1104 0010 0D46 mov r5, r1
1105 0012 1646 mov r6, r2
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1106 .loc 1 263 3 discriminator 2 view .LVU326
1107 0014 214B ldr r3, .L100
1108 0016 0122 movs r2, #1
1109 .LVL84:
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1110 .loc 1 263 3 is_stmt 0 discriminator 2 view .LVU327
1111 0018 1A70 strb r2, [r3]
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1112 .loc 1 263 3 is_stmt 1 view .LVU328
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1113 .loc 1 266 3 view .LVU329
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1114 .loc 1 266 20 is_stmt 0 view .LVU330
1115 001a 0022 movs r2, #0
1116 001c 5A60 str r2, [r3, #4]
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1117 .loc 1 269 3 is_stmt 1 view .LVU331
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1118 .loc 1 269 6 is_stmt 0 view .LVU332
1119 001e 204B ldr r3, .L100+4
1120 0020 1B68 ldr r3, [r3]
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1121 .loc 1 269 5 view .LVU333
1122 0022 13F4806F tst r3, #1024
1123 0026 13D0 beq .L90
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
1124 .loc 1 272 5 is_stmt 1 view .LVU334
1125 0028 1D4A ldr r2, .L100+4
1126 002a 1368 ldr r3, [r2]
1127 002c 23F48063 bic r3, r3, #1024
1128 0030 1360 str r3, [r2]
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1129 .loc 1 273 5 view .LVU335
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1130 .loc 1 273 30 is_stmt 0 view .LVU336
1131 0032 1A4B ldr r3, .L100
1132 0034 0222 movs r2, #2
1133 0036 1A77 strb r2, [r3, #28]
1134 .L91:
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1135 .loc 1 281 3 is_stmt 1 view .LVU337
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1136 .loc 1 281 12 is_stmt 0 view .LVU338
1137 0038 4FF47A70 mov r0, #1000
1138 .LVL85:
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1139 .loc 1 281 12 view .LVU339
ARM GAS /tmp/ccEvKRMz.s page 56
1140 003c FFF7FEFF bl FLASH_WaitForLastOperation
1141 .LVL86:
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1142 .loc 1 283 3 is_stmt 1 view .LVU340
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1143 .loc 1 283 6 is_stmt 0 view .LVU341
1144 0040 8046 mov r8, r0
1145 0042 48B1 cbz r0, .L92
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1146 .loc 1 286 5 is_stmt 1 view .LVU342
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1147 .loc 1 286 5 view .LVU343
1148 0044 154B ldr r3, .L100
1149 0046 0022 movs r2, #0
1150 0048 1A70 strb r2, [r3]
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1151 .loc 1 286 5 view .LVU344
1152 .LVL87:
1153 .L89:
321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1154 .loc 1 321 1 is_stmt 0 view .LVU345
1155 004a 4046 mov r0, r8
1156 004c BDE8F081 pop {r4, r5, r6, r7, r8, pc}
1157 .LVL88:
1158 .L90:
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1159 .loc 1 277 5 is_stmt 1 view .LVU346
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1160 .loc 1 277 30 is_stmt 0 view .LVU347
1161 0050 124B ldr r3, .L100
1162 0052 0022 movs r2, #0
1163 0054 1A77 strb r2, [r3, #28]
1164 0056 EFE7 b .L91
1165 .LVL89:
1166 .L92:
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1167 .loc 1 291 5 is_stmt 1 view .LVU348
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1168 .loc 1 291 8 is_stmt 0 view .LVU349
1169 0058 022C cmp r4, #2
1170 005a 12D0 beq .L98
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1171 .loc 1 297 7 is_stmt 1 view .LVU350
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1172 .loc 1 297 31 is_stmt 0 view .LVU351
1173 005c 0F4B ldr r3, .L100
1174 005e 0322 movs r2, #3
1175 0060 1A72 strb r2, [r3, #8]
1176 .L94:
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1177 .loc 1 299 5 is_stmt 1 view .LVU352
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1178 .loc 1 299 20 is_stmt 0 view .LVU353
1179 0062 0E4B ldr r3, .L100
1180 0064 DD60 str r5, [r3, #12]
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1181 .loc 1 302 5 is_stmt 1 view .LVU354
ARM GAS /tmp/ccEvKRMz.s page 57
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1182 .loc 1 302 5 view .LVU355
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1183 .loc 1 302 5 discriminator 3 view .LVU356
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1184 .loc 1 302 5 discriminator 4 view .LVU357
1185 0066 0E4A ldr r2, .L100+4
1186 0068 5369 ldr r3, [r2, #20]
1187 006a 43F04073 orr r3, r3, #50331648
1188 006e 5361 str r3, [r2, #20]
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1189 .loc 1 302 5 discriminator 6 view .LVU358
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1190 .loc 1 304 5 view .LVU359
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1191 .loc 1 304 8 is_stmt 0 view .LVU360
1192 0070 5CB1 cbz r4, .L99
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1193 .loc 1 309 10 is_stmt 1 view .LVU361
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1194 .loc 1 309 54 is_stmt 0 view .LVU362
1195 0072 013C subs r4, r4, #1
1196 .LVL90:
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1197 .loc 1 309 13 view .LVU363
1198 0074 012C cmp r4, #1
1199 0076 E8D8 bhi .L89
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1200 .loc 1 312 7 is_stmt 1 view .LVU364
1201 0078 3146 mov r1, r6
1202 007a 2846 mov r0, r5
1203 .LVL91:
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1204 .loc 1 312 7 is_stmt 0 view .LVU365
1205 007c FFF7FEFF bl FLASH_Program_Fast
1206 .LVL92:
1207 0080 E3E7 b .L89
1208 .LVL93:
1209 .L98:
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1210 .loc 1 293 7 is_stmt 1 view .LVU366
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1211 .loc 1 293 31 is_stmt 0 view .LVU367
1212 0082 064B ldr r3, .L100
1213 0084 0422 movs r2, #4
1214 0086 1A72 strb r2, [r3, #8]
1215 0088 EBE7 b .L94
1216 .L99:
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1217 .loc 1 307 7 is_stmt 1 view .LVU368
1218 008a 3246 mov r2, r6
1219 008c 3B46 mov r3, r7
1220 008e 2846 mov r0, r5
1221 .LVL94:
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1222 .loc 1 307 7 is_stmt 0 view .LVU369
1223 0090 FFF7FEFF bl FLASH_Program_DoubleWord
ARM GAS /tmp/ccEvKRMz.s page 58
1224 .LVL95:
1225 0094 D9E7 b .L89
1226 .LVL96:
1227 .L96:
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1228 .loc 1 263 3 discriminator 1 view .LVU370
1229 0096 4FF00208 mov r8, #2
1230 009a D6E7 b .L89
1231 .L101:
1232 .align 2
1233 .L100:
1234 009c 00000000 .word pFlash
1235 00a0 00200240 .word 1073881088
1236 .cfi_endproc
1237 .LFE330:
1239 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1240 .align 1
1241 .global HAL_FLASH_OB_Launch
1242 .syntax unified
1243 .thumb
1244 .thumb_func
1246 HAL_FLASH_OB_Launch:
1247 .LFB338:
607:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the bit to force the option byte reloading */
1248 .loc 1 607 1 is_stmt 1 view -0
1249 .cfi_startproc
1250 @ args = 0, pretend = 0, frame = 0
1251 @ frame_needed = 0, uses_anonymous_args = 0
1252 0000 08B5 push {r3, lr}
1253 .LCFI6:
1254 .cfi_def_cfa_offset 8
1255 .cfi_offset 3, -8
1256 .cfi_offset 14, -4
609:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1257 .loc 1 609 3 view .LVU372
1258 0002 054A ldr r2, .L104
1259 0004 5369 ldr r3, [r2, #20]
1260 0006 43F00063 orr r3, r3, #134217728
1261 000a 5361 str r3, [r2, #20]
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1262 .loc 1 612 3 view .LVU373
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1263 .loc 1 612 11 is_stmt 0 view .LVU374
1264 000c 4FF47A70 mov r0, #1000
1265 0010 FFF7FEFF bl FLASH_WaitForLastOperation
1266 .LVL97:
613:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1267 .loc 1 613 1 view .LVU375
1268 0014 08BD pop {r3, pc}
1269 .L105:
1270 0016 00BF .align 2
1271 .L104:
1272 0018 00200240 .word 1073881088
1273 .cfi_endproc
1274 .LFE338:
1276 .global pFlash
1277 .section .data.pFlash,"aw"
ARM GAS /tmp/ccEvKRMz.s page 59
1278 .align 2
1281 pFlash:
1282 0000 00 .byte 0
1283 0001 000000 .space 3
1284 0004 00000000 .word 0
1285 0008 00 .byte 0
1286 0009 000000 .space 3
1287 000c 00000000 .word 0
1288 0010 01000000 .word 1
1289 0014 00000000 .word 0
1290 0018 00000000 .word 0
1291 001c 00 .byte 0
1292 001d 000000 .space 3
1293 .text
1294 .Letext0:
1295 .file 3 "/home/fra/bin/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/mach
1296 .file 4 "/home/fra/bin/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/sys/
1297 .file 5 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h"
1298 .file 6 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h"
1299 .file 7 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h"
1300 .file 8 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h"
1301 .file 9 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ex.h"
ARM GAS /tmp/ccEvKRMz.s page 60
DEFINED SYMBOLS
*ABS*:00000000 stm32g4xx_hal_flash.c
/tmp/ccEvKRMz.s:21 .text.FLASH_Program_DoubleWord:00000000 $t
/tmp/ccEvKRMz.s:26 .text.FLASH_Program_DoubleWord:00000000 FLASH_Program_DoubleWord
/tmp/ccEvKRMz.s:75 .text.FLASH_Program_DoubleWord:0000001c $d
/tmp/ccEvKRMz.s:80 .text.FLASH_Program_Fast:00000000 $t
/tmp/ccEvKRMz.s:85 .text.FLASH_Program_Fast:00000000 FLASH_Program_Fast
/tmp/ccEvKRMz.s:177 .text.FLASH_Program_Fast:00000028 $d
/tmp/ccEvKRMz.s:182 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t
/tmp/ccEvKRMz.s:188 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback
/tmp/ccEvKRMz.s:203 .text.HAL_FLASH_OperationErrorCallback:00000000 $t
/tmp/ccEvKRMz.s:209 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback
/tmp/ccEvKRMz.s:224 .text.HAL_FLASH_IRQHandler:00000000 $t
/tmp/ccEvKRMz.s:230 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler
/tmp/ccEvKRMz.s:530 .text.HAL_FLASH_IRQHandler:00000110 $d
/tmp/ccEvKRMz.s:1281 .data.pFlash:00000000 pFlash
/tmp/ccEvKRMz.s:536 .text.HAL_FLASH_Unlock:00000000 $t
/tmp/ccEvKRMz.s:542 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock
/tmp/ccEvKRMz.s:588 .text.HAL_FLASH_Unlock:00000028 $d
/tmp/ccEvKRMz.s:594 .text.HAL_FLASH_Lock:00000000 $t
/tmp/ccEvKRMz.s:600 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock
/tmp/ccEvKRMz.s:633 .text.HAL_FLASH_Lock:00000018 $d
/tmp/ccEvKRMz.s:638 .text.HAL_FLASH_OB_Unlock:00000000 $t
/tmp/ccEvKRMz.s:644 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock
/tmp/ccEvKRMz.s:689 .text.HAL_FLASH_OB_Unlock:0000002c $d
/tmp/ccEvKRMz.s:695 .text.HAL_FLASH_OB_Lock:00000000 $t
/tmp/ccEvKRMz.s:701 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock
/tmp/ccEvKRMz.s:734 .text.HAL_FLASH_OB_Lock:0000001c $d
/tmp/ccEvKRMz.s:739 .text.HAL_FLASH_GetError:00000000 $t
/tmp/ccEvKRMz.s:745 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError
/tmp/ccEvKRMz.s:761 .text.HAL_FLASH_GetError:00000008 $d
/tmp/ccEvKRMz.s:766 .text.FLASH_WaitForLastOperation:00000000 $t
/tmp/ccEvKRMz.s:772 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation
/tmp/ccEvKRMz.s:879 .text.FLASH_WaitForLastOperation:00000058 $d
/tmp/ccEvKRMz.s:885 .text.HAL_FLASH_Program:00000000 $t
/tmp/ccEvKRMz.s:891 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program
/tmp/ccEvKRMz.s:1065 .text.HAL_FLASH_Program:000000a8 $d
/tmp/ccEvKRMz.s:1071 .text.HAL_FLASH_Program_IT:00000000 $t
/tmp/ccEvKRMz.s:1077 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT
/tmp/ccEvKRMz.s:1234 .text.HAL_FLASH_Program_IT:0000009c $d
/tmp/ccEvKRMz.s:1240 .text.HAL_FLASH_OB_Launch:00000000 $t
/tmp/ccEvKRMz.s:1246 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch
/tmp/ccEvKRMz.s:1272 .text.HAL_FLASH_OB_Launch:00000018 $d
/tmp/ccEvKRMz.s:1278 .data.pFlash:00000000 $d
UNDEFINED SYMBOLS
FLASH_FlushCaches
FLASH_PageErase
HAL_GetTick