Files
RadioPhotonic_PCB_software/build/stm32f7xx_hal_flash.lst
2025-03-03 16:03:02 +03:00

3445 lines
214 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/cc67Igjp.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 "stm32f7xx_hal_flash.c"
13 .text
14 .Ltext0:
15 .cfi_sections .debug_frame
16 .section .text.FLASH_Program_DoubleWord,"ax",%progbits
17 .align 1
18 .arch armv7e-m
19 .syntax unified
20 .thumb
21 .thumb_func
22 .fpu fpv5-d16
24 FLASH_Program_DoubleWord:
25 .LVL0:
26 .LFB153:
27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c"
1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ******************************************************************************
3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @file stm32f7xx_hal_flash.c
4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @author MCD Application Team
5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH HAL module driver.
6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This file provides firmware functions to manage the following
7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * functionalities of the internal FLASH memory:
8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Program operations functions
9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Memory Control functions
10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Peripheral Errors functions
11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim
13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ==============================================================================
14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### FLASH peripheral features #####
15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ==============================================================================
16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses
18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations
19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** and the read and write protection mechanisms.
20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction
22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** prefetch and cache lines.
23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The FLASH main features are:
25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Flash memory read operations
26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Flash memory program/erase operations
27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Read / write protections
28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Prefetch on I-Code
29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) 64 cache lines of 128 bits on I-Code
30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) 8 cache lines of 128 bits on D-Code
31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/cc67Igjp.s page 2
32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### How to use this driver #####
33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ==============================================================================
34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH
36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** memory of all STM32F7xx devices.
37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (#) FLASH Memory IO Programming functions:
39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and
40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_Lock() functions
41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word
42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) There Two modes of programming :
43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function
44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function
45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (#) Interrupts and flags management functions :
47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler()
48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status
49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode()
50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing
52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** to handle the following operations:
53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Set the latency
54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer
55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache
56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache
57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts
58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Monitor the FLASH flags status
59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) For any Flash memory program operation (erase or program), the CPU clock frequency
61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (HCLK) must be at least 1MHz.
62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) The contents of the Flash memory are not guaranteed if a device reset occurs during
63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** a Flash memory operation.
64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) Any attempt to read the Flash memory while it is being written or erased, causes the
65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** bus to stall. Read operations are processed correctly once the program operation has
66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** completed. This means that code or data fetches cannot be performed while a write/erase
67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** operation is ongoing.
68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim
70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ******************************************************************************
71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @attention
72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * Copyright (c) 2017 STMicroelectronics.
74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * All rights reserved.
75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in
77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the root directory of this software component.
78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS.
79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ******************************************************************************
80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/
83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #include "stm32f7xx_hal.h"
84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup STM32F7xx_HAL_Driver
86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/cc67Igjp.s page 3
89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH FLASH
90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH HAL module driver
91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED
95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/
97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/
98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants
99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #define SECTOR_MASK ((uint32_t)0xFFFFFF07U)
102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE ((uint32_t)50000U)/* 50 s */
103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/
107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/
108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables
109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */
112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash;
113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/
118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions
119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program operations */
122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data);
123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data);
124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data);
125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data);
126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_SetErrorCode(void);
127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Exported functions --------------------------------------------------------*/
134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions
135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions
139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Programming operation functions
140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim
142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Programming operation functions #####
144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
ARM GAS /tmp/cc67Igjp.s page 4
146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH
147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** program operations.
148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim
150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address
155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program
157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed
159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status
161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Locked */
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_LOCK(&pFlash);
168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(status == HAL_OK)
176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch(TypeProgram)
178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_BYTE :
180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/
182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data);
183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_HALFWORD :
187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/
189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data);
190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_WORD :
194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/
196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data);
197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_DOUBLEWORD :
201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/
ARM GAS /tmp/cc67Igjp.s page 5
203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default :
207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */
210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG);
214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Unlocked */
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status;
220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena
224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address.
225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program
226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed
228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Locked */
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_LOCK(&pFlash);
237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */
242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP);
243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Enable Error source interrupt */
245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR);
246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear pending flags (if any) */
248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\
249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR);
250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM;
252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address;
253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch(TypeProgram)
255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_BYTE :
257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/
259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data);
ARM GAS /tmp/cc67Igjp.s page 6
260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_HALFWORD :
264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/
266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data);
267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_WORD :
271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/
273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data);
274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_DOUBLEWORD :
278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/
280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data);
281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default :
284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status;
287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief This function handles FLASH interrupt request.
291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void)
294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t temp = 0;
296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG);
299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the erase operation is completed, disable the SER Bit */
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_SER);
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* if the erase operation is completed, disable the MER Bit */
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_MER_BIT);
306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH End of Operation flag */
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)
309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch (pFlash.ProcedureOnGoing)
314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_SECTERASE :
316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
ARM GAS /tmp/cc67Igjp.s page 7
317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Nb of sector to erased can be decreased */
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.NbSectorsToErase--;
319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check if there are still sectors to erase */
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0)
322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Sector;
324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */
325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(temp);
326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Increment sector number */
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = ++pFlash.Sector;
329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** else
332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* No more sectors to Erase, user callback can be called.*/
334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Reset Sector and stop Erase sectors procedure */
335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = temp = 0xFFFFFFFFU;
336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(temp);
338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Sector Erase procedure is completed */
339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_MASSERASE :
345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MassErase ended. Return the selected bank : in this product we don't have Banks */
347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(0);
349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MAss Erase procedure is completed */
350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_PROGRAM :
355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program ended. Return the selected address*/
357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address);
359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */
360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default :
364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH operation error flags */
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)
370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch (pFlash.ProcedureOnGoing)
372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_SECTERASE :
ARM GAS /tmp/cc67Igjp.s page 8
374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* return the faulty sector */
376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Sector;
377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_MASSERASE :
381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* No return in case of Mass Erase */
383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = 0;
384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_PROGRAM :
387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*return the faulty address*/
389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Address;
390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default :
393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Save the Error code*/
396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_SetErrorCode();
397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH error interrupt user callback */
399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(temp);
400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Stop the procedure ongoing */
402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE;
403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE)
406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */
408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP);
409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Disable Error source interrupt */
411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR);
412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Unlocked */
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash);
415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback
421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure
422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that
423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * all the selected sectors have been erased)
424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Program : Address which was selected for data program
425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Mass Erase : No return value expected
426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
ARM GAS /tmp/cc67Igjp.s page 9
431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** UNUSED(ReturnValue);
432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file
434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH operation error interrupt callback
439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure
440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that
441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * all the selected sectors have been erased)
442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Program : Address which was selected for data program
443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Mass Erase : No return value expected
444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** UNUSED(ReturnValue);
450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file
452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions
460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief management functions
461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim
463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Peripheral Control functions #####
465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH
468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** memory operations.
469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim
471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Unlock the FLASH control register access
476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void)
479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Authorize the FLASH Registers access */
485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1);
486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/cc67Igjp.s page 10
488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Verify Flash is unlocked */
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = HAL_ERROR;
492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status;
496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Locks the FLASH control register access
500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void)
503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK;
506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK;
508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access.
512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)
517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Authorizes the Option Byte register programming */
519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1;
520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2;
521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** else
523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR;
525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK;
528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access.
532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK;
538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK;
540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Launch the option byte loading.
544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
ARM GAS /tmp/cc67Igjp.s page 11
545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTSTRT;
550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */
552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE));
553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions
560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Peripheral Errors functions
561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim
563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Peripheral Errors functions #####
565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ===============================================================================
566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..]
567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral.
568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim
570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{
571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Get the specific FLASH error flag.
575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be:
576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_ERS: FLASH Erasing Sequence error flag
577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_PGP: FLASH Programming Parallelism error flag
578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_PGA: FLASH Programming Alignment error flag
579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_WRP: FLASH Write protected error flag
580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_OPERATION: FLASH operation Error flag
581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void)
583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return pFlash.ErrorCode;
585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @}
589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete.
593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout
594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status
595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0;
599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear Error Code */
601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
ARM GAS /tmp/cc67Igjp.s page 12
602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error
605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** flag will be set */
606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Get tick */
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** tickstart = HAL_GetTick();
608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET)
610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY)
612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_TIMEOUT;
616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)
621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Save the error code*/
623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_SetErrorCode();
624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR;
625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH End of Operation flag */
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)
629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */
631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If there is an error flag set */
635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK;
636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program a double word (64-bit) at a specified address.
641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from
642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.7V to 3.6V and an External Vpp is present.
643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously,
645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one.
646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed.
649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data)
652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
28 .loc 1 652 1 view -0
29 .cfi_startproc
30 @ args = 0, pretend = 0, frame = 0
31 @ frame_needed = 0, uses_anonymous_args = 0
32 @ link register save eliminated.
33 .loc 1 652 1 is_stmt 0 view .LVU1
ARM GAS /tmp/cc67Igjp.s page 13
34 0000 10B4 push {r4}
35 .LCFI0:
36 .cfi_def_cfa_offset 4
37 .cfi_offset 4, -4
653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address));
38 .loc 1 654 3 is_stmt 1 view .LVU2
655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */
657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK;
39 .loc 1 657 3 view .LVU3
40 .loc 1 657 13 is_stmt 0 view .LVU4
41 0002 0B49 ldr r1, .L3
42 0004 0C69 ldr r4, [r1, #16]
43 0006 24F44074 bic r4, r4, #768
44 000a 0C61 str r4, [r1, #16]
658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD;
45 .loc 1 658 3 is_stmt 1 view .LVU5
46 .loc 1 658 13 is_stmt 0 view .LVU6
47 000c 0C69 ldr r4, [r1, #16]
48 000e 44F44074 orr r4, r4, #768
49 0012 0C61 str r4, [r1, #16]
659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
50 .loc 1 659 3 is_stmt 1 view .LVU7
51 .loc 1 659 13 is_stmt 0 view .LVU8
52 0014 0C69 ldr r4, [r1, #16]
53 0016 44F00104 orr r4, r4, #1
54 001a 0C61 str r4, [r1, #16]
660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program first word */
662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)Address = (uint32_t)Data;
55 .loc 1 662 3 is_stmt 1 view .LVU9
56 .loc 1 662 28 is_stmt 0 view .LVU10
57 001c 0260 str r2, [r0]
663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order
664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (independently of compiler optimization behavior) */
665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __ISB();
58 .loc 1 665 3 is_stmt 1 view .LVU11
59 .LBB12:
60 .LBI12:
61 .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
ARM GAS /tmp/cc67Igjp.s page 14
17:Drivers/CMSIS/Include/cmsis_gcc.h **** *
18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software
19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT
20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and
22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License.
23:Drivers/CMSIS/Include/cmsis_gcc.h **** */
24:Drivers/CMSIS/Include/cmsis_gcc.h ****
25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
27:Drivers/CMSIS/Include/cmsis_gcc.h ****
28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0)
37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
38:Drivers/CMSIS/Include/cmsis_gcc.h ****
39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline
45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE
47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline
48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE
50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN
53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__))
54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED
56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used))
57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK
59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak))
60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED
62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1)))
63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT
65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION
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"
ARM GAS /tmp/cc67Igjp.s page 15
74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; };
75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE
79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))-
85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ
87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add
93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE
95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))-
101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ
103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add
109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED
111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x)))
112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT
114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict
115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
116:Drivers/CMSIS/Include/cmsis_gcc.h ****
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 **** {
ARM GAS /tmp/cc67Igjp.s page 16
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.
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))
ARM GAS /tmp/cc67Igjp.s page 17
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");
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).
ARM GAS /tmp/cc67Igjp.s page 18
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);
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)
ARM GAS /tmp/cc67Igjp.s page 19
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 ****
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;
ARM GAS /tmp/cc67Igjp.s page 20
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)
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 **** }
ARM GAS /tmp/cc67Igjp.s page 21
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 **** */
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)
ARM GAS /tmp/cc67Igjp.s page 22
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) );
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;
ARM GAS /tmp/cc67Igjp.s page 23
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 **** /**
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
ARM GAS /tmp/cc67Igjp.s page 24
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)) && \
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
ARM GAS /tmp/cc67Igjp.s page 25
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)
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
ARM GAS /tmp/cc67Igjp.s page 26
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;
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)) || \
ARM GAS /tmp/cc67Igjp.s page 27
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 **** */
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
ARM GAS /tmp/cc67Igjp.s page 28
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__)
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)
62 .loc 2 866 27 view .LVU12
63 .LBB13:
867:Drivers/CMSIS/Include/cmsis_gcc.h **** {
868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory");
64 .loc 2 868 3 view .LVU13
ARM GAS /tmp/cc67Igjp.s page 29
65 .syntax unified
66 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
67 001e BFF36F8F isb 0xF
68 @ 0 "" 2
69 .thumb
70 .syntax unified
71 .LBE13:
72 .LBE12:
666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program second word */
668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32);
73 .loc 1 668 3 view .LVU14
74 .loc 1 668 32 is_stmt 0 view .LVU15
75 0022 4360 str r3, [r0, #4]
669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation
671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/
672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB();
76 .loc 1 672 3 is_stmt 1 view .LVU16
77 .LBB14:
78 .LBI14:
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)
79 .loc 2 877 27 view .LVU17
80 .LBB15:
878:Drivers/CMSIS/Include/cmsis_gcc.h **** {
879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory");
81 .loc 2 879 3 view .LVU18
82 .syntax unified
83 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
84 0024 BFF34F8F dsb 0xF
85 @ 0 "" 2
86 .thumb
87 .syntax unified
88 .LBE15:
89 .LBE14:
673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
90 .loc 1 673 1 is_stmt 0 view .LVU19
91 0028 5DF8044B ldr r4, [sp], #4
92 .LCFI1:
93 .cfi_restore 4
94 .cfi_def_cfa_offset 0
95 002c 7047 bx lr
96 .L4:
97 002e 00BF .align 2
98 .L3:
99 0030 003C0240 .word 1073888256
100 .cfi_endproc
101 .LFE153:
103 .section .text.FLASH_Program_Word,"ax",%progbits
ARM GAS /tmp/cc67Igjp.s page 30
104 .align 1
105 .syntax unified
106 .thumb
107 .thumb_func
108 .fpu fpv5-d16
110 FLASH_Program_Word:
111 .LVL1:
112 .LFB154:
674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address.
678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from
679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.7V to 3.3V.
680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously,
682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one.
683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed.
686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data)
689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
113 .loc 1 689 1 is_stmt 1 view -0
114 .cfi_startproc
115 @ args = 0, pretend = 0, frame = 0
116 @ frame_needed = 0, uses_anonymous_args = 0
117 @ link register save eliminated.
690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address));
118 .loc 1 691 3 view .LVU21
692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */
694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK;
119 .loc 1 694 3 view .LVU22
120 .loc 1 694 13 is_stmt 0 view .LVU23
121 0000 084B ldr r3, .L6
122 0002 1A69 ldr r2, [r3, #16]
123 0004 22F44072 bic r2, r2, #768
124 0008 1A61 str r2, [r3, #16]
695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD;
125 .loc 1 695 3 is_stmt 1 view .LVU24
126 .loc 1 695 13 is_stmt 0 view .LVU25
127 000a 1A69 ldr r2, [r3, #16]
128 000c 42F40072 orr r2, r2, #512
129 0010 1A61 str r2, [r3, #16]
696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
130 .loc 1 696 3 is_stmt 1 view .LVU26
131 .loc 1 696 13 is_stmt 0 view .LVU27
132 0012 1A69 ldr r2, [r3, #16]
133 0014 42F00102 orr r2, r2, #1
134 0018 1A61 str r2, [r3, #16]
697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)Address = Data;
135 .loc 1 698 3 is_stmt 1 view .LVU28
136 .loc 1 698 28 is_stmt 0 view .LVU29
ARM GAS /tmp/cc67Igjp.s page 31
137 001a 0160 str r1, [r0]
699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation
701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/
702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB();
138 .loc 1 702 3 is_stmt 1 view .LVU30
139 .LBB16:
140 .LBI16:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
141 .loc 2 877 27 view .LVU31
142 .LBB17:
143 .loc 2 879 3 view .LVU32
144 .syntax unified
145 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
146 001c BFF34F8F dsb 0xF
147 @ 0 "" 2
148 .thumb
149 .syntax unified
150 .LBE17:
151 .LBE16:
703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
152 .loc 1 703 1 is_stmt 0 view .LVU33
153 0020 7047 bx lr
154 .L7:
155 0022 00BF .align 2
156 .L6:
157 0024 003C0240 .word 1073888256
158 .cfi_endproc
159 .LFE154:
161 .section .text.FLASH_Program_HalfWord,"ax",%progbits
162 .align 1
163 .syntax unified
164 .thumb
165 .thumb_func
166 .fpu fpv5-d16
168 FLASH_Program_HalfWord:
169 .LVL2:
170 .LFB155:
704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address.
707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from
708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.1V to 3.6V.
709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously,
711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one.
712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed.
715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
171 .loc 1 718 1 is_stmt 1 view -0
172 .cfi_startproc
173 @ args = 0, pretend = 0, frame = 0
174 @ frame_needed = 0, uses_anonymous_args = 0
ARM GAS /tmp/cc67Igjp.s page 32
175 @ link register save eliminated.
719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address));
176 .loc 1 720 3 view .LVU35
721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */
723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK;
177 .loc 1 723 3 view .LVU36
178 .loc 1 723 13 is_stmt 0 view .LVU37
179 0000 084B ldr r3, .L9
180 0002 1A69 ldr r2, [r3, #16]
181 0004 22F44072 bic r2, r2, #768
182 0008 1A61 str r2, [r3, #16]
724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD;
183 .loc 1 724 3 is_stmt 1 view .LVU38
184 .loc 1 724 13 is_stmt 0 view .LVU39
185 000a 1A69 ldr r2, [r3, #16]
186 000c 42F48072 orr r2, r2, #256
187 0010 1A61 str r2, [r3, #16]
725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
188 .loc 1 725 3 is_stmt 1 view .LVU40
189 .loc 1 725 13 is_stmt 0 view .LVU41
190 0012 1A69 ldr r2, [r3, #16]
191 0014 42F00102 orr r2, r2, #1
192 0018 1A61 str r2, [r3, #16]
726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint16_t*)Address = Data;
193 .loc 1 727 3 is_stmt 1 view .LVU42
194 .loc 1 727 28 is_stmt 0 view .LVU43
195 001a 0180 strh r1, [r0] @ movhi
728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation
730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/
731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB();
196 .loc 1 731 3 is_stmt 1 view .LVU44
197 .LBB18:
198 .LBI18:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
199 .loc 2 877 27 view .LVU45
200 .LBB19:
201 .loc 2 879 3 view .LVU46
202 .syntax unified
203 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
204 001c BFF34F8F dsb 0xF
205 @ 0 "" 2
206 .thumb
207 .syntax unified
208 .LBE19:
209 .LBE18:
732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
210 .loc 1 733 1 is_stmt 0 view .LVU47
211 0020 7047 bx lr
212 .L10:
213 0022 00BF .align 2
214 .L9:
215 0024 003C0240 .word 1073888256
ARM GAS /tmp/cc67Igjp.s page 33
216 .cfi_endproc
217 .LFE155:
219 .section .text.FLASH_Program_Byte,"ax",%progbits
220 .align 1
221 .syntax unified
222 .thumb
223 .thumb_func
224 .fpu fpv5-d16
226 FLASH_Program_Byte:
227 .LVL3:
228 .LFB156:
734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address.
737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from
738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 1.7V to 3.6V.
739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously,
741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one.
742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *
743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed.
744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed.
745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data)
748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
229 .loc 1 748 1 is_stmt 1 view -0
230 .cfi_startproc
231 @ args = 0, pretend = 0, frame = 0
232 @ frame_needed = 0, uses_anonymous_args = 0
233 @ link register save eliminated.
749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */
750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address));
234 .loc 1 750 3 view .LVU49
751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */
753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK;
235 .loc 1 753 3 view .LVU50
236 .loc 1 753 13 is_stmt 0 view .LVU51
237 0000 074B ldr r3, .L12
238 0002 1A69 ldr r2, [r3, #16]
239 0004 22F44072 bic r2, r2, #768
240 0008 1A61 str r2, [r3, #16]
754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE;
241 .loc 1 754 3 is_stmt 1 view .LVU52
242 .loc 1 754 13 is_stmt 0 view .LVU53
243 000a 1A69 ldr r2, [r3, #16]
244 000c 1A61 str r2, [r3, #16]
755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
245 .loc 1 755 3 is_stmt 1 view .LVU54
246 .loc 1 755 13 is_stmt 0 view .LVU55
247 000e 1A69 ldr r2, [r3, #16]
248 0010 42F00102 orr r2, r2, #1
249 0014 1A61 str r2, [r3, #16]
756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint8_t*)Address = Data;
250 .loc 1 757 3 is_stmt 1 view .LVU56
ARM GAS /tmp/cc67Igjp.s page 34
251 .loc 1 757 27 is_stmt 0 view .LVU57
252 0016 0170 strb r1, [r0]
758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation
760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/
761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB();
253 .loc 1 761 3 is_stmt 1 view .LVU58
254 .LBB20:
255 .LBI20:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
256 .loc 2 877 27 view .LVU59
257 .LBB21:
258 .loc 2 879 3 view .LVU60
259 .syntax unified
260 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
261 0018 BFF34F8F dsb 0xF
262 @ 0 "" 2
263 .thumb
264 .syntax unified
265 .LBE21:
266 .LBE20:
762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
267 .loc 1 762 1 is_stmt 0 view .LVU61
268 001c 7047 bx lr
269 .L13:
270 001e 00BF .align 2
271 .L12:
272 0020 003C0240 .word 1073888256
273 .cfi_endproc
274 .LFE156:
276 .section .text.FLASH_SetErrorCode,"ax",%progbits
277 .align 1
278 .syntax unified
279 .thumb
280 .thumb_func
281 .fpu fpv5-d16
283 FLASH_SetErrorCode:
284 .LFB157:
763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /**
765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Set the specific FLASH error flag.
766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None
767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */
768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_SetErrorCode(void)
769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
285 .loc 1 769 1 is_stmt 1 view -0
286 .cfi_startproc
287 @ args = 0, pretend = 0, frame = 0
288 @ frame_needed = 0, uses_anonymous_args = 0
289 @ link register save eliminated.
770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET)
290 .loc 1 770 3 view .LVU63
291 .loc 1 770 6 is_stmt 0 view .LVU64
292 0000 1A4B ldr r3, .L20
293 0002 DB68 ldr r3, [r3, #12]
294 .loc 1 770 5 view .LVU65
295 0004 13F0020F tst r3, #2
ARM GAS /tmp/cc67Igjp.s page 35
296 0008 04D0 beq .L15
771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION;
297 .loc 1 772 5 is_stmt 1 view .LVU66
298 .loc 1 772 22 is_stmt 0 view .LVU67
299 000a 194A ldr r2, .L20+4
300 000c 9369 ldr r3, [r2, #24]
301 000e 43F02003 orr r3, r3, #32
302 0012 9361 str r3, [r2, #24]
303 .L15:
773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET)
304 .loc 1 775 3 is_stmt 1 view .LVU68
305 .loc 1 775 6 is_stmt 0 view .LVU69
306 0014 154B ldr r3, .L20
307 0016 DB68 ldr r3, [r3, #12]
308 .loc 1 775 5 view .LVU70
309 0018 13F0100F tst r3, #16
310 001c 04D0 beq .L16
776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP;
311 .loc 1 777 4 is_stmt 1 view .LVU71
312 .loc 1 777 21 is_stmt 0 view .LVU72
313 001e 144A ldr r2, .L20+4
314 0020 9369 ldr r3, [r2, #24]
315 0022 43F01003 orr r3, r3, #16
316 0026 9361 str r3, [r2, #24]
317 .L16:
778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET)
318 .loc 1 780 3 is_stmt 1 view .LVU73
319 .loc 1 780 6 is_stmt 0 view .LVU74
320 0028 104B ldr r3, .L20
321 002a DB68 ldr r3, [r3, #12]
322 .loc 1 780 5 view .LVU75
323 002c 13F0200F tst r3, #32
324 0030 04D0 beq .L17
781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA;
325 .loc 1 782 4 is_stmt 1 view .LVU76
326 .loc 1 782 21 is_stmt 0 view .LVU77
327 0032 0F4A ldr r2, .L20+4
328 0034 9369 ldr r3, [r2, #24]
329 0036 43F00803 orr r3, r3, #8
330 003a 9361 str r3, [r2, #24]
331 .L17:
783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET)
332 .loc 1 785 3 is_stmt 1 view .LVU78
333 .loc 1 785 6 is_stmt 0 view .LVU79
334 003c 0B4B ldr r3, .L20
335 003e DB68 ldr r3, [r3, #12]
336 .loc 1 785 5 view .LVU80
337 0040 13F0400F tst r3, #64
ARM GAS /tmp/cc67Igjp.s page 36
338 0044 04D0 beq .L18
786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP;
339 .loc 1 787 5 is_stmt 1 view .LVU81
340 .loc 1 787 22 is_stmt 0 view .LVU82
341 0046 0A4A ldr r2, .L20+4
342 0048 9369 ldr r3, [r2, #24]
343 004a 43F00403 orr r3, r3, #4
344 004e 9361 str r3, [r2, #24]
345 .L18:
788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ERSERR) != RESET)
346 .loc 1 790 3 is_stmt 1 view .LVU83
347 .loc 1 790 6 is_stmt 0 view .LVU84
348 0050 064B ldr r3, .L20
349 0052 DB68 ldr r3, [r3, #12]
350 .loc 1 790 5 view .LVU85
351 0054 13F0800F tst r3, #128
352 0058 04D0 beq .L19
791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_ERS;
353 .loc 1 792 5 is_stmt 1 view .LVU86
354 .loc 1 792 22 is_stmt 0 view .LVU87
355 005a 054A ldr r2, .L20+4
356 005c 9369 ldr r3, [r2, #24]
357 005e 43F00203 orr r3, r3, #2
358 0062 9361 str r3, [r2, #24]
359 .L19:
793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #if defined (FLASH_OPTCR2_PCROP)
796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET)
797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD;
799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #endif /* FLASH_OPTCR2_PCROP */
801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear error programming flags */
803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
360 .loc 1 803 3 is_stmt 1 view .LVU88
361 0064 014B ldr r3, .L20
362 0066 F222 movs r2, #242
363 0068 DA60 str r2, [r3, #12]
804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
364 .loc 1 804 1 is_stmt 0 view .LVU89
365 006a 7047 bx lr
366 .L21:
367 .align 2
368 .L20:
369 006c 003C0240 .word 1073888256
370 0070 00000000 .word .LANCHOR0
371 .cfi_endproc
372 .LFE157:
374 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
375 .align 1
376 .global HAL_FLASH_Program_IT
ARM GAS /tmp/cc67Igjp.s page 37
377 .syntax unified
378 .thumb
379 .thumb_func
380 .fpu fpv5-d16
382 HAL_FLASH_Program_IT:
383 .LVL4:
384 .LFB142:
232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
385 .loc 1 232 1 is_stmt 1 view -0
386 .cfi_startproc
387 @ args = 0, pretend = 0, frame = 0
388 @ frame_needed = 0, uses_anonymous_args = 0
232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
389 .loc 1 232 1 is_stmt 0 view .LVU91
390 0000 70B5 push {r4, r5, r6, lr}
391 .LCFI2:
392 .cfi_def_cfa_offset 16
393 .cfi_offset 4, -16
394 .cfi_offset 5, -12
395 .cfi_offset 6, -8
396 .cfi_offset 14, -4
233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
397 .loc 1 233 3 is_stmt 1 view .LVU92
398 .LVL5:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
399 .loc 1 236 3 view .LVU93
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
400 .loc 1 236 3 view .LVU94
401 0002 1A4C ldr r4, .L32
402 0004 247D ldrb r4, [r4, #20] @ zero_extendqisi2
403 0006 012C cmp r4, #1
404 0008 2CD0 beq .L29
405 000a 8446 mov ip, r0
406 000c 0846 mov r0, r1
407 .LVL6:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
408 .loc 1 236 3 discriminator 2 view .LVU95
409 000e 174D ldr r5, .L32
410 0010 0121 movs r1, #1
411 .LVL7:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
412 .loc 1 236 3 is_stmt 0 discriminator 2 view .LVU96
413 0012 2975 strb r1, [r5, #20]
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
414 .loc 1 236 3 is_stmt 1 discriminator 2 view .LVU97
239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
415 .loc 1 239 3 discriminator 2 view .LVU98
242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
416 .loc 1 242 3 discriminator 2 view .LVU99
417 0014 164C ldr r4, .L32+4
418 0016 2669 ldr r6, [r4, #16]
419 0018 46F08076 orr r6, r6, #16777216
420 001c 2661 str r6, [r4, #16]
245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
421 .loc 1 245 3 discriminator 2 view .LVU100
422 001e 2669 ldr r6, [r4, #16]
423 0020 46F00076 orr r6, r6, #33554432
ARM GAS /tmp/cc67Igjp.s page 38
424 0024 2661 str r6, [r4, #16]
248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR);
425 .loc 1 248 3 discriminator 2 view .LVU101
426 0026 F321 movs r1, #243
427 0028 E160 str r1, [r4, #12]
251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address;
428 .loc 1 251 3 discriminator 2 view .LVU102
251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address;
429 .loc 1 251 27 is_stmt 0 discriminator 2 view .LVU103
430 002a 0321 movs r1, #3
431 002c 2970 strb r1, [r5]
252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
432 .loc 1 252 3 is_stmt 1 discriminator 2 view .LVU104
252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
433 .loc 1 252 18 is_stmt 0 discriminator 2 view .LVU105
434 002e 2861 str r0, [r5, #16]
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
435 .loc 1 254 3 is_stmt 1 discriminator 2 view .LVU106
436 0030 BCF1030F cmp ip, #3
437 0034 18D8 bhi .L30
438 0036 DFE80CF0 tbb [pc, ip]
439 .L25:
440 003a 02 .byte (.L28-.L25)/2
441 003b 07 .byte (.L27-.L25)/2
442 003c 0C .byte (.L26-.L25)/2
443 003d 11 .byte (.L24-.L25)/2
444 .p2align 1
445 .L28:
259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
446 .loc 1 259 7 view .LVU107
447 003e D1B2 uxtb r1, r2
448 0040 FFF7FEFF bl FLASH_Program_Byte
449 .LVL8:
260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
450 .loc 1 260 7 view .LVU108
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
451 .loc 1 286 10 is_stmt 0 view .LVU109
452 0044 0020 movs r0, #0
453 .L23:
287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
454 .loc 1 287 1 view .LVU110
455 0046 70BD pop {r4, r5, r6, pc}
456 .LVL9:
457 .L27:
266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
458 .loc 1 266 7 is_stmt 1 view .LVU111
459 0048 91B2 uxth r1, r2
460 004a FFF7FEFF bl FLASH_Program_HalfWord
461 .LVL10:
267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
462 .loc 1 267 7 view .LVU112
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
463 .loc 1 286 10 is_stmt 0 view .LVU113
464 004e 0020 movs r0, #0
267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
465 .loc 1 267 7 view .LVU114
466 0050 F9E7 b .L23
ARM GAS /tmp/cc67Igjp.s page 39
467 .LVL11:
468 .L26:
273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
469 .loc 1 273 7 is_stmt 1 view .LVU115
470 0052 1146 mov r1, r2
471 0054 FFF7FEFF bl FLASH_Program_Word
472 .LVL12:
274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
473 .loc 1 274 7 view .LVU116
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
474 .loc 1 286 10 is_stmt 0 view .LVU117
475 0058 0020 movs r0, #0
274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
476 .loc 1 274 7 view .LVU118
477 005a F4E7 b .L23
478 .LVL13:
479 .L24:
280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
480 .loc 1 280 7 is_stmt 1 view .LVU119
481 005c FFF7FEFF bl FLASH_Program_DoubleWord
482 .LVL14:
281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
483 .loc 1 281 7 view .LVU120
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
484 .loc 1 286 10 is_stmt 0 view .LVU121
485 0060 0020 movs r0, #0
281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
486 .loc 1 281 7 view .LVU122
487 0062 F0E7 b .L23
488 .LVL15:
489 .L29:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
490 .loc 1 236 3 view .LVU123
491 0064 0220 movs r0, #2
492 .LVL16:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
493 .loc 1 236 3 view .LVU124
494 0066 EEE7 b .L23
495 .LVL17:
496 .L30:
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
497 .loc 1 254 3 view .LVU125
498 0068 0020 movs r0, #0
499 .LVL18:
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
500 .loc 1 254 3 view .LVU126
501 006a ECE7 b .L23
502 .L33:
503 .align 2
504 .L32:
505 006c 00000000 .word .LANCHOR0
506 0070 003C0240 .word 1073888256
507 .cfi_endproc
508 .LFE142:
510 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits
511 .align 1
512 .weak HAL_FLASH_EndOfOperationCallback
ARM GAS /tmp/cc67Igjp.s page 40
513 .syntax unified
514 .thumb
515 .thumb_func
516 .fpu fpv5-d16
518 HAL_FLASH_EndOfOperationCallback:
519 .LVL19:
520 .LFB144:
429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
521 .loc 1 429 1 is_stmt 1 view -0
522 .cfi_startproc
523 @ args = 0, pretend = 0, frame = 0
524 @ frame_needed = 0, uses_anonymous_args = 0
525 @ link register save eliminated.
431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
526 .loc 1 431 3 view .LVU128
435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
527 .loc 1 435 1 is_stmt 0 view .LVU129
528 0000 7047 bx lr
529 .cfi_endproc
530 .LFE144:
532 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits
533 .align 1
534 .weak HAL_FLASH_OperationErrorCallback
535 .syntax unified
536 .thumb
537 .thumb_func
538 .fpu fpv5-d16
540 HAL_FLASH_OperationErrorCallback:
541 .LVL20:
542 .LFB145:
447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
543 .loc 1 447 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 @ link register save eliminated.
449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed,
548 .loc 1 449 3 view .LVU131
453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
549 .loc 1 453 1 is_stmt 0 view .LVU132
550 0000 7047 bx lr
551 .cfi_endproc
552 .LFE145:
554 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits
555 .align 1
556 .global HAL_FLASH_IRQHandler
557 .syntax unified
558 .thumb
559 .thumb_func
560 .fpu fpv5-d16
562 HAL_FLASH_IRQHandler:
563 .LFB143:
294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t temp = 0;
564 .loc 1 294 1 is_stmt 1 view -0
565 .cfi_startproc
566 @ args = 0, pretend = 0, frame = 0
567 @ frame_needed = 0, uses_anonymous_args = 0
ARM GAS /tmp/cc67Igjp.s page 41
568 0000 38B5 push {r3, r4, r5, lr}
569 .LCFI3:
570 .cfi_def_cfa_offset 16
571 .cfi_offset 3, -16
572 .cfi_offset 4, -12
573 .cfi_offset 5, -8
574 .cfi_offset 14, -4
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
575 .loc 1 295 3 view .LVU134
576 .LVL21:
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
577 .loc 1 298 3 view .LVU135
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
578 .loc 1 298 13 is_stmt 0 view .LVU136
579 0002 3F4B ldr r3, .L50
580 0004 1A69 ldr r2, [r3, #16]
581 0006 22F00102 bic r2, r2, #1
582 000a 1A61 str r2, [r3, #16]
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
583 .loc 1 301 3 is_stmt 1 view .LVU137
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
584 .loc 1 301 13 is_stmt 0 view .LVU138
585 000c 1A69 ldr r2, [r3, #16]
586 000e 22F00202 bic r2, r2, #2
587 0012 1A61 str r2, [r3, #16]
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
588 .loc 1 302 3 is_stmt 1 view .LVU139
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
589 .loc 1 302 13 is_stmt 0 view .LVU140
590 0014 1A69 ldr r2, [r3, #16]
591 0016 22F0F802 bic r2, r2, #248
592 001a 1A61 str r2, [r3, #16]
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
593 .loc 1 305 3 is_stmt 1 view .LVU141
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
594 .loc 1 305 13 is_stmt 0 view .LVU142
595 001c 1969 ldr r1, [r3, #16]
596 001e 394A ldr r2, .L50+4
597 0020 0A40 ands r2, r2, r1
598 0022 1A61 str r2, [r3, #16]
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
599 .loc 1 308 3 is_stmt 1 view .LVU143
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
600 .loc 1 308 6 is_stmt 0 view .LVU144
601 0024 DC68 ldr r4, [r3, #12]
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
602 .loc 1 308 5 view .LVU145
603 0026 14F00104 ands r4, r4, #1
604 002a 0BD0 beq .L37
311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
605 .loc 1 311 5 is_stmt 1 view .LVU146
606 002c 0122 movs r2, #1
607 002e DA60 str r2, [r3, #12]
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
608 .loc 1 313 5 view .LVU147
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
609 .loc 1 313 19 is_stmt 0 view .LVU148
ARM GAS /tmp/cc67Igjp.s page 42
610 0030 354B ldr r3, .L50+8
611 0032 1B78 ldrb r3, [r3] @ zero_extendqisi2
612 0034 DBB2 uxtb r3, r3
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
613 .loc 1 313 5 view .LVU149
614 0036 022B cmp r3, #2
615 0038 46D0 beq .L38
616 003a 032B cmp r3, #3
617 003c 4CD0 beq .L39
618 003e 9342 cmp r3, r2
619 0040 26D0 beq .L48
620 0042 0024 movs r4, #0
621 .LVL22:
622 .L37:
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
623 .loc 1 369 3 is_stmt 1 view .LVU150
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
624 .loc 1 369 6 is_stmt 0 view .LVU151
625 0044 2E4B ldr r3, .L50
626 0046 DB68 ldr r3, [r3, #12]
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
627 .loc 1 369 5 view .LVU152
628 0048 13F0F20F tst r3, #242
629 004c 10D0 beq .L41
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
630 .loc 1 371 5 is_stmt 1 view .LVU153
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
631 .loc 1 371 19 is_stmt 0 view .LVU154
632 004e 2E4B ldr r3, .L50+8
633 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2
634 0052 DBB2 uxtb r3, r3
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
635 .loc 1 371 5 view .LVU155
636 0054 022B cmp r3, #2
637 0056 50D0 beq .L46
638 0058 032B cmp r3, #3
639 005a 4BD0 beq .L43
640 005c 012B cmp r3, #1
641 005e 43D0 beq .L49
642 .LVL23:
643 .L42:
396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
644 .loc 1 396 5 is_stmt 1 view .LVU156
645 0060 FFF7FEFF bl FLASH_SetErrorCode
646 .LVL24:
399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
647 .loc 1 399 5 view .LVU157
648 0064 2046 mov r0, r4
649 0066 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
650 .LVL25:
402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
651 .loc 1 402 5 view .LVU158
402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
652 .loc 1 402 29 is_stmt 0 view .LVU159
653 006a 274B ldr r3, .L50+8
654 006c 0022 movs r2, #0
655 006e 1A70 strb r2, [r3]
ARM GAS /tmp/cc67Igjp.s page 43
656 .L41:
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
657 .loc 1 405 3 is_stmt 1 view .LVU160
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
658 .loc 1 405 12 is_stmt 0 view .LVU161
659 0070 254B ldr r3, .L50+8
660 0072 1B78 ldrb r3, [r3] @ zero_extendqisi2
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
661 .loc 1 405 5 view .LVU162
662 0074 5BB9 cbnz r3, .L36
408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
663 .loc 1 408 5 is_stmt 1 view .LVU163
664 0076 224B ldr r3, .L50
665 0078 1A69 ldr r2, [r3, #16]
666 007a 22F08072 bic r2, r2, #16777216
667 007e 1A61 str r2, [r3, #16]
411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
668 .loc 1 411 5 view .LVU164
669 0080 1A69 ldr r2, [r3, #16]
670 0082 22F00072 bic r2, r2, #33554432
671 0086 1A61 str r2, [r3, #16]
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
672 .loc 1 414 5 view .LVU165
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
673 .loc 1 414 5 view .LVU166
674 0088 1F4B ldr r3, .L50+8
675 008a 0022 movs r2, #0
676 008c 1A75 strb r2, [r3, #20]
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
677 .loc 1 414 5 view .LVU167
678 .L36:
417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
679 .loc 1 417 1 is_stmt 0 view .LVU168
680 008e 38BD pop {r3, r4, r5, pc}
681 .LVL26:
682 .L48:
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
683 .loc 1 318 9 is_stmt 1 view .LVU169
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
684 .loc 1 318 15 is_stmt 0 view .LVU170
685 0090 1D4B ldr r3, .L50+8
686 0092 5A68 ldr r2, [r3, #4]
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
687 .loc 1 318 32 view .LVU171
688 0094 013A subs r2, r2, #1
689 0096 5A60 str r2, [r3, #4]
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
690 .loc 1 321 9 is_stmt 1 view .LVU172
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
691 .loc 1 321 18 is_stmt 0 view .LVU173
692 0098 5B68 ldr r3, [r3, #4]
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
693 .loc 1 321 11 view .LVU174
694 009a 5BB1 cbz r3, .L40
323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */
695 .loc 1 323 11 is_stmt 1 view .LVU175
323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */
ARM GAS /tmp/cc67Igjp.s page 44
696 .loc 1 323 16 is_stmt 0 view .LVU176
697 009c 1A4D ldr r5, .L50+8
698 009e E868 ldr r0, [r5, #12]
699 .LVL27:
325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
700 .loc 1 325 11 is_stmt 1 view .LVU177
701 00a0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
702 .LVL28:
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
703 .loc 1 328 11 view .LVU178
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
704 .loc 1 328 26 is_stmt 0 view .LVU179
705 00a4 EC68 ldr r4, [r5, #12]
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
706 .loc 1 328 18 view .LVU180
707 00a6 0134 adds r4, r4, #1
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
708 .loc 1 328 16 view .LVU181
709 00a8 EC60 str r4, [r5, #12]
710 .LVL29:
329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
711 .loc 1 329 11 is_stmt 1 view .LVU182
712 00aa 297A ldrb r1, [r5, #8] @ zero_extendqisi2
713 00ac 2046 mov r0, r4
714 00ae FFF7FEFF bl FLASH_Erase_Sector
715 .LVL30:
716 00b2 C7E7 b .L37
717 .LVL31:
718 .L40:
335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
719 .loc 1 335 11 view .LVU183
335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
720 .loc 1 335 25 is_stmt 0 view .LVU184
721 00b4 144D ldr r5, .L50+8
722 00b6 4FF0FF34 mov r4, #-1
723 00ba EC60 str r4, [r5, #12]
337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Sector Erase procedure is completed */
724 .loc 1 337 11 is_stmt 1 view .LVU185
725 00bc 2046 mov r0, r4
726 00be FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
727 .LVL32:
339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
728 .loc 1 339 11 view .LVU186
339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
729 .loc 1 339 35 is_stmt 0 view .LVU187
730 00c2 0023 movs r3, #0
731 00c4 2B70 strb r3, [r5]
732 00c6 BDE7 b .L37
733 .LVL33:
734 .L38:
348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MAss Erase procedure is completed */
735 .loc 1 348 9 is_stmt 1 view .LVU188
736 00c8 0020 movs r0, #0
737 00ca FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
738 .LVL34:
350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
739 .loc 1 350 9 view .LVU189
ARM GAS /tmp/cc67Igjp.s page 45
350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
740 .loc 1 350 33 is_stmt 0 view .LVU190
741 00ce 0020 movs r0, #0
742 00d0 0D4B ldr r3, .L50+8
743 00d2 1870 strb r0, [r3]
351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
744 .loc 1 351 9 is_stmt 1 view .LVU191
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
745 .loc 1 295 12 is_stmt 0 view .LVU192
746 00d4 0446 mov r4, r0
351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
747 .loc 1 351 9 view .LVU193
748 00d6 B5E7 b .L37
749 .L39:
358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */
750 .loc 1 358 9 is_stmt 1 view .LVU194
751 00d8 0B4C ldr r4, .L50+8
752 00da 2069 ldr r0, [r4, #16]
753 00dc FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
754 .LVL35:
360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
755 .loc 1 360 9 view .LVU195
360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
756 .loc 1 360 33 is_stmt 0 view .LVU196
757 00e0 0020 movs r0, #0
758 00e2 2070 strb r0, [r4]
361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
759 .loc 1 361 9 is_stmt 1 view .LVU197
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
760 .loc 1 295 12 is_stmt 0 view .LVU198
761 00e4 0446 mov r4, r0
361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
762 .loc 1 361 9 view .LVU199
763 00e6 ADE7 b .L37
764 .LVL36:
765 .L49:
376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
766 .loc 1 376 9 is_stmt 1 view .LVU200
376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
767 .loc 1 376 14 is_stmt 0 view .LVU201
768 00e8 074B ldr r3, .L50+8
769 00ea DC68 ldr r4, [r3, #12]
770 .LVL37:
377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
771 .loc 1 377 9 is_stmt 1 view .LVU202
377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
772 .loc 1 377 23 is_stmt 0 view .LVU203
773 00ec 4FF0FF32 mov r2, #-1
774 00f0 DA60 str r2, [r3, #12]
378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
775 .loc 1 378 9 is_stmt 1 view .LVU204
776 00f2 B5E7 b .L42
777 .L43:
389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
778 .loc 1 389 9 view .LVU205
389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
779 .loc 1 389 14 is_stmt 0 view .LVU206
ARM GAS /tmp/cc67Igjp.s page 46
780 00f4 044B ldr r3, .L50+8
781 00f6 1C69 ldr r4, [r3, #16]
782 .LVL38:
390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
783 .loc 1 390 9 is_stmt 1 view .LVU207
784 00f8 B2E7 b .L42
785 .L46:
383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
786 .loc 1 383 14 is_stmt 0 view .LVU208
787 00fa 0024 movs r4, #0
788 .LVL39:
383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
789 .loc 1 383 14 view .LVU209
790 00fc B0E7 b .L42
791 .L51:
792 00fe 00BF .align 2
793 .L50:
794 0100 003C0240 .word 1073888256
795 0104 FB7FFFFF .word -32773
796 0108 00000000 .word .LANCHOR0
797 .cfi_endproc
798 .LFE143:
800 .section .text.HAL_FLASH_Unlock,"ax",%progbits
801 .align 1
802 .global HAL_FLASH_Unlock
803 .syntax unified
804 .thumb
805 .thumb_func
806 .fpu fpv5-d16
808 HAL_FLASH_Unlock:
809 .LFB146:
479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
810 .loc 1 479 1 is_stmt 1 view -0
811 .cfi_startproc
812 @ args = 0, pretend = 0, frame = 0
813 @ frame_needed = 0, uses_anonymous_args = 0
814 @ link register save eliminated.
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
815 .loc 1 480 3 view .LVU211
816 .LVL40:
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
817 .loc 1 482 3 view .LVU212
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
818 .loc 1 482 6 is_stmt 0 view .LVU213
819 0000 094B ldr r3, .L57
820 0002 1B69 ldr r3, [r3, #16]
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
821 .loc 1 482 5 view .LVU214
822 0004 002B cmp r3, #0
823 0006 01DB blt .L56
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
824 .loc 1 480 21 view .LVU215
825 0008 0020 movs r0, #0
826 000a 7047 bx lr
827 .L56:
485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
828 .loc 1 485 5 is_stmt 1 view .LVU216
ARM GAS /tmp/cc67Igjp.s page 47
829 000c 064B ldr r3, .L57
830 000e 074A ldr r2, .L57+4
831 0010 5A60 str r2, [r3, #4]
486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
832 .loc 1 486 5 view .LVU217
833 0012 02F18832 add r2, r2, #-2004318072
834 0016 5A60 str r2, [r3, #4]
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
835 .loc 1 489 5 view .LVU218
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
836 .loc 1 489 8 is_stmt 0 view .LVU219
837 0018 1B69 ldr r3, [r3, #16]
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
838 .loc 1 489 7 view .LVU220
839 001a 002B cmp r3, #0
840 001c 01DB blt .L55
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
841 .loc 1 480 21 view .LVU221
842 001e 0020 movs r0, #0
843 0020 7047 bx lr
844 .L55:
491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
845 .loc 1 491 14 view .LVU222
846 0022 0120 movs r0, #1
847 .LVL41:
495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
848 .loc 1 495 3 is_stmt 1 view .LVU223
496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
849 .loc 1 496 1 is_stmt 0 view .LVU224
850 0024 7047 bx lr
851 .L58:
852 0026 00BF .align 2
853 .L57:
854 0028 003C0240 .word 1073888256
855 002c 23016745 .word 1164378403
856 .cfi_endproc
857 .LFE146:
859 .section .text.HAL_FLASH_Lock,"ax",%progbits
860 .align 1
861 .global HAL_FLASH_Lock
862 .syntax unified
863 .thumb
864 .thumb_func
865 .fpu fpv5-d16
867 HAL_FLASH_Lock:
868 .LFB147:
503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */
869 .loc 1 503 1 is_stmt 1 view -0
870 .cfi_startproc
871 @ args = 0, pretend = 0, frame = 0
872 @ frame_needed = 0, uses_anonymous_args = 0
873 @ link register save eliminated.
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
874 .loc 1 505 3 view .LVU226
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
875 .loc 1 505 13 is_stmt 0 view .LVU227
876 0000 034A ldr r2, .L60
ARM GAS /tmp/cc67Igjp.s page 48
877 0002 1369 ldr r3, [r2, #16]
878 0004 43F00043 orr r3, r3, #-2147483648
879 0008 1361 str r3, [r2, #16]
507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
880 .loc 1 507 3 is_stmt 1 view .LVU228
508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
881 .loc 1 508 1 is_stmt 0 view .LVU229
882 000a 0020 movs r0, #0
883 000c 7047 bx lr
884 .L61:
885 000e 00BF .align 2
886 .L60:
887 0010 003C0240 .word 1073888256
888 .cfi_endproc
889 .LFE147:
891 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
892 .align 1
893 .global HAL_FLASH_OB_Unlock
894 .syntax unified
895 .thumb
896 .thumb_func
897 .fpu fpv5-d16
899 HAL_FLASH_OB_Unlock:
900 .LFB148:
515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)
901 .loc 1 515 1 is_stmt 1 view -0
902 .cfi_startproc
903 @ args = 0, pretend = 0, frame = 0
904 @ frame_needed = 0, uses_anonymous_args = 0
905 @ link register save eliminated.
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
906 .loc 1 516 3 view .LVU231
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
907 .loc 1 516 12 is_stmt 0 view .LVU232
908 0000 074B ldr r3, .L65
909 0002 5B69 ldr r3, [r3, #20]
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
910 .loc 1 516 5 view .LVU233
911 0004 13F0010F tst r3, #1
912 0008 07D0 beq .L64
519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2;
913 .loc 1 519 5 is_stmt 1 view .LVU234
519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2;
914 .loc 1 519 20 is_stmt 0 view .LVU235
915 000a 054B ldr r3, .L65
916 000c 054A ldr r2, .L65+4
917 000e 9A60 str r2, [r3, #8]
520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
918 .loc 1 520 5 is_stmt 1 view .LVU236
520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
919 .loc 1 520 20 is_stmt 0 view .LVU237
920 0010 02F14432 add r2, r2, #1145324612
921 0014 9A60 str r2, [r3, #8]
527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
922 .loc 1 527 3 is_stmt 1 view .LVU238
527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
923 .loc 1 527 10 is_stmt 0 view .LVU239
ARM GAS /tmp/cc67Igjp.s page 49
924 0016 0020 movs r0, #0
925 0018 7047 bx lr
926 .L64:
524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
927 .loc 1 524 12 view .LVU240
928 001a 0120 movs r0, #1
528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
929 .loc 1 528 1 view .LVU241
930 001c 7047 bx lr
931 .L66:
932 001e 00BF .align 2
933 .L65:
934 0020 003C0240 .word 1073888256
935 0024 3B2A1908 .word 135866939
936 .cfi_endproc
937 .LFE148:
939 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
940 .align 1
941 .global HAL_FLASH_OB_Lock
942 .syntax unified
943 .thumb
944 .thumb_func
945 .fpu fpv5-d16
947 HAL_FLASH_OB_Lock:
948 .LFB149:
535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
949 .loc 1 535 1 is_stmt 1 view -0
950 .cfi_startproc
951 @ args = 0, pretend = 0, frame = 0
952 @ frame_needed = 0, uses_anonymous_args = 0
953 @ link register save eliminated.
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
954 .loc 1 537 3 view .LVU243
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
955 .loc 1 537 16 is_stmt 0 view .LVU244
956 0000 034A ldr r2, .L68
957 0002 5369 ldr r3, [r2, #20]
958 0004 43F00103 orr r3, r3, #1
959 0008 5361 str r3, [r2, #20]
539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
960 .loc 1 539 3 is_stmt 1 view .LVU245
540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
961 .loc 1 540 1 is_stmt 0 view .LVU246
962 000a 0020 movs r0, #0
963 000c 7047 bx lr
964 .L69:
965 000e 00BF .align 2
966 .L68:
967 0010 003C0240 .word 1073888256
968 .cfi_endproc
969 .LFE149:
971 .section .text.HAL_FLASH_GetError,"ax",%progbits
972 .align 1
973 .global HAL_FLASH_GetError
974 .syntax unified
975 .thumb
976 .thumb_func
ARM GAS /tmp/cc67Igjp.s page 50
977 .fpu fpv5-d16
979 HAL_FLASH_GetError:
980 .LFB151:
583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return pFlash.ErrorCode;
981 .loc 1 583 1 is_stmt 1 view -0
982 .cfi_startproc
983 @ args = 0, pretend = 0, frame = 0
984 @ frame_needed = 0, uses_anonymous_args = 0
985 @ link register save eliminated.
584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
986 .loc 1 584 4 view .LVU248
584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
987 .loc 1 584 17 is_stmt 0 view .LVU249
988 0000 014B ldr r3, .L71
989 0002 9869 ldr r0, [r3, #24]
585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
990 .loc 1 585 1 view .LVU250
991 0004 7047 bx lr
992 .L72:
993 0006 00BF .align 2
994 .L71:
995 0008 00000000 .word .LANCHOR0
996 .cfi_endproc
997 .LFE151:
999 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
1000 .align 1
1001 .global FLASH_WaitForLastOperation
1002 .syntax unified
1003 .thumb
1004 .thumb_func
1005 .fpu fpv5-d16
1007 FLASH_WaitForLastOperation:
1008 .LVL42:
1009 .LFB152:
597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0;
1010 .loc 1 597 1 is_stmt 1 view -0
1011 .cfi_startproc
1012 @ args = 0, pretend = 0, frame = 0
1013 @ frame_needed = 0, uses_anonymous_args = 0
597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0;
1014 .loc 1 597 1 is_stmt 0 view .LVU252
1015 0000 38B5 push {r3, r4, r5, lr}
1016 .LCFI4:
1017 .cfi_def_cfa_offset 16
1018 .cfi_offset 3, -16
1019 .cfi_offset 4, -12
1020 .cfi_offset 5, -8
1021 .cfi_offset 14, -4
1022 0002 0446 mov r4, r0
598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1023 .loc 1 598 3 is_stmt 1 view .LVU253
1024 .LVL43:
601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1025 .loc 1 601 3 view .LVU254
601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1026 .loc 1 601 20 is_stmt 0 view .LVU255
1027 0004 154B ldr r3, .L84
ARM GAS /tmp/cc67Igjp.s page 51
1028 0006 0022 movs r2, #0
1029 0008 9A61 str r2, [r3, #24]
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1030 .loc 1 607 3 is_stmt 1 view .LVU256
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1031 .loc 1 607 15 is_stmt 0 view .LVU257
1032 000a FFF7FEFF bl HAL_GetTick
1033 .LVL44:
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1034 .loc 1 607 15 view .LVU258
1035 000e 0546 mov r5, r0
1036 .LVL45:
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1037 .loc 1 609 3 is_stmt 1 view .LVU259
1038 .L75:
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1039 .loc 1 609 8 view .LVU260
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1040 .loc 1 609 9 is_stmt 0 view .LVU261
1041 0010 134B ldr r3, .L84+4
1042 0012 DB68 ldr r3, [r3, #12]
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1043 .loc 1 609 8 view .LVU262
1044 0014 13F4803F tst r3, #65536
1045 0018 0AD0 beq .L82
611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1046 .loc 1 611 5 is_stmt 1 view .LVU263
611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1047 .loc 1 611 7 is_stmt 0 view .LVU264
1048 001a B4F1FF3F cmp r4, #-1
1049 001e F7D0 beq .L75
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1050 .loc 1 613 7 is_stmt 1 view .LVU265
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1051 .loc 1 613 9 is_stmt 0 view .LVU266
1052 0020 24B1 cbz r4, .L76
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1053 .loc 1 613 28 discriminator 1 view .LVU267
1054 0022 FFF7FEFF bl HAL_GetTick
1055 .LVL46:
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1056 .loc 1 613 42 discriminator 1 view .LVU268
1057 0026 401B subs r0, r0, r5
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1058 .loc 1 613 24 discriminator 1 view .LVU269
1059 0028 A042 cmp r0, r4
1060 002a F1D9 bls .L75
1061 .L76:
615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1062 .loc 1 615 9 is_stmt 1 view .LVU270
615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1063 .loc 1 615 16 is_stmt 0 view .LVU271
1064 002c 0320 movs r0, #3
1065 002e 0DE0 b .L77
1066 .L82:
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1067 .loc 1 620 3 is_stmt 1 view .LVU272
ARM GAS /tmp/cc67Igjp.s page 52
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1068 .loc 1 620 6 is_stmt 0 view .LVU273
1069 0030 0B4B ldr r3, .L84+4
1070 0032 DB68 ldr r3, [r3, #12]
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1071 .loc 1 620 5 view .LVU274
1072 0034 13F0F20F tst r3, #242
1073 0038 09D1 bne .L83
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1074 .loc 1 628 3 is_stmt 1 view .LVU275
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1075 .loc 1 628 7 is_stmt 0 view .LVU276
1076 003a 094B ldr r3, .L84+4
1077 003c DB68 ldr r3, [r3, #12]
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1078 .loc 1 628 6 view .LVU277
1079 003e 13F0010F tst r3, #1
1080 0042 08D0 beq .L80
631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1081 .loc 1 631 5 is_stmt 1 view .LVU278
1082 0044 064B ldr r3, .L84+4
1083 0046 0122 movs r2, #1
1084 0048 DA60 str r2, [r3, #12]
635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1085 .loc 1 635 10 is_stmt 0 view .LVU279
1086 004a 0020 movs r0, #0
1087 .L77:
637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1088 .loc 1 637 1 view .LVU280
1089 004c 38BD pop {r3, r4, r5, pc}
1090 .LVL47:
1091 .L83:
623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR;
1092 .loc 1 623 5 is_stmt 1 view .LVU281
1093 004e FFF7FEFF bl FLASH_SetErrorCode
1094 .LVL48:
624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1095 .loc 1 624 5 view .LVU282
624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1096 .loc 1 624 12 is_stmt 0 view .LVU283
1097 0052 0120 movs r0, #1
1098 0054 FAE7 b .L77
1099 .L80:
635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1100 .loc 1 635 10 view .LVU284
1101 0056 0020 movs r0, #0
1102 0058 F8E7 b .L77
1103 .L85:
1104 005a 00BF .align 2
1105 .L84:
1106 005c 00000000 .word .LANCHOR0
1107 0060 003C0240 .word 1073888256
1108 .cfi_endproc
1109 .LFE152:
1111 .section .text.HAL_FLASH_Program,"ax",%progbits
1112 .align 1
1113 .global HAL_FLASH_Program
ARM GAS /tmp/cc67Igjp.s page 53
1114 .syntax unified
1115 .thumb
1116 .thumb_func
1117 .fpu fpv5-d16
1119 HAL_FLASH_Program:
1120 .LVL49:
1121 .LFB141:
163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
1122 .loc 1 163 1 is_stmt 1 view -0
1123 .cfi_startproc
1124 @ args = 0, pretend = 0, frame = 0
1125 @ frame_needed = 0, uses_anonymous_args = 0
163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
1126 .loc 1 163 1 is_stmt 0 view .LVU286
1127 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
1128 .LCFI5:
1129 .cfi_def_cfa_offset 24
1130 .cfi_offset 3, -24
1131 .cfi_offset 4, -20
1132 .cfi_offset 5, -16
1133 .cfi_offset 6, -12
1134 .cfi_offset 7, -8
1135 .cfi_offset 14, -4
1136 0002 1646 mov r6, r2
164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1137 .loc 1 164 3 is_stmt 1 view .LVU287
1138 .LVL50:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1139 .loc 1 167 3 view .LVU288
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1140 .loc 1 167 3 view .LVU289
1141 0004 1B4A ldr r2, .L97
1142 .LVL51:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1143 .loc 1 167 3 is_stmt 0 view .LVU290
1144 0006 127D ldrb r2, [r2, #20] @ zero_extendqisi2
1145 0008 012A cmp r2, #1
1146 000a 31D0 beq .L95
1147 000c 0446 mov r4, r0
1148 000e 0D46 mov r5, r1
1149 0010 1F46 mov r7, r3
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1150 .loc 1 167 3 is_stmt 1 discriminator 2 view .LVU291
1151 0012 184B ldr r3, .L97
1152 0014 0122 movs r2, #1
1153 0016 1A75 strb r2, [r3, #20]
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1154 .loc 1 167 3 discriminator 2 view .LVU292
170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1155 .loc 1 170 3 discriminator 2 view .LVU293
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1156 .loc 1 173 3 discriminator 2 view .LVU294
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1157 .loc 1 173 12 is_stmt 0 discriminator 2 view .LVU295
1158 0018 4CF25030 movw r0, #50000
1159 .LVL52:
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/cc67Igjp.s page 54
1160 .loc 1 173 12 discriminator 2 view .LVU296
1161 001c FFF7FEFF bl FLASH_WaitForLastOperation
1162 .LVL53:
175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1163 .loc 1 175 3 is_stmt 1 discriminator 2 view .LVU297
175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1164 .loc 1 175 5 is_stmt 0 discriminator 2 view .LVU298
1165 0020 90B9 cbnz r0, .L88
177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1166 .loc 1 177 5 is_stmt 1 view .LVU299
1167 0022 032C cmp r4, #3
1168 0024 07D8 bhi .L89
1169 0026 DFE804F0 tbb [pc, r4]
1170 .L91:
1171 002a 02 .byte (.L94-.L91)/2
1172 002b 13 .byte (.L93-.L91)/2
1173 002c 18 .byte (.L92-.L91)/2
1174 002d 1D .byte (.L90-.L91)/2
1175 .p2align 1
1176 .L94:
182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1177 .loc 1 182 9 view .LVU300
1178 002e F1B2 uxtb r1, r6
1179 0030 2846 mov r0, r5
1180 .LVL54:
182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1181 .loc 1 182 9 is_stmt 0 view .LVU301
1182 0032 FFF7FEFF bl FLASH_Program_Byte
1183 .LVL55:
183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1184 .loc 1 183 9 is_stmt 1 view .LVU302
1185 .L89:
210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1186 .loc 1 210 5 view .LVU303
210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1187 .loc 1 210 14 is_stmt 0 view .LVU304
1188 0036 4CF25030 movw r0, #50000
1189 003a FFF7FEFF bl FLASH_WaitForLastOperation
1190 .LVL56:
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1191 .loc 1 213 5 is_stmt 1 view .LVU305
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1192 .loc 1 213 15 is_stmt 0 view .LVU306
1193 003e 0E4A ldr r2, .L97+4
1194 0040 1369 ldr r3, [r2, #16]
1195 0042 23F00103 bic r3, r3, #1
1196 0046 1361 str r3, [r2, #16]
1197 .L88:
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1198 .loc 1 217 3 is_stmt 1 view .LVU307
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1199 .loc 1 217 3 view .LVU308
1200 0048 0A4B ldr r3, .L97
1201 004a 0022 movs r2, #0
1202 004c 1A75 strb r2, [r3, #20]
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1203 .loc 1 217 3 view .LVU309
ARM GAS /tmp/cc67Igjp.s page 55
219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1204 .loc 1 219 3 view .LVU310
1205 .LVL57:
1206 .L87:
220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1207 .loc 1 220 1 is_stmt 0 view .LVU311
1208 004e F8BD pop {r3, r4, r5, r6, r7, pc}
1209 .LVL58:
1210 .L93:
189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1211 .loc 1 189 9 is_stmt 1 view .LVU312
1212 0050 B1B2 uxth r1, r6
1213 0052 2846 mov r0, r5
1214 .LVL59:
189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1215 .loc 1 189 9 is_stmt 0 view .LVU313
1216 0054 FFF7FEFF bl FLASH_Program_HalfWord
1217 .LVL60:
190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1218 .loc 1 190 9 is_stmt 1 view .LVU314
1219 0058 EDE7 b .L89
1220 .LVL61:
1221 .L92:
196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1222 .loc 1 196 9 view .LVU315
1223 005a 3146 mov r1, r6
1224 005c 2846 mov r0, r5
1225 .LVL62:
196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1226 .loc 1 196 9 is_stmt 0 view .LVU316
1227 005e FFF7FEFF bl FLASH_Program_Word
1228 .LVL63:
197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1229 .loc 1 197 9 is_stmt 1 view .LVU317
1230 0062 E8E7 b .L89
1231 .LVL64:
1232 .L90:
203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1233 .loc 1 203 9 view .LVU318
1234 0064 3246 mov r2, r6
1235 0066 3B46 mov r3, r7
1236 0068 2846 mov r0, r5
1237 .LVL65:
203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1238 .loc 1 203 9 is_stmt 0 view .LVU319
1239 006a FFF7FEFF bl FLASH_Program_DoubleWord
1240 .LVL66:
204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1241 .loc 1 204 9 is_stmt 1 view .LVU320
1242 006e E2E7 b .L89
1243 .LVL67:
1244 .L95:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1245 .loc 1 167 3 is_stmt 0 view .LVU321
1246 0070 0220 movs r0, #2
1247 .LVL68:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/cc67Igjp.s page 56
1248 .loc 1 167 3 view .LVU322
1249 0072 ECE7 b .L87
1250 .L98:
1251 .align 2
1252 .L97:
1253 0074 00000000 .word .LANCHOR0
1254 0078 003C0240 .word 1073888256
1255 .cfi_endproc
1256 .LFE141:
1258 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1259 .align 1
1260 .global HAL_FLASH_OB_Launch
1261 .syntax unified
1262 .thumb
1263 .thumb_func
1264 .fpu fpv5-d16
1266 HAL_FLASH_OB_Launch:
1267 .LFB150:
547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */
1268 .loc 1 547 1 is_stmt 1 view -0
1269 .cfi_startproc
1270 @ args = 0, pretend = 0, frame = 0
1271 @ frame_needed = 0, uses_anonymous_args = 0
1272 0000 08B5 push {r3, lr}
1273 .LCFI6:
1274 .cfi_def_cfa_offset 8
1275 .cfi_offset 3, -8
1276 .cfi_offset 14, -4
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1277 .loc 1 549 3 view .LVU324
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1278 .loc 1 549 16 is_stmt 0 view .LVU325
1279 0002 054A ldr r2, .L101
1280 0004 5369 ldr r3, [r2, #20]
1281 0006 43F00203 orr r3, r3, #2
1282 000a 5361 str r3, [r2, #20]
552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1283 .loc 1 552 3 is_stmt 1 view .LVU326
552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1284 .loc 1 552 10 is_stmt 0 view .LVU327
1285 000c 4CF25030 movw r0, #50000
1286 0010 FFF7FEFF bl FLASH_WaitForLastOperation
1287 .LVL69:
553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1288 .loc 1 553 1 view .LVU328
1289 0014 08BD pop {r3, pc}
1290 .L102:
1291 0016 00BF .align 2
1292 .L101:
1293 0018 003C0240 .word 1073888256
1294 .cfi_endproc
1295 .LFE150:
1297 .global pFlash
1298 .section .bss.pFlash,"aw",%nobits
1299 .align 2
1300 .set .LANCHOR0,. + 0
1303 pFlash:
ARM GAS /tmp/cc67Igjp.s page 57
1304 0000 00000000 .space 28
1304 00000000
1304 00000000
1304 00000000
1304 00000000
1305 .text
1306 .Letext0:
1307 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h"
1308 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h"
1309 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h"
1310 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h"
1311 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h"
1312 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h"
1313 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h"
ARM GAS /tmp/cc67Igjp.s page 58
DEFINED SYMBOLS
*ABS*:0000000000000000 stm32f7xx_hal_flash.c
/tmp/cc67Igjp.s:17 .text.FLASH_Program_DoubleWord:0000000000000000 $t
/tmp/cc67Igjp.s:24 .text.FLASH_Program_DoubleWord:0000000000000000 FLASH_Program_DoubleWord
/tmp/cc67Igjp.s:99 .text.FLASH_Program_DoubleWord:0000000000000030 $d
/tmp/cc67Igjp.s:104 .text.FLASH_Program_Word:0000000000000000 $t
/tmp/cc67Igjp.s:110 .text.FLASH_Program_Word:0000000000000000 FLASH_Program_Word
/tmp/cc67Igjp.s:157 .text.FLASH_Program_Word:0000000000000024 $d
/tmp/cc67Igjp.s:162 .text.FLASH_Program_HalfWord:0000000000000000 $t
/tmp/cc67Igjp.s:168 .text.FLASH_Program_HalfWord:0000000000000000 FLASH_Program_HalfWord
/tmp/cc67Igjp.s:215 .text.FLASH_Program_HalfWord:0000000000000024 $d
/tmp/cc67Igjp.s:220 .text.FLASH_Program_Byte:0000000000000000 $t
/tmp/cc67Igjp.s:226 .text.FLASH_Program_Byte:0000000000000000 FLASH_Program_Byte
/tmp/cc67Igjp.s:272 .text.FLASH_Program_Byte:0000000000000020 $d
/tmp/cc67Igjp.s:277 .text.FLASH_SetErrorCode:0000000000000000 $t
/tmp/cc67Igjp.s:283 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode
/tmp/cc67Igjp.s:369 .text.FLASH_SetErrorCode:000000000000006c $d
/tmp/cc67Igjp.s:375 .text.HAL_FLASH_Program_IT:0000000000000000 $t
/tmp/cc67Igjp.s:382 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT
/tmp/cc67Igjp.s:440 .text.HAL_FLASH_Program_IT:000000000000003a $d
/tmp/cc67Igjp.s:444 .text.HAL_FLASH_Program_IT:000000000000003e $t
/tmp/cc67Igjp.s:505 .text.HAL_FLASH_Program_IT:000000000000006c $d
/tmp/cc67Igjp.s:511 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t
/tmp/cc67Igjp.s:518 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback
/tmp/cc67Igjp.s:533 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t
/tmp/cc67Igjp.s:540 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback
/tmp/cc67Igjp.s:555 .text.HAL_FLASH_IRQHandler:0000000000000000 $t
/tmp/cc67Igjp.s:562 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler
/tmp/cc67Igjp.s:794 .text.HAL_FLASH_IRQHandler:0000000000000100 $d
/tmp/cc67Igjp.s:801 .text.HAL_FLASH_Unlock:0000000000000000 $t
/tmp/cc67Igjp.s:808 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock
/tmp/cc67Igjp.s:854 .text.HAL_FLASH_Unlock:0000000000000028 $d
/tmp/cc67Igjp.s:860 .text.HAL_FLASH_Lock:0000000000000000 $t
/tmp/cc67Igjp.s:867 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock
/tmp/cc67Igjp.s:887 .text.HAL_FLASH_Lock:0000000000000010 $d
/tmp/cc67Igjp.s:892 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t
/tmp/cc67Igjp.s:899 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock
/tmp/cc67Igjp.s:934 .text.HAL_FLASH_OB_Unlock:0000000000000020 $d
/tmp/cc67Igjp.s:940 .text.HAL_FLASH_OB_Lock:0000000000000000 $t
/tmp/cc67Igjp.s:947 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock
/tmp/cc67Igjp.s:967 .text.HAL_FLASH_OB_Lock:0000000000000010 $d
/tmp/cc67Igjp.s:972 .text.HAL_FLASH_GetError:0000000000000000 $t
/tmp/cc67Igjp.s:979 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError
/tmp/cc67Igjp.s:995 .text.HAL_FLASH_GetError:0000000000000008 $d
/tmp/cc67Igjp.s:1000 .text.FLASH_WaitForLastOperation:0000000000000000 $t
/tmp/cc67Igjp.s:1007 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation
/tmp/cc67Igjp.s:1106 .text.FLASH_WaitForLastOperation:000000000000005c $d
/tmp/cc67Igjp.s:1112 .text.HAL_FLASH_Program:0000000000000000 $t
/tmp/cc67Igjp.s:1119 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program
/tmp/cc67Igjp.s:1171 .text.HAL_FLASH_Program:000000000000002a $d
/tmp/cc67Igjp.s:1175 .text.HAL_FLASH_Program:000000000000002e $t
/tmp/cc67Igjp.s:1253 .text.HAL_FLASH_Program:0000000000000074 $d
/tmp/cc67Igjp.s:1259 .text.HAL_FLASH_OB_Launch:0000000000000000 $t
/tmp/cc67Igjp.s:1266 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch
/tmp/cc67Igjp.s:1293 .text.HAL_FLASH_OB_Launch:0000000000000018 $d
/tmp/cc67Igjp.s:1303 .bss.pFlash:0000000000000000 pFlash
/tmp/cc67Igjp.s:1299 .bss.pFlash:0000000000000000 $d
ARM GAS /tmp/cc67Igjp.s page 59
UNDEFINED SYMBOLS
FLASH_Erase_Sector
HAL_GetTick