Files
squeow/squeow_sw/build/stm32g4xx_hal_flash.lst
nzasch b9232f66b0 v1.2
2025-01-28 19:01:22 +01:00

3560 lines
221 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
ARM GAS /tmp/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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/ccOK5KWJ.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 444A 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 424B ldr r3, .L31+4
252 000e 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
253 0010 DBB2 uxtb r3, r3
340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
254 .loc 1 340 6 view .LVU56
255 0012 042B cmp r3, #4
256 0014 3AD0 beq .L25
257 .L12:
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
258 .loc 1 346 3 is_stmt 1 view .LVU57
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
259 .loc 1 346 17 is_stmt 0 view .LVU58
260 0016 3F4B ldr r3, .L31
261 0018 1B69 ldr r3, [r3, #16]
346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
262 .loc 1 346 9 view .LVU59
263 001a 4CF2FA32 movw r2, #50170
ARM GAS /tmp/ccOK5KWJ.s page 36
264 .LVL10:
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
265 .loc 1 348 3 is_stmt 1 view .LVU60
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
266 .loc 1 348 6 is_stmt 0 view .LVU61
267 001e 1340 ands r3, r3, r2
268 .LVL11:
348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
269 .loc 1 348 6 view .LVU62
270 0020 15D0 beq .L13
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
271 .loc 1 351 5 is_stmt 1 view .LVU63
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
272 .loc 1 351 11 is_stmt 0 view .LVU64
273 0022 3D49 ldr r1, .L31+4
274 0024 4A68 ldr r2, [r1, #4]
351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
275 .loc 1 351 22 view .LVU65
276 0026 1A43 orrs r2, r2, r3
277 0028 4A60 str r2, [r1, #4]
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
278 .loc 1 354 5 is_stmt 1 view .LVU66
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
279 .loc 1 354 5 view .LVU67
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
280 .loc 1 354 5 discriminator 3 view .LVU68
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
281 .loc 1 354 5 discriminator 4 view .LVU69
282 002a 3A4A ldr r2, .L31
283 002c 1361 str r3, [r2, #16]
354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
284 .loc 1 354 5 discriminator 6 view .LVU70
357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
285 .loc 1 357 5 view .LVU71
286 002e FFF7FEFF bl FLASH_FlushCaches
287 .LVL12:
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
288 .loc 1 360 5 view .LVU72
360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_PAGE_ERASE)
289 .loc 1 360 15 is_stmt 0 view .LVU73
290 0032 394B ldr r3, .L31+4
291 0034 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
292 0036 DBB2 uxtb r3, r3
293 .LVL13:
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
294 .loc 1 361 5 is_stmt 1 view .LVU74
361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
295 .loc 1 361 8 is_stmt 0 view .LVU75
296 0038 012B cmp r3, #1
297 003a 2CD0 beq .L26
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
298 .loc 1 365 10 is_stmt 1 view .LVU76
365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
299 .loc 1 365 13 is_stmt 0 view .LVU77
300 003c 022B cmp r3, #2
301 003e 2FD0 beq .L27
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
ARM GAS /tmp/ccOK5KWJ.s page 37
302 .loc 1 369 10 is_stmt 1 view .LVU78
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
303 .loc 1 369 48 is_stmt 0 view .LVU79
304 0040 033B subs r3, r3, #3
305 .LVL14:
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
306 .loc 1 369 48 view .LVU80
307 0042 DBB2 uxtb r3, r3
308 .LVL15:
369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
309 .loc 1 369 13 view .LVU81
310 0044 012B cmp r3, #1
311 0046 30D9 bls .L28
312 .LVL16:
313 .L16:
377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
314 .loc 1 377 5 is_stmt 1 view .LVU82
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
315 .loc 1 380 5 view .LVU83
380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
316 .loc 1 380 29 is_stmt 0 view .LVU84
317 0048 334B ldr r3, .L31+4
318 004a 0022 movs r2, #0
319 004c 1A72 strb r2, [r3, #8]
320 .LVL17:
321 .L13:
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
322 .loc 1 384 3 is_stmt 1 view .LVU85
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
323 .loc 1 384 7 is_stmt 0 view .LVU86
324 004e 314B ldr r3, .L31
325 0050 1B69 ldr r3, [r3, #16]
384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
326 .loc 1 384 6 view .LVU87
327 0052 13F0010F tst r3, #1
328 0056 47D0 beq .L18
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
329 .loc 1 387 5 is_stmt 1 view .LVU88
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
330 .loc 1 387 5 view .LVU89
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
331 .loc 1 387 5 discriminator 3 view .LVU90
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
332 .loc 1 387 5 discriminator 4 view .LVU91
333 0058 2E4B ldr r3, .L31
334 005a 0122 movs r2, #1
335 005c 1A61 str r2, [r3, #16]
387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
336 .loc 1 387 5 discriminator 6 view .LVU92
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
337 .loc 1 389 5 view .LVU93
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
338 .loc 1 389 15 is_stmt 0 view .LVU94
339 005e 2E4B ldr r3, .L31+4
340 0060 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
341 0062 DBB2 uxtb r3, r3
389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
ARM GAS /tmp/ccOK5KWJ.s page 38
342 .loc 1 389 8 view .LVU95
343 0064 9342 cmp r3, r2
344 0066 31D1 bne .L19
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
345 .loc 1 392 7 is_stmt 1 view .LVU96
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
346 .loc 1 392 13 is_stmt 0 view .LVU97
347 0068 2B4B ldr r3, .L31+4
348 006a 9A69 ldr r2, [r3, #24]
392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
349 .loc 1 392 28 view .LVU98
350 006c 013A subs r2, r2, #1
351 006e 9A61 str r2, [r3, #24]
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
352 .loc 1 395 7 is_stmt 1 view .LVU99
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
353 .loc 1 395 17 is_stmt 0 view .LVU100
354 0070 9B69 ldr r3, [r3, #24]
395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
355 .loc 1 395 10 view .LVU101
356 0072 FBB1 cbz r3, .L20
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
357 .loc 1 398 9 is_stmt 1 view .LVU102
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
358 .loc 1 398 48 is_stmt 0 view .LVU103
359 0074 284C ldr r4, .L31+4
360 0076 6069 ldr r0, [r4, #20]
398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
361 .loc 1 398 9 view .LVU104
362 0078 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
363 .LVL18:
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
364 .loc 1 401 9 is_stmt 1 view .LVU105
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
365 .loc 1 401 15 is_stmt 0 view .LVU106
366 007c 6369 ldr r3, [r4, #20]
401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** tmp_page = pFlash.Page;
367 .loc 1 401 20 view .LVU107
368 007e 0133 adds r3, r3, #1
369 0080 6361 str r3, [r4, #20]
402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** FLASH_PageErase(tmp_page, pFlash.Bank);
370 .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);
371 .loc 1 402 18 is_stmt 0 view .LVU109
372 0082 6069 ldr r0, [r4, #20]
373 .LVL19:
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
374 .loc 1 403 9 is_stmt 1 view .LVU110
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
375 .loc 1 403 41 is_stmt 0 view .LVU111
376 0084 2169 ldr r1, [r4, #16]
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
377 .loc 1 403 9 view .LVU112
378 0086 FFF7FEFF bl FLASH_PageErase
379 .LVL20:
403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
380 .loc 1 403 9 view .LVU113
ARM GAS /tmp/ccOK5KWJ.s page 39
381 008a 2DE0 b .L18
382 .LVL21:
383 .L25:
342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
384 .loc 1 342 5 is_stmt 1 view .LVU114
385 008c 5369 ldr r3, [r2, #20]
386 008e 23F48023 bic r3, r3, #262144
387 0092 5361 str r3, [r2, #20]
388 0094 BFE7 b .L12
389 .LVL22:
390 .L26:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
391 .loc 1 363 7 view .LVU115
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
392 .loc 1 363 46 is_stmt 0 view .LVU116
393 0096 204B ldr r3, .L31+4
394 .LVL23:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
395 .loc 1 363 46 view .LVU117
396 0098 5869 ldr r0, [r3, #20]
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
397 .loc 1 363 7 view .LVU118
398 009a FFF7FEFF bl HAL_FLASH_OperationErrorCallback
399 .LVL24:
363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
400 .loc 1 363 7 view .LVU119
401 009e D3E7 b .L16
402 .LVL25:
403 .L27:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
404 .loc 1 367 7 is_stmt 1 view .LVU120
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
405 .loc 1 367 46 is_stmt 0 view .LVU121
406 00a0 1D4B ldr r3, .L31+4
407 .LVL26:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
408 .loc 1 367 46 view .LVU122
409 00a2 1869 ldr r0, [r3, #16]
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
410 .loc 1 367 7 view .LVU123
411 00a4 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
412 .LVL27:
367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
413 .loc 1 367 7 view .LVU124
414 00a8 CEE7 b .L16
415 .LVL28:
416 .L28:
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
417 .loc 1 372 7 is_stmt 1 view .LVU125
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
418 .loc 1 372 46 is_stmt 0 view .LVU126
419 00aa 1B4B ldr r3, .L31+4
420 00ac D868 ldr r0, [r3, #12]
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
421 .loc 1 372 7 view .LVU127
422 00ae FFF7FEFF bl HAL_FLASH_OperationErrorCallback
423 .LVL29:
ARM GAS /tmp/ccOK5KWJ.s page 40
372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
424 .loc 1 372 7 view .LVU128
425 00b2 C9E7 b .L16
426 .LVL30:
427 .L20:
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
428 .loc 1 409 9 is_stmt 1 view .LVU129
409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
429 .loc 1 409 21 is_stmt 0 view .LVU130
430 00b4 184C ldr r4, .L31+4
431 00b6 4FF0FF33 mov r3, #-1
432 00ba 6361 str r3, [r4, #20]
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
433 .loc 1 410 9 is_stmt 1 view .LVU131
410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
434 .loc 1 410 33 is_stmt 0 view .LVU132
435 00bc 0023 movs r3, #0
436 00be 2372 strb r3, [r4, #8]
413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
437 .loc 1 413 9 is_stmt 1 view .LVU133
438 00c0 FFF7FEFF bl FLASH_FlushCaches
439 .LVL31:
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
440 .loc 1 416 9 view .LVU134
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
441 .loc 1 416 48 is_stmt 0 view .LVU135
442 00c4 6069 ldr r0, [r4, #20]
416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
443 .loc 1 416 9 view .LVU136
444 00c6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
445 .LVL32:
446 00ca 0DE0 b .L18
447 .L19:
422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
448 .loc 1 422 7 is_stmt 1 view .LVU137
449 00cc FFF7FEFF bl FLASH_FlushCaches
450 .LVL33:
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
451 .loc 1 424 7 view .LVU138
424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (procedure == FLASH_PROC_MASS_ERASE)
452 .loc 1 424 17 is_stmt 0 view .LVU139
453 00d0 114B ldr r3, .L31+4
454 00d2 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
455 00d4 DBB2 uxtb r3, r3
456 .LVL34:
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
457 .loc 1 425 7 is_stmt 1 view .LVU140
425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
458 .loc 1 425 10 is_stmt 0 view .LVU141
459 00d6 022B cmp r3, #2
460 00d8 12D0 beq .L29
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
461 .loc 1 431 12 is_stmt 1 view .LVU142
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
462 .loc 1 431 50 is_stmt 0 view .LVU143
463 00da 033B subs r3, r3, #3
464 .LVL35:
ARM GAS /tmp/ccOK5KWJ.s page 41
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
465 .loc 1 431 50 view .LVU144
466 00dc DBB2 uxtb r3, r3
467 .LVL36:
431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** (procedure == FLASH_PROC_PROGRAM_LAST))
468 .loc 1 431 15 view .LVU145
469 00de 012B cmp r3, #1
470 00e0 13D9 bls .L30
471 .LVL37:
472 .L22:
441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
473 .loc 1 441 7 is_stmt 1 view .LVU146
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
474 .loc 1 444 7 view .LVU147
444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
475 .loc 1 444 31 is_stmt 0 view .LVU148
476 00e2 0D4B ldr r3, .L31+4
477 00e4 0022 movs r2, #0
478 00e6 1A72 strb r2, [r3, #8]
479 .LVL38:
480 .L18:
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
481 .loc 1 448 3 is_stmt 1 view .LVU149
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
482 .loc 1 448 13 is_stmt 0 view .LVU150
483 00e8 0B4B ldr r3, .L31+4
484 00ea 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2
448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
485 .loc 1 448 6 view .LVU151
486 00ec 3BB9 cbnz r3, .L11
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
487 .loc 1 451 5 is_stmt 1 view .LVU152
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
488 .loc 1 451 5 view .LVU153
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
489 .loc 1 451 5 discriminator 3 view .LVU154
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
490 .loc 1 451 5 discriminator 4 view .LVU155
491 00ee 094A ldr r2, .L31
492 00f0 5369 ldr r3, [r2, #20]
493 00f2 23F04073 bic r3, r3, #50331648
494 00f6 5361 str r3, [r2, #20]
451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
495 .loc 1 451 5 discriminator 6 view .LVU156
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
496 .loc 1 454 5 view .LVU157
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
497 .loc 1 454 5 view .LVU158
498 00f8 074B ldr r3, .L31+4
499 00fa 0022 movs r2, #0
500 00fc 1A70 strb r2, [r3]
454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
501 .loc 1 454 5 discriminator 1 view .LVU159
502 .L11:
456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
503 .loc 1 456 1 is_stmt 0 view .LVU160
504 00fe 10BD pop {r4, pc}
ARM GAS /tmp/ccOK5KWJ.s page 42
505 .LVL39:
506 .L29:
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
507 .loc 1 429 9 is_stmt 1 view .LVU161
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
508 .loc 1 429 48 is_stmt 0 view .LVU162
509 0100 054B ldr r3, .L31+4
510 .LVL40:
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
511 .loc 1 429 48 view .LVU163
512 0102 1869 ldr r0, [r3, #16]
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
513 .loc 1 429 9 view .LVU164
514 0104 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
515 .LVL41:
429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
516 .loc 1 429 9 view .LVU165
517 0108 EBE7 b .L22
518 .LVL42:
519 .L30:
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
520 .loc 1 436 9 is_stmt 1 view .LVU166
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
521 .loc 1 436 48 is_stmt 0 view .LVU167
522 010a 034B ldr r3, .L31+4
523 010c D868 ldr r0, [r3, #12]
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
524 .loc 1 436 9 view .LVU168
525 010e FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
526 .LVL43:
436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
527 .loc 1 436 9 view .LVU169
528 0112 E6E7 b .L22
529 .L32:
530 .align 2
531 .L31:
532 0114 00200240 .word 1073881088
533 0118 00000000 .word pFlash
534 .cfi_endproc
535 .LFE331:
537 .section .text.HAL_FLASH_Unlock,"ax",%progbits
538 .align 1
539 .global HAL_FLASH_Unlock
540 .syntax unified
541 .thumb
542 .thumb_func
544 HAL_FLASH_Unlock:
545 .LFB334:
519:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
546 .loc 1 519 1 is_stmt 1 view -0
547 .cfi_startproc
548 @ args = 0, pretend = 0, frame = 0
549 @ frame_needed = 0, uses_anonymous_args = 0
550 @ link register save eliminated.
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
551 .loc 1 520 3 view .LVU171
552 .LVL44:
ARM GAS /tmp/ccOK5KWJ.s page 43
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
553 .loc 1 522 3 view .LVU172
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
554 .loc 1 522 7 is_stmt 0 view .LVU173
555 0000 094B ldr r3, .L38
556 0002 5B69 ldr r3, [r3, #20]
522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
557 .loc 1 522 6 view .LVU174
558 0004 002B cmp r3, #0
559 0006 01DB blt .L37
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
560 .loc 1 520 21 view .LVU175
561 0008 0020 movs r0, #0
562 000a 7047 bx lr
563 .L37:
525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
564 .loc 1 525 5 is_stmt 1 view .LVU176
565 000c 064B ldr r3, .L38
566 000e 074A ldr r2, .L38+4
567 0010 9A60 str r2, [r3, #8]
526:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
568 .loc 1 526 5 view .LVU177
569 0012 02F18832 add r2, r2, #-2004318072
570 0016 9A60 str r2, [r3, #8]
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
571 .loc 1 529 5 view .LVU178
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
572 .loc 1 529 9 is_stmt 0 view .LVU179
573 0018 5B69 ldr r3, [r3, #20]
529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
574 .loc 1 529 8 view .LVU180
575 001a 002B cmp r3, #0
576 001c 01DB blt .L36
520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
577 .loc 1 520 21 view .LVU181
578 001e 0020 movs r0, #0
579 0020 7047 bx lr
580 .L36:
531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
581 .loc 1 531 14 view .LVU182
582 0022 0120 movs r0, #1
583 .LVL45:
535:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
584 .loc 1 535 3 is_stmt 1 view .LVU183
536:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
585 .loc 1 536 1 is_stmt 0 view .LVU184
586 0024 7047 bx lr
587 .L39:
588 0026 00BF .align 2
589 .L38:
590 0028 00200240 .word 1073881088
591 002c 23016745 .word 1164378403
592 .cfi_endproc
593 .LFE334:
595 .section .text.HAL_FLASH_Lock,"ax",%progbits
596 .align 1
597 .global HAL_FLASH_Lock
ARM GAS /tmp/ccOK5KWJ.s page 44
598 .syntax unified
599 .thumb
600 .thumb_func
602 HAL_FLASH_Lock:
603 .LFB335:
543:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
604 .loc 1 543 1 is_stmt 1 view -0
605 .cfi_startproc
606 @ args = 0, pretend = 0, frame = 0
607 @ frame_needed = 0, uses_anonymous_args = 0
608 @ link register save eliminated.
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
609 .loc 1 544 3 view .LVU186
610 .LVL46:
547:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
611 .loc 1 547 3 view .LVU187
612 0000 054B ldr r3, .L43
613 0002 5A69 ldr r2, [r3, #20]
614 0004 42F00042 orr r2, r2, #-2147483648
615 0008 5A61 str r2, [r3, #20]
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
616 .loc 1 550 3 view .LVU188
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
617 .loc 1 550 7 is_stmt 0 view .LVU189
618 000a 5B69 ldr r3, [r3, #20]
550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
619 .loc 1 550 6 view .LVU190
620 000c 002B cmp r3, #0
621 000e 01DB blt .L42
544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
622 .loc 1 544 21 view .LVU191
623 0010 0120 movs r0, #1
624 0012 7047 bx lr
625 .L42:
552:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
626 .loc 1 552 12 view .LVU192
627 0014 0020 movs r0, #0
628 .LVL47:
555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
629 .loc 1 555 3 is_stmt 1 view .LVU193
556:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
630 .loc 1 556 1 is_stmt 0 view .LVU194
631 0016 7047 bx lr
632 .L44:
633 .align 2
634 .L43:
635 0018 00200240 .word 1073881088
636 .cfi_endproc
637 .LFE335:
639 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
640 .align 1
641 .global HAL_FLASH_OB_Unlock
642 .syntax unified
643 .thumb
644 .thumb_func
646 HAL_FLASH_OB_Unlock:
647 .LFB336:
ARM GAS /tmp/ccOK5KWJ.s page 45
563:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
648 .loc 1 563 1 is_stmt 1 view -0
649 .cfi_startproc
650 @ args = 0, pretend = 0, frame = 0
651 @ frame_needed = 0, uses_anonymous_args = 0
652 @ link register save eliminated.
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
653 .loc 1 564 3 view .LVU196
654 .LVL48:
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
655 .loc 1 566 3 view .LVU197
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
656 .loc 1 566 7 is_stmt 0 view .LVU198
657 0000 0A4B ldr r3, .L49
658 0002 5B69 ldr r3, [r3, #20]
566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
659 .loc 1 566 6 view .LVU199
660 0004 13F0804F tst r3, #1073741824
661 0008 0BD0 beq .L47
569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2);
662 .loc 1 569 5 is_stmt 1 view .LVU200
663 000a 084B ldr r3, .L49
664 000c 084A ldr r2, .L49+4
665 000e DA60 str r2, [r3, #12]
570:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
666 .loc 1 570 5 view .LVU201
667 0010 02F14432 add r2, r2, #1145324612
668 0014 DA60 str r2, [r3, #12]
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
669 .loc 1 573 5 view .LVU202
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
670 .loc 1 573 9 is_stmt 0 view .LVU203
671 0016 5B69 ldr r3, [r3, #20]
573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
672 .loc 1 573 8 view .LVU204
673 0018 13F0804F tst r3, #1073741824
674 001c 03D1 bne .L48
564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
675 .loc 1 564 21 view .LVU205
676 001e 0020 movs r0, #0
677 0020 7047 bx lr
678 .L47:
679 0022 0020 movs r0, #0
680 0024 7047 bx lr
681 .L48:
575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
682 .loc 1 575 14 view .LVU206
683 0026 0120 movs r0, #1
684 .LVL49:
579:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
685 .loc 1 579 3 is_stmt 1 view .LVU207
580:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
686 .loc 1 580 1 is_stmt 0 view .LVU208
687 0028 7047 bx lr
688 .L50:
689 002a 00BF .align 2
690 .L49:
ARM GAS /tmp/ccOK5KWJ.s page 46
691 002c 00200240 .word 1073881088
692 0030 3B2A1908 .word 135866939
693 .cfi_endproc
694 .LFE336:
696 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
697 .align 1
698 .global HAL_FLASH_OB_Lock
699 .syntax unified
700 .thumb
701 .thumb_func
703 HAL_FLASH_OB_Lock:
704 .LFB337:
587:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
705 .loc 1 587 1 is_stmt 1 view -0
706 .cfi_startproc
707 @ args = 0, pretend = 0, frame = 0
708 @ frame_needed = 0, uses_anonymous_args = 0
709 @ link register save eliminated.
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
710 .loc 1 588 3 view .LVU210
711 .LVL50:
591:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
712 .loc 1 591 3 view .LVU211
713 0000 064B ldr r3, .L54
714 0002 5A69 ldr r2, [r3, #20]
715 0004 42F08042 orr r2, r2, #1073741824
716 0008 5A61 str r2, [r3, #20]
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
717 .loc 1 594 3 view .LVU212
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
718 .loc 1 594 7 is_stmt 0 view .LVU213
719 000a 5B69 ldr r3, [r3, #20]
594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
720 .loc 1 594 6 view .LVU214
721 000c 13F0804F tst r3, #1073741824
722 0010 01D1 bne .L53
588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
723 .loc 1 588 21 view .LVU215
724 0012 0120 movs r0, #1
725 0014 7047 bx lr
726 .L53:
596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
727 .loc 1 596 12 view .LVU216
728 0016 0020 movs r0, #0
729 .LVL51:
599:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
730 .loc 1 599 3 is_stmt 1 view .LVU217
600:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
731 .loc 1 600 1 is_stmt 0 view .LVU218
732 0018 7047 bx lr
733 .L55:
734 001a 00BF .align 2
735 .L54:
736 001c 00200240 .word 1073881088
737 .cfi_endproc
738 .LFE337:
740 .section .text.HAL_FLASH_GetError,"ax",%progbits
ARM GAS /tmp/ccOK5KWJ.s page 47
741 .align 1
742 .global HAL_FLASH_GetError
743 .syntax unified
744 .thumb
745 .thumb_func
747 HAL_FLASH_GetError:
748 .LFB339:
655:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** return pFlash.ErrorCode;
749 .loc 1 655 1 is_stmt 1 view -0
750 .cfi_startproc
751 @ args = 0, pretend = 0, frame = 0
752 @ frame_needed = 0, uses_anonymous_args = 0
753 @ link register save eliminated.
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
754 .loc 1 656 3 view .LVU220
656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
755 .loc 1 656 16 is_stmt 0 view .LVU221
756 0000 014B ldr r3, .L57
757 0002 5868 ldr r0, [r3, #4]
657:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
758 .loc 1 657 1 view .LVU222
759 0004 7047 bx lr
760 .L58:
761 0006 00BF .align 2
762 .L57:
763 0008 00000000 .word pFlash
764 .cfi_endproc
765 .LFE339:
767 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
768 .align 1
769 .global FLASH_WaitForLastOperation
770 .syntax unified
771 .thumb
772 .thumb_func
774 FLASH_WaitForLastOperation:
775 .LVL52:
776 .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.
777 .loc 1 679 1 is_stmt 1 view -0
778 .cfi_startproc
779 @ args = 0, pretend = 0, frame = 0
780 @ 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.
781 .loc 1 679 1 is_stmt 0 view .LVU224
782 0000 38B5 push {r3, r4, r5, lr}
783 .LCFI3:
784 .cfi_def_cfa_offset 16
785 .cfi_offset 3, -16
786 .cfi_offset 4, -12
787 .cfi_offset 5, -8
788 .cfi_offset 14, -4
789 0002 0546 mov r5, r0
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
790 .loc 1 684 3 is_stmt 1 view .LVU225
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
791 .loc 1 684 24 is_stmt 0 view .LVU226
792 0004 FFF7FEFF bl HAL_GetTick
ARM GAS /tmp/ccOK5KWJ.s page 48
793 .LVL53:
684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t error;
794 .loc 1 684 24 view .LVU227
795 0008 0446 mov r4, r0
796 .LVL54:
685:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
797 .loc 1 685 3 is_stmt 1 view .LVU228
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
798 .loc 1 687 3 view .LVU229
799 .L60:
687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
800 .loc 1 687 10 view .LVU230
801 000a 134B ldr r3, .L70
802 000c 1B69 ldr r3, [r3, #16]
803 000e 13F4803F tst r3, #65536
804 0012 06D0 beq .L68
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
805 .loc 1 689 5 view .LVU231
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
806 .loc 1 689 10 is_stmt 0 view .LVU232
807 0014 FFF7FEFF bl HAL_GetTick
808 .LVL55:
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
809 .loc 1 689 24 discriminator 1 view .LVU233
810 0018 001B subs r0, r0, r4
689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
811 .loc 1 689 8 discriminator 1 view .LVU234
812 001a A842 cmp r0, r5
813 001c F5D9 bls .L60
691:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
814 .loc 1 691 14 view .LVU235
815 001e 0320 movs r0, #3
816 .L61:
717:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
817 .loc 1 717 1 view .LVU236
818 0020 38BD pop {r3, r4, r5, pc}
819 .LVL56:
820 .L68:
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
821 .loc 1 696 3 is_stmt 1 view .LVU237
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
822 .loc 1 696 17 is_stmt 0 view .LVU238
823 0022 0D4B ldr r3, .L70
824 0024 1B69 ldr r3, [r3, #16]
696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** if (error != 0u)
825 .loc 1 696 9 view .LVU239
826 0026 4CF2FA32 movw r2, #50170
827 .LVL57:
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
828 .loc 1 697 3 is_stmt 1 view .LVU240
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
829 .loc 1 697 6 is_stmt 0 view .LVU241
830 002a 1340 ands r3, r3, r2
831 .LVL58:
697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
832 .loc 1 697 6 view .LVU242
833 002c 09D1 bne .L69
ARM GAS /tmp/ccOK5KWJ.s page 49
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
834 .loc 1 709 3 is_stmt 1 view .LVU243
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
835 .loc 1 709 7 is_stmt 0 view .LVU244
836 002e 0A4B ldr r3, .L70
837 .LVL59:
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
838 .loc 1 709 7 view .LVU245
839 0030 1B69 ldr r3, [r3, #16]
709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
840 .loc 1 709 6 view .LVU246
841 0032 13F0010F tst r3, #1
842 0036 0CD0 beq .L66
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
843 .loc 1 712 5 is_stmt 1 view .LVU247
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
844 .loc 1 712 5 view .LVU248
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
845 .loc 1 712 5 discriminator 3 view .LVU249
712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
846 .loc 1 712 5 discriminator 4 view .LVU250
847 0038 074B ldr r3, .L70
848 003a 0122 movs r2, #1
849 003c 1A61 str r2, [r3, #16]
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
850 .loc 1 716 10 is_stmt 0 view .LVU251
851 003e 0020 movs r0, #0
852 0040 EEE7 b .L61
853 .LVL60:
854 .L69:
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
855 .loc 1 700 5 is_stmt 1 view .LVU252
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
856 .loc 1 700 11 is_stmt 0 view .LVU253
857 0042 0649 ldr r1, .L70+4
858 0044 4A68 ldr r2, [r1, #4]
700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
859 .loc 1 700 22 view .LVU254
860 0046 1A43 orrs r2, r2, r3
861 0048 4A60 str r2, [r1, #4]
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
862 .loc 1 703 5 is_stmt 1 view .LVU255
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
863 .loc 1 703 5 view .LVU256
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
864 .loc 1 703 5 discriminator 3 view .LVU257
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
865 .loc 1 703 5 discriminator 4 view .LVU258
866 004a 034A ldr r2, .L70
867 004c 1361 str r3, [r2, #16]
703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
868 .loc 1 703 5 discriminator 6 view .LVU259
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
869 .loc 1 705 5 view .LVU260
705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
870 .loc 1 705 12 is_stmt 0 view .LVU261
871 004e 0120 movs r0, #1
ARM GAS /tmp/ccOK5KWJ.s page 50
872 0050 E6E7 b .L61
873 .LVL61:
874 .L66:
716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
875 .loc 1 716 10 view .LVU262
876 0052 0020 movs r0, #0
877 0054 E4E7 b .L61
878 .L71:
879 0056 00BF .align 2
880 .L70:
881 0058 00200240 .word 1073881088
882 005c 00000000 .word pFlash
883 .cfi_endproc
884 .LFE340:
886 .section .text.HAL_FLASH_Program,"ax",%progbits
887 .align 1
888 .global HAL_FLASH_Program
889 .syntax unified
890 .thumb
891 .thumb_func
893 HAL_FLASH_Program:
894 .LVL62:
895 .LFB329:
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
896 .loc 1 174 1 is_stmt 1 view -0
897 .cfi_startproc
898 @ args = 0, pretend = 0, frame = 0
899 @ frame_needed = 0, uses_anonymous_args = 0
174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
900 .loc 1 174 1 is_stmt 0 view .LVU264
901 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
902 .LCFI4:
903 .cfi_def_cfa_offset 24
904 .cfi_offset 4, -24
905 .cfi_offset 5, -20
906 .cfi_offset 6, -16
907 .cfi_offset 7, -12
908 .cfi_offset 8, -8
909 .cfi_offset 14, -4
910 0004 1646 mov r6, r2
175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** uint32_t prog_bit = 0;
911 .loc 1 175 3 is_stmt 1 view .LVU265
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
912 .loc 1 176 3 view .LVU266
913 .LVL63:
179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
914 .loc 1 179 3 view .LVU267
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
915 .loc 1 182 3 view .LVU268
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
916 .loc 1 182 3 view .LVU269
917 0006 284A ldr r2, .L86
918 .LVL64:
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
919 .loc 1 182 3 is_stmt 0 view .LVU270
920 0008 1278 ldrb r2, [r2] @ zero_extendqisi2
921 000a 012A cmp r2, #1
ARM GAS /tmp/ccOK5KWJ.s page 51
922 000c 49D0 beq .L80
923 000e 0446 mov r4, r0
924 0010 0D46 mov r5, r1
925 0012 9846 mov r8, r3
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
926 .loc 1 182 3 is_stmt 1 discriminator 2 view .LVU271
927 0014 244B ldr r3, .L86
928 0016 0122 movs r2, #1
929 0018 1A70 strb r2, [r3]
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
930 .loc 1 182 3 discriminator 2 view .LVU272
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
931 .loc 1 185 3 view .LVU273
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
932 .loc 1 185 12 is_stmt 0 view .LVU274
933 001a 4FF47A70 mov r0, #1000
934 .LVL65:
185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
935 .loc 1 185 12 view .LVU275
936 001e FFF7FEFF bl FLASH_WaitForLastOperation
937 .LVL66:
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
938 .loc 1 187 3 is_stmt 1 view .LVU276
187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
939 .loc 1 187 6 is_stmt 0 view .LVU277
940 0022 0746 mov r7, r0
941 0024 08BB cbnz r0, .L74
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
942 .loc 1 189 5 is_stmt 1 view .LVU278
189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
943 .loc 1 189 22 is_stmt 0 view .LVU279
944 0026 204B ldr r3, .L86
945 0028 0022 movs r2, #0
946 002a 5A60 str r2, [r3, #4]
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
947 .loc 1 192 5 is_stmt 1 view .LVU280
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
948 .loc 1 192 8 is_stmt 0 view .LVU281
949 002c 1F4B ldr r3, .L86+4
950 002e 1B68 ldr r3, [r3]
192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
951 .loc 1 192 7 view .LVU282
952 0030 13F4806F tst r3, #1024
953 0034 1FD0 beq .L75
195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
954 .loc 1 195 7 is_stmt 1 view .LVU283
955 0036 1D4A ldr r2, .L86+4
956 0038 1368 ldr r3, [r2]
957 003a 23F48063 bic r3, r3, #1024
958 003e 1360 str r3, [r2]
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
959 .loc 1 196 7 view .LVU284
196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
960 .loc 1 196 32 is_stmt 0 view .LVU285
961 0040 194B ldr r3, .L86
962 0042 0222 movs r2, #2
963 0044 1A77 strb r2, [r3, #28]
ARM GAS /tmp/ccOK5KWJ.s page 52
964 .L76:
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
965 .loc 1 202 5 is_stmt 1 view .LVU286
202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
966 .loc 1 202 8 is_stmt 0 view .LVU287
967 0046 D4B1 cbz r4, .L84
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
968 .loc 1 208 10 is_stmt 1 view .LVU288
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
969 .loc 1 208 54 is_stmt 0 view .LVU289
970 0048 631E subs r3, r4, #1
208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
971 .loc 1 208 13 view .LVU290
972 004a 012B cmp r3, #1
973 004c 1ED9 bls .L85
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
974 .loc 1 176 12 view .LVU291
975 004e 0024 movs r4, #0
976 .LVL67:
977 .L78:
222:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
978 .loc 1 222 5 is_stmt 1 view .LVU292
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
979 .loc 1 225 5 view .LVU293
225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
980 .loc 1 225 14 is_stmt 0 view .LVU294
981 0050 4FF47A70 mov r0, #1000
982 0054 FFF7FEFF bl FLASH_WaitForLastOperation
983 .LVL68:
984 0058 0746 mov r7, r0
985 .LVL69:
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
986 .loc 1 228 5 is_stmt 1 view .LVU295
228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
987 .loc 1 228 8 is_stmt 0 view .LVU296
988 005a 24B1 cbz r4, .L79
230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
989 .loc 1 230 7 is_stmt 1 view .LVU297
990 005c 134A ldr r2, .L86+4
991 005e 5369 ldr r3, [r2, #20]
992 0060 23EA0403 bic r3, r3, r4
993 0064 5361 str r3, [r2, #20]
994 .L79:
234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
995 .loc 1 234 5 view .LVU298
996 0066 FFF7FEFF bl FLASH_FlushCaches
997 .LVL70:
998 .L74:
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
999 .loc 1 238 3 view .LVU299
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1000 .loc 1 238 3 view .LVU300
1001 006a 0F4B ldr r3, .L86
1002 006c 0022 movs r2, #0
1003 006e 1A70 strb r2, [r3]
238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1004 .loc 1 238 3 view .LVU301
ARM GAS /tmp/ccOK5KWJ.s page 53
241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1005 .loc 1 241 3 view .LVU302
1006 .LVL71:
1007 .L73:
242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1008 .loc 1 242 1 is_stmt 0 view .LVU303
1009 0070 3846 mov r0, r7
1010 0072 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
1011 .LVL72:
1012 .L75:
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1013 .loc 1 200 7 is_stmt 1 view .LVU304
200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1014 .loc 1 200 32 is_stmt 0 view .LVU305
1015 0076 0C4B ldr r3, .L86
1016 0078 0022 movs r2, #0
1017 007a 1A77 strb r2, [r3, #28]
1018 007c E3E7 b .L76
1019 .L84:
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
1020 .loc 1 205 7 is_stmt 1 view .LVU306
1021 007e 3246 mov r2, r6
1022 0080 4346 mov r3, r8
1023 0082 2846 mov r0, r5
1024 .LVL73:
205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** prog_bit = FLASH_CR_PG;
1025 .loc 1 205 7 is_stmt 0 view .LVU307
1026 0084 FFF7FEFF bl FLASH_Program_DoubleWord
1027 .LVL74:
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1028 .loc 1 206 7 is_stmt 1 view .LVU308
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1029 .loc 1 206 16 is_stmt 0 view .LVU309
1030 0088 0124 movs r4, #1
1031 .LVL75:
206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1032 .loc 1 206 16 view .LVU310
1033 008a E1E7 b .L78
1034 .LVL76:
1035 .L85:
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1036 .loc 1 211 7 is_stmt 1 view .LVU311
1037 008c 3146 mov r1, r6
1038 008e 2846 mov r0, r5
1039 .LVL77:
211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1040 .loc 1 211 7 is_stmt 0 view .LVU312
1041 0090 FFF7FEFF bl FLASH_Program_Fast
1042 .LVL78:
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1043 .loc 1 214 7 is_stmt 1 view .LVU313
214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1044 .loc 1 214 10 is_stmt 0 view .LVU314
1045 0094 022C cmp r4, #2
1046 0096 01D0 beq .L82
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1047 .loc 1 176 12 view .LVU315
ARM GAS /tmp/ccOK5KWJ.s page 54
1048 0098 0024 movs r4, #0
1049 .LVL79:
176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1050 .loc 1 176 12 view .LVU316
1051 009a D9E7 b .L78
1052 .LVL80:
1053 .L82:
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1054 .loc 1 216 18 view .LVU317
1055 009c 4FF48024 mov r4, #262144
1056 .LVL81:
216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1057 .loc 1 216 18 view .LVU318
1058 00a0 D6E7 b .L78
1059 .LVL82:
1060 .L80:
182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1061 .loc 1 182 3 discriminator 1 view .LVU319
1062 00a2 0227 movs r7, #2
1063 00a4 E4E7 b .L73
1064 .L87:
1065 00a6 00BF .align 2
1066 .L86:
1067 00a8 00000000 .word pFlash
1068 00ac 00200240 .word 1073881088
1069 .cfi_endproc
1070 .LFE329:
1072 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
1073 .align 1
1074 .global HAL_FLASH_Program_IT
1075 .syntax unified
1076 .thumb
1077 .thumb_func
1079 HAL_FLASH_Program_IT:
1080 .LVL83:
1081 .LFB330:
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
1082 .loc 1 256 1 is_stmt 1 view -0
1083 .cfi_startproc
1084 @ args = 0, pretend = 0, frame = 0
1085 @ frame_needed = 0, uses_anonymous_args = 0
256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** HAL_StatusTypeDef status;
1086 .loc 1 256 1 is_stmt 0 view .LVU321
1087 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
1088 .LCFI5:
1089 .cfi_def_cfa_offset 24
1090 .cfi_offset 4, -24
1091 .cfi_offset 5, -20
1092 .cfi_offset 6, -16
1093 .cfi_offset 7, -12
1094 .cfi_offset 8, -8
1095 .cfi_offset 14, -4
1096 0004 1F46 mov r7, r3
257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1097 .loc 1 257 3 is_stmt 1 view .LVU322
260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1098 .loc 1 260 3 view .LVU323
ARM GAS /tmp/ccOK5KWJ.s page 55
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1099 .loc 1 263 3 view .LVU324
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1100 .loc 1 263 3 view .LVU325
1101 0006 254B ldr r3, .L100
1102 0008 1B78 ldrb r3, [r3] @ zero_extendqisi2
1103 000a 012B cmp r3, #1
1104 000c 43D0 beq .L96
1105 000e 0446 mov r4, r0
1106 0010 0D46 mov r5, r1
1107 0012 1646 mov r6, r2
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1108 .loc 1 263 3 discriminator 2 view .LVU326
1109 0014 214B ldr r3, .L100
1110 0016 0122 movs r2, #1
1111 .LVL84:
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1112 .loc 1 263 3 is_stmt 0 discriminator 2 view .LVU327
1113 0018 1A70 strb r2, [r3]
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1114 .loc 1 263 3 is_stmt 1 discriminator 2 view .LVU328
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1115 .loc 1 266 3 view .LVU329
266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1116 .loc 1 266 20 is_stmt 0 view .LVU330
1117 001a 0022 movs r2, #0
1118 001c 5A60 str r2, [r3, #4]
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1119 .loc 1 269 3 is_stmt 1 view .LVU331
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1120 .loc 1 269 6 is_stmt 0 view .LVU332
1121 001e 204B ldr r3, .L100+4
1122 0020 1B68 ldr r3, [r3]
269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1123 .loc 1 269 5 view .LVU333
1124 0022 13F4806F tst r3, #1024
1125 0026 13D0 beq .L90
272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
1126 .loc 1 272 5 is_stmt 1 view .LVU334
1127 0028 1D4A ldr r2, .L100+4
1128 002a 1368 ldr r3, [r2]
1129 002c 23F48063 bic r3, r3, #1024
1130 0030 1360 str r3, [r2]
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1131 .loc 1 273 5 view .LVU335
273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1132 .loc 1 273 30 is_stmt 0 view .LVU336
1133 0032 1A4B ldr r3, .L100
1134 0034 0222 movs r2, #2
1135 0036 1A77 strb r2, [r3, #28]
1136 .L91:
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1137 .loc 1 281 3 is_stmt 1 view .LVU337
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1138 .loc 1 281 12 is_stmt 0 view .LVU338
1139 0038 4FF47A70 mov r0, #1000
1140 .LVL85:
ARM GAS /tmp/ccOK5KWJ.s page 56
281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1141 .loc 1 281 12 view .LVU339
1142 003c FFF7FEFF bl FLASH_WaitForLastOperation
1143 .LVL86:
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1144 .loc 1 283 3 is_stmt 1 view .LVU340
283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1145 .loc 1 283 6 is_stmt 0 view .LVU341
1146 0040 8046 mov r8, r0
1147 0042 48B1 cbz r0, .L92
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1148 .loc 1 286 5 is_stmt 1 view .LVU342
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1149 .loc 1 286 5 view .LVU343
1150 0044 154B ldr r3, .L100
1151 0046 0022 movs r2, #0
1152 0048 1A70 strb r2, [r3]
286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1153 .loc 1 286 5 view .LVU344
1154 .LVL87:
1155 .L89:
321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1156 .loc 1 321 1 is_stmt 0 view .LVU345
1157 004a 4046 mov r0, r8
1158 004c BDE8F081 pop {r4, r5, r6, r7, r8, pc}
1159 .LVL88:
1160 .L90:
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1161 .loc 1 277 5 is_stmt 1 view .LVU346
277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1162 .loc 1 277 30 is_stmt 0 view .LVU347
1163 0050 124B ldr r3, .L100
1164 0052 0022 movs r2, #0
1165 0054 1A77 strb r2, [r3, #28]
1166 0056 EFE7 b .L91
1167 .LVL89:
1168 .L92:
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1169 .loc 1 291 5 is_stmt 1 view .LVU348
291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1170 .loc 1 291 8 is_stmt 0 view .LVU349
1171 0058 022C cmp r4, #2
1172 005a 12D0 beq .L98
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1173 .loc 1 297 7 is_stmt 1 view .LVU350
297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1174 .loc 1 297 31 is_stmt 0 view .LVU351
1175 005c 0F4B ldr r3, .L100
1176 005e 0322 movs r2, #3
1177 0060 1A72 strb r2, [r3, #8]
1178 .L94:
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1179 .loc 1 299 5 is_stmt 1 view .LVU352
299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1180 .loc 1 299 20 is_stmt 0 view .LVU353
1181 0062 0E4B ldr r3, .L100
1182 0064 DD60 str r5, [r3, #12]
ARM GAS /tmp/ccOK5KWJ.s page 57
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1183 .loc 1 302 5 is_stmt 1 view .LVU354
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1184 .loc 1 302 5 view .LVU355
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1185 .loc 1 302 5 discriminator 3 view .LVU356
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1186 .loc 1 302 5 discriminator 4 view .LVU357
1187 0066 0E4A ldr r2, .L100+4
1188 0068 5369 ldr r3, [r2, #20]
1189 006a 43F04073 orr r3, r3, #50331648
1190 006e 5361 str r3, [r2, #20]
302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1191 .loc 1 302 5 discriminator 6 view .LVU358
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1192 .loc 1 304 5 view .LVU359
304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1193 .loc 1 304 8 is_stmt 0 view .LVU360
1194 0070 5CB1 cbz r4, .L99
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1195 .loc 1 309 10 is_stmt 1 view .LVU361
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1196 .loc 1 309 54 is_stmt 0 view .LVU362
1197 0072 013C subs r4, r4, #1
1198 .LVL90:
309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** {
1199 .loc 1 309 13 view .LVU363
1200 0074 012C cmp r4, #1
1201 0076 E8D8 bhi .L89
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1202 .loc 1 312 7 is_stmt 1 view .LVU364
1203 0078 3146 mov r1, r6
1204 007a 2846 mov r0, r5
1205 .LVL91:
312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1206 .loc 1 312 7 is_stmt 0 view .LVU365
1207 007c FFF7FEFF bl FLASH_Program_Fast
1208 .LVL92:
1209 0080 E3E7 b .L89
1210 .LVL93:
1211 .L98:
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1212 .loc 1 293 7 is_stmt 1 view .LVU366
293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1213 .loc 1 293 31 is_stmt 0 view .LVU367
1214 0082 064B ldr r3, .L100
1215 0084 0422 movs r2, #4
1216 0086 1A72 strb r2, [r3, #8]
1217 0088 EBE7 b .L94
1218 .L99:
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1219 .loc 1 307 7 is_stmt 1 view .LVU368
1220 008a 3246 mov r2, r6
1221 008c 3B46 mov r3, r7
1222 008e 2846 mov r0, r5
1223 .LVL94:
307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
ARM GAS /tmp/ccOK5KWJ.s page 58
1224 .loc 1 307 7 is_stmt 0 view .LVU369
1225 0090 FFF7FEFF bl FLASH_Program_DoubleWord
1226 .LVL95:
1227 0094 D9E7 b .L89
1228 .LVL96:
1229 .L96:
263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1230 .loc 1 263 3 discriminator 1 view .LVU370
1231 0096 4FF00208 mov r8, #2
1232 009a D6E7 b .L89
1233 .L101:
1234 .align 2
1235 .L100:
1236 009c 00000000 .word pFlash
1237 00a0 00200240 .word 1073881088
1238 .cfi_endproc
1239 .LFE330:
1241 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1242 .align 1
1243 .global HAL_FLASH_OB_Launch
1244 .syntax unified
1245 .thumb
1246 .thumb_func
1248 HAL_FLASH_OB_Launch:
1249 .LFB338:
607:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** /* Set the bit to force the option byte reloading */
1250 .loc 1 607 1 is_stmt 1 view -0
1251 .cfi_startproc
1252 @ args = 0, pretend = 0, frame = 0
1253 @ frame_needed = 0, uses_anonymous_args = 0
1254 0000 08B5 push {r3, lr}
1255 .LCFI6:
1256 .cfi_def_cfa_offset 8
1257 .cfi_offset 3, -8
1258 .cfi_offset 14, -4
609:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1259 .loc 1 609 3 view .LVU372
1260 0002 054A ldr r2, .L104
1261 0004 5369 ldr r3, [r2, #20]
1262 0006 43F00063 orr r3, r3, #134217728
1263 000a 5361 str r3, [r2, #20]
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1264 .loc 1 612 3 view .LVU373
612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c **** }
1265 .loc 1 612 11 is_stmt 0 view .LVU374
1266 000c 4FF47A70 mov r0, #1000
1267 0010 FFF7FEFF bl FLASH_WaitForLastOperation
1268 .LVL97:
613:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c ****
1269 .loc 1 613 1 view .LVU375
1270 0014 08BD pop {r3, pc}
1271 .L105:
1272 0016 00BF .align 2
1273 .L104:
1274 0018 00200240 .word 1073881088
1275 .cfi_endproc
1276 .LFE338:
ARM GAS /tmp/ccOK5KWJ.s page 59
1278 .global pFlash
1279 .section .data.pFlash,"aw"
1280 .align 2
1283 pFlash:
1284 0000 00 .byte 0
1285 0001 000000 .space 3
1286 0004 00000000 .word 0
1287 0008 00 .byte 0
1288 0009 000000 .space 3
1289 000c 00000000 .word 0
1290 0010 01000000 .word 1
1291 0014 00000000 .word 0
1292 0018 00000000 .word 0
1293 001c 00 .byte 0
1294 001d 000000 .space 3
1295 .text
1296 .Letext0:
1297 .file 3 "/home/fra/bin/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/mach
1298 .file 4 "/home/fra/bin/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/sys/
1299 .file 5 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h"
1300 .file 6 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h"
1301 .file 7 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h"
1302 .file 8 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h"
1303 .file 9 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ex.h"
ARM GAS /tmp/ccOK5KWJ.s page 60
DEFINED SYMBOLS
*ABS*:00000000 stm32g4xx_hal_flash.c
/tmp/ccOK5KWJ.s:21 .text.FLASH_Program_DoubleWord:00000000 $t
/tmp/ccOK5KWJ.s:26 .text.FLASH_Program_DoubleWord:00000000 FLASH_Program_DoubleWord
/tmp/ccOK5KWJ.s:75 .text.FLASH_Program_DoubleWord:0000001c $d
/tmp/ccOK5KWJ.s:80 .text.FLASH_Program_Fast:00000000 $t
/tmp/ccOK5KWJ.s:85 .text.FLASH_Program_Fast:00000000 FLASH_Program_Fast
/tmp/ccOK5KWJ.s:177 .text.FLASH_Program_Fast:00000028 $d
/tmp/ccOK5KWJ.s:182 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t
/tmp/ccOK5KWJ.s:188 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback
/tmp/ccOK5KWJ.s:203 .text.HAL_FLASH_OperationErrorCallback:00000000 $t
/tmp/ccOK5KWJ.s:209 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback
/tmp/ccOK5KWJ.s:224 .text.HAL_FLASH_IRQHandler:00000000 $t
/tmp/ccOK5KWJ.s:230 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler
/tmp/ccOK5KWJ.s:532 .text.HAL_FLASH_IRQHandler:00000114 $d
/tmp/ccOK5KWJ.s:1283 .data.pFlash:00000000 pFlash
/tmp/ccOK5KWJ.s:538 .text.HAL_FLASH_Unlock:00000000 $t
/tmp/ccOK5KWJ.s:544 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock
/tmp/ccOK5KWJ.s:590 .text.HAL_FLASH_Unlock:00000028 $d
/tmp/ccOK5KWJ.s:596 .text.HAL_FLASH_Lock:00000000 $t
/tmp/ccOK5KWJ.s:602 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock
/tmp/ccOK5KWJ.s:635 .text.HAL_FLASH_Lock:00000018 $d
/tmp/ccOK5KWJ.s:640 .text.HAL_FLASH_OB_Unlock:00000000 $t
/tmp/ccOK5KWJ.s:646 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock
/tmp/ccOK5KWJ.s:691 .text.HAL_FLASH_OB_Unlock:0000002c $d
/tmp/ccOK5KWJ.s:697 .text.HAL_FLASH_OB_Lock:00000000 $t
/tmp/ccOK5KWJ.s:703 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock
/tmp/ccOK5KWJ.s:736 .text.HAL_FLASH_OB_Lock:0000001c $d
/tmp/ccOK5KWJ.s:741 .text.HAL_FLASH_GetError:00000000 $t
/tmp/ccOK5KWJ.s:747 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError
/tmp/ccOK5KWJ.s:763 .text.HAL_FLASH_GetError:00000008 $d
/tmp/ccOK5KWJ.s:768 .text.FLASH_WaitForLastOperation:00000000 $t
/tmp/ccOK5KWJ.s:774 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation
/tmp/ccOK5KWJ.s:881 .text.FLASH_WaitForLastOperation:00000058 $d
/tmp/ccOK5KWJ.s:887 .text.HAL_FLASH_Program:00000000 $t
/tmp/ccOK5KWJ.s:893 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program
/tmp/ccOK5KWJ.s:1067 .text.HAL_FLASH_Program:000000a8 $d
/tmp/ccOK5KWJ.s:1073 .text.HAL_FLASH_Program_IT:00000000 $t
/tmp/ccOK5KWJ.s:1079 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT
/tmp/ccOK5KWJ.s:1236 .text.HAL_FLASH_Program_IT:0000009c $d
/tmp/ccOK5KWJ.s:1242 .text.HAL_FLASH_OB_Launch:00000000 $t
/tmp/ccOK5KWJ.s:1248 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch
/tmp/ccOK5KWJ.s:1274 .text.HAL_FLASH_OB_Launch:00000018 $d
/tmp/ccOK5KWJ.s:1280 .data.pFlash:00000000 $d
UNDEFINED SYMBOLS
FLASH_FlushCaches
FLASH_PageErase
HAL_GetTick