STM32H750VB_Bootloader/build/stm32h7xx_hal_flash.lst

3887 lines
250 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/ccCw6Rev.s page 1
1 .cpu cortex-m7
2 .eabi_attribute 28, 1
3 .eabi_attribute 20, 1
4 .eabi_attribute 21, 1
5 .eabi_attribute 23, 3
6 .eabi_attribute 24, 1
7 .eabi_attribute 25, 1
8 .eabi_attribute 26, 1
9 .eabi_attribute 30, 1
10 .eabi_attribute 34, 1
11 .eabi_attribute 18, 4
12 .file "stm32h7xx_hal_flash.c"
13 .text
14 .Ltext0:
15 .cfi_sections .debug_frame
16 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits
17 .align 1
18 .weak HAL_FLASH_EndOfOperationCallback
19 .arch armv7e-m
20 .syntax unified
21 .thumb
22 .thumb_func
23 .fpu fpv5-d16
25 HAL_FLASH_EndOfOperationCallback:
26 .LVL0:
27 .LFB144:
28 .file 1 "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c"
1:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
2:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ******************************************************************************
3:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @file stm32h7xx_hal_flash.c
4:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @author MCD Application Team
5:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief FLASH HAL module driver.
6:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * This file provides firmware functions to manage the following
7:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * functionalities of the internal FLASH memory:
8:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * + Program operations functions
9:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * + Memory Control functions
10:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * + Peripheral Errors functions
11:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
12:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @verbatim
13:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ==============================================================================
14:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ##### FLASH peripheral features #####
15:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ==============================================================================
16:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
17:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..] The Flash memory interface manages CPU AXI I-Code and D-Code accesses
18:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations
19:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** and the read and write protection mechanisms.
20:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
21:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..] The FLASH main features are:
22:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Flash memory read operations
23:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Flash memory program/erase operations
24:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Read / write protections
25:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Option bytes programming
26:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Error code correction (ECC) : Data in flash are 266-bits word
27:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (10 bits added per flash word)
28:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
29:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ##### How to use this driver #####
30:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ==============================================================================
ARM GAS /tmp/ccCw6Rev.s page 2
31:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
32:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH
33:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** memory of all STM32H7xx devices.
34:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
35:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (#) FLASH Memory IO Programming functions:
36:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and
37:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_Lock() functions
38:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Program functions: 256-bit word only
39:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) There Two modes of programming :
40:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function
41:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function
42:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
43:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (#) Interrupts and flags management functions :
44:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler()
45:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Callback functions are called when the flash operations are finished :
46:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback() when everything is ok, otherwise
47:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback()
48:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Get error flag status by calling HAL_FLASH_GetError()
49:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
50:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (#) Option bytes management functions :
51:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Lock and Unlock the option bytes using HAL_FLASH_OB_Unlock() and
52:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_OB_Lock() functions
53:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (++) Launch the reload of the option bytes using HAL_FLASH_OB_Launch() function.
54:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** In this case, a reset is generated
55:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
56:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing
57:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** to handle the following operations:
58:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Set the latency
59:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts
60:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (+) Monitor the FLASH flags status
61:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
62:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (@) For any Flash memory program operation (erase or program), the CPU clock frequency
63:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (HCLK) must be at least 1MHz.
64:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (@) The contents of the Flash memory are not guaranteed if a device reset occurs during
65:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** a Flash memory operation.
66:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (@) The application can simultaneously request a read and a write operation through each AXI
67:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** interface.
68:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** As the Flash memory is divided into two independent banks, the embedded Flash
69:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** memory interface can drive different operations at the same time on each bank. For
70:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** example a read, write or erase operation can be executed on bank 1 while another read,
71:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** write or erase operation is executed on bank 2.
72:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
73:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @endverbatim
74:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ******************************************************************************
75:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @attention
76:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
77:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics.
78:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * All rights reserved.</center></h2>
79:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
80:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * This software component is licensed by ST under BSD 3-Clause license,
81:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * the "License"; You may not use this file except in compliance with the
82:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * License. You may obtain a copy of the License at:
83:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * opensource.org/licenses/BSD-3-Clause
84:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
85:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ******************************************************************************
86:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
87:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
ARM GAS /tmp/ccCw6Rev.s page 3
88:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/
89:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #include "stm32h7xx_hal.h"
90:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
91:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @addtogroup STM32H7xx_HAL_Driver
92:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
93:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
94:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
95:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @defgroup FLASH FLASH
96:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief FLASH HAL module driver
97:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
98:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
99:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
100:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED
101:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
102:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/
103:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/
104:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants
105:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
106:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
107:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */
108:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
109:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @}
110:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
111:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/
112:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/
113:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash;
114:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/
115:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Exported functions ---------------------------------------------------------*/
116:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
117:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported functions
118:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
119:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
120:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
121:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions
122:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Programming operation functions
123:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
124:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @verbatim
125:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
126:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ##### Programming operation functions #####
127:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
128:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
129:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH
130:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** program operations.
131:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
132:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @endverbatim
133:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
134:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
135:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
136:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
137:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Program flash word at a specified address
138:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
139:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program
140:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param FlashAddress specifies the address to be programmed.
141:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param DataAddress specifies the address of data to be programmed
142:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
143:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status
144:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
ARM GAS /tmp/ccCw6Rev.s page 4
145:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAddre
146:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
147:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
148:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *dest_addr = (__IO uint32_t *)FlashAddress;
149:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;
150:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bank;
151:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;
152:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
153:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check the parameters */
154:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
155:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));
156:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
157:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Process Locked */
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_LOCK(&pFlash);
159:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
160:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
161:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress)) || (IS_FLASH_PROGRAM_ADDRESS_OTP(FlashAddress))
162:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
163:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress))
164:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
165:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
166:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bank = FLASH_BANK_1;
167:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
168:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
169:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if(IS_FLASH_PROGRAM_ADDRESS_BANK2(FlashAddress))
170:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
171:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bank = FLASH_BANK_2;
172:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
173:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
174:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
175:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
176:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
177:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
178:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
179:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Reset error code */
180:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
181:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
182:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for last operation to be completed */
183:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);
184:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
185:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(status == HAL_OK)
186:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
187:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
188:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(bank == FLASH_BANK_1)
189:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
190:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
191:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
192:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
193:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set OTP_PG bit */
194:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
195:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
196:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
197:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
198:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
199:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
200:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR1, FLASH_CR_PG);
201:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
ARM GAS /tmp/ccCw6Rev.s page 5
202:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
203:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
204:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
205:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
206:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR2, FLASH_CR_PG);
207:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
208:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else /* Single Bank */
209:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
210:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
211:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
212:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set OTP_PG bit */
213:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
214:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
215:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
216:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
217:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
218:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
219:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR1, FLASH_CR_PG);
220:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
221:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
222:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
223:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __ISB();
224:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
225:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
226:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
227:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
228:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
229:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program an OTP word (16 bits) */
230:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *(__IO uint16_t *)FlashAddress = *(__IO uint16_t*)DataAddress;
231:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
232:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
233:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
234:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
235:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program the flash word */
236:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** do
237:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
238:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *dest_addr = *src_addr;
239:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
240:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** src_addr++;
241:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** row_index--;
242:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
243:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
244:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
245:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __ISB();
246:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
247:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
248:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for last operation to be completed */
249:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);
250:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
251:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
252:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
253:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
254:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
255:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If the program operation is completed, disable the OTP_PG */
256:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** CLEAR_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
257:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
258:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
ARM GAS /tmp/ccCw6Rev.s page 6
259:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
260:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
261:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(bank == FLASH_BANK_1)
262:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
263:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If the program operation is completed, disable the PG */
264:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** CLEAR_BIT(FLASH->CR1, FLASH_CR_PG);
265:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
266:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
267:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
268:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If the program operation is completed, disable the PG */
269:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** CLEAR_BIT(FLASH->CR2, FLASH_CR_PG);
270:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
271:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
272:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else /* Single Bank */
273:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
274:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
275:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
276:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If the program operation is completed, disable the OTP_PG */
277:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** CLEAR_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
278:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
279:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
280:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
281:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
282:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If the program operation is completed, disable the PG */
283:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** CLEAR_BIT(FLASH->CR1, FLASH_CR_PG);
284:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
285:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
286:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
287:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
288:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Process Unlocked */
289:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
290:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
291:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return status;
292:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
293:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
294:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
295:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Program flash words of 256 bits at a specified address with interrupt enabled.
296:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
297:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program
298:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param FlashAddress specifies the address to be programmed.
299:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param DataAddress specifies the address of data (256 bits) to be programmed
300:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
301:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
302:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
303:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t FlashAddress, uint32_t DataAd
304:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
305:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
306:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *dest_addr = (__IO uint32_t*)FlashAddress;
307:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;
308:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bank;
309:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;
310:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
311:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check the parameters */
312:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
313:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));
314:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
315:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Process Locked */
ARM GAS /tmp/ccCw6Rev.s page 7
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_LOCK(&pFlash);
317:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
318:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Reset error code */
319:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
320:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
321:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
322:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress)) || (IS_FLASH_PROGRAM_ADDRESS_OTP(FlashAddress))
323:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
324:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(IS_FLASH_PROGRAM_ADDRESS_BANK1(FlashAddress))
325:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
326:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
327:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bank = FLASH_BANK_1;
328:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
329:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
330:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if(IS_FLASH_PROGRAM_ADDRESS_BANK2(FlashAddress))
331:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
332:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bank = FLASH_BANK_2;
333:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
334:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
335:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
336:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
337:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
338:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
339:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
340:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for last operation to be completed */
341:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, bank);
342:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
343:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (status != HAL_OK)
344:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
345:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Process Unlocked */
346:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
347:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
348:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
349:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
350:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Address = FlashAddress;
351:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
352:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
353:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(bank == FLASH_BANK_1)
354:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
355:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set internal variables used by the IRQ handler */
356:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK1;
357:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
358:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
359:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
360:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
361:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set OTP_PG bit */
362:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
363:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
364:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
365:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
366:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
367:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
368:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR1, FLASH_CR_PG);
369:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
370:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
371:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Enable End of Operation and Error interrupts for Bank 1 */
372:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_CR_OPERRIE)
ARM GAS /tmp/ccCw6Rev.s page 8
373:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_
374:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_B
375:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
376:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_
377:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);
378:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_CR_OPERRIE */
379:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
380:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
381:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
382:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set internal variables used by the IRQ handler */
383:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK2;
384:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
385:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
386:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR2, FLASH_CR_PG);
387:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
388:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Enable End of Operation and Error interrupts for Bank2 */
389:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_CR_OPERRIE)
390:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2 | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_
391:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2 | FLASH_IT_OPERR_B
392:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
393:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK2(FLASH_IT_EOP_BANK2 | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_
394:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2);
395:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_CR_OPERRIE */
396:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
397:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else /* Single Bank */
398:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set internal variables used by the IRQ handler */
399:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM_BANK1;
400:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
401:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
402:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
403:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
404:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set OTP_PG bit */
405:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_PG_OTP);
406:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
407:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
408:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
409:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
410:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set PG bit */
411:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR1, FLASH_CR_PG);
412:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
413:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
414:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Enable End of Operation and Error interrupts for Bank 1 */
415:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_CR_OPERRIE)
416:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_
417:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_B
418:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
419:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_
420:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);
421:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_CR_OPERRIE */
422:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
423:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
424:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __ISB();
425:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
426:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
427:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_OPTCR_PG_OTP)
428:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_OTPWORD)
429:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
ARM GAS /tmp/ccCw6Rev.s page 9
430:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program an OTP word (16 bits) */
431:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *(__IO uint16_t *)FlashAddress = *(__IO uint16_t*)DataAddress;
432:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
433:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
434:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
435:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
436:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program the flash word */
437:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** do
438:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
439:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *dest_addr = *src_addr;
440:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
441:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** src_addr++;
442:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** row_index--;
443:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
444:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
445:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
446:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __ISB();
447:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
448:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
449:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
450:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return status;
451:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
452:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
453:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
454:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief This function handles FLASH interrupt request.
455:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval None
456:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
457:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void)
458:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
459:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t temp;
460:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t errorflag;
461:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_ProcedureTypeDef procedure;
462:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
463:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH Bank1 End of Operation flag */
464:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG_BANK1(FLASH_SR_EOP) != RESET)
465:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
466:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE_BANK1)
467:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
468:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Nb of sector to erased can be decreased */
469:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.NbSectorsToErase--;
470:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
471:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check if there are still sectors to erase */
472:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0U)
473:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
474:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Indicate user which sector has been erased */
475:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Sector);
476:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
477:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear bank 1 End of Operation pending bit */
478:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);
479:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
480:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Increment sector number */
481:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector++;
482:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
483:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_Erase_Sector(temp, FLASH_BANK_1, pFlash.VoltageForErase);
484:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
485:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
486:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
ARM GAS /tmp/ccCw6Rev.s page 10
487:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* No more sectors to Erase, user callback can be called */
488:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Reset Sector and stop Erase sectors procedure */
489:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
490:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
491:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
492:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
493:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Sector);
494:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
495:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
496:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);
497:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
498:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
499:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
500:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
501:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
502:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
503:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((procedure == FLASH_PROC_MASSERASE_BANK1) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))
504:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
505:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* MassErase ended. Return the selected bank */
506:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
507:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(FLASH_BANK_1);
508:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
509:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if(procedure == FLASH_PROC_PROGRAM_BANK1)
510:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
511:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program ended. Return the selected address */
512:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
513:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address);
514:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
515:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
516:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
517:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Nothing to do */
518:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
519:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
520:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((procedure != FLASH_PROC_SECTERASE_BANK2) && \
521:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_MASSERASE_BANK2) && \
522:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_PROGRAM_BANK2))
523:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
524:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
525:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
526:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);
527:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
528:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
529:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
530:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
531:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
532:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH Bank2 End of Operation flag */
533:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG_BANK2(FLASH_SR_EOP) != RESET)
534:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
535:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE_BANK2)
536:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
537:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*Nb of sector to erased can be decreased*/
538:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.NbSectorsToErase--;
539:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
540:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check if there are still sectors to erase*/
541:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0U)
542:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
543:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*Indicate user which sector has been erased*/
ARM GAS /tmp/ccCw6Rev.s page 11
544:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Sector);
545:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
546:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear bank 2 End of Operation pending bit */
547:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);
548:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
549:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*Increment sector number*/
550:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector++;
551:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
552:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_Erase_Sector(temp, FLASH_BANK_2, pFlash.VoltageForErase);
553:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
554:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
555:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
556:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* No more sectors to Erase, user callback can be called */
557:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Reset Sector and stop Erase sectors procedure */
558:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
559:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
560:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
561:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
562:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Sector);
563:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
564:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
565:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);
566:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
567:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
568:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
569:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
570:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
571:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
572:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((procedure == FLASH_PROC_MASSERASE_BANK2) || (procedure == FLASH_PROC_ALLBANK_MASSERASE))
573:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
574:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*MassErase ended. Return the selected bank*/
575:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
576:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(FLASH_BANK_2);
577:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
578:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if(procedure == FLASH_PROC_PROGRAM_BANK2)
579:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
580:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Program ended. Return the selected address */
581:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
582:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address);
583:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
584:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
585:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
586:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Nothing to do */
587:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
588:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
589:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((procedure != FLASH_PROC_SECTERASE_BANK1) && \
590:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_MASSERASE_BANK1) && \
591:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_PROGRAM_BANK1))
592:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
593:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
594:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
595:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);
596:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
597:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
598:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
599:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
600:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
ARM GAS /tmp/ccCw6Rev.s page 12
601:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH Bank1 operation error flags */
602:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_SR_OPERR)
603:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** errorflag = FLASH->SR1 & (FLASH_FLAG_WRPERR_BANK1 | FLASH_FLAG_PGSERR_BANK1 | FLASH_FLAG_STRBERR_
604:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK1 | FLASH_FLAG_OPERR_BANK1);
605:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
606:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** errorflag = FLASH->SR1 & (FLASH_FLAG_WRPERR_BANK1 | FLASH_FLAG_PGSERR_BANK1 | FLASH_FLAG_STRBERR_
607:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK1);
608:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_SR_OPERR */
609:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
610:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(errorflag != 0U)
611:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
612:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Save the error code */
613:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= errorflag;
614:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
615:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear error programming flags */
616:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(errorflag);
617:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
618:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
619:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
620:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(procedure == FLASH_PROC_SECTERASE_BANK1)
621:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
622:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Return the faulty sector */
623:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
624:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
625:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
626:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if((procedure == FLASH_PROC_MASSERASE_BANK1) || (procedure == FLASH_PROC_ALLBANK_MASSERASE
627:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
628:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Return the faulty bank */
629:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = FLASH_BANK_1;
630:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
631:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
632:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
633:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Return the faulty address */
634:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Address;
635:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
636:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
637:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Stop the procedure ongoing*/
638:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
639:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
640:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH error interrupt user callback */
641:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(temp);
642:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
643:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
644:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
645:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH Bank2 operation error flags */
646:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_SR_OPERR)
647:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** errorflag = FLASH->SR2 & ((FLASH_FLAG_WRPERR_BANK2 | FLASH_FLAG_PGSERR_BANK2 | FLASH_FLAG_STRBERR
648:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK2 | FLASH_FLAG_OPERR_BANK2) & 0x7FFFFFFFU);
649:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
650:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** errorflag = FLASH->SR2 & ((FLASH_FLAG_WRPERR_BANK2 | FLASH_FLAG_PGSERR_BANK2 | FLASH_FLAG_STRBERR
651:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK2) & 0x7FFFFFFFU);
652:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_SR_OPERR */
653:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
654:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(errorflag != 0U)
655:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
656:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Save the error code */
657:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= (errorflag | 0x80000000U);
ARM GAS /tmp/ccCw6Rev.s page 13
658:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
659:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear error programming flags */
660:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(errorflag);
661:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
662:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** procedure = pFlash.ProcedureOnGoing;
663:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
664:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(procedure== FLASH_PROC_SECTERASE_BANK2)
665:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
666:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*return the faulty sector*/
667:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
668:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
669:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
670:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if((procedure == FLASH_PROC_MASSERASE_BANK2) || (procedure == FLASH_PROC_ALLBANK_MASSERASE
671:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
672:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*return the faulty bank*/
673:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = FLASH_BANK_2;
674:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
675:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
676:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
677:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*return the faulty address*/
678:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Address;
679:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
680:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
681:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*Stop the procedure ongoing*/
682:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
683:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
684:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* FLASH error interrupt user callback */
685:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(temp);
686:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
687:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
688:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
689:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE)
690:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
691:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (FLASH_CR_OPERRIE)
692:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Disable Bank1 Operation and Error source interrupt */
693:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BA
694:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BA
695:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
696:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
697:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Disable Bank2 Operation and Error source interrupt */
698:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT_BANK2(FLASH_IT_EOP_BANK2 | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BA
699:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2 | FLASH_IT_OPERR_BA
700:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
701:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #else
702:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Disable Bank1 Operation and Error source interrupt */
703:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT_BANK1(FLASH_IT_EOP_BANK1 | FLASH_IT_WRPERR_BANK1 | FLASH_IT_PGSERR_BA
704:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1);
705:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
706:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
707:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Disable Bank2 Operation and Error source interrupt */
708:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT_BANK2(FLASH_IT_EOP_BANK2 | FLASH_IT_WRPERR_BANK2 | FLASH_IT_PGSERR_BA
709:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK2 | FLASH_IT_INCERR_BANK2);
710:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
711:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_CR_OPERRIE */
712:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
713:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Process Unlocked */
714:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
ARM GAS /tmp/ccCw6Rev.s page 14
715:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
716:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
717:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
718:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
719:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback
720:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure
721:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase
722:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Sectors Erase: Sector which has been erased
723:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * (if 0xFFFFFFFF, it means that all the selected sectors have been erased)
724:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Program: Address which was selected for data program
725:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval None
726:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
727:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
728:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
29 .loc 1 728 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.
729:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
730:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** UNUSED(ReturnValue);
34 .loc 1 730 3 view .LVU1
731:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
732:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
733:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file
734:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
735:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
35 .loc 1 735 1 is_stmt 0 view .LVU2
36 0000 7047 bx lr
37 .cfi_endproc
38 .LFE144:
40 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits
41 .align 1
42 .weak HAL_FLASH_OperationErrorCallback
43 .syntax unified
44 .thumb
45 .thumb_func
46 .fpu fpv5-d16
48 HAL_FLASH_OperationErrorCallback:
49 .LVL1:
50 .LFB145:
736:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
737:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
738:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief FLASH operation error interrupt callback
739:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure
740:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase
741:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Sectors Erase: Sector number which returned an error
742:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * Program: Address which was selected for data program
743:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval None
744:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
745:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
746:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
51 .loc 1 746 1 is_stmt 1 view -0
52 .cfi_startproc
53 @ args = 0, pretend = 0, frame = 0
54 @ frame_needed = 0, uses_anonymous_args = 0
55 @ link register save eliminated.
ARM GAS /tmp/ccCw6Rev.s page 15
747:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
748:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** UNUSED(ReturnValue);
56 .loc 1 748 3 view .LVU4
749:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
750:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
751:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file
752:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
753:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
57 .loc 1 753 1 is_stmt 0 view .LVU5
58 0000 7047 bx lr
59 .cfi_endproc
60 .LFE145:
62 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits
63 .align 1
64 .global HAL_FLASH_IRQHandler
65 .syntax unified
66 .thumb
67 .thumb_func
68 .fpu fpv5-d16
70 HAL_FLASH_IRQHandler:
71 .LFB143:
458:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t temp;
72 .loc 1 458 1 is_stmt 1 view -0
73 .cfi_startproc
74 @ args = 0, pretend = 0, frame = 0
75 @ frame_needed = 0, uses_anonymous_args = 0
76 0000 10B5 push {r4, lr}
77 .LCFI0:
78 .cfi_def_cfa_offset 8
79 .cfi_offset 4, -8
80 .cfi_offset 14, -4
459:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t errorflag;
81 .loc 1 459 3 view .LVU7
460:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_ProcedureTypeDef procedure;
82 .loc 1 460 3 view .LVU8
461:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
83 .loc 1 461 3 view .LVU9
464:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
84 .loc 1 464 3 view .LVU10
464:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
85 .loc 1 464 6 is_stmt 0 view .LVU11
86 0002 3D4B ldr r3, .L19
87 0004 1B69 ldr r3, [r3, #16]
464:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
88 .loc 1 464 5 view .LVU12
89 0006 13F4803F tst r3, #65536
90 000a 18D0 beq .L4
466:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
91 .loc 1 466 5 is_stmt 1 view .LVU13
466:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
92 .loc 1 466 14 is_stmt 0 view .LVU14
93 000c 3B4B ldr r3, .L19+4
94 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2
95 0010 DBB2 uxtb r3, r3
466:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
96 .loc 1 466 7 view .LVU15
97 0012 012B cmp r3, #1
ARM GAS /tmp/ccCw6Rev.s page 16
98 0014 29D0 beq .L15
501:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
99 .loc 1 501 7 is_stmt 1 view .LVU16
501:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
100 .loc 1 501 17 is_stmt 0 view .LVU17
101 0016 394B ldr r3, .L19+4
102 0018 1C78 ldrb r4, [r3] @ zero_extendqisi2
103 001a E4B2 uxtb r4, r4
104 .LVL2:
503:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
105 .loc 1 503 7 is_stmt 1 view .LVU18
503:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
106 .loc 1 503 9 is_stmt 0 view .LVU19
107 001c 072C cmp r4, #7
108 001e 18BF it ne
109 0020 022C cmpne r4, #2
110 0022 47D0 beq .L16
509:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
111 .loc 1 509 12 is_stmt 1 view .LVU20
509:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
112 .loc 1 509 14 is_stmt 0 view .LVU21
113 0024 032C cmp r4, #3
114 0026 49D0 beq .L17
115 .L8:
518:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
116 .loc 1 518 7 is_stmt 1 view .LVU22
520:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_MASSERASE_BANK2) && \
117 .loc 1 520 7 view .LVU23
521:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_PROGRAM_BANK2))
118 .loc 1 521 52 is_stmt 0 view .LVU24
119 0028 043C subs r4, r4, #4
120 .LVL3:
521:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_PROGRAM_BANK2))
121 .loc 1 521 52 view .LVU25
122 002a E4B2 uxtb r4, r4
123 .LVL4:
520:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** (procedure != FLASH_PROC_MASSERASE_BANK2) && \
124 .loc 1 520 9 view .LVU26
125 002c 022C cmp r4, #2
126 002e 06D9 bls .L4
524:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
127 .loc 1 524 9 is_stmt 1 view .LVU27
524:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
128 .loc 1 524 33 is_stmt 0 view .LVU28
129 0030 324B ldr r3, .L19+4
130 0032 0022 movs r2, #0
131 0034 1A70 strb r2, [r3]
526:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
132 .loc 1 526 9 is_stmt 1 view .LVU29
133 0036 304B ldr r3, .L19
134 0038 4FF48032 mov r2, #65536
135 003c 5A61 str r2, [r3, #20]
136 .L4:
603:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK1 | FLASH_FLAG_OPERR_BANK1);
137 .loc 1 603 3 view .LVU30
603:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_FLAG_INCERR_BANK1 | FLASH_FLAG_OPERR_BANK1);
138 .loc 1 603 20 is_stmt 0 view .LVU31
ARM GAS /tmp/ccCw6Rev.s page 17
139 003e 2E4B ldr r3, .L19
140 0040 1B69 ldr r3, [r3, #16]
141 .LVL5:
610:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
142 .loc 1 610 3 is_stmt 1 view .LVU32
610:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
143 .loc 1 610 5 is_stmt 0 view .LVU33
144 0042 13F4DC03 ands r3, r3, #7208960
145 .LVL6:
610:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
146 .loc 1 610 5 view .LVU34
147 0046 48D0 beq .L9
613:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
148 .loc 1 613 5 is_stmt 1 view .LVU35
613:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
149 .loc 1 613 22 is_stmt 0 view .LVU36
150 0048 2C4A ldr r2, .L19+4
151 004a 9169 ldr r1, [r2, #24]
152 004c 1943 orrs r1, r1, r3
153 004e 9161 str r1, [r2, #24]
616:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
154 .loc 1 616 5 is_stmt 1 view .LVU37
155 0050 2949 ldr r1, .L19
156 0052 4B61 str r3, [r1, #20]
618:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
157 .loc 1 618 5 view .LVU38
618:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
158 .loc 1 618 15 is_stmt 0 view .LVU39
159 0054 1378 ldrb r3, [r2] @ zero_extendqisi2
160 .LVL7:
618:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
161 .loc 1 618 15 view .LVU40
162 0056 DBB2 uxtb r3, r3
163 .LVL8:
620:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
164 .loc 1 620 5 is_stmt 1 view .LVU41
620:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
165 .loc 1 620 7 is_stmt 0 view .LVU42
166 0058 012B cmp r3, #1
167 005a 34D0 beq .L18
626:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
168 .loc 1 626 10 is_stmt 1 view .LVU43
626:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
169 .loc 1 626 12 is_stmt 0 view .LVU44
170 005c 072B cmp r3, #7
171 005e 18BF it ne
172 0060 022B cmpne r3, #2
173 0062 46D0 beq .L13
634:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
174 .loc 1 634 7 is_stmt 1 view .LVU45
634:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
175 .loc 1 634 12 is_stmt 0 view .LVU46
176 0064 254B ldr r3, .L19+4
177 .LVL9:
634:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
178 .loc 1 634 12 view .LVU47
179 0066 1869 ldr r0, [r3, #16]
ARM GAS /tmp/ccCw6Rev.s page 18
180 .LVL10:
634:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
181 .loc 1 634 12 view .LVU48
182 0068 32E0 b .L11
183 .LVL11:
184 .L15:
469:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
185 .loc 1 469 7 is_stmt 1 view .LVU49
469:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
186 .loc 1 469 13 is_stmt 0 view .LVU50
187 006a 244B ldr r3, .L19+4
188 006c 5A68 ldr r2, [r3, #4]
469:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
189 .loc 1 469 30 view .LVU51
190 006e 013A subs r2, r2, #1
191 0070 5A60 str r2, [r3, #4]
472:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
192 .loc 1 472 7 is_stmt 1 view .LVU52
472:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
193 .loc 1 472 16 is_stmt 0 view .LVU53
194 0072 5B68 ldr r3, [r3, #4]
472:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
195 .loc 1 472 9 view .LVU54
196 0074 83B1 cbz r3, .L6
475:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
197 .loc 1 475 9 is_stmt 1 view .LVU55
198 0076 214C ldr r4, .L19+4
199 0078 E068 ldr r0, [r4, #12]
200 007a FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
201 .LVL12:
478:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
202 .loc 1 478 9 view .LVU56
203 007e 1E4B ldr r3, .L19
204 0080 4FF48032 mov r2, #65536
205 0084 5A61 str r2, [r3, #20]
481:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
206 .loc 1 481 9 view .LVU57
481:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
207 .loc 1 481 15 is_stmt 0 view .LVU58
208 0086 E368 ldr r3, [r4, #12]
481:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** temp = pFlash.Sector;
209 .loc 1 481 22 view .LVU59
210 0088 0133 adds r3, r3, #1
211 008a E360 str r3, [r4, #12]
482:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_Erase_Sector(temp, FLASH_BANK_1, pFlash.VoltageForErase);
212 .loc 1 482 9 is_stmt 1 view .LVU60
482:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_Erase_Sector(temp, FLASH_BANK_1, pFlash.VoltageForErase);
213 .loc 1 482 14 is_stmt 0 view .LVU61
214 008c E068 ldr r0, [r4, #12]
215 .LVL13:
483:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
216 .loc 1 483 9 is_stmt 1 view .LVU62
217 008e A268 ldr r2, [r4, #8]
218 0090 0121 movs r1, #1
219 0092 FFF7FEFF bl FLASH_Erase_Sector
220 .LVL14:
483:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
ARM GAS /tmp/ccCw6Rev.s page 19
221 .loc 1 483 9 is_stmt 0 view .LVU63
222 0096 D2E7 b .L4
223 .L6:
489:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
224 .loc 1 489 9 is_stmt 1 view .LVU64
489:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
225 .loc 1 489 23 is_stmt 0 view .LVU65
226 0098 184B ldr r3, .L19+4
227 009a 4FF0FF32 mov r2, #-1
228 009e DA60 str r2, [r3, #12]
490:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
229 .loc 1 490 9 is_stmt 1 view .LVU66
490:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
230 .loc 1 490 33 is_stmt 0 view .LVU67
231 00a0 0022 movs r2, #0
232 00a2 1A70 strb r2, [r3]
493:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
233 .loc 1 493 9 is_stmt 1 view .LVU68
234 00a4 D868 ldr r0, [r3, #12]
235 00a6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
236 .LVL15:
496:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
237 .loc 1 496 9 view .LVU69
238 00aa 134B ldr r3, .L19
239 00ac 4FF48032 mov r2, #65536
240 00b0 5A61 str r2, [r3, #20]
241 00b2 C4E7 b .L4
242 .LVL16:
243 .L16:
507:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
244 .loc 1 507 9 view .LVU70
245 00b4 0120 movs r0, #1
246 00b6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
247 .LVL17:
248 00ba B5E7 b .L8
249 .L17:
513:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
250 .loc 1 513 9 view .LVU71
251 00bc 0F4B ldr r3, .L19+4
252 00be 1869 ldr r0, [r3, #16]
253 00c0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
254 .LVL18:
255 00c4 B0E7 b .L8
256 .LVL19:
257 .L18:
623:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
258 .loc 1 623 7 view .LVU72
623:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
259 .loc 1 623 12 is_stmt 0 view .LVU73
260 00c6 1346 mov r3, r2
261 .LVL20:
623:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
262 .loc 1 623 12 view .LVU74
263 00c8 D068 ldr r0, [r2, #12]
264 .LVL21:
624:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
265 .loc 1 624 7 is_stmt 1 view .LVU75
ARM GAS /tmp/ccCw6Rev.s page 20
624:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
266 .loc 1 624 21 is_stmt 0 view .LVU76
267 00ca 4FF0FF32 mov r2, #-1
268 00ce DA60 str r2, [r3, #12]
269 .LVL22:
270 .L11:
638:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
271 .loc 1 638 5 is_stmt 1 view .LVU77
638:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
272 .loc 1 638 29 is_stmt 0 view .LVU78
273 00d0 0A4B ldr r3, .L19+4
274 00d2 0022 movs r2, #0
275 00d4 1A70 strb r2, [r3]
276 .LVL23:
641:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
277 .loc 1 641 5 is_stmt 1 view .LVU79
278 00d6 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
279 .LVL24:
280 .L9:
689:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
281 .loc 1 689 3 view .LVU80
689:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
282 .loc 1 689 12 is_stmt 0 view .LVU81
283 00da 084B ldr r3, .L19+4
284 00dc 1B78 ldrb r3, [r3] @ zero_extendqisi2
689:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
285 .loc 1 689 5 view .LVU82
286 00de 3BB9 cbnz r3, .L3
693:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_BA
287 .loc 1 693 5 is_stmt 1 view .LVU83
288 00e0 054A ldr r2, .L19
289 00e2 D368 ldr r3, [r2, #12]
290 00e4 23F4DE03 bic r3, r3, #7274496
291 00e8 D360 str r3, [r2, #12]
714:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
292 .loc 1 714 5 view .LVU84
714:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
293 .loc 1 714 5 view .LVU85
294 00ea 044B ldr r3, .L19+4
295 00ec 0022 movs r2, #0
296 00ee 1A75 strb r2, [r3, #20]
714:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
297 .loc 1 714 5 view .LVU86
298 .L3:
716:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
299 .loc 1 716 1 is_stmt 0 view .LVU87
300 00f0 10BD pop {r4, pc}
301 .LVL25:
302 .L13:
629:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
303 .loc 1 629 12 view .LVU88
304 00f2 0120 movs r0, #1
305 00f4 ECE7 b .L11
306 .L20:
307 00f6 00BF .align 2
308 .L19:
309 00f8 00200052 .word 1375739904
ARM GAS /tmp/ccCw6Rev.s page 21
310 00fc 00000000 .word .LANCHOR0
311 .cfi_endproc
312 .LFE143:
314 .section .text.HAL_FLASH_Unlock,"ax",%progbits
315 .align 1
316 .global HAL_FLASH_Unlock
317 .syntax unified
318 .thumb
319 .thumb_func
320 .fpu fpv5-d16
322 HAL_FLASH_Unlock:
323 .LFB146:
754:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
755:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
756:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @}
757:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
758:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
759:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions
760:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Management functions
761:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
762:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @verbatim
763:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
764:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ##### Peripheral Control functions #####
765:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
766:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
767:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH
768:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** memory operations.
769:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
770:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @endverbatim
771:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
772:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
773:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
774:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
775:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Unlock the FLASH control registers access
776:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
777:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
778:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void)
779:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
324 .loc 1 779 1 is_stmt 1 view -0
325 .cfi_startproc
326 @ args = 0, pretend = 0, frame = 0
327 @ frame_needed = 0, uses_anonymous_args = 0
328 @ link register save eliminated.
780:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)
329 .loc 1 780 3 view .LVU90
330 .loc 1 780 6 is_stmt 0 view .LVU91
331 0000 0A4B ldr r3, .L25
332 0002 DB68 ldr r3, [r3, #12]
333 .loc 1 780 5 view .LVU92
334 0004 13F0010F tst r3, #1
335 0008 0BD0 beq .L23
781:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
782:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Authorize the FLASH Bank1 Registers access */
783:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR1, FLASH_KEY1);
336 .loc 1 783 5 is_stmt 1 view .LVU93
337 000a 084B ldr r3, .L25
338 000c 084A ldr r2, .L25+4
ARM GAS /tmp/ccCw6Rev.s page 22
339 000e 5A60 str r2, [r3, #4]
784:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR1, FLASH_KEY2);
340 .loc 1 784 5 view .LVU94
341 0010 02F18832 add r2, r2, #-2004318072
342 0014 5A60 str r2, [r3, #4]
785:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
786:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify Flash Bank1 is unlocked */
787:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->CR1, FLASH_CR_LOCK) != 0U)
343 .loc 1 787 5 view .LVU95
344 .loc 1 787 9 is_stmt 0 view .LVU96
345 0016 DB68 ldr r3, [r3, #12]
346 .loc 1 787 8 view .LVU97
347 0018 13F0010F tst r3, #1
348 001c 03D1 bne .L24
788:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
789:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
790:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
791:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
792:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
793:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
794:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)
795:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
796:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Authorize the FLASH Bank2 Registers access */
797:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR2, FLASH_KEY1);
798:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR2, FLASH_KEY2);
799:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
800:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify Flash Bank2 is unlocked */
801:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->CR2, FLASH_CR_LOCK) != 0U)
802:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
803:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
804:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
805:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
806:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
807:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
808:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
349 .loc 1 808 10 view .LVU98
350 001e 0020 movs r0, #0
351 0020 7047 bx lr
352 .L23:
353 0022 0020 movs r0, #0
354 0024 7047 bx lr
355 .L24:
789:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
356 .loc 1 789 14 view .LVU99
357 0026 0120 movs r0, #1
809:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
358 .loc 1 809 1 view .LVU100
359 0028 7047 bx lr
360 .L26:
361 002a 00BF .align 2
362 .L25:
363 002c 00200052 .word 1375739904
364 0030 23016745 .word 1164378403
365 .cfi_endproc
366 .LFE146:
368 .section .text.HAL_FLASH_Lock,"ax",%progbits
369 .align 1
ARM GAS /tmp/ccCw6Rev.s page 23
370 .global HAL_FLASH_Lock
371 .syntax unified
372 .thumb
373 .thumb_func
374 .fpu fpv5-d16
376 HAL_FLASH_Lock:
377 .LFB147:
810:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
811:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
812:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Locks the FLASH control registers access
813:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
814:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
815:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void)
816:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
378 .loc 1 816 1 is_stmt 1 view -0
379 .cfi_startproc
380 @ args = 0, pretend = 0, frame = 0
381 @ frame_needed = 0, uses_anonymous_args = 0
382 @ link register save eliminated.
817:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Bank1 Control Register access */
818:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR1, FLASH_CR_LOCK);
383 .loc 1 818 3 view .LVU102
384 0000 064B ldr r3, .L30
385 0002 DA68 ldr r2, [r3, #12]
386 0004 42F00102 orr r2, r2, #1
387 0008 DA60 str r2, [r3, #12]
819:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
820:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify Flash Bank1 is locked */
821:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->CR1, FLASH_CR_LOCK) == 0U)
388 .loc 1 821 3 view .LVU103
389 .loc 1 821 7 is_stmt 0 view .LVU104
390 000a DB68 ldr r3, [r3, #12]
391 .loc 1 821 6 view .LVU105
392 000c 13F0010F tst r3, #1
393 0010 01D0 beq .L29
822:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
823:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
824:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
825:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
826:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
827:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Bank2 Control Register access */
828:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->CR2, FLASH_CR_LOCK);
829:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
830:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify Flash Bank2 is locked */
831:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->CR2, FLASH_CR_LOCK) == 0U)
832:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
833:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
834:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
835:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
836:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
837:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
394 .loc 1 837 10 view .LVU106
395 0012 0020 movs r0, #0
396 0014 7047 bx lr
397 .L29:
823:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
398 .loc 1 823 12 view .LVU107
ARM GAS /tmp/ccCw6Rev.s page 24
399 0016 0120 movs r0, #1
838:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
400 .loc 1 838 1 view .LVU108
401 0018 7047 bx lr
402 .L31:
403 001a 00BF .align 2
404 .L30:
405 001c 00200052 .word 1375739904
406 .cfi_endproc
407 .LFE147:
409 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
410 .align 1
411 .global HAL_FLASH_OB_Unlock
412 .syntax unified
413 .thumb
414 .thumb_func
415 .fpu fpv5-d16
417 HAL_FLASH_OB_Unlock:
418 .LFB148:
839:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
840:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
841:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access.
842:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
843:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
844:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
845:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
419 .loc 1 845 1 is_stmt 1 view -0
420 .cfi_startproc
421 @ args = 0, pretend = 0, frame = 0
422 @ frame_needed = 0, uses_anonymous_args = 0
423 @ link register save eliminated.
846:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) != 0U)
424 .loc 1 846 3 view .LVU110
425 .loc 1 846 6 is_stmt 0 view .LVU111
426 0000 0A4B ldr r3, .L36
427 0002 9B69 ldr r3, [r3, #24]
428 .loc 1 846 5 view .LVU112
429 0004 13F0010F tst r3, #1
430 0008 0BD0 beq .L34
847:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
848:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Authorizes the Option Byte registers programming */
849:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPT_KEY1);
431 .loc 1 849 5 is_stmt 1 view .LVU113
432 000a 084B ldr r3, .L36
433 000c 084A ldr r2, .L36+4
434 000e 9A60 str r2, [r3, #8]
850:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPT_KEY2);
435 .loc 1 850 5 view .LVU114
436 0010 02F14432 add r2, r2, #1145324612
437 0014 9A60 str r2, [r3, #8]
851:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
852:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify that the Option Bytes are unlocked */
853:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) != 0U)
438 .loc 1 853 5 view .LVU115
439 .loc 1 853 9 is_stmt 0 view .LVU116
440 0016 9B69 ldr r3, [r3, #24]
441 .loc 1 853 8 view .LVU117
ARM GAS /tmp/ccCw6Rev.s page 25
442 0018 13F0010F tst r3, #1
443 001c 03D1 bne .L35
854:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
855:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
856:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
857:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
858:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
859:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
444 .loc 1 859 10 view .LVU118
445 001e 0020 movs r0, #0
446 0020 7047 bx lr
447 .L34:
448 0022 0020 movs r0, #0
449 0024 7047 bx lr
450 .L35:
855:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
451 .loc 1 855 14 view .LVU119
452 0026 0120 movs r0, #1
860:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
453 .loc 1 860 1 view .LVU120
454 0028 7047 bx lr
455 .L37:
456 002a 00BF .align 2
457 .L36:
458 002c 00200052 .word 1375739904
459 0030 3B2A1908 .word 135866939
460 .cfi_endproc
461 .LFE148:
463 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
464 .align 1
465 .global HAL_FLASH_OB_Lock
466 .syntax unified
467 .thumb
468 .thumb_func
469 .fpu fpv5-d16
471 HAL_FLASH_OB_Lock:
472 .LFB149:
861:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
862:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
863:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access.
864:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
865:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
866:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
867:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
473 .loc 1 867 1 is_stmt 1 view -0
474 .cfi_startproc
475 @ args = 0, pretend = 0, frame = 0
476 @ frame_needed = 0, uses_anonymous_args = 0
477 @ link register save eliminated.
868:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
869:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK);
478 .loc 1 869 3 view .LVU122
479 0000 064B ldr r3, .L41
480 0002 9A69 ldr r2, [r3, #24]
481 0004 42F00102 orr r2, r2, #1
482 0008 9A61 str r2, [r3, #24]
870:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
ARM GAS /tmp/ccCw6Rev.s page 26
871:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Verify that the Option Bytes are locked */
872:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (READ_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTLOCK) == 0U)
483 .loc 1 872 3 view .LVU123
484 .loc 1 872 7 is_stmt 0 view .LVU124
485 000a 9B69 ldr r3, [r3, #24]
486 .loc 1 872 6 view .LVU125
487 000c 13F0010F tst r3, #1
488 0010 01D0 beq .L40
873:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
874:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
875:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
876:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
877:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
489 .loc 1 877 10 view .LVU126
490 0012 0020 movs r0, #0
491 0014 7047 bx lr
492 .L40:
874:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
493 .loc 1 874 12 view .LVU127
494 0016 0120 movs r0, #1
878:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
495 .loc 1 878 1 view .LVU128
496 0018 7047 bx lr
497 .L42:
498 001a 00BF .align 2
499 .L41:
500 001c 00200052 .word 1375739904
501 .cfi_endproc
502 .LFE149:
504 .section .text.HAL_FLASH_GetError,"ax",%progbits
505 .align 1
506 .global HAL_FLASH_GetError
507 .syntax unified
508 .thumb
509 .thumb_func
510 .fpu fpv5-d16
512 HAL_FLASH_GetError:
513 .LFB151:
879:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
880:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
881:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Launch the option bytes loading.
882:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL Status
883:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
884:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
885:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
886:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
887:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
888:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for CRC computation to be completed */
889:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_1) != HAL_OK)
890:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
891:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = HAL_ERROR;
892:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
893:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
894:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else if (FLASH_CRC_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE, FLASH_BANK_2) != HAL_OK)
895:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
896:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = HAL_ERROR;
897:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
ARM GAS /tmp/ccCw6Rev.s page 27
898:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
899:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
900:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
901:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = HAL_OK;
902:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
903:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
904:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (status == HAL_OK)
905:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
906:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Set OPTSTRT Bit */
907:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** SET_BIT(FLASH->OPTCR, FLASH_OPTCR_OPTSTART);
908:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
909:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for OB change operation to be completed */
910:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** status = FLASH_OB_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
911:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
912:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
913:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return status;
914:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
915:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
916:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
917:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @}
918:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
919:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
920:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions
921:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Peripheral Errors functions
922:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
923:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @verbatim
924:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
925:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ##### Peripheral Errors functions #####
926:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** ===============================================================================
927:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** [..]
928:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral.
929:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
930:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** @endverbatim
931:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
932:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
933:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
934:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
935:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Get the specific FLASH error flag.
936:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL_FLASH_ERRORCode The returned value can be:
937:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_NONE : No error set
938:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
939:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP_BANK1 : Write Protection Error on Bank 1
940:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS_BANK1 : Program Sequence Error on Bank 1
941:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_STRB_BANK1 : Strobe Error on Bank 1
942:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_INC_BANK1 : Inconsistency Error on Bank 1
943:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPE_BANK1 : Operation Error on Bank 1
944:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RDP_BANK1 : Read Protection Error on Bank 1
945:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RDS_BANK1 : Read Secured Error on Bank 1
946:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_SNECC_BANK1: ECC Single Correction Error on Bank 1
947:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_DBECC_BANK1: ECC Double Detection Error on Bank 1
948:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_CRCRD_BANK1: CRC Read Error on Bank 1
949:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** *
950:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP_BANK2 : Write Protection Error on Bank 2
951:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS_BANK2 : Program Sequence Error on Bank 2
952:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_STRB_BANK2 : Strobe Error on Bank 2
953:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_INC_BANK2 : Inconsistency Error on Bank 2
954:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPE_BANK2 : Operation Error on Bank 2
ARM GAS /tmp/ccCw6Rev.s page 28
955:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RDP_BANK2 : Read Protection Error on Bank 2
956:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RDS_BANK2 : Read Secured Error on Bank 2
957:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_SNECC_BANK2: SNECC Error on Bank 2
958:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_DBECC_BANK2: Double Detection ECC on Bank 2
959:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_CRCRD_BANK2: CRC Read Error on Bank 2
960:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
961:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
962:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void)
963:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
514 .loc 1 963 1 is_stmt 1 view -0
515 .cfi_startproc
516 @ args = 0, pretend = 0, frame = 0
517 @ frame_needed = 0, uses_anonymous_args = 0
518 @ link register save eliminated.
964:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return pFlash.ErrorCode;
519 .loc 1 964 4 view .LVU130
520 .loc 1 964 17 is_stmt 0 view .LVU131
521 0000 014B ldr r3, .L44
522 0002 9869 ldr r0, [r3, #24]
965:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
523 .loc 1 965 1 view .LVU132
524 0004 7047 bx lr
525 .L45:
526 0006 00BF .align 2
527 .L44:
528 0008 00000000 .word .LANCHOR0
529 .cfi_endproc
530 .LFE151:
532 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
533 .align 1
534 .global FLASH_WaitForLastOperation
535 .syntax unified
536 .thumb
537 .thumb_func
538 .fpu fpv5-d16
540 FLASH_WaitForLastOperation:
541 .LVL26:
542 .LFB152:
966:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
967:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
968:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @}
969:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
970:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
971:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
972:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @}
973:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
974:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
975:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Private functions ---------------------------------------------------------*/
976:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
977:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions
978:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @{
979:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
980:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
981:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
982:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete.
983:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param Timeout maximum flash operation timeout
984:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param Bank flash FLASH_BANK_1 or FLASH_BANK_2
ARM GAS /tmp/ccCw6Rev.s page 29
985:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status
986:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
987:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout, uint32_t Bank)
988:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
543 .loc 1 988 1 is_stmt 1 view -0
544 .cfi_startproc
545 @ args = 0, pretend = 0, frame = 0
546 @ frame_needed = 0, uses_anonymous_args = 0
547 .loc 1 988 1 is_stmt 0 view .LVU134
548 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
549 .LCFI1:
550 .cfi_def_cfa_offset 24
551 .cfi_offset 3, -24
552 .cfi_offset 4, -20
553 .cfi_offset 5, -16
554 .cfi_offset 6, -12
555 .cfi_offset 7, -8
556 .cfi_offset 14, -4
557 0002 0446 mov r4, r0
558 0004 0F46 mov r7, r1
989:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on QW flag to be reset.
990:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** Even if the FLASH operation fails, the QW flag will be reset and an error
991:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** flag will be set */
992:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
993:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bsyflag = FLASH_FLAG_QW_BANK1;
559 .loc 1 993 3 is_stmt 1 view .LVU135
560 .LVL27:
994:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t errorflag = FLASH->SR1 & FLASH_FLAG_ALL_ERRORS_BANK1;
561 .loc 1 994 3 view .LVU136
562 .loc 1 994 29 is_stmt 0 view .LVU137
563 0006 1C4B ldr r3, .L60
564 0008 1D69 ldr r5, [r3, #16]
565 .loc 1 994 12 view .LVU138
566 000a 25F06845 bic r5, r5, #-402653184
567 000e 25F48015 bic r5, r5, #1048576
568 0012 6D0C lsrs r5, r5, #17
569 0014 6D04 lsls r5, r5, #17
570 .LVL28:
995:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick();
571 .loc 1 995 3 is_stmt 1 view .LVU139
572 .loc 1 995 24 is_stmt 0 view .LVU140
573 0016 FFF7FEFF bl HAL_GetTick
574 .LVL29:
575 .loc 1 995 24 view .LVU141
576 001a 0646 mov r6, r0
577 .LVL30:
996:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
997:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_BANK_EXCLUSIVE(Bank));
578 .loc 1 997 3 is_stmt 1 view .LVU142
998:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
999:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
1000:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1001:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (Bank == FLASH_BANK_2)
1002:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1003:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Get Error Flags */
1004:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** errorflag = (FLASH->SR2 & FLASH_FLAG_ALL_ERRORS_BANK2) | 0x80000000U;
1005:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Select bsyflag depending on Bank */
ARM GAS /tmp/ccCw6Rev.s page 30
1006:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bsyflag = FLASH_FLAG_QW_BANK2;
1007:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1008:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
1009:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1010:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(bsyflag))
579 .loc 1 1010 3 view .LVU143
580 .L48:
581 .loc 1 1010 8 view .LVU144
582 .loc 1 1010 9 is_stmt 0 view .LVU145
583 001c 164B ldr r3, .L60
584 001e 1B69 ldr r3, [r3, #16]
585 .loc 1 1010 8 view .LVU146
586 0020 13F0040F tst r3, #4
587 0024 0BD0 beq .L57
1011:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1012:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY)
588 .loc 1 1012 5 is_stmt 1 view .LVU147
589 .loc 1 1012 7 is_stmt 0 view .LVU148
590 0026 B4F1FF3F cmp r4, #-1
591 002a F7D0 beq .L48
1013:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1014:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
592 .loc 1 1014 7 is_stmt 1 view .LVU149
593 .loc 1 1014 12 is_stmt 0 view .LVU150
594 002c FFF7FEFF bl HAL_GetTick
595 .LVL31:
596 .loc 1 1014 26 view .LVU151
597 0030 801B subs r0, r0, r6
598 .loc 1 1014 9 view .LVU152
599 0032 A042 cmp r0, r4
600 0034 1BD8 bhi .L52
601 .loc 1 1014 50 discriminator 1 view .LVU153
602 0036 002C cmp r4, #0
603 0038 F0D1 bne .L48
1015:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1016:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_TIMEOUT;
604 .loc 1 1016 16 view .LVU154
605 003a 0320 movs r0, #3
606 003c 03E0 b .L49
607 .L57:
1017:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1018:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1019:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1020:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1021:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* In case of error reported in Flash SR1 or SR2 register */
1022:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if((errorflag & 0x7FFFFFFFU) != 0U)
608 .loc 1 1022 3 is_stmt 1 view .LVU155
609 .loc 1 1022 5 is_stmt 0 view .LVU156
610 003e 1DB9 cbnz r5, .L58
1023:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1024:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /*Save the error code*/
1025:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= errorflag;
1026:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1027:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear error programming flags */
1028:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(errorflag);
1029:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1030:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
ARM GAS /tmp/ccCw6Rev.s page 31
1031:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1032:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1033:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH End of Operation flag */
1034:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Bank == FLASH_BANK_1)
611 .loc 1 1034 3 is_stmt 1 view .LVU157
612 .loc 1 1034 5 is_stmt 0 view .LVU158
613 0040 012F cmp r7, #1
614 0042 09D0 beq .L59
1035:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1036:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG_BANK1(FLASH_FLAG_EOP_BANK1))
1037:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1038:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
1039:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_EOP_BANK1);
1040:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1041:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1042:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
1043:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
1044:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1045:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG_BANK2(FLASH_FLAG_EOP_BANK2))
1046:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1047:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
1048:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_EOP_BANK2);
1049:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1050:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1051:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
1052:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1053:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
615 .loc 1 1053 10 view .LVU159
616 0044 0020 movs r0, #0
617 .L49:
1054:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
618 .loc 1 1054 1 view .LVU160
619 0046 F8BD pop {r3, r4, r5, r6, r7, pc}
620 .LVL32:
621 .L58:
1025:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
622 .loc 1 1025 5 is_stmt 1 view .LVU161
1025:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
623 .loc 1 1025 22 is_stmt 0 view .LVU162
624 0048 0C4A ldr r2, .L60+4
625 004a 9369 ldr r3, [r2, #24]
626 004c 2B43 orrs r3, r3, r5
627 004e 9361 str r3, [r2, #24]
1028:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
628 .loc 1 1028 5 is_stmt 1 view .LVU163
629 0050 094B ldr r3, .L60
630 0052 5D61 str r5, [r3, #20]
1030:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
631 .loc 1 1030 5 view .LVU164
1030:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
632 .loc 1 1030 12 is_stmt 0 view .LVU165
633 0054 0120 movs r0, #1
634 0056 F6E7 b .L49
635 .L59:
1036:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
636 .loc 1 1036 5 is_stmt 1 view .LVU166
1036:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
ARM GAS /tmp/ccCw6Rev.s page 32
637 .loc 1 1036 9 is_stmt 0 view .LVU167
638 0058 074B ldr r3, .L60
639 005a 1B69 ldr r3, [r3, #16]
1036:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
640 .loc 1 1036 8 view .LVU168
641 005c 13F4803F tst r3, #65536
642 0060 07D0 beq .L55
1039:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
643 .loc 1 1039 7 is_stmt 1 view .LVU169
644 0062 054B ldr r3, .L60
645 0064 4FF48032 mov r2, #65536
646 0068 5A61 str r2, [r3, #20]
1053:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
647 .loc 1 1053 10 is_stmt 0 view .LVU170
648 006a 0020 movs r0, #0
649 006c EBE7 b .L49
650 .L52:
1016:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
651 .loc 1 1016 16 view .LVU171
652 006e 0320 movs r0, #3
653 0070 E9E7 b .L49
654 .L55:
1053:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
655 .loc 1 1053 10 view .LVU172
656 0072 0020 movs r0, #0
657 0074 E7E7 b .L49
658 .L61:
659 0076 00BF .align 2
660 .L60:
661 0078 00200052 .word 1375739904
662 007c 00000000 .word .LANCHOR0
663 .cfi_endproc
664 .LFE152:
666 .section .text.HAL_FLASH_Program,"ax",%progbits
667 .align 1
668 .global HAL_FLASH_Program
669 .syntax unified
670 .thumb
671 .thumb_func
672 .fpu fpv5-d16
674 HAL_FLASH_Program:
675 .LVL33:
676 .LFB141:
146:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
677 .loc 1 146 1 is_stmt 1 view -0
678 .cfi_startproc
679 @ args = 0, pretend = 0, frame = 0
680 @ frame_needed = 0, uses_anonymous_args = 0
146:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
681 .loc 1 146 1 is_stmt 0 view .LVU174
682 0000 38B5 push {r3, r4, r5, lr}
683 .LCFI2:
684 .cfi_def_cfa_offset 16
685 .cfi_offset 3, -16
686 .cfi_offset 4, -12
687 .cfi_offset 5, -8
688 .cfi_offset 14, -4
ARM GAS /tmp/ccCw6Rev.s page 33
147:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *dest_addr = (__IO uint32_t *)FlashAddress;
689 .loc 1 147 3 is_stmt 1 view .LVU175
148:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;
690 .loc 1 148 3 view .LVU176
691 .LVL34:
149:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bank;
692 .loc 1 149 3 view .LVU177
150:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;
693 .loc 1 150 3 view .LVU178
151:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
694 .loc 1 151 3 view .LVU179
154:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));
695 .loc 1 154 3 view .LVU180
155:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
696 .loc 1 155 3 view .LVU181
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
697 .loc 1 158 3 view .LVU182
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
698 .loc 1 158 3 view .LVU183
699 0002 1F4B ldr r3, .L70
700 0004 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2
701 0006 012B cmp r3, #1
702 0008 37D0 beq .L66
703 000a 0D46 mov r5, r1
704 000c 1446 mov r4, r2
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
705 .loc 1 158 3 discriminator 2 view .LVU184
706 000e 1C4B ldr r3, .L70
707 0010 0122 movs r2, #1
708 .LVL35:
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
709 .loc 1 158 3 is_stmt 0 discriminator 2 view .LVU185
710 0012 1A75 strb r2, [r3, #20]
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
711 .loc 1 158 3 is_stmt 1 discriminator 2 view .LVU186
163:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
712 .loc 1 163 3 discriminator 2 view .LVU187
163:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
713 .loc 1 163 6 is_stmt 0 discriminator 2 view .LVU188
714 0014 01F17841 add r1, r1, #-134217728
715 .LVL36:
163:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
716 .loc 1 163 5 discriminator 2 view .LVU189
717 0018 B1F5003F cmp r1, #131072
718 001c 01D3 bcc .L69
176:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
719 .loc 1 176 12 view .LVU190
720 001e 0120 movs r0, #1
721 .LVL37:
722 .L63:
292:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
723 .loc 1 292 1 view .LVU191
724 0020 38BD pop {r3, r4, r5, pc}
725 .LVL38:
726 .L69:
166:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
727 .loc 1 166 5 is_stmt 1 view .LVU192
ARM GAS /tmp/ccCw6Rev.s page 34
180:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
728 .loc 1 180 3 view .LVU193
180:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
729 .loc 1 180 20 is_stmt 0 view .LVU194
730 0022 0022 movs r2, #0
731 0024 9A61 str r2, [r3, #24]
183:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
732 .loc 1 183 3 is_stmt 1 view .LVU195
183:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
733 .loc 1 183 12 is_stmt 0 view .LVU196
734 0026 0121 movs r1, #1
735 0028 4CF25030 movw r0, #50000
736 .LVL39:
183:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
737 .loc 1 183 12 view .LVU197
738 002c FFF7FEFF bl FLASH_WaitForLastOperation
739 .LVL40:
185:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
740 .loc 1 185 3 is_stmt 1 view .LVU198
185:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
741 .loc 1 185 5 is_stmt 0 view .LVU199
742 0030 F8B9 cbnz r0, .L64
219:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
743 .loc 1 219 9 is_stmt 1 view .LVU200
744 0032 144A ldr r2, .L70+4
745 0034 D368 ldr r3, [r2, #12]
746 0036 43F00203 orr r3, r3, #2
747 003a D360 str r3, [r2, #12]
223:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
748 .loc 1 223 5 view .LVU201
749 .LBB18:
750 .LBI18:
751 .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.0.4
5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018
6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/
7:Drivers/CMSIS/Include/cmsis_gcc.h **** /*
8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
9:Drivers/CMSIS/Include/cmsis_gcc.h **** *
10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0
11:Drivers/CMSIS/Include/cmsis_gcc.h **** *
12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may
13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License.
14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at
15:Drivers/CMSIS/Include/cmsis_gcc.h **** *
16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0
17:Drivers/CMSIS/Include/cmsis_gcc.h **** *
18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software
19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT
20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
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 ****
ARM GAS /tmp/ccCw6Rev.s page 35
25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
27:Drivers/CMSIS/Include/cmsis_gcc.h ****
28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0)
37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
38:Drivers/CMSIS/Include/cmsis_gcc.h ****
39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline
45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE
47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline
48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE
50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN
53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__))
54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED
56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used))
57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK
59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak))
60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED
62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1)))
63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT
65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION
68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1)))
69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */
71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; };
75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
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"
ARM GAS /tmp/ccCw6Rev.s page 36
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 ****
117:Drivers/CMSIS/Include/cmsis_gcc.h ****
118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */
119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface
120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
122:Drivers/CMSIS/Include/cmsis_gcc.h **** */
123:Drivers/CMSIS/Include/cmsis_gcc.h ****
124:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts
126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
128:Drivers/CMSIS/Include/cmsis_gcc.h **** */
129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void)
130:Drivers/CMSIS/Include/cmsis_gcc.h **** {
131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
132:Drivers/CMSIS/Include/cmsis_gcc.h **** }
133:Drivers/CMSIS/Include/cmsis_gcc.h ****
134:Drivers/CMSIS/Include/cmsis_gcc.h ****
135:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
ARM GAS /tmp/ccCw6Rev.s page 37
139:Drivers/CMSIS/Include/cmsis_gcc.h **** */
140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void)
141:Drivers/CMSIS/Include/cmsis_gcc.h **** {
142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory");
143:Drivers/CMSIS/Include/cmsis_gcc.h **** }
144:Drivers/CMSIS/Include/cmsis_gcc.h ****
145:Drivers/CMSIS/Include/cmsis_gcc.h ****
146:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register
148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register.
149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value
150:Drivers/CMSIS/Include/cmsis_gcc.h **** */
151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
152:Drivers/CMSIS/Include/cmsis_gcc.h **** {
153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
154:Drivers/CMSIS/Include/cmsis_gcc.h ****
155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) );
156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
157:Drivers/CMSIS/Include/cmsis_gcc.h **** }
158:Drivers/CMSIS/Include/cmsis_gcc.h ****
159:Drivers/CMSIS/Include/cmsis_gcc.h ****
160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
161:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure)
163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode.
164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value
165:Drivers/CMSIS/Include/cmsis_gcc.h **** */
166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
167:Drivers/CMSIS/Include/cmsis_gcc.h **** {
168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
169:Drivers/CMSIS/Include/cmsis_gcc.h ****
170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
172:Drivers/CMSIS/Include/cmsis_gcc.h **** }
173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
174:Drivers/CMSIS/Include/cmsis_gcc.h ****
175:Drivers/CMSIS/Include/cmsis_gcc.h ****
176:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register
178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register.
179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
180:Drivers/CMSIS/Include/cmsis_gcc.h **** */
181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
182:Drivers/CMSIS/Include/cmsis_gcc.h **** {
183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
184:Drivers/CMSIS/Include/cmsis_gcc.h **** }
185:Drivers/CMSIS/Include/cmsis_gcc.h ****
186:Drivers/CMSIS/Include/cmsis_gcc.h ****
187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
188:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure)
190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state.
191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
192:Drivers/CMSIS/Include/cmsis_gcc.h **** */
193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
194:Drivers/CMSIS/Include/cmsis_gcc.h **** {
195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
ARM GAS /tmp/ccCw6Rev.s page 38
196:Drivers/CMSIS/Include/cmsis_gcc.h **** }
197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
198:Drivers/CMSIS/Include/cmsis_gcc.h ****
199:Drivers/CMSIS/Include/cmsis_gcc.h ****
200:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register
202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register.
203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value
204:Drivers/CMSIS/Include/cmsis_gcc.h **** */
205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
206:Drivers/CMSIS/Include/cmsis_gcc.h **** {
207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
208:Drivers/CMSIS/Include/cmsis_gcc.h ****
209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
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 **** /**
215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register
216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register.
217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value
218:Drivers/CMSIS/Include/cmsis_gcc.h **** */
219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void)
220:Drivers/CMSIS/Include/cmsis_gcc.h **** {
221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
222:Drivers/CMSIS/Include/cmsis_gcc.h ****
223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) );
224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
225:Drivers/CMSIS/Include/cmsis_gcc.h **** }
226:Drivers/CMSIS/Include/cmsis_gcc.h ****
227:Drivers/CMSIS/Include/cmsis_gcc.h ****
228:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register
230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register.
231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value
232:Drivers/CMSIS/Include/cmsis_gcc.h **** */
233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(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, xpsr" : "=r" (result) );
238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
239:Drivers/CMSIS/Include/cmsis_gcc.h **** }
240:Drivers/CMSIS/Include/cmsis_gcc.h ****
241:Drivers/CMSIS/Include/cmsis_gcc.h ****
242:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer
244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP).
245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
246:Drivers/CMSIS/Include/cmsis_gcc.h **** */
247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void)
248:Drivers/CMSIS/Include/cmsis_gcc.h **** {
249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
250:Drivers/CMSIS/Include/cmsis_gcc.h ****
251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) );
252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
ARM GAS /tmp/ccCw6Rev.s page 39
253:Drivers/CMSIS/Include/cmsis_gcc.h **** }
254:Drivers/CMSIS/Include/cmsis_gcc.h ****
255:Drivers/CMSIS/Include/cmsis_gcc.h ****
256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
257:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure)
259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s
260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
261:Drivers/CMSIS/Include/cmsis_gcc.h **** */
262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
263:Drivers/CMSIS/Include/cmsis_gcc.h **** {
264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
265:Drivers/CMSIS/Include/cmsis_gcc.h ****
266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) );
267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
268:Drivers/CMSIS/Include/cmsis_gcc.h **** }
269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
270:Drivers/CMSIS/Include/cmsis_gcc.h ****
271:Drivers/CMSIS/Include/cmsis_gcc.h ****
272:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer
274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP).
275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
276:Drivers/CMSIS/Include/cmsis_gcc.h **** */
277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
278:Drivers/CMSIS/Include/cmsis_gcc.h **** {
279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
280:Drivers/CMSIS/Include/cmsis_gcc.h **** }
281:Drivers/CMSIS/Include/cmsis_gcc.h ****
282:Drivers/CMSIS/Include/cmsis_gcc.h ****
283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
284:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure)
286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta
287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
288:Drivers/CMSIS/Include/cmsis_gcc.h **** */
289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
290:Drivers/CMSIS/Include/cmsis_gcc.h **** {
291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
292:Drivers/CMSIS/Include/cmsis_gcc.h **** }
293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
294:Drivers/CMSIS/Include/cmsis_gcc.h ****
295:Drivers/CMSIS/Include/cmsis_gcc.h ****
296:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer
298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP).
299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
300:Drivers/CMSIS/Include/cmsis_gcc.h **** */
301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void)
302:Drivers/CMSIS/Include/cmsis_gcc.h **** {
303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
304:Drivers/CMSIS/Include/cmsis_gcc.h ****
305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) );
306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
307:Drivers/CMSIS/Include/cmsis_gcc.h **** }
308:Drivers/CMSIS/Include/cmsis_gcc.h ****
309:Drivers/CMSIS/Include/cmsis_gcc.h ****
ARM GAS /tmp/ccCw6Rev.s page 40
310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
311:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure)
313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat
314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
315:Drivers/CMSIS/Include/cmsis_gcc.h **** */
316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
317:Drivers/CMSIS/Include/cmsis_gcc.h **** {
318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
319:Drivers/CMSIS/Include/cmsis_gcc.h ****
320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
322:Drivers/CMSIS/Include/cmsis_gcc.h **** }
323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
324:Drivers/CMSIS/Include/cmsis_gcc.h ****
325:Drivers/CMSIS/Include/cmsis_gcc.h ****
326:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer
328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP).
329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
330:Drivers/CMSIS/Include/cmsis_gcc.h **** */
331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
332:Drivers/CMSIS/Include/cmsis_gcc.h **** {
333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
334:Drivers/CMSIS/Include/cmsis_gcc.h **** }
335:Drivers/CMSIS/Include/cmsis_gcc.h ****
336:Drivers/CMSIS/Include/cmsis_gcc.h ****
337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
338:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure)
340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
342:Drivers/CMSIS/Include/cmsis_gcc.h **** */
343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
344:Drivers/CMSIS/Include/cmsis_gcc.h **** {
345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
346:Drivers/CMSIS/Include/cmsis_gcc.h **** }
347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
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 Get Stack Pointer (non-secure)
353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value
355:Drivers/CMSIS/Include/cmsis_gcc.h **** */
356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
357:Drivers/CMSIS/Include/cmsis_gcc.h **** {
358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
359:Drivers/CMSIS/Include/cmsis_gcc.h ****
360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
362:Drivers/CMSIS/Include/cmsis_gcc.h **** }
363:Drivers/CMSIS/Include/cmsis_gcc.h ****
364:Drivers/CMSIS/Include/cmsis_gcc.h ****
365:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure)
ARM GAS /tmp/ccCw6Rev.s page 41
367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set
369:Drivers/CMSIS/Include/cmsis_gcc.h **** */
370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
371:Drivers/CMSIS/Include/cmsis_gcc.h **** {
372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
373:Drivers/CMSIS/Include/cmsis_gcc.h **** }
374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
375:Drivers/CMSIS/Include/cmsis_gcc.h ****
376:Drivers/CMSIS/Include/cmsis_gcc.h ****
377:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask
379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register.
380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
381:Drivers/CMSIS/Include/cmsis_gcc.h **** */
382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
383:Drivers/CMSIS/Include/cmsis_gcc.h **** {
384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
385:Drivers/CMSIS/Include/cmsis_gcc.h ****
386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
388:Drivers/CMSIS/Include/cmsis_gcc.h **** }
389:Drivers/CMSIS/Include/cmsis_gcc.h ****
390:Drivers/CMSIS/Include/cmsis_gcc.h ****
391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
392:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure)
394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg
395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
396:Drivers/CMSIS/Include/cmsis_gcc.h **** */
397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
398:Drivers/CMSIS/Include/cmsis_gcc.h **** {
399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
400:Drivers/CMSIS/Include/cmsis_gcc.h ****
401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory");
402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
403:Drivers/CMSIS/Include/cmsis_gcc.h **** }
404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
405:Drivers/CMSIS/Include/cmsis_gcc.h ****
406:Drivers/CMSIS/Include/cmsis_gcc.h ****
407:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask
409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register.
410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
411:Drivers/CMSIS/Include/cmsis_gcc.h **** */
412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
413:Drivers/CMSIS/Include/cmsis_gcc.h **** {
414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
415:Drivers/CMSIS/Include/cmsis_gcc.h **** }
416:Drivers/CMSIS/Include/cmsis_gcc.h ****
417:Drivers/CMSIS/Include/cmsis_gcc.h ****
418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
419:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure)
421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
423:Drivers/CMSIS/Include/cmsis_gcc.h **** */
ARM GAS /tmp/ccCw6Rev.s page 42
424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
425:Drivers/CMSIS/Include/cmsis_gcc.h **** {
426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
427:Drivers/CMSIS/Include/cmsis_gcc.h **** }
428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
429:Drivers/CMSIS/Include/cmsis_gcc.h ****
430:Drivers/CMSIS/Include/cmsis_gcc.h ****
431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
434:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ
436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
438:Drivers/CMSIS/Include/cmsis_gcc.h **** */
439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void)
440:Drivers/CMSIS/Include/cmsis_gcc.h **** {
441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory");
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 **** /**
446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ
447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR.
448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
449:Drivers/CMSIS/Include/cmsis_gcc.h **** */
450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void)
451:Drivers/CMSIS/Include/cmsis_gcc.h **** {
452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory");
453:Drivers/CMSIS/Include/cmsis_gcc.h **** }
454:Drivers/CMSIS/Include/cmsis_gcc.h ****
455:Drivers/CMSIS/Include/cmsis_gcc.h ****
456:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority
458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register.
459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
460:Drivers/CMSIS/Include/cmsis_gcc.h **** */
461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
462:Drivers/CMSIS/Include/cmsis_gcc.h **** {
463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
464:Drivers/CMSIS/Include/cmsis_gcc.h ****
465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) );
466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
467:Drivers/CMSIS/Include/cmsis_gcc.h **** }
468:Drivers/CMSIS/Include/cmsis_gcc.h ****
469:Drivers/CMSIS/Include/cmsis_gcc.h ****
470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
471:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure)
473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state.
474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
475:Drivers/CMSIS/Include/cmsis_gcc.h **** */
476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
477:Drivers/CMSIS/Include/cmsis_gcc.h **** {
478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
479:Drivers/CMSIS/Include/cmsis_gcc.h ****
480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
ARM GAS /tmp/ccCw6Rev.s page 43
481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
482:Drivers/CMSIS/Include/cmsis_gcc.h **** }
483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
484:Drivers/CMSIS/Include/cmsis_gcc.h ****
485:Drivers/CMSIS/Include/cmsis_gcc.h ****
486:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority
488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register.
489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
490:Drivers/CMSIS/Include/cmsis_gcc.h **** */
491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
492:Drivers/CMSIS/Include/cmsis_gcc.h **** {
493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
494:Drivers/CMSIS/Include/cmsis_gcc.h **** }
495:Drivers/CMSIS/Include/cmsis_gcc.h ****
496:Drivers/CMSIS/Include/cmsis_gcc.h ****
497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
498:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure)
500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state.
501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
502:Drivers/CMSIS/Include/cmsis_gcc.h **** */
503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
504:Drivers/CMSIS/Include/cmsis_gcc.h **** {
505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
506:Drivers/CMSIS/Include/cmsis_gcc.h **** }
507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
508:Drivers/CMSIS/Include/cmsis_gcc.h ****
509:Drivers/CMSIS/Include/cmsis_gcc.h ****
510:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition
512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable
513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level.
514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
515:Drivers/CMSIS/Include/cmsis_gcc.h **** */
516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
517:Drivers/CMSIS/Include/cmsis_gcc.h **** {
518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
519:Drivers/CMSIS/Include/cmsis_gcc.h **** }
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 **** \brief Get Fault Mask
524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register.
525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value
526:Drivers/CMSIS/Include/cmsis_gcc.h **** */
527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
528:Drivers/CMSIS/Include/cmsis_gcc.h **** {
529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
530:Drivers/CMSIS/Include/cmsis_gcc.h ****
531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
533:Drivers/CMSIS/Include/cmsis_gcc.h **** }
534:Drivers/CMSIS/Include/cmsis_gcc.h ****
535:Drivers/CMSIS/Include/cmsis_gcc.h ****
536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
537:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
ARM GAS /tmp/ccCw6Rev.s page 44
538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure)
539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state.
540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value
541:Drivers/CMSIS/Include/cmsis_gcc.h **** */
542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
543:Drivers/CMSIS/Include/cmsis_gcc.h **** {
544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
545:Drivers/CMSIS/Include/cmsis_gcc.h ****
546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
548:Drivers/CMSIS/Include/cmsis_gcc.h **** }
549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
550:Drivers/CMSIS/Include/cmsis_gcc.h ****
551:Drivers/CMSIS/Include/cmsis_gcc.h ****
552:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask
554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register.
555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set
556:Drivers/CMSIS/Include/cmsis_gcc.h **** */
557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
558:Drivers/CMSIS/Include/cmsis_gcc.h **** {
559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
560:Drivers/CMSIS/Include/cmsis_gcc.h **** }
561:Drivers/CMSIS/Include/cmsis_gcc.h ****
562:Drivers/CMSIS/Include/cmsis_gcc.h ****
563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
564:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure)
566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state.
567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set
568:Drivers/CMSIS/Include/cmsis_gcc.h **** */
569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
570:Drivers/CMSIS/Include/cmsis_gcc.h **** {
571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
572:Drivers/CMSIS/Include/cmsis_gcc.h **** }
573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
574:Drivers/CMSIS/Include/cmsis_gcc.h ****
575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */
578:Drivers/CMSIS/Include/cmsis_gcc.h ****
579:Drivers/CMSIS/Include/cmsis_gcc.h ****
580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
582:Drivers/CMSIS/Include/cmsis_gcc.h ****
583:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit
585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure
587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
588:Drivers/CMSIS/Include/cmsis_gcc.h ****
589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value
591:Drivers/CMSIS/Include/cmsis_gcc.h **** */
592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
593:Drivers/CMSIS/Include/cmsis_gcc.h **** {
594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
ARM GAS /tmp/ccCw6Rev.s page 45
595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) );
601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
603:Drivers/CMSIS/Include/cmsis_gcc.h **** }
604:Drivers/CMSIS/Include/cmsis_gcc.h ****
605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
606:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure)
608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always.
610:Drivers/CMSIS/Include/cmsis_gcc.h ****
611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in
612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value
613:Drivers/CMSIS/Include/cmsis_gcc.h **** */
614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
615:Drivers/CMSIS/Include/cmsis_gcc.h **** {
616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) );
622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
624:Drivers/CMSIS/Include/cmsis_gcc.h **** }
625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
626:Drivers/CMSIS/Include/cmsis_gcc.h ****
627:Drivers/CMSIS/Include/cmsis_gcc.h ****
628:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit
630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure
632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
633:Drivers/CMSIS/Include/cmsis_gcc.h ****
634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set
636:Drivers/CMSIS/Include/cmsis_gcc.h **** */
637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
638:Drivers/CMSIS/Include/cmsis_gcc.h **** {
639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit;
643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
646:Drivers/CMSIS/Include/cmsis_gcc.h **** }
647:Drivers/CMSIS/Include/cmsis_gcc.h ****
648:Drivers/CMSIS/Include/cmsis_gcc.h ****
649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
650:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure)
ARM GAS /tmp/ccCw6Rev.s page 46
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 the write is silently ignored.
654:Drivers/CMSIS/Include/cmsis_gcc.h ****
655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s
656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set
657:Drivers/CMSIS/Include/cmsis_gcc.h **** */
658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
659:Drivers/CMSIS/Include/cmsis_gcc.h **** {
660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit;
663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
666:Drivers/CMSIS/Include/cmsis_gcc.h **** }
667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
668:Drivers/CMSIS/Include/cmsis_gcc.h ****
669:Drivers/CMSIS/Include/cmsis_gcc.h ****
670:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit
672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure
674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
675:Drivers/CMSIS/Include/cmsis_gcc.h ****
676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value
678:Drivers/CMSIS/Include/cmsis_gcc.h **** */
679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
680:Drivers/CMSIS/Include/cmsis_gcc.h **** {
681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) );
688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
690:Drivers/CMSIS/Include/cmsis_gcc.h **** }
691:Drivers/CMSIS/Include/cmsis_gcc.h ****
692:Drivers/CMSIS/Include/cmsis_gcc.h ****
693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
694:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure)
696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always.
698:Drivers/CMSIS/Include/cmsis_gcc.h ****
699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec
700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value
701:Drivers/CMSIS/Include/cmsis_gcc.h **** */
702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
703:Drivers/CMSIS/Include/cmsis_gcc.h **** {
704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
ARM GAS /tmp/ccCw6Rev.s page 47
709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result;
711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
712:Drivers/CMSIS/Include/cmsis_gcc.h **** }
713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
714:Drivers/CMSIS/Include/cmsis_gcc.h ****
715:Drivers/CMSIS/Include/cmsis_gcc.h ****
716:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit
718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure
720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
721:Drivers/CMSIS/Include/cmsis_gcc.h ****
722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set
724:Drivers/CMSIS/Include/cmsis_gcc.h **** */
725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
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 **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit;
731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
734:Drivers/CMSIS/Include/cmsis_gcc.h **** }
735:Drivers/CMSIS/Include/cmsis_gcc.h ****
736:Drivers/CMSIS/Include/cmsis_gcc.h ****
737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
738:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure)
740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored.
742:Drivers/CMSIS/Include/cmsis_gcc.h ****
743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu
744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set
745:Drivers/CMSIS/Include/cmsis_gcc.h **** */
746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
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 **** // without main extensions, the non-secure MSPLIM is RAZ/WI
750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit;
751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
754:Drivers/CMSIS/Include/cmsis_gcc.h **** }
755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
756:Drivers/CMSIS/Include/cmsis_gcc.h ****
757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */
759:Drivers/CMSIS/Include/cmsis_gcc.h ****
760:Drivers/CMSIS/Include/cmsis_gcc.h ****
761:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR
763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register.
764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value
765:Drivers/CMSIS/Include/cmsis_gcc.h **** */
ARM GAS /tmp/ccCw6Rev.s page 48
766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
767:Drivers/CMSIS/Include/cmsis_gcc.h **** {
768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr)
771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed
772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr();
775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
777:Drivers/CMSIS/Include/cmsis_gcc.h ****
778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U);
783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
784:Drivers/CMSIS/Include/cmsis_gcc.h **** }
785:Drivers/CMSIS/Include/cmsis_gcc.h ****
786:Drivers/CMSIS/Include/cmsis_gcc.h ****
787:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR
789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register.
790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set
791:Drivers/CMSIS/Include/cmsis_gcc.h **** */
792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
793:Drivers/CMSIS/Include/cmsis_gcc.h **** {
794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr)
797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed
798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr);
801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory");
803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr;
806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
807:Drivers/CMSIS/Include/cmsis_gcc.h **** }
808:Drivers/CMSIS/Include/cmsis_gcc.h ****
809:Drivers/CMSIS/Include/cmsis_gcc.h ****
810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */
811:Drivers/CMSIS/Include/cmsis_gcc.h ****
812:Drivers/CMSIS/Include/cmsis_gcc.h ****
813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */
814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions
816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
817:Drivers/CMSIS/Include/cmsis_gcc.h **** */
818:Drivers/CMSIS/Include/cmsis_gcc.h ****
819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2.
820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l"
821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */
822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__)
ARM GAS /tmp/ccCw6Rev.s page 49
823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r)
824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r)
825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r)
826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r)
828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r)
829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r)
830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
831:Drivers/CMSIS/Include/cmsis_gcc.h ****
832:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation
834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes.
835:Drivers/CMSIS/Include/cmsis_gcc.h **** */
836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop")
837:Drivers/CMSIS/Include/cmsis_gcc.h ****
838:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt
840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o
841:Drivers/CMSIS/Include/cmsis_gcc.h **** */
842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi")
843:Drivers/CMSIS/Include/cmsis_gcc.h ****
844:Drivers/CMSIS/Include/cmsis_gcc.h ****
845:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event
847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter
848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs.
849:Drivers/CMSIS/Include/cmsis_gcc.h **** */
850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe")
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 **** \brief Send Event
855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
856:Drivers/CMSIS/Include/cmsis_gcc.h **** */
857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev")
858:Drivers/CMSIS/Include/cmsis_gcc.h ****
859:Drivers/CMSIS/Include/cmsis_gcc.h ****
860:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier
862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor,
863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory,
864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed.
865:Drivers/CMSIS/Include/cmsis_gcc.h **** */
866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void)
752 .loc 2 866 27 view .LVU202
753 .LBB19:
867:Drivers/CMSIS/Include/cmsis_gcc.h **** {
868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory");
754 .loc 2 868 3 view .LVU203
755 .syntax unified
756 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
757 003c BFF36F8F isb 0xF
758 @ 0 "" 2
759 .thumb
760 .syntax unified
761 .LBE19:
762 .LBE18:
ARM GAS /tmp/ccCw6Rev.s page 50
224:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
763 .loc 1 224 5 view .LVU204
764 .LBB20:
765 .LBI20:
869:Drivers/CMSIS/Include/cmsis_gcc.h **** }
870:Drivers/CMSIS/Include/cmsis_gcc.h ****
871:Drivers/CMSIS/Include/cmsis_gcc.h ****
872:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier
874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier.
875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete.
876:Drivers/CMSIS/Include/cmsis_gcc.h **** */
877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void)
766 .loc 2 877 27 view .LVU205
767 .LBB21:
878:Drivers/CMSIS/Include/cmsis_gcc.h **** {
879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory");
768 .loc 2 879 3 view .LVU206
769 .syntax unified
770 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
771 0040 BFF34F8F dsb 0xF
772 @ 0 "" 2
773 .thumb
774 .syntax unified
775 .LBE21:
776 .LBE20:
151:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
777 .loc 1 151 11 is_stmt 0 view .LVU207
778 0044 0823 movs r3, #8
779 .LVL41:
780 .L65:
236:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
781 .loc 1 236 7 is_stmt 1 discriminator 1 view .LVU208
238:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
782 .loc 1 238 9 discriminator 1 view .LVU209
238:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
783 .loc 1 238 22 is_stmt 0 discriminator 1 view .LVU210
784 0046 54F8042B ldr r2, [r4], #4
785 .LVL42:
238:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
786 .loc 1 238 20 discriminator 1 view .LVU211
787 004a 45F8042B str r2, [r5], #4
788 .LVL43:
239:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** src_addr++;
789 .loc 1 239 9 is_stmt 1 discriminator 1 view .LVU212
240:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** row_index--;
790 .loc 1 240 9 discriminator 1 view .LVU213
241:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
791 .loc 1 241 9 discriminator 1 view .LVU214
241:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
792 .loc 1 241 18 is_stmt 0 discriminator 1 view .LVU215
793 004e 013B subs r3, r3, #1
794 .LVL44:
242:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
795 .loc 1 242 14 is_stmt 1 discriminator 1 view .LVU216
242:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
796 .loc 1 242 6 is_stmt 0 discriminator 1 view .LVU217
ARM GAS /tmp/ccCw6Rev.s page 51
797 0050 13F0FF03 ands r3, r3, #255
798 .LVL45:
242:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
799 .loc 1 242 6 discriminator 1 view .LVU218
800 0054 F7D1 bne .L65
245:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
801 .loc 1 245 5 is_stmt 1 view .LVU219
802 .LBB22:
803 .LBI22:
866:Drivers/CMSIS/Include/cmsis_gcc.h **** {
804 .loc 2 866 27 view .LVU220
805 .LBB23:
868:Drivers/CMSIS/Include/cmsis_gcc.h **** }
806 .loc 2 868 3 view .LVU221
807 .syntax unified
808 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
809 0056 BFF36F8F isb 0xF
810 @ 0 "" 2
811 .thumb
812 .syntax unified
813 .LBE23:
814 .LBE22:
246:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
815 .loc 1 246 5 view .LVU222
816 .LBB24:
817 .LBI24:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
818 .loc 2 877 27 view .LVU223
819 .LBB25:
820 .loc 2 879 3 view .LVU224
821 .syntax unified
822 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
823 005a BFF34F8F dsb 0xF
824 @ 0 "" 2
825 .thumb
826 .syntax unified
827 .LBE25:
828 .LBE24:
249:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
829 .loc 1 249 5 view .LVU225
249:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
830 .loc 1 249 14 is_stmt 0 view .LVU226
831 005e 0121 movs r1, #1
832 0060 4CF25030 movw r0, #50000
833 .LVL46:
249:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
834 .loc 1 249 14 view .LVU227
835 0064 FFF7FEFF bl FLASH_WaitForLastOperation
836 .LVL47:
283:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
837 .loc 1 283 7 is_stmt 1 view .LVU228
838 0068 064A ldr r2, .L70+4
839 006a D368 ldr r3, [r2, #12]
840 006c 23F00203 bic r3, r3, #2
841 0070 D360 str r3, [r2, #12]
842 .LVL48:
843 .L64:
ARM GAS /tmp/ccCw6Rev.s page 52
289:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
844 .loc 1 289 3 view .LVU229
289:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
845 .loc 1 289 3 view .LVU230
846 0072 034B ldr r3, .L70
847 0074 0022 movs r2, #0
848 0076 1A75 strb r2, [r3, #20]
289:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
849 .loc 1 289 3 view .LVU231
291:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
850 .loc 1 291 3 view .LVU232
291:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
851 .loc 1 291 10 is_stmt 0 view .LVU233
852 0078 D2E7 b .L63
853 .LVL49:
854 .L66:
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
855 .loc 1 158 3 view .LVU234
856 007a 0220 movs r0, #2
857 .LVL50:
158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
858 .loc 1 158 3 view .LVU235
859 007c D0E7 b .L63
860 .L71:
861 007e 00BF .align 2
862 .L70:
863 0080 00000000 .word .LANCHOR0
864 0084 00200052 .word 1375739904
865 .cfi_endproc
866 .LFE141:
868 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
869 .align 1
870 .global HAL_FLASH_Program_IT
871 .syntax unified
872 .thumb
873 .thumb_func
874 .fpu fpv5-d16
876 HAL_FLASH_Program_IT:
877 .LVL51:
878 .LFB142:
304:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
879 .loc 1 304 1 is_stmt 1 view -0
880 .cfi_startproc
881 @ args = 0, pretend = 0, frame = 0
882 @ frame_needed = 0, uses_anonymous_args = 0
305:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *dest_addr = (__IO uint32_t*)FlashAddress;
883 .loc 1 305 3 view .LVU237
306:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __IO uint32_t *src_addr = (__IO uint32_t*)DataAddress;
884 .loc 1 306 3 view .LVU238
307:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bank;
885 .loc 1 307 3 view .LVU239
308:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint8_t row_index = FLASH_NB_32BITWORD_IN_FLASHWORD;
886 .loc 1 308 3 view .LVU240
309:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
887 .loc 1 309 3 view .LVU241
312:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(FlashAddress));
888 .loc 1 312 3 view .LVU242
ARM GAS /tmp/ccCw6Rev.s page 53
313:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
889 .loc 1 313 3 view .LVU243
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
890 .loc 1 316 3 view .LVU244
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
891 .loc 1 316 3 view .LVU245
892 0000 1F4B ldr r3, .L83
893 0002 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2
894 0004 012B cmp r3, #1
895 0006 38D0 beq .L76
304:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
896 .loc 1 304 1 is_stmt 0 discriminator 2 view .LVU246
897 0008 70B5 push {r4, r5, r6, lr}
898 .LCFI3:
899 .cfi_def_cfa_offset 16
900 .cfi_offset 4, -16
901 .cfi_offset 5, -12
902 .cfi_offset 6, -8
903 .cfi_offset 14, -4
904 000a 0D46 mov r5, r1
905 000c 0E46 mov r6, r1
906 000e 1446 mov r4, r2
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
907 .loc 1 316 3 is_stmt 1 discriminator 2 view .LVU247
908 0010 1B4B ldr r3, .L83
909 0012 0122 movs r2, #1
910 .LVL52:
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
911 .loc 1 316 3 is_stmt 0 discriminator 2 view .LVU248
912 0014 1A75 strb r2, [r3, #20]
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
913 .loc 1 316 3 is_stmt 1 discriminator 2 view .LVU249
319:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
914 .loc 1 319 3 discriminator 2 view .LVU250
319:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
915 .loc 1 319 20 is_stmt 0 discriminator 2 view .LVU251
916 0016 0022 movs r2, #0
917 0018 9A61 str r2, [r3, #24]
324:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
918 .loc 1 324 3 is_stmt 1 discriminator 2 view .LVU252
324:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
919 .loc 1 324 6 is_stmt 0 discriminator 2 view .LVU253
920 001a 01F17843 add r3, r1, #-134217728
324:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* FLASH_OPTCR_PG_OTP */
921 .loc 1 324 5 discriminator 2 view .LVU254
922 001e B3F5003F cmp r3, #131072
923 0022 01D3 bcc .L82
337:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
924 .loc 1 337 12 view .LVU255
925 0024 0120 movs r0, #1
926 .LVL53:
927 .L73:
451:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
928 .loc 1 451 1 view .LVU256
929 0026 70BD pop {r4, r5, r6, pc}
930 .LVL54:
931 .L82:
ARM GAS /tmp/ccCw6Rev.s page 54
327:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
932 .loc 1 327 5 is_stmt 1 view .LVU257
341:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
933 .loc 1 341 3 view .LVU258
341:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
934 .loc 1 341 12 is_stmt 0 view .LVU259
935 0028 0121 movs r1, #1
936 .LVL55:
341:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
937 .loc 1 341 12 view .LVU260
938 002a 4CF25030 movw r0, #50000
939 .LVL56:
341:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
940 .loc 1 341 12 view .LVU261
941 002e FFF7FEFF bl FLASH_WaitForLastOperation
942 .LVL57:
343:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
943 .loc 1 343 3 is_stmt 1 view .LVU262
343:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
944 .loc 1 343 6 is_stmt 0 view .LVU263
945 0032 18B1 cbz r0, .L74
346:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
946 .loc 1 346 5 is_stmt 1 view .LVU264
346:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
947 .loc 1 346 5 view .LVU265
948 0034 124B ldr r3, .L83
949 0036 0022 movs r2, #0
950 0038 1A75 strb r2, [r3, #20]
346:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
951 .loc 1 346 5 view .LVU266
952 003a F4E7 b .L73
953 .L74:
350:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
954 .loc 1 350 5 view .LVU267
350:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
955 .loc 1 350 20 is_stmt 0 view .LVU268
956 003c 104B ldr r3, .L83
957 003e 1D61 str r5, [r3, #16]
399:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
958 .loc 1 399 5 is_stmt 1 view .LVU269
399:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
959 .loc 1 399 29 is_stmt 0 view .LVU270
960 0040 0322 movs r2, #3
961 0042 1A70 strb r2, [r3]
411:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
962 .loc 1 411 7 is_stmt 1 view .LVU271
963 0044 0F4B ldr r3, .L83+4
964 0046 DA68 ldr r2, [r3, #12]
965 0048 42F00202 orr r2, r2, #2
966 004c DA60 str r2, [r3, #12]
416:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH_IT_STRBERR_BANK1 | FLASH_IT_INCERR_BANK1 | FLASH_IT_OPERR_B
967 .loc 1 416 7 view .LVU272
968 004e DA68 ldr r2, [r3, #12]
969 0050 42F4DE02 orr r2, r2, #7274496
970 0054 DA60 str r2, [r3, #12]
424:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
971 .loc 1 424 5 view .LVU273
ARM GAS /tmp/ccCw6Rev.s page 55
972 .LBB26:
973 .LBI26:
866:Drivers/CMSIS/Include/cmsis_gcc.h **** {
974 .loc 2 866 27 view .LVU274
975 .LBB27:
868:Drivers/CMSIS/Include/cmsis_gcc.h **** }
976 .loc 2 868 3 view .LVU275
977 .syntax unified
978 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
979 0056 BFF36F8F isb 0xF
980 @ 0 "" 2
981 .thumb
982 .syntax unified
983 .LBE27:
984 .LBE26:
425:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
985 .loc 1 425 5 view .LVU276
986 .LBB28:
987 .LBI28:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
988 .loc 2 877 27 view .LVU277
989 .LBB29:
990 .loc 2 879 3 view .LVU278
991 .syntax unified
992 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
993 005a BFF34F8F dsb 0xF
994 @ 0 "" 2
995 .thumb
996 .syntax unified
997 .LBE29:
998 .LBE28:
309:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
999 .loc 1 309 11 is_stmt 0 view .LVU279
1000 005e 0823 movs r3, #8
1001 .LVL58:
1002 .L75:
437:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1003 .loc 1 437 7 is_stmt 1 discriminator 1 view .LVU280
439:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
1004 .loc 1 439 9 discriminator 1 view .LVU281
439:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
1005 .loc 1 439 22 is_stmt 0 discriminator 1 view .LVU282
1006 0060 54F8042B ldr r2, [r4], #4
1007 .LVL59:
439:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** dest_addr++;
1008 .loc 1 439 20 discriminator 1 view .LVU283
1009 0064 46F8042B str r2, [r6], #4
1010 .LVL60:
440:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** src_addr++;
1011 .loc 1 440 9 is_stmt 1 discriminator 1 view .LVU284
441:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** row_index--;
1012 .loc 1 441 9 discriminator 1 view .LVU285
442:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
1013 .loc 1 442 9 discriminator 1 view .LVU286
442:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** } while (row_index != 0U);
1014 .loc 1 442 18 is_stmt 0 discriminator 1 view .LVU287
1015 0068 013B subs r3, r3, #1
ARM GAS /tmp/ccCw6Rev.s page 56
1016 .LVL61:
443:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1017 .loc 1 443 15 is_stmt 1 discriminator 1 view .LVU288
443:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1018 .loc 1 443 7 is_stmt 0 discriminator 1 view .LVU289
1019 006a 13F0FF03 ands r3, r3, #255
1020 .LVL62:
443:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1021 .loc 1 443 7 discriminator 1 view .LVU290
1022 006e F7D1 bne .L75
446:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __DSB();
1023 .loc 1 446 5 is_stmt 1 view .LVU291
1024 .LBB30:
1025 .LBI30:
866:Drivers/CMSIS/Include/cmsis_gcc.h **** {
1026 .loc 2 866 27 view .LVU292
1027 .LBB31:
868:Drivers/CMSIS/Include/cmsis_gcc.h **** }
1028 .loc 2 868 3 view .LVU293
1029 .syntax unified
1030 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
1031 0070 BFF36F8F isb 0xF
1032 @ 0 "" 2
1033 .thumb
1034 .syntax unified
1035 .LBE31:
1036 .LBE30:
447:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1037 .loc 1 447 5 view .LVU294
1038 .LBB32:
1039 .LBI32:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
1040 .loc 2 877 27 view .LVU295
1041 .LBB33:
1042 .loc 2 879 3 view .LVU296
1043 .syntax unified
1044 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
1045 0074 BFF34F8F dsb 0xF
1046 @ 0 "" 2
880:Drivers/CMSIS/Include/cmsis_gcc.h **** }
1047 .loc 2 880 1 is_stmt 0 view .LVU297
1048 .thumb
1049 .syntax unified
1050 0078 D5E7 b .L73
1051 .LVL63:
1052 .L76:
1053 .LCFI4:
1054 .cfi_def_cfa_offset 0
1055 .cfi_restore 4
1056 .cfi_restore 5
1057 .cfi_restore 6
1058 .cfi_restore 14
1059 .loc 2 880 1 view .LVU298
1060 .LBE33:
1061 .LBE32:
316:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1062 .loc 1 316 3 view .LVU299
ARM GAS /tmp/ccCw6Rev.s page 57
1063 007a 0220 movs r0, #2
1064 .LVL64:
451:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1065 .loc 1 451 1 view .LVU300
1066 007c 7047 bx lr
1067 .L84:
1068 007e 00BF .align 2
1069 .L83:
1070 0080 00000000 .word .LANCHOR0
1071 0084 00200052 .word 1375739904
1072 .cfi_endproc
1073 .LFE142:
1075 .section .text.FLASH_OB_WaitForLastOperation,"ax",%progbits
1076 .align 1
1077 .global FLASH_OB_WaitForLastOperation
1078 .syntax unified
1079 .thumb
1080 .thumb_func
1081 .fpu fpv5-d16
1083 FLASH_OB_WaitForLastOperation:
1084 .LVL65:
1085 .LFB153:
1055:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1056:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
1057:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Wait for a FLASH Option Bytes change operation to complete.
1058:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param Timeout maximum flash operation timeout
1059:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status
1060:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
1061:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_OB_WaitForLastOperation(uint32_t Timeout)
1062:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1086 .loc 1 1062 1 is_stmt 1 view -0
1087 .cfi_startproc
1088 @ args = 0, pretend = 0, frame = 0
1089 @ frame_needed = 0, uses_anonymous_args = 0
1090 .loc 1 1062 1 is_stmt 0 view .LVU302
1091 0000 38B5 push {r3, r4, r5, lr}
1092 .LCFI5:
1093 .cfi_def_cfa_offset 16
1094 .cfi_offset 3, -16
1095 .cfi_offset 4, -12
1096 .cfi_offset 5, -8
1097 .cfi_offset 14, -4
1098 0002 0446 mov r4, r0
1063:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Get timeout */
1064:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick();
1099 .loc 1 1064 3 is_stmt 1 view .LVU303
1100 .loc 1 1064 24 is_stmt 0 view .LVU304
1101 0004 FFF7FEFF bl HAL_GetTick
1102 .LVL66:
1103 .loc 1 1064 24 view .LVU305
1104 0008 0546 mov r5, r0
1105 .LVL67:
1065:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1066:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for the FLASH Option Bytes change operation to complete by polling on OPT_BUSY flag to be
1067:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** while(READ_BIT(FLASH->OPTSR_CUR, FLASH_OPTSR_OPT_BUSY) != 0U)
1106 .loc 1 1067 3 is_stmt 1 view .LVU306
1107 .L87:
ARM GAS /tmp/ccCw6Rev.s page 58
1108 .loc 1 1067 8 view .LVU307
1109 .loc 1 1067 9 is_stmt 0 view .LVU308
1110 000a 134B ldr r3, .L96
1111 000c DB69 ldr r3, [r3, #28]
1112 .loc 1 1067 8 view .LVU309
1113 000e 13F0010F tst r3, #1
1114 0012 0BD0 beq .L94
1068:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1069:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY)
1115 .loc 1 1069 5 is_stmt 1 view .LVU310
1116 .loc 1 1069 7 is_stmt 0 view .LVU311
1117 0014 B4F1FF3F cmp r4, #-1
1118 0018 F7D0 beq .L87
1070:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1071:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1119 .loc 1 1071 7 is_stmt 1 view .LVU312
1120 .loc 1 1071 12 is_stmt 0 view .LVU313
1121 001a FFF7FEFF bl HAL_GetTick
1122 .LVL68:
1123 .loc 1 1071 26 view .LVU314
1124 001e 401B subs r0, r0, r5
1125 .loc 1 1071 9 view .LVU315
1126 0020 A042 cmp r0, r4
1127 0022 16D8 bhi .L90
1128 .loc 1 1071 50 discriminator 1 view .LVU316
1129 0024 002C cmp r4, #0
1130 0026 F0D1 bne .L87
1072:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1073:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_TIMEOUT;
1131 .loc 1 1073 16 view .LVU317
1132 0028 0320 movs r0, #3
1133 002a 05E0 b .L88
1134 .L94:
1074:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1075:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1076:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1077:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1078:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check option byte change error */
1079:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(READ_BIT(FLASH->OPTSR_CUR, FLASH_OPTSR_OPTCHANGEERR) != 0U)
1135 .loc 1 1079 3 is_stmt 1 view .LVU318
1136 .loc 1 1079 6 is_stmt 0 view .LVU319
1137 002c 0A4B ldr r3, .L96
1138 002e DB69 ldr r3, [r3, #28]
1139 .loc 1 1079 5 view .LVU320
1140 0030 13F0804F tst r3, #1073741824
1141 0034 01D1 bne .L95
1080:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1081:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Save the error code */
1082:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OB_CHANGE;
1083:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1084:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear the OB error flag */
1085:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** FLASH->OPTCCR |= FLASH_OPTCCR_CLR_OPTCHANGEERR;
1086:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1087:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
1088:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1089:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1090:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If there is no error flag set */
ARM GAS /tmp/ccCw6Rev.s page 59
1091:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
1142 .loc 1 1091 10 view .LVU321
1143 0036 0020 movs r0, #0
1144 .L88:
1092:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1145 .loc 1 1092 1 view .LVU322
1146 0038 38BD pop {r3, r4, r5, pc}
1147 .LVL69:
1148 .L95:
1082:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1149 .loc 1 1082 5 is_stmt 1 view .LVU323
1082:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1150 .loc 1 1082 22 is_stmt 0 view .LVU324
1151 003a 084A ldr r2, .L96+4
1152 003c 9369 ldr r3, [r2, #24]
1153 003e 43F08043 orr r3, r3, #1073741824
1154 0042 9361 str r3, [r2, #24]
1085:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1155 .loc 1 1085 5 is_stmt 1 view .LVU325
1085:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1156 .loc 1 1085 19 is_stmt 0 view .LVU326
1157 0044 044A ldr r2, .L96
1158 0046 536A ldr r3, [r2, #36]
1159 0048 43F08043 orr r3, r3, #1073741824
1160 004c 5362 str r3, [r2, #36]
1087:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1161 .loc 1 1087 5 is_stmt 1 view .LVU327
1087:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1162 .loc 1 1087 12 is_stmt 0 view .LVU328
1163 004e 0120 movs r0, #1
1164 0050 F2E7 b .L88
1165 .L90:
1073:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1166 .loc 1 1073 16 view .LVU329
1167 0052 0320 movs r0, #3
1168 0054 F0E7 b .L88
1169 .L97:
1170 0056 00BF .align 2
1171 .L96:
1172 0058 00200052 .word 1375739904
1173 005c 00000000 .word .LANCHOR0
1174 .cfi_endproc
1175 .LFE153:
1177 .section .text.FLASH_CRC_WaitForLastOperation,"ax",%progbits
1178 .align 1
1179 .global FLASH_CRC_WaitForLastOperation
1180 .syntax unified
1181 .thumb
1182 .thumb_func
1183 .fpu fpv5-d16
1185 FLASH_CRC_WaitForLastOperation:
1186 .LVL70:
1187 .LFB154:
1093:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1094:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /**
1095:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @brief Wait for a FLASH CRC computation to complete.
1096:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param Timeout maximum flash operation timeout
ARM GAS /tmp/ccCw6Rev.s page 60
1097:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @param Bank flash FLASH_BANK_1 or FLASH_BANK_2
1098:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status
1099:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** */
1100:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_CRC_WaitForLastOperation(uint32_t Timeout, uint32_t Bank)
1101:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1188 .loc 1 1101 1 is_stmt 1 view -0
1189 .cfi_startproc
1190 @ args = 0, pretend = 0, frame = 0
1191 @ frame_needed = 0, uses_anonymous_args = 0
1192 .loc 1 1101 1 is_stmt 0 view .LVU331
1193 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
1194 .LCFI6:
1195 .cfi_def_cfa_offset 24
1196 .cfi_offset 3, -24
1197 .cfi_offset 4, -20
1198 .cfi_offset 5, -16
1199 .cfi_offset 6, -12
1200 .cfi_offset 7, -8
1201 .cfi_offset 14, -4
1202 0002 0446 mov r4, r0
1203 0004 0E46 mov r6, r1
1102:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t bsyflag;
1204 .loc 1 1102 3 is_stmt 1 view .LVU332
1103:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick();
1205 .loc 1 1103 3 view .LVU333
1206 .loc 1 1103 24 is_stmt 0 view .LVU334
1207 0006 FFF7FEFF bl HAL_GetTick
1208 .LVL71:
1209 .loc 1 1103 24 view .LVU335
1210 000a 0746 mov r7, r0
1211 .LVL72:
1104:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1105:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** assert_param(IS_FLASH_BANK_EXCLUSIVE(Bank));
1212 .loc 1 1105 3 is_stmt 1 view .LVU336
1106:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1107:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Select bsyflag depending on Bank */
1108:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Bank == FLASH_BANK_1)
1213 .loc 1 1108 3 view .LVU337
1214 .loc 1 1108 5 is_stmt 0 view .LVU338
1215 000c 012E cmp r6, #1
1216 000e 11D0 beq .L99
1109:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1110:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bsyflag = FLASH_FLAG_CRC_BUSY_BANK1;
1111:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1112:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
1113:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1114:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** bsyflag = FLASH_FLAG_CRC_BUSY_BANK2;
1217 .loc 1 1114 13 view .LVU339
1218 0010 154D ldr r5, .L113
1219 .LVL73:
1220 .L101:
1115:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1116:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1117:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Wait for the FLASH CRC computation to complete by polling on CRC_BUSY flag to be reset */
1118:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(bsyflag))
1221 .loc 1 1118 8 is_stmt 1 view .LVU340
1222 .loc 1 1118 9 is_stmt 0 view .LVU341
ARM GAS /tmp/ccCw6Rev.s page 61
1223 0012 164B ldr r3, .L113+4
1224 0014 1B69 ldr r3, [r3, #16]
1225 .loc 1 1118 8 view .LVU342
1226 0016 35EA0303 bics r3, r5, r3
1227 001a 0DD1 bne .L110
1119:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1120:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY)
1228 .loc 1 1120 5 is_stmt 1 view .LVU343
1229 .loc 1 1120 7 is_stmt 0 view .LVU344
1230 001c B4F1FF3F cmp r4, #-1
1231 0020 F7D0 beq .L101
1121:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1122:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1232 .loc 1 1122 7 is_stmt 1 view .LVU345
1233 .loc 1 1122 12 is_stmt 0 view .LVU346
1234 0022 FFF7FEFF bl HAL_GetTick
1235 .LVL74:
1236 .loc 1 1122 26 view .LVU347
1237 0026 C01B subs r0, r0, r7
1238 .loc 1 1122 9 view .LVU348
1239 0028 A042 cmp r0, r4
1240 002a 1BD8 bhi .L105
1241 .loc 1 1122 50 discriminator 1 view .LVU349
1242 002c 002C cmp r4, #0
1243 002e F0D1 bne .L101
1123:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1124:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_TIMEOUT;
1244 .loc 1 1124 16 view .LVU350
1245 0030 0320 movs r0, #3
1246 0032 04E0 b .L102
1247 .LVL75:
1248 .L99:
1110:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1249 .loc 1 1110 13 view .LVU351
1250 0034 0825 movs r5, #8
1251 0036 ECE7 b .L101
1252 .LVL76:
1253 .L110:
1125:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1126:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1127:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1128:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1129:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Check FLASH CRC read error flag */
1130:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if(Bank == FLASH_BANK_1)
1254 .loc 1 1130 3 is_stmt 1 view .LVU352
1255 .loc 1 1130 5 is_stmt 0 view .LVU353
1256 0038 012E cmp r6, #1
1257 003a 01D0 beq .L111
1131:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1132:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG_BANK1(FLASH_FLAG_CRCRDERR_BANK1))
1133:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1134:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Save the error code */
1135:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_CRCRD_BANK1;
1136:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1137:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH CRC read error pending bit */
1138:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK1(FLASH_FLAG_CRCRDERR_BANK1);
1139:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
ARM GAS /tmp/ccCw6Rev.s page 62
1140:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
1141:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1142:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1143:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #if defined (DUAL_BANK)
1144:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** else
1145:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1146:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG_BANK2(FLASH_FLAG_CRCRDERR_BANK2))
1147:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1148:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Save the error code */
1149:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_CRCRD_BANK2;
1150:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1151:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* Clear FLASH CRC read error pending bit */
1152:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG_BANK2(FLASH_FLAG_CRCRDERR_BANK2);
1153:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1154:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_ERROR;
1155:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1156:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1157:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** #endif /* DUAL_BANK */
1158:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1159:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** /* If there is no error flag set */
1160:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** return HAL_OK;
1258 .loc 1 1160 10 view .LVU354
1259 003c 0020 movs r0, #0
1260 .L102:
1161:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1261 .loc 1 1161 1 view .LVU355
1262 003e F8BD pop {r3, r4, r5, r6, r7, pc}
1263 .LVL77:
1264 .L111:
1132:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1265 .loc 1 1132 5 is_stmt 1 view .LVU356
1132:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1266 .loc 1 1132 9 is_stmt 0 view .LVU357
1267 0040 0A4B ldr r3, .L113+4
1268 0042 1B69 ldr r3, [r3, #16]
1132:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1269 .loc 1 1132 8 view .LVU358
1270 0044 13F0805F tst r3, #268435456
1271 0048 01D1 bne .L112
1160:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1272 .loc 1 1160 10 view .LVU359
1273 004a 0020 movs r0, #0
1274 004c F7E7 b .L102
1275 .L112:
1135:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1276 .loc 1 1135 7 is_stmt 1 view .LVU360
1135:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1277 .loc 1 1135 24 is_stmt 0 view .LVU361
1278 004e 084A ldr r2, .L113+8
1279 0050 9369 ldr r3, [r2, #24]
1280 0052 43F08053 orr r3, r3, #268435456
1281 0056 9361 str r3, [r2, #24]
1138:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1282 .loc 1 1138 7 is_stmt 1 view .LVU362
1283 0058 044B ldr r3, .L113+4
1284 005a 4FF08052 mov r2, #268435456
1285 005e 5A61 str r2, [r3, #20]
ARM GAS /tmp/ccCw6Rev.s page 63
1140:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1286 .loc 1 1140 7 view .LVU363
1140:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1287 .loc 1 1140 14 is_stmt 0 view .LVU364
1288 0060 0120 movs r0, #1
1289 0062 ECE7 b .L102
1290 .L105:
1124:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1291 .loc 1 1124 16 view .LVU365
1292 0064 0320 movs r0, #3
1293 0066 EAE7 b .L102
1294 .L114:
1295 .align 2
1296 .L113:
1297 0068 08000080 .word -2147483640
1298 006c 00200052 .word 1375739904
1299 0070 00000000 .word .LANCHOR0
1300 .cfi_endproc
1301 .LFE154:
1303 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1304 .align 1
1305 .global HAL_FLASH_OB_Launch
1306 .syntax unified
1307 .thumb
1308 .thumb_func
1309 .fpu fpv5-d16
1311 HAL_FLASH_OB_Launch:
1312 .LFB150:
885:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** HAL_StatusTypeDef status;
1313 .loc 1 885 1 is_stmt 1 view -0
1314 .cfi_startproc
1315 @ args = 0, pretend = 0, frame = 0
1316 @ frame_needed = 0, uses_anonymous_args = 0
1317 0000 08B5 push {r3, lr}
1318 .LCFI7:
1319 .cfi_def_cfa_offset 8
1320 .cfi_offset 3, -8
1321 .cfi_offset 14, -4
886:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1322 .loc 1 886 3 view .LVU367
889:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1323 .loc 1 889 3 view .LVU368
889:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1324 .loc 1 889 7 is_stmt 0 view .LVU369
1325 0002 0121 movs r1, #1
1326 0004 4CF25030 movw r0, #50000
1327 0008 FFF7FEFF bl FLASH_CRC_WaitForLastOperation
1328 .LVL78:
889:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1329 .loc 1 889 6 view .LVU370
1330 000c 08B1 cbz r0, .L119
891:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1331 .loc 1 891 12 view .LVU371
1332 000e 0120 movs r0, #1
1333 .L116:
1334 .LVL79:
913:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
ARM GAS /tmp/ccCw6Rev.s page 64
1335 .loc 1 913 3 is_stmt 1 view .LVU372
914:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1336 .loc 1 914 1 is_stmt 0 view .LVU373
1337 0010 08BD pop {r3, pc}
1338 .LVL80:
1339 .L119:
901:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1340 .loc 1 901 5 is_stmt 1 view .LVU374
904:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** {
1341 .loc 1 904 3 view .LVU375
907:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c ****
1342 .loc 1 907 5 view .LVU376
1343 0012 054A ldr r2, .L120
1344 0014 9369 ldr r3, [r2, #24]
1345 0016 43F00203 orr r3, r3, #2
1346 001a 9361 str r3, [r2, #24]
910:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1347 .loc 1 910 5 view .LVU377
910:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1348 .loc 1 910 14 is_stmt 0 view .LVU378
1349 001c 4CF25030 movw r0, #50000
1350 0020 FFF7FEFF bl FLASH_OB_WaitForLastOperation
1351 .LVL81:
910:Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c **** }
1352 .loc 1 910 14 view .LVU379
1353 0024 F4E7 b .L116
1354 .L121:
1355 0026 00BF .align 2
1356 .L120:
1357 0028 00200052 .word 1375739904
1358 .cfi_endproc
1359 .LFE150:
1361 .global pFlash
1362 .section .bss.pFlash,"aw",%nobits
1363 .align 2
1364 .set .LANCHOR0,. + 0
1367 pFlash:
1368 0000 00000000 .space 28
1368 00000000
1368 00000000
1368 00000000
1368 00000000
1369 .text
1370 .Letext0:
1371 .file 3 "/usr/arm-none-eabi/include/machine/_default_types.h"
1372 .file 4 "/usr/arm-none-eabi/include/sys/_stdint.h"
1373 .file 5 "Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h750xx.h"
1374 .file 6 "Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7xx.h"
1375 .file 7 "Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_def.h"
1376 .file 8 "Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash.h"
1377 .file 9 "Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h"
1378 .file 10 "Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash_ex.h"
ARM GAS /tmp/ccCw6Rev.s page 65
DEFINED SYMBOLS
*ABS*:0000000000000000 stm32h7xx_hal_flash.c
/tmp/ccCw6Rev.s:17 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t
/tmp/ccCw6Rev.s:25 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback
/tmp/ccCw6Rev.s:41 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t
/tmp/ccCw6Rev.s:48 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback
/tmp/ccCw6Rev.s:63 .text.HAL_FLASH_IRQHandler:0000000000000000 $t
/tmp/ccCw6Rev.s:70 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler
/tmp/ccCw6Rev.s:309 .text.HAL_FLASH_IRQHandler:00000000000000f8 $d
/tmp/ccCw6Rev.s:315 .text.HAL_FLASH_Unlock:0000000000000000 $t
/tmp/ccCw6Rev.s:322 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock
/tmp/ccCw6Rev.s:363 .text.HAL_FLASH_Unlock:000000000000002c $d
/tmp/ccCw6Rev.s:369 .text.HAL_FLASH_Lock:0000000000000000 $t
/tmp/ccCw6Rev.s:376 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock
/tmp/ccCw6Rev.s:405 .text.HAL_FLASH_Lock:000000000000001c $d
/tmp/ccCw6Rev.s:410 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t
/tmp/ccCw6Rev.s:417 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock
/tmp/ccCw6Rev.s:458 .text.HAL_FLASH_OB_Unlock:000000000000002c $d
/tmp/ccCw6Rev.s:464 .text.HAL_FLASH_OB_Lock:0000000000000000 $t
/tmp/ccCw6Rev.s:471 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock
/tmp/ccCw6Rev.s:500 .text.HAL_FLASH_OB_Lock:000000000000001c $d
/tmp/ccCw6Rev.s:505 .text.HAL_FLASH_GetError:0000000000000000 $t
/tmp/ccCw6Rev.s:512 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError
/tmp/ccCw6Rev.s:528 .text.HAL_FLASH_GetError:0000000000000008 $d
/tmp/ccCw6Rev.s:533 .text.FLASH_WaitForLastOperation:0000000000000000 $t
/tmp/ccCw6Rev.s:540 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation
/tmp/ccCw6Rev.s:661 .text.FLASH_WaitForLastOperation:0000000000000078 $d
/tmp/ccCw6Rev.s:667 .text.HAL_FLASH_Program:0000000000000000 $t
/tmp/ccCw6Rev.s:674 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program
/tmp/ccCw6Rev.s:863 .text.HAL_FLASH_Program:0000000000000080 $d
/tmp/ccCw6Rev.s:869 .text.HAL_FLASH_Program_IT:0000000000000000 $t
/tmp/ccCw6Rev.s:876 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT
/tmp/ccCw6Rev.s:1070 .text.HAL_FLASH_Program_IT:0000000000000080 $d
/tmp/ccCw6Rev.s:1076 .text.FLASH_OB_WaitForLastOperation:0000000000000000 $t
/tmp/ccCw6Rev.s:1083 .text.FLASH_OB_WaitForLastOperation:0000000000000000 FLASH_OB_WaitForLastOperation
/tmp/ccCw6Rev.s:1172 .text.FLASH_OB_WaitForLastOperation:0000000000000058 $d
/tmp/ccCw6Rev.s:1178 .text.FLASH_CRC_WaitForLastOperation:0000000000000000 $t
/tmp/ccCw6Rev.s:1185 .text.FLASH_CRC_WaitForLastOperation:0000000000000000 FLASH_CRC_WaitForLastOperation
/tmp/ccCw6Rev.s:1297 .text.FLASH_CRC_WaitForLastOperation:0000000000000068 $d
/tmp/ccCw6Rev.s:1304 .text.HAL_FLASH_OB_Launch:0000000000000000 $t
/tmp/ccCw6Rev.s:1311 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch
/tmp/ccCw6Rev.s:1357 .text.HAL_FLASH_OB_Launch:0000000000000028 $d
/tmp/ccCw6Rev.s:1367 .bss.pFlash:0000000000000000 pFlash
/tmp/ccCw6Rev.s:1363 .bss.pFlash:0000000000000000 $d
UNDEFINED SYMBOLS
FLASH_Erase_Sector
HAL_GetTick