Files
RadioPhotonic_PCB_software/build/stm32f7xx_hal_flash.lst

3467 lines
216 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/ccfS03PQ.s page 1
1 .cpu cortex-m7
2 .arch armv7e-m
3 .fpu fpv5-d16
4 .eabi_attribute 28, 1
5 .eabi_attribute 20, 1
6 .eabi_attribute 21, 1
7 .eabi_attribute 23, 3
8 .eabi_attribute 24, 1
9 .eabi_attribute 25, 1
10 .eabi_attribute 26, 1
11 .eabi_attribute 30, 1
12 .eabi_attribute 34, 1
13 .eabi_attribute 18, 4
14 .file "stm32f7xx_hal_flash.c"
15 .text
16 .Ltext0:
17 .cfi_sections .debug_frame
18 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c"
19 .section .text.FLASH_Program_DoubleWord,"ax",%progbits
20 .align 1
21 .syntax unified
22 .thumb
23 .thumb_func
25 FLASH_Program_DoubleWord:
26 .LVL0:
27 .LFB153:
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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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/ccfS03PQ.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 8 is_stmt 0 view .LVU4
41 0002 0B49 ldr r1, .L3
42 0004 0C69 ldr r4, [r1, #16]
43 .loc 1 657 13 view .LVU5
44 0006 24F44074 bic r4, r4, #768
45 000a 0C61 str r4, [r1, #16]
658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD;
46 .loc 1 658 3 is_stmt 1 view .LVU6
47 .loc 1 658 8 is_stmt 0 view .LVU7
48 000c 0C69 ldr r4, [r1, #16]
49 .loc 1 658 13 view .LVU8
50 000e 44F44074 orr r4, r4, #768
51 0012 0C61 str r4, [r1, #16]
659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
52 .loc 1 659 3 is_stmt 1 view .LVU9
53 .loc 1 659 8 is_stmt 0 view .LVU10
54 0014 0C69 ldr r4, [r1, #16]
55 .loc 1 659 13 view .LVU11
56 0016 44F00104 orr r4, r4, #1
57 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;
58 .loc 1 662 3 is_stmt 1 view .LVU12
59 .loc 1 662 28 is_stmt 0 view .LVU13
60 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();
61 .loc 1 665 3 is_stmt 1 view .LVU14
62 .LBB12:
63 .LBI12:
64 .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.
ARM GAS /tmp/ccfS03PQ.s page 14
14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at
15:Drivers/CMSIS/Include/cmsis_gcc.h **** *
16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0
17:Drivers/CMSIS/Include/cmsis_gcc.h **** *
18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software
19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT
20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and
22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License.
23:Drivers/CMSIS/Include/cmsis_gcc.h **** */
24:Drivers/CMSIS/Include/cmsis_gcc.h ****
25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
27:Drivers/CMSIS/Include/cmsis_gcc.h ****
28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0)
37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
38:Drivers/CMSIS/Include/cmsis_gcc.h ****
39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline
45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE
47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline
48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE
50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN
53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__))
54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED
56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used))
57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK
59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak))
60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED
62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1)))
63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT
65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION
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 */
ARM GAS /tmp/ccfS03PQ.s page 15
71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; };
75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE
79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))-
85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ
87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add
93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE
95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))-
101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ
103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add
109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED
111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x)))
112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT
114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict
115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
116:Drivers/CMSIS/Include/cmsis_gcc.h ****
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.
ARM GAS /tmp/ccfS03PQ.s page 16
128:Drivers/CMSIS/Include/cmsis_gcc.h **** */
129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void)
130:Drivers/CMSIS/Include/cmsis_gcc.h **** {
131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
132:Drivers/CMSIS/Include/cmsis_gcc.h **** }
133:Drivers/CMSIS/Include/cmsis_gcc.h ****
134:Drivers/CMSIS/Include/cmsis_gcc.h ****
135:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
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 **** }
ARM GAS /tmp/ccfS03PQ.s page 17
185:Drivers/CMSIS/Include/cmsis_gcc.h ****
186:Drivers/CMSIS/Include/cmsis_gcc.h ****
187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
188:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure)
190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state.
191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
192:Drivers/CMSIS/Include/cmsis_gcc.h **** */
193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
194:Drivers/CMSIS/Include/cmsis_gcc.h **** {
195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
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 ****
ARM GAS /tmp/ccfS03PQ.s page 18
242:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer
244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP).
245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
246:Drivers/CMSIS/Include/cmsis_gcc.h **** */
247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void)
248:Drivers/CMSIS/Include/cmsis_gcc.h **** {
249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
250:Drivers/CMSIS/Include/cmsis_gcc.h ****
251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) );
252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
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).
ARM GAS /tmp/ccfS03PQ.s page 19
299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
300:Drivers/CMSIS/Include/cmsis_gcc.h **** */
301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void)
302:Drivers/CMSIS/Include/cmsis_gcc.h **** {
303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
304:Drivers/CMSIS/Include/cmsis_gcc.h ****
305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) );
306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
307:Drivers/CMSIS/Include/cmsis_gcc.h **** }
308:Drivers/CMSIS/Include/cmsis_gcc.h ****
309:Drivers/CMSIS/Include/cmsis_gcc.h ****
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 **** */
ARM GAS /tmp/ccfS03PQ.s page 20
356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
357:Drivers/CMSIS/Include/cmsis_gcc.h **** {
358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
359:Drivers/CMSIS/Include/cmsis_gcc.h ****
360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
362:Drivers/CMSIS/Include/cmsis_gcc.h **** }
363:Drivers/CMSIS/Include/cmsis_gcc.h ****
364:Drivers/CMSIS/Include/cmsis_gcc.h ****
365:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure)
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)
ARM GAS /tmp/ccfS03PQ.s page 21
413:Drivers/CMSIS/Include/cmsis_gcc.h **** {
414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
415:Drivers/CMSIS/Include/cmsis_gcc.h **** }
416:Drivers/CMSIS/Include/cmsis_gcc.h ****
417:Drivers/CMSIS/Include/cmsis_gcc.h ****
418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
419:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure)
421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
423:Drivers/CMSIS/Include/cmsis_gcc.h **** */
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 ****
ARM GAS /tmp/ccfS03PQ.s page 22
470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
471:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure)
473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state.
474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
475:Drivers/CMSIS/Include/cmsis_gcc.h **** */
476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
477:Drivers/CMSIS/Include/cmsis_gcc.h **** {
478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
479:Drivers/CMSIS/Include/cmsis_gcc.h ****
480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
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 **** */
ARM GAS /tmp/ccfS03PQ.s page 23
527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
528:Drivers/CMSIS/Include/cmsis_gcc.h **** {
529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
530:Drivers/CMSIS/Include/cmsis_gcc.h ****
531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
533:Drivers/CMSIS/Include/cmsis_gcc.h **** }
534:Drivers/CMSIS/Include/cmsis_gcc.h ****
535:Drivers/CMSIS/Include/cmsis_gcc.h ****
536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
537:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
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 **** /**
ARM GAS /tmp/ccfS03PQ.s page 24
584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit
585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure
587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode.
588:Drivers/CMSIS/Include/cmsis_gcc.h ****
589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value
591:Drivers/CMSIS/Include/cmsis_gcc.h **** */
592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
593:Drivers/CMSIS/Include/cmsis_gcc.h **** {
594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
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)))
ARM GAS /tmp/ccfS03PQ.s page 25
641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI
642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit;
643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
646:Drivers/CMSIS/Include/cmsis_gcc.h **** }
647:Drivers/CMSIS/Include/cmsis_gcc.h ****
648:Drivers/CMSIS/Include/cmsis_gcc.h ****
649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
650:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure)
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.
ARM GAS /tmp/ccfS03PQ.s page 26
698:Drivers/CMSIS/Include/cmsis_gcc.h ****
699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec
700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value
701:Drivers/CMSIS/Include/cmsis_gcc.h **** */
702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
703:Drivers/CMSIS/Include/cmsis_gcc.h **** {
704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI
706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U;
707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
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 **** }
ARM GAS /tmp/ccfS03PQ.s page 27
755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
756:Drivers/CMSIS/Include/cmsis_gcc.h ****
757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */
759:Drivers/CMSIS/Include/cmsis_gcc.h ****
760:Drivers/CMSIS/Include/cmsis_gcc.h ****
761:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR
763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register.
764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value
765:Drivers/CMSIS/Include/cmsis_gcc.h **** */
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 ****
ARM GAS /tmp/ccfS03PQ.s page 28
812:Drivers/CMSIS/Include/cmsis_gcc.h ****
813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */
814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions
816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
817:Drivers/CMSIS/Include/cmsis_gcc.h **** */
818:Drivers/CMSIS/Include/cmsis_gcc.h ****
819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2.
820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l"
821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */
822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__)
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)
65 .loc 2 866 27 view .LVU15
66 .LBB13:
ARM GAS /tmp/ccfS03PQ.s page 29
867:Drivers/CMSIS/Include/cmsis_gcc.h **** {
868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory");
67 .loc 2 868 3 view .LVU16
68 .syntax unified
69 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
70 001e BFF36F8F isb 0xF
71 @ 0 "" 2
72 .thumb
73 .syntax unified
74 .LBE13:
75 .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);
76 .loc 1 668 3 view .LVU17
77 .loc 1 668 32 is_stmt 0 view .LVU18
78 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();
79 .loc 1 672 3 is_stmt 1 view .LVU19
80 .LBB14:
81 .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)
82 .loc 2 877 27 view .LVU20
83 .LBB15:
878:Drivers/CMSIS/Include/cmsis_gcc.h **** {
879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory");
84 .loc 2 879 3 view .LVU21
85 .syntax unified
86 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
87 0024 BFF34F8F dsb 0xF
88 @ 0 "" 2
89 .thumb
90 .syntax unified
91 .LBE15:
92 .LBE14:
673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
93 .loc 1 673 1 is_stmt 0 view .LVU22
94 0028 5DF8044B ldr r4, [sp], #4
95 .LCFI1:
96 .cfi_restore 4
97 .cfi_def_cfa_offset 0
98 002c 7047 bx lr
99 .L4:
100 002e 00BF .align 2
101 .L3:
102 0030 003C0240 .word 1073888256
ARM GAS /tmp/ccfS03PQ.s page 30
103 .cfi_endproc
104 .LFE153:
106 .section .text.FLASH_Program_Word,"ax",%progbits
107 .align 1
108 .syntax unified
109 .thumb
110 .thumb_func
112 FLASH_Program_Word:
113 .LVL1:
114 .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 **** {
115 .loc 1 689 1 is_stmt 1 view -0
116 .cfi_startproc
117 @ args = 0, pretend = 0, frame = 0
118 @ frame_needed = 0, uses_anonymous_args = 0
119 @ 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));
120 .loc 1 691 3 view .LVU24
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;
121 .loc 1 694 3 view .LVU25
122 .loc 1 694 8 is_stmt 0 view .LVU26
123 0000 084B ldr r3, .L6
124 0002 1A69 ldr r2, [r3, #16]
125 .loc 1 694 13 view .LVU27
126 0004 22F44072 bic r2, r2, #768
127 0008 1A61 str r2, [r3, #16]
695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD;
128 .loc 1 695 3 is_stmt 1 view .LVU28
129 .loc 1 695 8 is_stmt 0 view .LVU29
130 000a 1A69 ldr r2, [r3, #16]
131 .loc 1 695 13 view .LVU30
132 000c 42F40072 orr r2, r2, #512
133 0010 1A61 str r2, [r3, #16]
696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
134 .loc 1 696 3 is_stmt 1 view .LVU31
135 .loc 1 696 8 is_stmt 0 view .LVU32
136 0012 1A69 ldr r2, [r3, #16]
137 .loc 1 696 13 view .LVU33
138 0014 42F00102 orr r2, r2, #1
ARM GAS /tmp/ccfS03PQ.s page 31
139 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;
140 .loc 1 698 3 is_stmt 1 view .LVU34
141 .loc 1 698 28 is_stmt 0 view .LVU35
142 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();
143 .loc 1 702 3 is_stmt 1 view .LVU36
144 .LBB16:
145 .LBI16:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
146 .loc 2 877 27 view .LVU37
147 .LBB17:
148 .loc 2 879 3 view .LVU38
149 .syntax unified
150 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
151 001c BFF34F8F dsb 0xF
152 @ 0 "" 2
153 .thumb
154 .syntax unified
155 .LBE17:
156 .LBE16:
703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
157 .loc 1 703 1 is_stmt 0 view .LVU39
158 0020 7047 bx lr
159 .L7:
160 0022 00BF .align 2
161 .L6:
162 0024 003C0240 .word 1073888256
163 .cfi_endproc
164 .LFE154:
166 .section .text.FLASH_Program_HalfWord,"ax",%progbits
167 .align 1
168 .syntax unified
169 .thumb
170 .thumb_func
172 FLASH_Program_HalfWord:
173 .LVL2:
174 .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 **** {
ARM GAS /tmp/ccfS03PQ.s page 32
175 .loc 1 718 1 is_stmt 1 view -0
176 .cfi_startproc
177 @ args = 0, pretend = 0, frame = 0
178 @ frame_needed = 0, uses_anonymous_args = 0
179 @ 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));
180 .loc 1 720 3 view .LVU41
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;
181 .loc 1 723 3 view .LVU42
182 .loc 1 723 8 is_stmt 0 view .LVU43
183 0000 084B ldr r3, .L9
184 0002 1A69 ldr r2, [r3, #16]
185 .loc 1 723 13 view .LVU44
186 0004 22F44072 bic r2, r2, #768
187 0008 1A61 str r2, [r3, #16]
724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD;
188 .loc 1 724 3 is_stmt 1 view .LVU45
189 .loc 1 724 8 is_stmt 0 view .LVU46
190 000a 1A69 ldr r2, [r3, #16]
191 .loc 1 724 13 view .LVU47
192 000c 42F48072 orr r2, r2, #256
193 0010 1A61 str r2, [r3, #16]
725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
194 .loc 1 725 3 is_stmt 1 view .LVU48
195 .loc 1 725 8 is_stmt 0 view .LVU49
196 0012 1A69 ldr r2, [r3, #16]
197 .loc 1 725 13 view .LVU50
198 0014 42F00102 orr r2, r2, #1
199 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;
200 .loc 1 727 3 is_stmt 1 view .LVU51
201 .loc 1 727 28 is_stmt 0 view .LVU52
202 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();
203 .loc 1 731 3 is_stmt 1 view .LVU53
204 .LBB18:
205 .LBI18:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
206 .loc 2 877 27 view .LVU54
207 .LBB19:
208 .loc 2 879 3 view .LVU55
209 .syntax unified
210 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
211 001c BFF34F8F dsb 0xF
212 @ 0 "" 2
213 .thumb
214 .syntax unified
215 .LBE19:
216 .LBE18:
732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
ARM GAS /tmp/ccfS03PQ.s page 33
733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
217 .loc 1 733 1 is_stmt 0 view .LVU56
218 0020 7047 bx lr
219 .L10:
220 0022 00BF .align 2
221 .L9:
222 0024 003C0240 .word 1073888256
223 .cfi_endproc
224 .LFE155:
226 .section .text.FLASH_Program_Byte,"ax",%progbits
227 .align 1
228 .syntax unified
229 .thumb
230 .thumb_func
232 FLASH_Program_Byte:
233 .LVL3:
234 .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 **** {
235 .loc 1 748 1 is_stmt 1 view -0
236 .cfi_startproc
237 @ args = 0, pretend = 0, frame = 0
238 @ frame_needed = 0, uses_anonymous_args = 0
239 @ 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));
240 .loc 1 750 3 view .LVU58
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;
241 .loc 1 753 3 view .LVU59
242 .loc 1 753 8 is_stmt 0 view .LVU60
243 0000 074B ldr r3, .L12
244 0002 1A69 ldr r2, [r3, #16]
245 .loc 1 753 13 view .LVU61
246 0004 22F44072 bic r2, r2, #768
247 0008 1A61 str r2, [r3, #16]
754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE;
248 .loc 1 754 3 is_stmt 1 view .LVU62
249 .loc 1 754 8 is_stmt 0 view .LVU63
250 000a 1A69 ldr r2, [r3, #16]
251 .loc 1 754 13 view .LVU64
252 000c 1A61 str r2, [r3, #16]
755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG;
ARM GAS /tmp/ccfS03PQ.s page 34
253 .loc 1 755 3 is_stmt 1 view .LVU65
254 .loc 1 755 8 is_stmt 0 view .LVU66
255 000e 1A69 ldr r2, [r3, #16]
256 .loc 1 755 13 view .LVU67
257 0010 42F00102 orr r2, r2, #1
258 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;
259 .loc 1 757 3 is_stmt 1 view .LVU68
260 .loc 1 757 27 is_stmt 0 view .LVU69
261 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();
262 .loc 1 761 3 is_stmt 1 view .LVU70
263 .LBB20:
264 .LBI20:
877:Drivers/CMSIS/Include/cmsis_gcc.h **** {
265 .loc 2 877 27 view .LVU71
266 .LBB21:
267 .loc 2 879 3 view .LVU72
268 .syntax unified
269 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
270 0018 BFF34F8F dsb 0xF
271 @ 0 "" 2
272 .thumb
273 .syntax unified
274 .LBE21:
275 .LBE20:
762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
276 .loc 1 762 1 is_stmt 0 view .LVU73
277 001c 7047 bx lr
278 .L13:
279 001e 00BF .align 2
280 .L12:
281 0020 003C0240 .word 1073888256
282 .cfi_endproc
283 .LFE156:
285 .section .text.FLASH_SetErrorCode,"ax",%progbits
286 .align 1
287 .syntax unified
288 .thumb
289 .thumb_func
291 FLASH_SetErrorCode:
292 .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 **** {
293 .loc 1 769 1 is_stmt 1 view -0
294 .cfi_startproc
295 @ args = 0, pretend = 0, frame = 0
296 @ frame_needed = 0, uses_anonymous_args = 0
ARM GAS /tmp/ccfS03PQ.s page 35
297 @ link register save eliminated.
770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET)
298 .loc 1 770 3 view .LVU75
299 .loc 1 770 6 is_stmt 0 view .LVU76
300 0000 1A4B ldr r3, .L20
301 0002 DB68 ldr r3, [r3, #12]
302 .loc 1 770 5 view .LVU77
303 0004 13F0020F tst r3, #2
304 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;
305 .loc 1 772 5 is_stmt 1 view .LVU78
306 .loc 1 772 11 is_stmt 0 view .LVU79
307 000a 194A ldr r2, .L20+4
308 000c 9369 ldr r3, [r2, #24]
309 .loc 1 772 22 view .LVU80
310 000e 43F02003 orr r3, r3, #32
311 0012 9361 str r3, [r2, #24]
312 .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)
313 .loc 1 775 3 is_stmt 1 view .LVU81
314 .loc 1 775 6 is_stmt 0 view .LVU82
315 0014 154B ldr r3, .L20
316 0016 DB68 ldr r3, [r3, #12]
317 .loc 1 775 5 view .LVU83
318 0018 13F0100F tst r3, #16
319 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;
320 .loc 1 777 4 is_stmt 1 view .LVU84
321 .loc 1 777 10 is_stmt 0 view .LVU85
322 001e 144A ldr r2, .L20+4
323 0020 9369 ldr r3, [r2, #24]
324 .loc 1 777 21 view .LVU86
325 0022 43F01003 orr r3, r3, #16
326 0026 9361 str r3, [r2, #24]
327 .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)
328 .loc 1 780 3 is_stmt 1 view .LVU87
329 .loc 1 780 6 is_stmt 0 view .LVU88
330 0028 104B ldr r3, .L20
331 002a DB68 ldr r3, [r3, #12]
332 .loc 1 780 5 view .LVU89
333 002c 13F0200F tst r3, #32
334 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;
335 .loc 1 782 4 is_stmt 1 view .LVU90
336 .loc 1 782 10 is_stmt 0 view .LVU91
337 0032 0F4A ldr r2, .L20+4
338 0034 9369 ldr r3, [r2, #24]
339 .loc 1 782 21 view .LVU92
340 0036 43F00803 orr r3, r3, #8
ARM GAS /tmp/ccfS03PQ.s page 36
341 003a 9361 str r3, [r2, #24]
342 .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)
343 .loc 1 785 3 is_stmt 1 view .LVU93
344 .loc 1 785 6 is_stmt 0 view .LVU94
345 003c 0B4B ldr r3, .L20
346 003e DB68 ldr r3, [r3, #12]
347 .loc 1 785 5 view .LVU95
348 0040 13F0400F tst r3, #64
349 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;
350 .loc 1 787 5 is_stmt 1 view .LVU96
351 .loc 1 787 11 is_stmt 0 view .LVU97
352 0046 0A4A ldr r2, .L20+4
353 0048 9369 ldr r3, [r2, #24]
354 .loc 1 787 22 view .LVU98
355 004a 43F00403 orr r3, r3, #4
356 004e 9361 str r3, [r2, #24]
357 .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)
358 .loc 1 790 3 is_stmt 1 view .LVU99
359 .loc 1 790 6 is_stmt 0 view .LVU100
360 0050 064B ldr r3, .L20
361 0052 DB68 ldr r3, [r3, #12]
362 .loc 1 790 5 view .LVU101
363 0054 13F0800F tst r3, #128
364 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;
365 .loc 1 792 5 is_stmt 1 view .LVU102
366 .loc 1 792 11 is_stmt 0 view .LVU103
367 005a 054A ldr r2, .L20+4
368 005c 9369 ldr r3, [r2, #24]
369 .loc 1 792 22 view .LVU104
370 005e 43F00203 orr r3, r3, #2
371 0062 9361 str r3, [r2, #24]
372 .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);
373 .loc 1 803 3 is_stmt 1 view .LVU105
374 0064 014B ldr r3, .L20
375 0066 F222 movs r2, #242
376 0068 DA60 str r2, [r3, #12]
ARM GAS /tmp/ccfS03PQ.s page 37
804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
377 .loc 1 804 1 is_stmt 0 view .LVU106
378 006a 7047 bx lr
379 .L21:
380 .align 2
381 .L20:
382 006c 003C0240 .word 1073888256
383 0070 00000000 .word pFlash
384 .cfi_endproc
385 .LFE157:
387 .section .text.HAL_FLASH_Program_IT,"ax",%progbits
388 .align 1
389 .global HAL_FLASH_Program_IT
390 .syntax unified
391 .thumb
392 .thumb_func
394 HAL_FLASH_Program_IT:
395 .LVL4:
396 .LFB142:
232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
397 .loc 1 232 1 is_stmt 1 view -0
398 .cfi_startproc
399 @ args = 0, pretend = 0, frame = 0
400 @ frame_needed = 0, uses_anonymous_args = 0
232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
401 .loc 1 232 1 is_stmt 0 view .LVU108
402 0000 70B5 push {r4, r5, r6, lr}
403 .LCFI2:
404 .cfi_def_cfa_offset 16
405 .cfi_offset 4, -16
406 .cfi_offset 5, -12
407 .cfi_offset 6, -8
408 .cfi_offset 14, -4
233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
409 .loc 1 233 3 is_stmt 1 view .LVU109
410 .LVL5:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
411 .loc 1 236 3 view .LVU110
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
412 .loc 1 236 3 view .LVU111
413 0002 1A4C ldr r4, .L32
414 0004 247D ldrb r4, [r4, #20] @ zero_extendqisi2
415 0006 012C cmp r4, #1
416 0008 2CD0 beq .L29
417 000a 8446 mov ip, r0
418 000c 0846 mov r0, r1
419 .LVL6:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
420 .loc 1 236 3 discriminator 2 view .LVU112
421 000e 174D ldr r5, .L32
422 0010 0121 movs r1, #1
423 .LVL7:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
424 .loc 1 236 3 is_stmt 0 discriminator 2 view .LVU113
425 0012 2975 strb r1, [r5, #20]
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
426 .loc 1 236 3 is_stmt 1 discriminator 2 view .LVU114
ARM GAS /tmp/ccfS03PQ.s page 38
239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
427 .loc 1 239 3 view .LVU115
242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
428 .loc 1 242 3 view .LVU116
429 0014 164C ldr r4, .L32+4
430 0016 2669 ldr r6, [r4, #16]
431 0018 46F08076 orr r6, r6, #16777216
432 001c 2661 str r6, [r4, #16]
245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
433 .loc 1 245 3 view .LVU117
434 001e 2669 ldr r6, [r4, #16]
435 0020 46F00076 orr r6, r6, #33554432
436 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);
437 .loc 1 248 3 view .LVU118
438 0026 F321 movs r1, #243
439 0028 E160 str r1, [r4, #12]
251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address;
440 .loc 1 251 3 view .LVU119
251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address;
441 .loc 1 251 27 is_stmt 0 view .LVU120
442 002a 0321 movs r1, #3
443 002c 2970 strb r1, [r5]
252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
444 .loc 1 252 3 is_stmt 1 view .LVU121
252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
445 .loc 1 252 18 is_stmt 0 view .LVU122
446 002e 2861 str r0, [r5, #16]
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
447 .loc 1 254 3 is_stmt 1 view .LVU123
448 0030 BCF1030F cmp ip, #3
449 0034 18D8 bhi .L30
450 0036 DFE80CF0 tbb [pc, ip]
451 .L25:
452 003a 02 .byte (.L28-.L25)/2
453 003b 07 .byte (.L27-.L25)/2
454 003c 0C .byte (.L26-.L25)/2
455 003d 11 .byte (.L24-.L25)/2
456 .p2align 1
457 .L28:
259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
458 .loc 1 259 7 view .LVU124
459 003e D1B2 uxtb r1, r2
460 0040 FFF7FEFF bl FLASH_Program_Byte
461 .LVL8:
260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
462 .loc 1 260 7 view .LVU125
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
463 .loc 1 286 10 is_stmt 0 view .LVU126
464 0044 0020 movs r0, #0
465 .L23:
287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
466 .loc 1 287 1 view .LVU127
467 0046 70BD pop {r4, r5, r6, pc}
468 .LVL9:
469 .L27:
266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
ARM GAS /tmp/ccfS03PQ.s page 39
470 .loc 1 266 7 is_stmt 1 view .LVU128
471 0048 91B2 uxth r1, r2
472 004a FFF7FEFF bl FLASH_Program_HalfWord
473 .LVL10:
267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
474 .loc 1 267 7 view .LVU129
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
475 .loc 1 286 10 is_stmt 0 view .LVU130
476 004e 0020 movs r0, #0
267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
477 .loc 1 267 7 view .LVU131
478 0050 F9E7 b .L23
479 .LVL11:
480 .L26:
273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
481 .loc 1 273 7 is_stmt 1 view .LVU132
482 0052 1146 mov r1, r2
483 0054 FFF7FEFF bl FLASH_Program_Word
484 .LVL12:
274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
485 .loc 1 274 7 view .LVU133
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
486 .loc 1 286 10 is_stmt 0 view .LVU134
487 0058 0020 movs r0, #0
274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
488 .loc 1 274 7 view .LVU135
489 005a F4E7 b .L23
490 .LVL13:
491 .L24:
280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
492 .loc 1 280 7 is_stmt 1 view .LVU136
493 005c FFF7FEFF bl FLASH_Program_DoubleWord
494 .LVL14:
281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
495 .loc 1 281 7 view .LVU137
286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
496 .loc 1 286 10 is_stmt 0 view .LVU138
497 0060 0020 movs r0, #0
281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
498 .loc 1 281 7 view .LVU139
499 0062 F0E7 b .L23
500 .LVL15:
501 .L29:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
502 .loc 1 236 3 discriminator 1 view .LVU140
503 0064 0220 movs r0, #2
504 .LVL16:
236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
505 .loc 1 236 3 discriminator 1 view .LVU141
506 0066 EEE7 b .L23
507 .LVL17:
508 .L30:
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
509 .loc 1 254 3 view .LVU142
510 0068 0020 movs r0, #0
511 .LVL18:
254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
ARM GAS /tmp/ccfS03PQ.s page 40
512 .loc 1 254 3 view .LVU143
513 006a ECE7 b .L23
514 .L33:
515 .align 2
516 .L32:
517 006c 00000000 .word pFlash
518 0070 003C0240 .word 1073888256
519 .cfi_endproc
520 .LFE142:
522 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits
523 .align 1
524 .weak HAL_FLASH_EndOfOperationCallback
525 .syntax unified
526 .thumb
527 .thumb_func
529 HAL_FLASH_EndOfOperationCallback:
530 .LVL19:
531 .LFB144:
429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
532 .loc 1 429 1 is_stmt 1 view -0
533 .cfi_startproc
534 @ args = 0, pretend = 0, frame = 0
535 @ frame_needed = 0, uses_anonymous_args = 0
536 @ 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,
537 .loc 1 431 3 view .LVU145
435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
538 .loc 1 435 1 is_stmt 0 view .LVU146
539 0000 7047 bx lr
540 .cfi_endproc
541 .LFE144:
543 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits
544 .align 1
545 .weak HAL_FLASH_OperationErrorCallback
546 .syntax unified
547 .thumb
548 .thumb_func
550 HAL_FLASH_OperationErrorCallback:
551 .LVL20:
552 .LFB145:
447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */
553 .loc 1 447 1 is_stmt 1 view -0
554 .cfi_startproc
555 @ args = 0, pretend = 0, frame = 0
556 @ frame_needed = 0, uses_anonymous_args = 0
557 @ 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,
558 .loc 1 449 3 view .LVU148
453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
559 .loc 1 453 1 is_stmt 0 view .LVU149
560 0000 7047 bx lr
561 .cfi_endproc
562 .LFE145:
564 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits
565 .align 1
566 .global HAL_FLASH_IRQHandler
567 .syntax unified
ARM GAS /tmp/ccfS03PQ.s page 41
568 .thumb
569 .thumb_func
571 HAL_FLASH_IRQHandler:
572 .LFB143:
294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t temp = 0;
573 .loc 1 294 1 is_stmt 1 view -0
574 .cfi_startproc
575 @ args = 0, pretend = 0, frame = 0
576 @ frame_needed = 0, uses_anonymous_args = 0
577 0000 38B5 push {r3, r4, r5, lr}
578 .LCFI3:
579 .cfi_def_cfa_offset 16
580 .cfi_offset 3, -16
581 .cfi_offset 4, -12
582 .cfi_offset 5, -8
583 .cfi_offset 14, -4
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
584 .loc 1 295 3 view .LVU151
585 .LVL21:
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
586 .loc 1 298 3 view .LVU152
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
587 .loc 1 298 8 is_stmt 0 view .LVU153
588 0002 3E4B ldr r3, .L48
589 0004 1A69 ldr r2, [r3, #16]
298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
590 .loc 1 298 13 view .LVU154
591 0006 22F00102 bic r2, r2, #1
592 000a 1A61 str r2, [r3, #16]
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
593 .loc 1 301 3 is_stmt 1 view .LVU155
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
594 .loc 1 301 8 is_stmt 0 view .LVU156
595 000c 1A69 ldr r2, [r3, #16]
301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK;
596 .loc 1 301 13 view .LVU157
597 000e 22F00202 bic r2, r2, #2
598 0012 1A61 str r2, [r3, #16]
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
599 .loc 1 302 3 is_stmt 1 view .LVU158
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
600 .loc 1 302 8 is_stmt 0 view .LVU159
601 0014 1A69 ldr r2, [r3, #16]
302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
602 .loc 1 302 13 view .LVU160
603 0016 22F0F802 bic r2, r2, #248
604 001a 1A61 str r2, [r3, #16]
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
605 .loc 1 305 3 is_stmt 1 view .LVU161
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
606 .loc 1 305 8 is_stmt 0 view .LVU162
607 001c 1969 ldr r1, [r3, #16]
305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
608 .loc 1 305 13 view .LVU163
609 001e 384A ldr r2, .L48+4
610 0020 0A40 ands r2, r2, r1
611 0022 1A61 str r2, [r3, #16]
ARM GAS /tmp/ccfS03PQ.s page 42
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
612 .loc 1 308 3 is_stmt 1 view .LVU164
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
613 .loc 1 308 6 is_stmt 0 view .LVU165
614 0024 DC68 ldr r4, [r3, #12]
308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
615 .loc 1 308 5 view .LVU166
616 0026 14F00104 ands r4, r4, #1
617 002a 2DD0 beq .L37
311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
618 .loc 1 311 5 is_stmt 1 view .LVU167
619 002c 0122 movs r2, #1
620 002e DA60 str r2, [r3, #12]
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
621 .loc 1 313 5 view .LVU168
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
622 .loc 1 313 19 is_stmt 0 view .LVU169
623 0030 344B ldr r3, .L48+8
624 0032 1B78 ldrb r3, [r3] @ zero_extendqisi2
625 0034 DBB2 uxtb r3, r3
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
626 .loc 1 313 5 view .LVU170
627 0036 022B cmp r3, #2
628 0038 1FD0 beq .L38
629 003a 032B cmp r3, #3
630 003c 4FD0 beq .L39
631 003e 9342 cmp r3, r2
632 0040 55D1 bne .L45
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
633 .loc 1 318 9 is_stmt 1 view .LVU171
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
634 .loc 1 318 15 is_stmt 0 view .LVU172
635 0042 304B ldr r3, .L48+8
636 0044 5A68 ldr r2, [r3, #4]
318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
637 .loc 1 318 32 view .LVU173
638 0046 013A subs r2, r2, #1
639 0048 5A60 str r2, [r3, #4]
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
640 .loc 1 321 9 is_stmt 1 view .LVU174
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
641 .loc 1 321 18 is_stmt 0 view .LVU175
642 004a 5B68 ldr r3, [r3, #4]
321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
643 .loc 1 321 11 view .LVU176
644 004c 5BB1 cbz r3, .L40
323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */
645 .loc 1 323 11 is_stmt 1 view .LVU177
323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */
646 .loc 1 323 16 is_stmt 0 view .LVU178
647 004e 2D4D ldr r5, .L48+8
648 0050 E868 ldr r0, [r5, #12]
649 .LVL22:
325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
650 .loc 1 325 11 is_stmt 1 view .LVU179
651 0052 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
652 .LVL23:
ARM GAS /tmp/ccfS03PQ.s page 43
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
653 .loc 1 328 11 view .LVU180
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
654 .loc 1 328 26 is_stmt 0 view .LVU181
655 0056 EC68 ldr r4, [r5, #12]
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
656 .loc 1 328 18 view .LVU182
657 0058 0134 adds r4, r4, #1
328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase);
658 .loc 1 328 16 view .LVU183
659 005a EC60 str r4, [r5, #12]
660 .LVL24:
329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
661 .loc 1 329 11 is_stmt 1 view .LVU184
329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
662 .loc 1 329 42 is_stmt 0 view .LVU185
663 005c 297A ldrb r1, [r5, #8] @ zero_extendqisi2
329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
664 .loc 1 329 11 view .LVU186
665 005e 2046 mov r0, r4
666 0060 FFF7FEFF bl FLASH_Erase_Sector
667 .LVL25:
668 0064 10E0 b .L37
669 .LVL26:
670 .L40:
335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
671 .loc 1 335 11 is_stmt 1 view .LVU187
335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */
672 .loc 1 335 25 is_stmt 0 view .LVU188
673 0066 274D ldr r5, .L48+8
674 0068 4FF0FF34 mov r4, #-1
675 006c EC60 str r4, [r5, #12]
337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Sector Erase procedure is completed */
676 .loc 1 337 11 is_stmt 1 view .LVU189
677 006e 2046 mov r0, r4
678 0070 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
679 .LVL27:
339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
680 .loc 1 339 11 view .LVU190
339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
681 .loc 1 339 35 is_stmt 0 view .LVU191
682 0074 0023 movs r3, #0
683 0076 2B70 strb r3, [r5]
684 0078 06E0 b .L37
685 .LVL28:
686 .L38:
348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MAss Erase procedure is completed */
687 .loc 1 348 9 is_stmt 1 view .LVU192
688 007a 0020 movs r0, #0
689 007c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
690 .LVL29:
350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
691 .loc 1 350 9 view .LVU193
350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
692 .loc 1 350 33 is_stmt 0 view .LVU194
693 0080 0020 movs r0, #0
694 0082 204B ldr r3, .L48+8
ARM GAS /tmp/ccfS03PQ.s page 44
695 0084 1870 strb r0, [r3]
351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
696 .loc 1 351 9 is_stmt 1 view .LVU195
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
697 .loc 1 295 12 is_stmt 0 view .LVU196
698 0086 0446 mov r4, r0
699 .LVL30:
700 .L37:
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
701 .loc 1 369 3 is_stmt 1 view .LVU197
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
702 .loc 1 369 6 is_stmt 0 view .LVU198
703 0088 1C4B ldr r3, .L48
704 008a DB68 ldr r3, [r3, #12]
369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
705 .loc 1 369 5 view .LVU199
706 008c 13F0F20F tst r3, #242
707 0090 15D0 beq .L41
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
708 .loc 1 371 5 is_stmt 1 view .LVU200
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
709 .loc 1 371 19 is_stmt 0 view .LVU201
710 0092 1C4B ldr r3, .L48+8
711 0094 1B78 ldrb r3, [r3] @ zero_extendqisi2
712 0096 DBB2 uxtb r3, r3
371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
713 .loc 1 371 5 view .LVU202
714 0098 022B cmp r3, #2
715 009a 2DD0 beq .L46
716 009c 032B cmp r3, #3
717 009e 28D0 beq .L43
718 00a0 012B cmp r3, #1
719 00a2 04D1 bne .L42
376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
720 .loc 1 376 9 is_stmt 1 view .LVU203
376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU;
721 .loc 1 376 14 is_stmt 0 view .LVU204
722 00a4 174B ldr r3, .L48+8
723 00a6 DC68 ldr r4, [r3, #12]
724 .LVL31:
377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
725 .loc 1 377 9 is_stmt 1 view .LVU205
377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
726 .loc 1 377 23 is_stmt 0 view .LVU206
727 00a8 4FF0FF32 mov r2, #-1
728 00ac DA60 str r2, [r3, #12]
378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
729 .loc 1 378 9 is_stmt 1 view .LVU207
730 .LVL32:
731 .L42:
396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
732 .loc 1 396 5 view .LVU208
733 00ae FFF7FEFF bl FLASH_SetErrorCode
734 .LVL33:
399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
735 .loc 1 399 5 view .LVU209
736 00b2 2046 mov r0, r4
ARM GAS /tmp/ccfS03PQ.s page 45
737 00b4 FFF7FEFF bl HAL_FLASH_OperationErrorCallback
738 .LVL34:
402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
739 .loc 1 402 5 view .LVU210
402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
740 .loc 1 402 29 is_stmt 0 view .LVU211
741 00b8 124B ldr r3, .L48+8
742 00ba 0022 movs r2, #0
743 00bc 1A70 strb r2, [r3]
744 .L41:
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
745 .loc 1 405 3 is_stmt 1 view .LVU212
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
746 .loc 1 405 12 is_stmt 0 view .LVU213
747 00be 114B ldr r3, .L48+8
748 00c0 1B78 ldrb r3, [r3] @ zero_extendqisi2
405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
749 .loc 1 405 5 view .LVU214
750 00c2 5BB9 cbnz r3, .L36
408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
751 .loc 1 408 5 is_stmt 1 view .LVU215
752 00c4 0D4B ldr r3, .L48
753 00c6 1A69 ldr r2, [r3, #16]
754 00c8 22F08072 bic r2, r2, #16777216
755 00cc 1A61 str r2, [r3, #16]
411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
756 .loc 1 411 5 view .LVU216
757 00ce 1A69 ldr r2, [r3, #16]
758 00d0 22F00072 bic r2, r2, #33554432
759 00d4 1A61 str r2, [r3, #16]
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
760 .loc 1 414 5 view .LVU217
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
761 .loc 1 414 5 view .LVU218
762 00d6 0B4B ldr r3, .L48+8
763 00d8 0022 movs r2, #0
764 00da 1A75 strb r2, [r3, #20]
414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
765 .loc 1 414 5 discriminator 1 view .LVU219
766 .L36:
417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
767 .loc 1 417 1 is_stmt 0 view .LVU220
768 00dc 38BD pop {r3, r4, r5, pc}
769 .LVL35:
770 .L39:
358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */
771 .loc 1 358 9 is_stmt 1 view .LVU221
358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */
772 .loc 1 358 48 is_stmt 0 view .LVU222
773 00de 094C ldr r4, .L48+8
774 00e0 2069 ldr r0, [r4, #16]
358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */
775 .loc 1 358 9 view .LVU223
776 00e2 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback
777 .LVL36:
360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
778 .loc 1 360 9 is_stmt 1 view .LVU224
ARM GAS /tmp/ccfS03PQ.s page 46
360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
779 .loc 1 360 33 is_stmt 0 view .LVU225
780 00e6 0020 movs r0, #0
781 00e8 2070 strb r0, [r4]
361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
782 .loc 1 361 9 is_stmt 1 view .LVU226
295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
783 .loc 1 295 12 is_stmt 0 view .LVU227
784 00ea 0446 mov r4, r0
361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
785 .loc 1 361 9 view .LVU228
786 00ec CCE7 b .L37
787 .L45:
313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
788 .loc 1 313 5 view .LVU229
789 00ee 0024 movs r4, #0
790 00f0 CAE7 b .L37
791 .LVL37:
792 .L43:
389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
793 .loc 1 389 9 is_stmt 1 view .LVU230
389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
794 .loc 1 389 14 is_stmt 0 view .LVU231
795 00f2 044B ldr r3, .L48+8
796 00f4 1C69 ldr r4, [r3, #16]
797 .LVL38:
390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
798 .loc 1 390 9 is_stmt 1 view .LVU232
799 00f6 DAE7 b .L42
800 .L46:
383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
801 .loc 1 383 14 is_stmt 0 view .LVU233
802 00f8 0024 movs r4, #0
803 .LVL39:
383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
804 .loc 1 383 14 view .LVU234
805 00fa D8E7 b .L42
806 .L49:
807 .align 2
808 .L48:
809 00fc 003C0240 .word 1073888256
810 0100 FB7FFFFF .word -32773
811 0104 00000000 .word pFlash
812 .cfi_endproc
813 .LFE143:
815 .section .text.HAL_FLASH_Unlock,"ax",%progbits
816 .align 1
817 .global HAL_FLASH_Unlock
818 .syntax unified
819 .thumb
820 .thumb_func
822 HAL_FLASH_Unlock:
823 .LFB146:
479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK;
824 .loc 1 479 1 is_stmt 1 view -0
825 .cfi_startproc
826 @ args = 0, pretend = 0, frame = 0
ARM GAS /tmp/ccfS03PQ.s page 47
827 @ frame_needed = 0, uses_anonymous_args = 0
828 @ link register save eliminated.
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
829 .loc 1 480 3 view .LVU236
830 .LVL40:
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
831 .loc 1 482 3 view .LVU237
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
832 .loc 1 482 6 is_stmt 0 view .LVU238
833 0000 094B ldr r3, .L55
834 0002 1B69 ldr r3, [r3, #16]
482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
835 .loc 1 482 5 view .LVU239
836 0004 002B cmp r3, #0
837 0006 01DB blt .L54
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
838 .loc 1 480 21 view .LVU240
839 0008 0020 movs r0, #0
840 000a 7047 bx lr
841 .L54:
485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2);
842 .loc 1 485 5 is_stmt 1 view .LVU241
843 000c 064B ldr r3, .L55
844 000e 074A ldr r2, .L55+4
845 0010 5A60 str r2, [r3, #4]
486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
846 .loc 1 486 5 view .LVU242
847 0012 02F18832 add r2, r2, #-2004318072
848 0016 5A60 str r2, [r3, #4]
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
849 .loc 1 489 5 view .LVU243
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
850 .loc 1 489 8 is_stmt 0 view .LVU244
851 0018 1B69 ldr r3, [r3, #16]
489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
852 .loc 1 489 7 view .LVU245
853 001a 002B cmp r3, #0
854 001c 01DB blt .L53
480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
855 .loc 1 480 21 view .LVU246
856 001e 0020 movs r0, #0
857 0020 7047 bx lr
858 .L53:
491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
859 .loc 1 491 14 view .LVU247
860 0022 0120 movs r0, #1
861 .LVL41:
495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
862 .loc 1 495 3 is_stmt 1 view .LVU248
496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
863 .loc 1 496 1 is_stmt 0 view .LVU249
864 0024 7047 bx lr
865 .L56:
866 0026 00BF .align 2
867 .L55:
868 0028 003C0240 .word 1073888256
869 002c 23016745 .word 1164378403
ARM GAS /tmp/ccfS03PQ.s page 48
870 .cfi_endproc
871 .LFE146:
873 .section .text.HAL_FLASH_Lock,"ax",%progbits
874 .align 1
875 .global HAL_FLASH_Lock
876 .syntax unified
877 .thumb
878 .thumb_func
880 HAL_FLASH_Lock:
881 .LFB147:
503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */
882 .loc 1 503 1 is_stmt 1 view -0
883 .cfi_startproc
884 @ args = 0, pretend = 0, frame = 0
885 @ frame_needed = 0, uses_anonymous_args = 0
886 @ link register save eliminated.
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
887 .loc 1 505 3 view .LVU251
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
888 .loc 1 505 8 is_stmt 0 view .LVU252
889 0000 034A ldr r2, .L58
890 0002 1369 ldr r3, [r2, #16]
505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
891 .loc 1 505 13 view .LVU253
892 0004 43F00043 orr r3, r3, #-2147483648
893 0008 1361 str r3, [r2, #16]
507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
894 .loc 1 507 3 is_stmt 1 view .LVU254
508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
895 .loc 1 508 1 is_stmt 0 view .LVU255
896 000a 0020 movs r0, #0
897 000c 7047 bx lr
898 .L59:
899 000e 00BF .align 2
900 .L58:
901 0010 003C0240 .word 1073888256
902 .cfi_endproc
903 .LFE147:
905 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits
906 .align 1
907 .global HAL_FLASH_OB_Unlock
908 .syntax unified
909 .thumb
910 .thumb_func
912 HAL_FLASH_OB_Unlock:
913 .LFB148:
515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)
914 .loc 1 515 1 is_stmt 1 view -0
915 .cfi_startproc
916 @ args = 0, pretend = 0, frame = 0
917 @ frame_needed = 0, uses_anonymous_args = 0
918 @ link register save eliminated.
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
919 .loc 1 516 3 view .LVU257
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
920 .loc 1 516 12 is_stmt 0 view .LVU258
921 0000 074B ldr r3, .L63
ARM GAS /tmp/ccfS03PQ.s page 49
922 0002 5B69 ldr r3, [r3, #20]
516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
923 .loc 1 516 5 view .LVU259
924 0004 13F0010F tst r3, #1
925 0008 07D0 beq .L62
519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2;
926 .loc 1 519 5 is_stmt 1 view .LVU260
519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2;
927 .loc 1 519 20 is_stmt 0 view .LVU261
928 000a 054B ldr r3, .L63
929 000c 054A ldr r2, .L63+4
930 000e 9A60 str r2, [r3, #8]
520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
931 .loc 1 520 5 is_stmt 1 view .LVU262
520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
932 .loc 1 520 20 is_stmt 0 view .LVU263
933 0010 02F14432 add r2, r2, #1145324612
934 0014 9A60 str r2, [r3, #8]
527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
935 .loc 1 527 3 is_stmt 1 view .LVU264
527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
936 .loc 1 527 10 is_stmt 0 view .LVU265
937 0016 0020 movs r0, #0
938 0018 7047 bx lr
939 .L62:
524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
940 .loc 1 524 12 view .LVU266
941 001a 0120 movs r0, #1
528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
942 .loc 1 528 1 view .LVU267
943 001c 7047 bx lr
944 .L64:
945 001e 00BF .align 2
946 .L63:
947 0020 003C0240 .word 1073888256
948 0024 3B2A1908 .word 135866939
949 .cfi_endproc
950 .LFE148:
952 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits
953 .align 1
954 .global HAL_FLASH_OB_Lock
955 .syntax unified
956 .thumb
957 .thumb_func
959 HAL_FLASH_OB_Lock:
960 .LFB149:
535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */
961 .loc 1 535 1 is_stmt 1 view -0
962 .cfi_startproc
963 @ args = 0, pretend = 0, frame = 0
964 @ frame_needed = 0, uses_anonymous_args = 0
965 @ link register save eliminated.
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
966 .loc 1 537 3 view .LVU269
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
967 .loc 1 537 8 is_stmt 0 view .LVU270
968 0000 034A ldr r2, .L66
ARM GAS /tmp/ccfS03PQ.s page 50
969 0002 5369 ldr r3, [r2, #20]
537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
970 .loc 1 537 16 view .LVU271
971 0004 43F00103 orr r3, r3, #1
972 0008 5361 str r3, [r2, #20]
539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
973 .loc 1 539 3 is_stmt 1 view .LVU272
540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
974 .loc 1 540 1 is_stmt 0 view .LVU273
975 000a 0020 movs r0, #0
976 000c 7047 bx lr
977 .L67:
978 000e 00BF .align 2
979 .L66:
980 0010 003C0240 .word 1073888256
981 .cfi_endproc
982 .LFE149:
984 .section .text.HAL_FLASH_GetError,"ax",%progbits
985 .align 1
986 .global HAL_FLASH_GetError
987 .syntax unified
988 .thumb
989 .thumb_func
991 HAL_FLASH_GetError:
992 .LFB151:
583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return pFlash.ErrorCode;
993 .loc 1 583 1 is_stmt 1 view -0
994 .cfi_startproc
995 @ args = 0, pretend = 0, frame = 0
996 @ frame_needed = 0, uses_anonymous_args = 0
997 @ link register save eliminated.
584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
998 .loc 1 584 4 view .LVU275
584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
999 .loc 1 584 17 is_stmt 0 view .LVU276
1000 0000 014B ldr r3, .L69
1001 0002 9869 ldr r0, [r3, #24]
585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1002 .loc 1 585 1 view .LVU277
1003 0004 7047 bx lr
1004 .L70:
1005 0006 00BF .align 2
1006 .L69:
1007 0008 00000000 .word pFlash
1008 .cfi_endproc
1009 .LFE151:
1011 .section .text.FLASH_WaitForLastOperation,"ax",%progbits
1012 .align 1
1013 .global FLASH_WaitForLastOperation
1014 .syntax unified
1015 .thumb
1016 .thumb_func
1018 FLASH_WaitForLastOperation:
1019 .LVL42:
1020 .LFB152:
597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0;
1021 .loc 1 597 1 is_stmt 1 view -0
ARM GAS /tmp/ccfS03PQ.s page 51
1022 .cfi_startproc
1023 @ args = 0, pretend = 0, frame = 0
1024 @ frame_needed = 0, uses_anonymous_args = 0
597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0;
1025 .loc 1 597 1 is_stmt 0 view .LVU279
1026 0000 38B5 push {r3, r4, r5, lr}
1027 .LCFI4:
1028 .cfi_def_cfa_offset 16
1029 .cfi_offset 3, -16
1030 .cfi_offset 4, -12
1031 .cfi_offset 5, -8
1032 .cfi_offset 14, -4
1033 0002 0446 mov r4, r0
598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1034 .loc 1 598 3 is_stmt 1 view .LVU280
1035 .LVL43:
601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1036 .loc 1 601 3 view .LVU281
601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1037 .loc 1 601 20 is_stmt 0 view .LVU282
1038 0004 154B ldr r3, .L82
1039 0006 0022 movs r2, #0
1040 0008 9A61 str r2, [r3, #24]
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1041 .loc 1 607 3 is_stmt 1 view .LVU283
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1042 .loc 1 607 15 is_stmt 0 view .LVU284
1043 000a FFF7FEFF bl HAL_GetTick
1044 .LVL44:
607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1045 .loc 1 607 15 view .LVU285
1046 000e 0546 mov r5, r0
1047 .LVL45:
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1048 .loc 1 609 3 is_stmt 1 view .LVU286
1049 .L73:
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1050 .loc 1 609 46 view .LVU287
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1051 .loc 1 609 9 is_stmt 0 view .LVU288
1052 0010 134B ldr r3, .L82+4
1053 0012 DB68 ldr r3, [r3, #12]
609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1054 .loc 1 609 46 view .LVU289
1055 0014 13F4803F tst r3, #65536
1056 0018 0AD0 beq .L80
611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1057 .loc 1 611 5 is_stmt 1 view .LVU290
611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1058 .loc 1 611 7 is_stmt 0 view .LVU291
1059 001a B4F1FF3F cmp r4, #-1
1060 001e F7D0 beq .L73
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1061 .loc 1 613 7 is_stmt 1 view .LVU292
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1062 .loc 1 613 9 is_stmt 0 view .LVU293
1063 0020 24B1 cbz r4, .L74
ARM GAS /tmp/ccfS03PQ.s page 52
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1064 .loc 1 613 28 discriminator 1 view .LVU294
1065 0022 FFF7FEFF bl HAL_GetTick
1066 .LVL46:
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1067 .loc 1 613 42 discriminator 1 view .LVU295
1068 0026 401B subs r0, r0, r5
613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1069 .loc 1 613 24 discriminator 1 view .LVU296
1070 0028 A042 cmp r0, r4
1071 002a F1D9 bls .L73
1072 .L74:
615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1073 .loc 1 615 9 is_stmt 1 view .LVU297
615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1074 .loc 1 615 16 is_stmt 0 view .LVU298
1075 002c 0320 movs r0, #3
1076 002e 0DE0 b .L75
1077 .L80:
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1078 .loc 1 620 3 is_stmt 1 view .LVU299
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1079 .loc 1 620 6 is_stmt 0 view .LVU300
1080 0030 0B4B ldr r3, .L82+4
1081 0032 DB68 ldr r3, [r3, #12]
620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1082 .loc 1 620 5 view .LVU301
1083 0034 13F0F20F tst r3, #242
1084 0038 09D1 bne .L81
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1085 .loc 1 628 3 is_stmt 1 view .LVU302
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1086 .loc 1 628 7 is_stmt 0 view .LVU303
1087 003a 094B ldr r3, .L82+4
1088 003c DB68 ldr r3, [r3, #12]
628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1089 .loc 1 628 6 view .LVU304
1090 003e 13F0010F tst r3, #1
1091 0042 08D0 beq .L78
631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1092 .loc 1 631 5 is_stmt 1 view .LVU305
1093 0044 064B ldr r3, .L82+4
1094 0046 0122 movs r2, #1
1095 0048 DA60 str r2, [r3, #12]
635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1096 .loc 1 635 10 is_stmt 0 view .LVU306
1097 004a 0020 movs r0, #0
1098 .L75:
637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1099 .loc 1 637 1 view .LVU307
1100 004c 38BD pop {r3, r4, r5, pc}
1101 .LVL47:
1102 .L81:
623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR;
1103 .loc 1 623 5 is_stmt 1 view .LVU308
1104 004e FFF7FEFF bl FLASH_SetErrorCode
1105 .LVL48:
ARM GAS /tmp/ccfS03PQ.s page 53
624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1106 .loc 1 624 5 view .LVU309
624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1107 .loc 1 624 12 is_stmt 0 view .LVU310
1108 0052 0120 movs r0, #1
1109 0054 FAE7 b .L75
1110 .L78:
635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1111 .loc 1 635 10 view .LVU311
1112 0056 0020 movs r0, #0
1113 0058 F8E7 b .L75
1114 .L83:
1115 005a 00BF .align 2
1116 .L82:
1117 005c 00000000 .word pFlash
1118 0060 003C0240 .word 1073888256
1119 .cfi_endproc
1120 .LFE152:
1122 .section .text.HAL_FLASH_Program,"ax",%progbits
1123 .align 1
1124 .global HAL_FLASH_Program
1125 .syntax unified
1126 .thumb
1127 .thumb_func
1129 HAL_FLASH_Program:
1130 .LVL49:
1131 .LFB141:
163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
1132 .loc 1 163 1 is_stmt 1 view -0
1133 .cfi_startproc
1134 @ args = 0, pretend = 0, frame = 0
1135 @ frame_needed = 0, uses_anonymous_args = 0
163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR;
1136 .loc 1 163 1 is_stmt 0 view .LVU313
1137 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
1138 .LCFI5:
1139 .cfi_def_cfa_offset 24
1140 .cfi_offset 3, -24
1141 .cfi_offset 4, -20
1142 .cfi_offset 5, -16
1143 .cfi_offset 6, -12
1144 .cfi_offset 7, -8
1145 .cfi_offset 14, -4
1146 0002 1646 mov r6, r2
164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1147 .loc 1 164 3 is_stmt 1 view .LVU314
1148 .LVL50:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1149 .loc 1 167 3 view .LVU315
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1150 .loc 1 167 3 view .LVU316
1151 0004 1B4A ldr r2, .L96
1152 .LVL51:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1153 .loc 1 167 3 is_stmt 0 view .LVU317
1154 0006 127D ldrb r2, [r2, #20] @ zero_extendqisi2
1155 0008 012A cmp r2, #1
ARM GAS /tmp/ccfS03PQ.s page 54
1156 000a 31D0 beq .L93
1157 000c 0446 mov r4, r0
1158 000e 0D46 mov r5, r1
1159 0010 1F46 mov r7, r3
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1160 .loc 1 167 3 is_stmt 1 discriminator 2 view .LVU318
1161 0012 184B ldr r3, .L96
1162 0014 0122 movs r2, #1
1163 0016 1A75 strb r2, [r3, #20]
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1164 .loc 1 167 3 discriminator 2 view .LVU319
170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1165 .loc 1 170 3 view .LVU320
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1166 .loc 1 173 3 view .LVU321
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1167 .loc 1 173 12 is_stmt 0 view .LVU322
1168 0018 4CF25030 movw r0, #50000
1169 .LVL52:
173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1170 .loc 1 173 12 view .LVU323
1171 001c FFF7FEFF bl FLASH_WaitForLastOperation
1172 .LVL53:
175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1173 .loc 1 175 3 is_stmt 1 view .LVU324
175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1174 .loc 1 175 5 is_stmt 0 view .LVU325
1175 0020 90B9 cbnz r0, .L86
177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** {
1176 .loc 1 177 5 is_stmt 1 view .LVU326
1177 0022 032C cmp r4, #3
1178 0024 07D8 bhi .L87
1179 0026 DFE804F0 tbb [pc, r4]
1180 .L89:
1181 002a 02 .byte (.L92-.L89)/2
1182 002b 13 .byte (.L91-.L89)/2
1183 002c 18 .byte (.L90-.L89)/2
1184 002d 1D .byte (.L88-.L89)/2
1185 .p2align 1
1186 .L92:
182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1187 .loc 1 182 9 view .LVU327
1188 002e F1B2 uxtb r1, r6
1189 0030 2846 mov r0, r5
1190 .LVL54:
182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1191 .loc 1 182 9 is_stmt 0 view .LVU328
1192 0032 FFF7FEFF bl FLASH_Program_Byte
1193 .LVL55:
183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1194 .loc 1 183 9 is_stmt 1 view .LVU329
1195 .L87:
210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1196 .loc 1 210 5 view .LVU330
210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1197 .loc 1 210 14 is_stmt 0 view .LVU331
1198 0036 4CF25030 movw r0, #50000
ARM GAS /tmp/ccfS03PQ.s page 55
1199 003a FFF7FEFF bl FLASH_WaitForLastOperation
1200 .LVL56:
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1201 .loc 1 213 5 is_stmt 1 view .LVU332
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1202 .loc 1 213 10 is_stmt 0 view .LVU333
1203 003e 0E4A ldr r2, .L96+4
1204 0040 1369 ldr r3, [r2, #16]
213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1205 .loc 1 213 15 view .LVU334
1206 0042 23F00103 bic r3, r3, #1
1207 0046 1361 str r3, [r2, #16]
1208 .L86:
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1209 .loc 1 217 3 is_stmt 1 view .LVU335
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1210 .loc 1 217 3 view .LVU336
1211 0048 0A4B ldr r3, .L96
1212 004a 0022 movs r2, #0
1213 004c 1A75 strb r2, [r3, #20]
217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1214 .loc 1 217 3 view .LVU337
219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1215 .loc 1 219 3 view .LVU338
1216 .LVL57:
1217 .L85:
220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1218 .loc 1 220 1 is_stmt 0 view .LVU339
1219 004e F8BD pop {r3, r4, r5, r6, r7, pc}
1220 .LVL58:
1221 .L91:
189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1222 .loc 1 189 9 is_stmt 1 view .LVU340
1223 0050 B1B2 uxth r1, r6
1224 0052 2846 mov r0, r5
1225 .LVL59:
189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1226 .loc 1 189 9 is_stmt 0 view .LVU341
1227 0054 FFF7FEFF bl FLASH_Program_HalfWord
1228 .LVL60:
190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1229 .loc 1 190 9 is_stmt 1 view .LVU342
1230 0058 EDE7 b .L87
1231 .LVL61:
1232 .L90:
196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1233 .loc 1 196 9 view .LVU343
1234 005a 3146 mov r1, r6
1235 005c 2846 mov r0, r5
1236 .LVL62:
196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1237 .loc 1 196 9 is_stmt 0 view .LVU344
1238 005e FFF7FEFF bl FLASH_Program_Word
1239 .LVL63:
197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1240 .loc 1 197 9 is_stmt 1 view .LVU345
1241 0062 E8E7 b .L87
ARM GAS /tmp/ccfS03PQ.s page 56
1242 .LVL64:
1243 .L88:
203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1244 .loc 1 203 9 view .LVU346
1245 0064 3246 mov r2, r6
1246 0066 3B46 mov r3, r7
1247 0068 2846 mov r0, r5
1248 .LVL65:
203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break;
1249 .loc 1 203 9 is_stmt 0 view .LVU347
1250 006a FFF7FEFF bl FLASH_Program_DoubleWord
1251 .LVL66:
204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1252 .loc 1 204 9 is_stmt 1 view .LVU348
1253 006e E2E7 b .L87
1254 .LVL67:
1255 .L93:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1256 .loc 1 167 3 is_stmt 0 discriminator 1 view .LVU349
1257 0070 0220 movs r0, #2
1258 .LVL68:
167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1259 .loc 1 167 3 discriminator 1 view .LVU350
1260 0072 ECE7 b .L85
1261 .L97:
1262 .align 2
1263 .L96:
1264 0074 00000000 .word pFlash
1265 0078 003C0240 .word 1073888256
1266 .cfi_endproc
1267 .LFE141:
1269 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits
1270 .align 1
1271 .global HAL_FLASH_OB_Launch
1272 .syntax unified
1273 .thumb
1274 .thumb_func
1276 HAL_FLASH_OB_Launch:
1277 .LFB150:
547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */
1278 .loc 1 547 1 is_stmt 1 view -0
1279 .cfi_startproc
1280 @ args = 0, pretend = 0, frame = 0
1281 @ frame_needed = 0, uses_anonymous_args = 0
1282 0000 08B5 push {r3, lr}
1283 .LCFI6:
1284 .cfi_def_cfa_offset 8
1285 .cfi_offset 3, -8
1286 .cfi_offset 14, -4
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1287 .loc 1 549 3 view .LVU352
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1288 .loc 1 549 8 is_stmt 0 view .LVU353
1289 0002 054A ldr r2, .L100
1290 0004 5369 ldr r3, [r2, #20]
549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1291 .loc 1 549 16 view .LVU354
ARM GAS /tmp/ccfS03PQ.s page 57
1292 0006 43F00203 orr r3, r3, #2
1293 000a 5361 str r3, [r2, #20]
552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1294 .loc 1 552 3 is_stmt 1 view .LVU355
552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** }
1295 .loc 1 552 10 is_stmt 0 view .LVU356
1296 000c 4CF25030 movw r0, #50000
1297 0010 FFF7FEFF bl FLASH_WaitForLastOperation
1298 .LVL69:
553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c ****
1299 .loc 1 553 1 view .LVU357
1300 0014 08BD pop {r3, pc}
1301 .L101:
1302 0016 00BF .align 2
1303 .L100:
1304 0018 003C0240 .word 1073888256
1305 .cfi_endproc
1306 .LFE150:
1308 .global pFlash
1309 .section .bss.pFlash,"aw",%nobits
1310 .align 2
1313 pFlash:
1314 0000 00000000 .space 28
1314 00000000
1314 00000000
1314 00000000
1314 00000000
1315 .text
1316 .Letext0:
1317 .file 3 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h"
1318 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h"
1319 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h"
1320 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h"
1321 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h"
1322 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h"
1323 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h"
ARM GAS /tmp/ccfS03PQ.s page 58
DEFINED SYMBOLS
*ABS*:00000000 stm32f7xx_hal_flash.c
/tmp/ccfS03PQ.s:20 .text.FLASH_Program_DoubleWord:00000000 $t
/tmp/ccfS03PQ.s:25 .text.FLASH_Program_DoubleWord:00000000 FLASH_Program_DoubleWord
/tmp/ccfS03PQ.s:102 .text.FLASH_Program_DoubleWord:00000030 $d
/tmp/ccfS03PQ.s:107 .text.FLASH_Program_Word:00000000 $t
/tmp/ccfS03PQ.s:112 .text.FLASH_Program_Word:00000000 FLASH_Program_Word
/tmp/ccfS03PQ.s:162 .text.FLASH_Program_Word:00000024 $d
/tmp/ccfS03PQ.s:167 .text.FLASH_Program_HalfWord:00000000 $t
/tmp/ccfS03PQ.s:172 .text.FLASH_Program_HalfWord:00000000 FLASH_Program_HalfWord
/tmp/ccfS03PQ.s:222 .text.FLASH_Program_HalfWord:00000024 $d
/tmp/ccfS03PQ.s:227 .text.FLASH_Program_Byte:00000000 $t
/tmp/ccfS03PQ.s:232 .text.FLASH_Program_Byte:00000000 FLASH_Program_Byte
/tmp/ccfS03PQ.s:281 .text.FLASH_Program_Byte:00000020 $d
/tmp/ccfS03PQ.s:286 .text.FLASH_SetErrorCode:00000000 $t
/tmp/ccfS03PQ.s:291 .text.FLASH_SetErrorCode:00000000 FLASH_SetErrorCode
/tmp/ccfS03PQ.s:382 .text.FLASH_SetErrorCode:0000006c $d
/tmp/ccfS03PQ.s:1313 .bss.pFlash:00000000 pFlash
/tmp/ccfS03PQ.s:388 .text.HAL_FLASH_Program_IT:00000000 $t
/tmp/ccfS03PQ.s:394 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT
/tmp/ccfS03PQ.s:452 .text.HAL_FLASH_Program_IT:0000003a $d
/tmp/ccfS03PQ.s:456 .text.HAL_FLASH_Program_IT:0000003e $t
/tmp/ccfS03PQ.s:517 .text.HAL_FLASH_Program_IT:0000006c $d
/tmp/ccfS03PQ.s:523 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t
/tmp/ccfS03PQ.s:529 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback
/tmp/ccfS03PQ.s:544 .text.HAL_FLASH_OperationErrorCallback:00000000 $t
/tmp/ccfS03PQ.s:550 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback
/tmp/ccfS03PQ.s:565 .text.HAL_FLASH_IRQHandler:00000000 $t
/tmp/ccfS03PQ.s:571 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler
/tmp/ccfS03PQ.s:809 .text.HAL_FLASH_IRQHandler:000000fc $d
/tmp/ccfS03PQ.s:816 .text.HAL_FLASH_Unlock:00000000 $t
/tmp/ccfS03PQ.s:822 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock
/tmp/ccfS03PQ.s:868 .text.HAL_FLASH_Unlock:00000028 $d
/tmp/ccfS03PQ.s:874 .text.HAL_FLASH_Lock:00000000 $t
/tmp/ccfS03PQ.s:880 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock
/tmp/ccfS03PQ.s:901 .text.HAL_FLASH_Lock:00000010 $d
/tmp/ccfS03PQ.s:906 .text.HAL_FLASH_OB_Unlock:00000000 $t
/tmp/ccfS03PQ.s:912 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock
/tmp/ccfS03PQ.s:947 .text.HAL_FLASH_OB_Unlock:00000020 $d
/tmp/ccfS03PQ.s:953 .text.HAL_FLASH_OB_Lock:00000000 $t
/tmp/ccfS03PQ.s:959 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock
/tmp/ccfS03PQ.s:980 .text.HAL_FLASH_OB_Lock:00000010 $d
/tmp/ccfS03PQ.s:985 .text.HAL_FLASH_GetError:00000000 $t
/tmp/ccfS03PQ.s:991 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError
/tmp/ccfS03PQ.s:1007 .text.HAL_FLASH_GetError:00000008 $d
/tmp/ccfS03PQ.s:1012 .text.FLASH_WaitForLastOperation:00000000 $t
/tmp/ccfS03PQ.s:1018 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation
/tmp/ccfS03PQ.s:1117 .text.FLASH_WaitForLastOperation:0000005c $d
/tmp/ccfS03PQ.s:1123 .text.HAL_FLASH_Program:00000000 $t
/tmp/ccfS03PQ.s:1129 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program
/tmp/ccfS03PQ.s:1181 .text.HAL_FLASH_Program:0000002a $d
/tmp/ccfS03PQ.s:1185 .text.HAL_FLASH_Program:0000002e $t
/tmp/ccfS03PQ.s:1264 .text.HAL_FLASH_Program:00000074 $d
/tmp/ccfS03PQ.s:1270 .text.HAL_FLASH_OB_Launch:00000000 $t
/tmp/ccfS03PQ.s:1276 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch
/tmp/ccfS03PQ.s:1304 .text.HAL_FLASH_OB_Launch:00000018 $d
/tmp/ccfS03PQ.s:1310 .bss.pFlash:00000000 $d
ARM GAS /tmp/ccfS03PQ.s page 59
UNDEFINED SYMBOLS
FLASH_Erase_Sector
HAL_GetTick