mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
cmsis/TARGET_CORTEX_A/cmsis_cp15.h@180:96ed750bd169, 2018-01-17 (annotated)
- Committer:
- Anna Bridge
- Date:
- Wed Jan 17 15:23:54 2018 +0000
- Revision:
- 180:96ed750bd169
- Child:
- 186:707f6e361f3e
mbed-dev libray. Release version 158
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anna Bridge |
180:96ed750bd169 | 1 | /**************************************************************************//** |
Anna Bridge |
180:96ed750bd169 | 2 | * @file cmsis_cp15.h |
Anna Bridge |
180:96ed750bd169 | 3 | * @brief CMSIS compiler specific macros, functions, instructions |
Anna Bridge |
180:96ed750bd169 | 4 | * @version V1.0.1 |
Anna Bridge |
180:96ed750bd169 | 5 | * @date 07. Sep 2017 |
Anna Bridge |
180:96ed750bd169 | 6 | ******************************************************************************/ |
Anna Bridge |
180:96ed750bd169 | 7 | /* |
Anna Bridge |
180:96ed750bd169 | 8 | * Copyright (c) 2009-2017 ARM Limited. All rights reserved. |
Anna Bridge |
180:96ed750bd169 | 9 | * |
Anna Bridge |
180:96ed750bd169 | 10 | * SPDX-License-Identifier: Apache-2.0 |
Anna Bridge |
180:96ed750bd169 | 11 | * |
Anna Bridge |
180:96ed750bd169 | 12 | * Licensed under the Apache License, Version 2.0 (the License); you may |
Anna Bridge |
180:96ed750bd169 | 13 | * not use this file except in compliance with the License. |
Anna Bridge |
180:96ed750bd169 | 14 | * You may obtain a copy of the License at |
Anna Bridge |
180:96ed750bd169 | 15 | * |
Anna Bridge |
180:96ed750bd169 | 16 | * www.apache.org/licenses/LICENSE-2.0 |
Anna Bridge |
180:96ed750bd169 | 17 | * |
Anna Bridge |
180:96ed750bd169 | 18 | * Unless required by applicable law or agreed to in writing, software |
Anna Bridge |
180:96ed750bd169 | 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
Anna Bridge |
180:96ed750bd169 | 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
Anna Bridge |
180:96ed750bd169 | 21 | * See the License for the specific language governing permissions and |
Anna Bridge |
180:96ed750bd169 | 22 | * limitations under the License. |
Anna Bridge |
180:96ed750bd169 | 23 | */ |
Anna Bridge |
180:96ed750bd169 | 24 | |
Anna Bridge |
180:96ed750bd169 | 25 | #if defined ( __ICCARM__ ) |
Anna Bridge |
180:96ed750bd169 | 26 | #pragma system_include /* treat file as system include file for MISRA check */ |
Anna Bridge |
180:96ed750bd169 | 27 | #elif defined (__clang__) |
Anna Bridge |
180:96ed750bd169 | 28 | #pragma clang system_header /* treat file as system include file */ |
Anna Bridge |
180:96ed750bd169 | 29 | #endif |
Anna Bridge |
180:96ed750bd169 | 30 | |
Anna Bridge |
180:96ed750bd169 | 31 | #ifndef __CMSIS_CP15_H |
Anna Bridge |
180:96ed750bd169 | 32 | #define __CMSIS_CP15_H |
Anna Bridge |
180:96ed750bd169 | 33 | |
Anna Bridge |
180:96ed750bd169 | 34 | /** \brief Get ACTLR |
Anna Bridge |
180:96ed750bd169 | 35 | \return Auxiliary Control register value |
Anna Bridge |
180:96ed750bd169 | 36 | */ |
Anna Bridge |
180:96ed750bd169 | 37 | __STATIC_FORCEINLINE uint32_t __get_ACTLR(void) |
Anna Bridge |
180:96ed750bd169 | 38 | { |
Anna Bridge |
180:96ed750bd169 | 39 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 40 | __get_CP(15, 0, result, 1, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 41 | return(result); |
Anna Bridge |
180:96ed750bd169 | 42 | } |
Anna Bridge |
180:96ed750bd169 | 43 | |
Anna Bridge |
180:96ed750bd169 | 44 | /** \brief Set ACTLR |
Anna Bridge |
180:96ed750bd169 | 45 | \param [in] actlr Auxiliary Control value to set |
Anna Bridge |
180:96ed750bd169 | 46 | */ |
Anna Bridge |
180:96ed750bd169 | 47 | __STATIC_FORCEINLINE void __set_ACTLR(uint32_t actlr) |
Anna Bridge |
180:96ed750bd169 | 48 | { |
Anna Bridge |
180:96ed750bd169 | 49 | __set_CP(15, 0, actlr, 1, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 50 | } |
Anna Bridge |
180:96ed750bd169 | 51 | |
Anna Bridge |
180:96ed750bd169 | 52 | /** \brief Get CPACR |
Anna Bridge |
180:96ed750bd169 | 53 | \return Coprocessor Access Control register value |
Anna Bridge |
180:96ed750bd169 | 54 | */ |
Anna Bridge |
180:96ed750bd169 | 55 | __STATIC_FORCEINLINE uint32_t __get_CPACR(void) |
Anna Bridge |
180:96ed750bd169 | 56 | { |
Anna Bridge |
180:96ed750bd169 | 57 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 58 | __get_CP(15, 0, result, 1, 0, 2); |
Anna Bridge |
180:96ed750bd169 | 59 | return result; |
Anna Bridge |
180:96ed750bd169 | 60 | } |
Anna Bridge |
180:96ed750bd169 | 61 | |
Anna Bridge |
180:96ed750bd169 | 62 | /** \brief Set CPACR |
Anna Bridge |
180:96ed750bd169 | 63 | \param [in] cpacr Coprocessor Access Control value to set |
Anna Bridge |
180:96ed750bd169 | 64 | */ |
Anna Bridge |
180:96ed750bd169 | 65 | __STATIC_FORCEINLINE void __set_CPACR(uint32_t cpacr) |
Anna Bridge |
180:96ed750bd169 | 66 | { |
Anna Bridge |
180:96ed750bd169 | 67 | __set_CP(15, 0, cpacr, 1, 0, 2); |
Anna Bridge |
180:96ed750bd169 | 68 | } |
Anna Bridge |
180:96ed750bd169 | 69 | |
Anna Bridge |
180:96ed750bd169 | 70 | /** \brief Get DFSR |
Anna Bridge |
180:96ed750bd169 | 71 | \return Data Fault Status Register value |
Anna Bridge |
180:96ed750bd169 | 72 | */ |
Anna Bridge |
180:96ed750bd169 | 73 | __STATIC_FORCEINLINE uint32_t __get_DFSR(void) |
Anna Bridge |
180:96ed750bd169 | 74 | { |
Anna Bridge |
180:96ed750bd169 | 75 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 76 | __get_CP(15, 0, result, 5, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 77 | return result; |
Anna Bridge |
180:96ed750bd169 | 78 | } |
Anna Bridge |
180:96ed750bd169 | 79 | |
Anna Bridge |
180:96ed750bd169 | 80 | /** \brief Set DFSR |
Anna Bridge |
180:96ed750bd169 | 81 | \param [in] dfsr Data Fault Status value to set |
Anna Bridge |
180:96ed750bd169 | 82 | */ |
Anna Bridge |
180:96ed750bd169 | 83 | __STATIC_FORCEINLINE void __set_DFSR(uint32_t dfsr) |
Anna Bridge |
180:96ed750bd169 | 84 | { |
Anna Bridge |
180:96ed750bd169 | 85 | __set_CP(15, 0, dfsr, 5, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 86 | } |
Anna Bridge |
180:96ed750bd169 | 87 | |
Anna Bridge |
180:96ed750bd169 | 88 | /** \brief Get IFSR |
Anna Bridge |
180:96ed750bd169 | 89 | \return Instruction Fault Status Register value |
Anna Bridge |
180:96ed750bd169 | 90 | */ |
Anna Bridge |
180:96ed750bd169 | 91 | __STATIC_FORCEINLINE uint32_t __get_IFSR(void) |
Anna Bridge |
180:96ed750bd169 | 92 | { |
Anna Bridge |
180:96ed750bd169 | 93 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 94 | __get_CP(15, 0, result, 5, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 95 | return result; |
Anna Bridge |
180:96ed750bd169 | 96 | } |
Anna Bridge |
180:96ed750bd169 | 97 | |
Anna Bridge |
180:96ed750bd169 | 98 | /** \brief Set IFSR |
Anna Bridge |
180:96ed750bd169 | 99 | \param [in] ifsr Instruction Fault Status value to set |
Anna Bridge |
180:96ed750bd169 | 100 | */ |
Anna Bridge |
180:96ed750bd169 | 101 | __STATIC_FORCEINLINE void __set_IFSR(uint32_t ifsr) |
Anna Bridge |
180:96ed750bd169 | 102 | { |
Anna Bridge |
180:96ed750bd169 | 103 | __set_CP(15, 0, ifsr, 5, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 104 | } |
Anna Bridge |
180:96ed750bd169 | 105 | |
Anna Bridge |
180:96ed750bd169 | 106 | /** \brief Get ISR |
Anna Bridge |
180:96ed750bd169 | 107 | \return Interrupt Status Register value |
Anna Bridge |
180:96ed750bd169 | 108 | */ |
Anna Bridge |
180:96ed750bd169 | 109 | __STATIC_FORCEINLINE uint32_t __get_ISR(void) |
Anna Bridge |
180:96ed750bd169 | 110 | { |
Anna Bridge |
180:96ed750bd169 | 111 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 112 | __get_CP(15, 0, result, 12, 1, 0); |
Anna Bridge |
180:96ed750bd169 | 113 | return result; |
Anna Bridge |
180:96ed750bd169 | 114 | } |
Anna Bridge |
180:96ed750bd169 | 115 | |
Anna Bridge |
180:96ed750bd169 | 116 | /** \brief Get CBAR |
Anna Bridge |
180:96ed750bd169 | 117 | \return Configuration Base Address register value |
Anna Bridge |
180:96ed750bd169 | 118 | */ |
Anna Bridge |
180:96ed750bd169 | 119 | __STATIC_FORCEINLINE uint32_t __get_CBAR(void) |
Anna Bridge |
180:96ed750bd169 | 120 | { |
Anna Bridge |
180:96ed750bd169 | 121 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 122 | __get_CP(15, 4, result, 15, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 123 | return result; |
Anna Bridge |
180:96ed750bd169 | 124 | } |
Anna Bridge |
180:96ed750bd169 | 125 | |
Anna Bridge |
180:96ed750bd169 | 126 | /** \brief Get TTBR0 |
Anna Bridge |
180:96ed750bd169 | 127 | |
Anna Bridge |
180:96ed750bd169 | 128 | This function returns the value of the Translation Table Base Register 0. |
Anna Bridge |
180:96ed750bd169 | 129 | |
Anna Bridge |
180:96ed750bd169 | 130 | \return Translation Table Base Register 0 value |
Anna Bridge |
180:96ed750bd169 | 131 | */ |
Anna Bridge |
180:96ed750bd169 | 132 | __STATIC_FORCEINLINE uint32_t __get_TTBR0(void) |
Anna Bridge |
180:96ed750bd169 | 133 | { |
Anna Bridge |
180:96ed750bd169 | 134 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 135 | __get_CP(15, 0, result, 2, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 136 | return result; |
Anna Bridge |
180:96ed750bd169 | 137 | } |
Anna Bridge |
180:96ed750bd169 | 138 | |
Anna Bridge |
180:96ed750bd169 | 139 | /** \brief Set TTBR0 |
Anna Bridge |
180:96ed750bd169 | 140 | |
Anna Bridge |
180:96ed750bd169 | 141 | This function assigns the given value to the Translation Table Base Register 0. |
Anna Bridge |
180:96ed750bd169 | 142 | |
Anna Bridge |
180:96ed750bd169 | 143 | \param [in] ttbr0 Translation Table Base Register 0 value to set |
Anna Bridge |
180:96ed750bd169 | 144 | */ |
Anna Bridge |
180:96ed750bd169 | 145 | __STATIC_FORCEINLINE void __set_TTBR0(uint32_t ttbr0) |
Anna Bridge |
180:96ed750bd169 | 146 | { |
Anna Bridge |
180:96ed750bd169 | 147 | __set_CP(15, 0, ttbr0, 2, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 148 | } |
Anna Bridge |
180:96ed750bd169 | 149 | |
Anna Bridge |
180:96ed750bd169 | 150 | /** \brief Get DACR |
Anna Bridge |
180:96ed750bd169 | 151 | |
Anna Bridge |
180:96ed750bd169 | 152 | This function returns the value of the Domain Access Control Register. |
Anna Bridge |
180:96ed750bd169 | 153 | |
Anna Bridge |
180:96ed750bd169 | 154 | \return Domain Access Control Register value |
Anna Bridge |
180:96ed750bd169 | 155 | */ |
Anna Bridge |
180:96ed750bd169 | 156 | __STATIC_FORCEINLINE uint32_t __get_DACR(void) |
Anna Bridge |
180:96ed750bd169 | 157 | { |
Anna Bridge |
180:96ed750bd169 | 158 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 159 | __get_CP(15, 0, result, 3, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 160 | return result; |
Anna Bridge |
180:96ed750bd169 | 161 | } |
Anna Bridge |
180:96ed750bd169 | 162 | |
Anna Bridge |
180:96ed750bd169 | 163 | /** \brief Set DACR |
Anna Bridge |
180:96ed750bd169 | 164 | |
Anna Bridge |
180:96ed750bd169 | 165 | This function assigns the given value to the Domain Access Control Register. |
Anna Bridge |
180:96ed750bd169 | 166 | |
Anna Bridge |
180:96ed750bd169 | 167 | \param [in] dacr Domain Access Control Register value to set |
Anna Bridge |
180:96ed750bd169 | 168 | */ |
Anna Bridge |
180:96ed750bd169 | 169 | __STATIC_FORCEINLINE void __set_DACR(uint32_t dacr) |
Anna Bridge |
180:96ed750bd169 | 170 | { |
Anna Bridge |
180:96ed750bd169 | 171 | __set_CP(15, 0, dacr, 3, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 172 | } |
Anna Bridge |
180:96ed750bd169 | 173 | |
Anna Bridge |
180:96ed750bd169 | 174 | /** \brief Set SCTLR |
Anna Bridge |
180:96ed750bd169 | 175 | |
Anna Bridge |
180:96ed750bd169 | 176 | This function assigns the given value to the System Control Register. |
Anna Bridge |
180:96ed750bd169 | 177 | |
Anna Bridge |
180:96ed750bd169 | 178 | \param [in] sctlr System Control Register value to set |
Anna Bridge |
180:96ed750bd169 | 179 | */ |
Anna Bridge |
180:96ed750bd169 | 180 | __STATIC_FORCEINLINE void __set_SCTLR(uint32_t sctlr) |
Anna Bridge |
180:96ed750bd169 | 181 | { |
Anna Bridge |
180:96ed750bd169 | 182 | __set_CP(15, 0, sctlr, 1, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 183 | } |
Anna Bridge |
180:96ed750bd169 | 184 | |
Anna Bridge |
180:96ed750bd169 | 185 | /** \brief Get SCTLR |
Anna Bridge |
180:96ed750bd169 | 186 | \return System Control Register value |
Anna Bridge |
180:96ed750bd169 | 187 | */ |
Anna Bridge |
180:96ed750bd169 | 188 | __STATIC_FORCEINLINE uint32_t __get_SCTLR(void) |
Anna Bridge |
180:96ed750bd169 | 189 | { |
Anna Bridge |
180:96ed750bd169 | 190 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 191 | __get_CP(15, 0, result, 1, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 192 | return result; |
Anna Bridge |
180:96ed750bd169 | 193 | } |
Anna Bridge |
180:96ed750bd169 | 194 | |
Anna Bridge |
180:96ed750bd169 | 195 | /** \brief Set ACTRL |
Anna Bridge |
180:96ed750bd169 | 196 | \param [in] actrl Auxiliary Control Register value to set |
Anna Bridge |
180:96ed750bd169 | 197 | */ |
Anna Bridge |
180:96ed750bd169 | 198 | __STATIC_FORCEINLINE void __set_ACTRL(uint32_t actrl) |
Anna Bridge |
180:96ed750bd169 | 199 | { |
Anna Bridge |
180:96ed750bd169 | 200 | __set_CP(15, 0, actrl, 1, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 201 | } |
Anna Bridge |
180:96ed750bd169 | 202 | |
Anna Bridge |
180:96ed750bd169 | 203 | /** \brief Get ACTRL |
Anna Bridge |
180:96ed750bd169 | 204 | \return Auxiliary Control Register value |
Anna Bridge |
180:96ed750bd169 | 205 | */ |
Anna Bridge |
180:96ed750bd169 | 206 | __STATIC_FORCEINLINE uint32_t __get_ACTRL(void) |
Anna Bridge |
180:96ed750bd169 | 207 | { |
Anna Bridge |
180:96ed750bd169 | 208 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 209 | __get_CP(15, 0, result, 1, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 210 | return result; |
Anna Bridge |
180:96ed750bd169 | 211 | } |
Anna Bridge |
180:96ed750bd169 | 212 | |
Anna Bridge |
180:96ed750bd169 | 213 | /** \brief Get MPIDR |
Anna Bridge |
180:96ed750bd169 | 214 | |
Anna Bridge |
180:96ed750bd169 | 215 | This function returns the value of the Multiprocessor Affinity Register. |
Anna Bridge |
180:96ed750bd169 | 216 | |
Anna Bridge |
180:96ed750bd169 | 217 | \return Multiprocessor Affinity Register value |
Anna Bridge |
180:96ed750bd169 | 218 | */ |
Anna Bridge |
180:96ed750bd169 | 219 | __STATIC_FORCEINLINE uint32_t __get_MPIDR(void) |
Anna Bridge |
180:96ed750bd169 | 220 | { |
Anna Bridge |
180:96ed750bd169 | 221 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 222 | __get_CP(15, 0, result, 0, 0, 5); |
Anna Bridge |
180:96ed750bd169 | 223 | return result; |
Anna Bridge |
180:96ed750bd169 | 224 | } |
Anna Bridge |
180:96ed750bd169 | 225 | |
Anna Bridge |
180:96ed750bd169 | 226 | /** \brief Get VBAR |
Anna Bridge |
180:96ed750bd169 | 227 | |
Anna Bridge |
180:96ed750bd169 | 228 | This function returns the value of the Vector Base Address Register. |
Anna Bridge |
180:96ed750bd169 | 229 | |
Anna Bridge |
180:96ed750bd169 | 230 | \return Vector Base Address Register |
Anna Bridge |
180:96ed750bd169 | 231 | */ |
Anna Bridge |
180:96ed750bd169 | 232 | __STATIC_FORCEINLINE uint32_t __get_VBAR(void) |
Anna Bridge |
180:96ed750bd169 | 233 | { |
Anna Bridge |
180:96ed750bd169 | 234 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 235 | __get_CP(15, 0, result, 12, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 236 | return result; |
Anna Bridge |
180:96ed750bd169 | 237 | } |
Anna Bridge |
180:96ed750bd169 | 238 | |
Anna Bridge |
180:96ed750bd169 | 239 | /** \brief Set VBAR |
Anna Bridge |
180:96ed750bd169 | 240 | |
Anna Bridge |
180:96ed750bd169 | 241 | This function assigns the given value to the Vector Base Address Register. |
Anna Bridge |
180:96ed750bd169 | 242 | |
Anna Bridge |
180:96ed750bd169 | 243 | \param [in] vbar Vector Base Address Register value to set |
Anna Bridge |
180:96ed750bd169 | 244 | */ |
Anna Bridge |
180:96ed750bd169 | 245 | __STATIC_FORCEINLINE void __set_VBAR(uint32_t vbar) |
Anna Bridge |
180:96ed750bd169 | 246 | { |
Anna Bridge |
180:96ed750bd169 | 247 | __set_CP(15, 0, vbar, 12, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 248 | } |
Anna Bridge |
180:96ed750bd169 | 249 | |
Anna Bridge |
180:96ed750bd169 | 250 | #if (defined(__CORTEX_A) && (__CORTEX_A == 7U) && \ |
Anna Bridge |
180:96ed750bd169 | 251 | defined(__TIM_PRESENT) && (__TIM_PRESENT == 1U)) || \ |
Anna Bridge |
180:96ed750bd169 | 252 | defined(DOXYGEN) |
Anna Bridge |
180:96ed750bd169 | 253 | |
Anna Bridge |
180:96ed750bd169 | 254 | /** \brief Set CNTFRQ |
Anna Bridge |
180:96ed750bd169 | 255 | |
Anna Bridge |
180:96ed750bd169 | 256 | This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ). |
Anna Bridge |
180:96ed750bd169 | 257 | |
Anna Bridge |
180:96ed750bd169 | 258 | \param [in] value CNTFRQ Register value to set |
Anna Bridge |
180:96ed750bd169 | 259 | */ |
Anna Bridge |
180:96ed750bd169 | 260 | __STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 261 | { |
Anna Bridge |
180:96ed750bd169 | 262 | __set_CP(15, 0, value, 14, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 263 | } |
Anna Bridge |
180:96ed750bd169 | 264 | |
Anna Bridge |
180:96ed750bd169 | 265 | /** \brief Get CNTFRQ |
Anna Bridge |
180:96ed750bd169 | 266 | |
Anna Bridge |
180:96ed750bd169 | 267 | This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ). |
Anna Bridge |
180:96ed750bd169 | 268 | |
Anna Bridge |
180:96ed750bd169 | 269 | \return CNTFRQ Register value |
Anna Bridge |
180:96ed750bd169 | 270 | */ |
Anna Bridge |
180:96ed750bd169 | 271 | __STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void) |
Anna Bridge |
180:96ed750bd169 | 272 | { |
Anna Bridge |
180:96ed750bd169 | 273 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 274 | __get_CP(15, 0, result, 14, 0 , 0); |
Anna Bridge |
180:96ed750bd169 | 275 | return result; |
Anna Bridge |
180:96ed750bd169 | 276 | } |
Anna Bridge |
180:96ed750bd169 | 277 | |
Anna Bridge |
180:96ed750bd169 | 278 | /** \brief Set CNTP_TVAL |
Anna Bridge |
180:96ed750bd169 | 279 | |
Anna Bridge |
180:96ed750bd169 | 280 | This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL). |
Anna Bridge |
180:96ed750bd169 | 281 | |
Anna Bridge |
180:96ed750bd169 | 282 | \param [in] value CNTP_TVAL Register value to set |
Anna Bridge |
180:96ed750bd169 | 283 | */ |
Anna Bridge |
180:96ed750bd169 | 284 | __STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 285 | { |
Anna Bridge |
180:96ed750bd169 | 286 | __set_CP(15, 0, value, 14, 2, 0); |
Anna Bridge |
180:96ed750bd169 | 287 | } |
Anna Bridge |
180:96ed750bd169 | 288 | |
Anna Bridge |
180:96ed750bd169 | 289 | /** \brief Get CNTP_TVAL |
Anna Bridge |
180:96ed750bd169 | 290 | |
Anna Bridge |
180:96ed750bd169 | 291 | This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL). |
Anna Bridge |
180:96ed750bd169 | 292 | |
Anna Bridge |
180:96ed750bd169 | 293 | \return CNTP_TVAL Register value |
Anna Bridge |
180:96ed750bd169 | 294 | */ |
Anna Bridge |
180:96ed750bd169 | 295 | __STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(void) |
Anna Bridge |
180:96ed750bd169 | 296 | { |
Anna Bridge |
180:96ed750bd169 | 297 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 298 | __get_CP(15, 0, result, 14, 2, 0); |
Anna Bridge |
180:96ed750bd169 | 299 | return result; |
Anna Bridge |
180:96ed750bd169 | 300 | } |
Anna Bridge |
180:96ed750bd169 | 301 | |
Anna Bridge |
180:96ed750bd169 | 302 | /** \brief Get CNTPCT |
Anna Bridge |
180:96ed750bd169 | 303 | |
Anna Bridge |
180:96ed750bd169 | 304 | This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT). |
Anna Bridge |
180:96ed750bd169 | 305 | |
Anna Bridge |
180:96ed750bd169 | 306 | \return CNTPCT Register value |
Anna Bridge |
180:96ed750bd169 | 307 | */ |
Anna Bridge |
180:96ed750bd169 | 308 | __STATIC_FORCEINLINE uint64_t __get_CNTPCT(void) |
Anna Bridge |
180:96ed750bd169 | 309 | { |
Anna Bridge |
180:96ed750bd169 | 310 | uint64_t result; |
Anna Bridge |
180:96ed750bd169 | 311 | __get_CP64(15, 0, result, 14); |
Anna Bridge |
180:96ed750bd169 | 312 | return result; |
Anna Bridge |
180:96ed750bd169 | 313 | } |
Anna Bridge |
180:96ed750bd169 | 314 | |
Anna Bridge |
180:96ed750bd169 | 315 | /** \brief Set CNTP_CVAL |
Anna Bridge |
180:96ed750bd169 | 316 | |
Anna Bridge |
180:96ed750bd169 | 317 | This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). |
Anna Bridge |
180:96ed750bd169 | 318 | |
Anna Bridge |
180:96ed750bd169 | 319 | \param [in] value CNTP_CVAL Register value to set |
Anna Bridge |
180:96ed750bd169 | 320 | */ |
Anna Bridge |
180:96ed750bd169 | 321 | __STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value) |
Anna Bridge |
180:96ed750bd169 | 322 | { |
Anna Bridge |
180:96ed750bd169 | 323 | __set_CP64(15, 2, value, 14); |
Anna Bridge |
180:96ed750bd169 | 324 | } |
Anna Bridge |
180:96ed750bd169 | 325 | |
Anna Bridge |
180:96ed750bd169 | 326 | /** \brief Get CNTP_CVAL |
Anna Bridge |
180:96ed750bd169 | 327 | |
Anna Bridge |
180:96ed750bd169 | 328 | This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). |
Anna Bridge |
180:96ed750bd169 | 329 | |
Anna Bridge |
180:96ed750bd169 | 330 | \return CNTP_CVAL Register value |
Anna Bridge |
180:96ed750bd169 | 331 | */ |
Anna Bridge |
180:96ed750bd169 | 332 | __STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void) |
Anna Bridge |
180:96ed750bd169 | 333 | { |
Anna Bridge |
180:96ed750bd169 | 334 | uint64_t result; |
Anna Bridge |
180:96ed750bd169 | 335 | __get_CP64(15, 2, result, 14); |
Anna Bridge |
180:96ed750bd169 | 336 | return result; |
Anna Bridge |
180:96ed750bd169 | 337 | } |
Anna Bridge |
180:96ed750bd169 | 338 | |
Anna Bridge |
180:96ed750bd169 | 339 | /** \brief Set CNTP_CTL |
Anna Bridge |
180:96ed750bd169 | 340 | |
Anna Bridge |
180:96ed750bd169 | 341 | This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL). |
Anna Bridge |
180:96ed750bd169 | 342 | |
Anna Bridge |
180:96ed750bd169 | 343 | \param [in] value CNTP_CTL Register value to set |
Anna Bridge |
180:96ed750bd169 | 344 | */ |
Anna Bridge |
180:96ed750bd169 | 345 | __STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 346 | { |
Anna Bridge |
180:96ed750bd169 | 347 | __set_CP(15, 0, value, 14, 2, 1); |
Anna Bridge |
180:96ed750bd169 | 348 | } |
Anna Bridge |
180:96ed750bd169 | 349 | |
Anna Bridge |
180:96ed750bd169 | 350 | /** \brief Get CNTP_CTL register |
Anna Bridge |
180:96ed750bd169 | 351 | \return CNTP_CTL Register value |
Anna Bridge |
180:96ed750bd169 | 352 | */ |
Anna Bridge |
180:96ed750bd169 | 353 | __STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void) |
Anna Bridge |
180:96ed750bd169 | 354 | { |
Anna Bridge |
180:96ed750bd169 | 355 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 356 | __get_CP(15, 0, result, 14, 2, 1); |
Anna Bridge |
180:96ed750bd169 | 357 | return result; |
Anna Bridge |
180:96ed750bd169 | 358 | } |
Anna Bridge |
180:96ed750bd169 | 359 | |
Anna Bridge |
180:96ed750bd169 | 360 | #endif |
Anna Bridge |
180:96ed750bd169 | 361 | |
Anna Bridge |
180:96ed750bd169 | 362 | /** \brief Set TLBIALL |
Anna Bridge |
180:96ed750bd169 | 363 | |
Anna Bridge |
180:96ed750bd169 | 364 | TLB Invalidate All |
Anna Bridge |
180:96ed750bd169 | 365 | */ |
Anna Bridge |
180:96ed750bd169 | 366 | __STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 367 | { |
Anna Bridge |
180:96ed750bd169 | 368 | __set_CP(15, 0, value, 8, 7, 0); |
Anna Bridge |
180:96ed750bd169 | 369 | } |
Anna Bridge |
180:96ed750bd169 | 370 | |
Anna Bridge |
180:96ed750bd169 | 371 | /** \brief Set BPIALL. |
Anna Bridge |
180:96ed750bd169 | 372 | |
Anna Bridge |
180:96ed750bd169 | 373 | Branch Predictor Invalidate All |
Anna Bridge |
180:96ed750bd169 | 374 | */ |
Anna Bridge |
180:96ed750bd169 | 375 | __STATIC_FORCEINLINE void __set_BPIALL(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 376 | { |
Anna Bridge |
180:96ed750bd169 | 377 | __set_CP(15, 0, value, 7, 5, 6); |
Anna Bridge |
180:96ed750bd169 | 378 | } |
Anna Bridge |
180:96ed750bd169 | 379 | |
Anna Bridge |
180:96ed750bd169 | 380 | /** \brief Set ICIALLU |
Anna Bridge |
180:96ed750bd169 | 381 | |
Anna Bridge |
180:96ed750bd169 | 382 | Instruction Cache Invalidate All |
Anna Bridge |
180:96ed750bd169 | 383 | */ |
Anna Bridge |
180:96ed750bd169 | 384 | __STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 385 | { |
Anna Bridge |
180:96ed750bd169 | 386 | __set_CP(15, 0, value, 7, 5, 0); |
Anna Bridge |
180:96ed750bd169 | 387 | } |
Anna Bridge |
180:96ed750bd169 | 388 | |
Anna Bridge |
180:96ed750bd169 | 389 | /** \brief Set DCCMVAC |
Anna Bridge |
180:96ed750bd169 | 390 | |
Anna Bridge |
180:96ed750bd169 | 391 | Data cache clean |
Anna Bridge |
180:96ed750bd169 | 392 | */ |
Anna Bridge |
180:96ed750bd169 | 393 | __STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 394 | { |
Anna Bridge |
180:96ed750bd169 | 395 | __set_CP(15, 0, value, 7, 10, 1); |
Anna Bridge |
180:96ed750bd169 | 396 | } |
Anna Bridge |
180:96ed750bd169 | 397 | |
Anna Bridge |
180:96ed750bd169 | 398 | /** \brief Set DCIMVAC |
Anna Bridge |
180:96ed750bd169 | 399 | |
Anna Bridge |
180:96ed750bd169 | 400 | Data cache invalidate |
Anna Bridge |
180:96ed750bd169 | 401 | */ |
Anna Bridge |
180:96ed750bd169 | 402 | __STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 403 | { |
Anna Bridge |
180:96ed750bd169 | 404 | __set_CP(15, 0, value, 7, 6, 1); |
Anna Bridge |
180:96ed750bd169 | 405 | } |
Anna Bridge |
180:96ed750bd169 | 406 | |
Anna Bridge |
180:96ed750bd169 | 407 | /** \brief Set DCCIMVAC |
Anna Bridge |
180:96ed750bd169 | 408 | |
Anna Bridge |
180:96ed750bd169 | 409 | Data cache clean and invalidate |
Anna Bridge |
180:96ed750bd169 | 410 | */ |
Anna Bridge |
180:96ed750bd169 | 411 | __STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 412 | { |
Anna Bridge |
180:96ed750bd169 | 413 | __set_CP(15, 0, value, 7, 14, 1); |
Anna Bridge |
180:96ed750bd169 | 414 | } |
Anna Bridge |
180:96ed750bd169 | 415 | |
Anna Bridge |
180:96ed750bd169 | 416 | |
Anna Bridge |
180:96ed750bd169 | 417 | /** \brief Set CCSIDR |
Anna Bridge |
180:96ed750bd169 | 418 | */ |
Anna Bridge |
180:96ed750bd169 | 419 | __STATIC_FORCEINLINE void __set_CCSIDR(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 420 | { |
Anna Bridge |
180:96ed750bd169 | 421 | // __ASM volatile("MCR p15, 2, %0, c0, c0, 0" : : "r"(value) : "memory"); |
Anna Bridge |
180:96ed750bd169 | 422 | __set_CP(15, 2, value, 0, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 423 | } |
Anna Bridge |
180:96ed750bd169 | 424 | |
Anna Bridge |
180:96ed750bd169 | 425 | /** \brief Get CCSIDR |
Anna Bridge |
180:96ed750bd169 | 426 | \return CCSIDR Register value |
Anna Bridge |
180:96ed750bd169 | 427 | */ |
Anna Bridge |
180:96ed750bd169 | 428 | __STATIC_FORCEINLINE uint32_t __get_CCSIDR(void) |
Anna Bridge |
180:96ed750bd169 | 429 | { |
Anna Bridge |
180:96ed750bd169 | 430 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 431 | // __ASM volatile("MRC p15, 1, %0, c0, c0, 0" : "=r"(result) : : "memory"); |
Anna Bridge |
180:96ed750bd169 | 432 | __get_CP(15, 1, result, 0, 0, 0); |
Anna Bridge |
180:96ed750bd169 | 433 | return result; |
Anna Bridge |
180:96ed750bd169 | 434 | } |
Anna Bridge |
180:96ed750bd169 | 435 | |
Anna Bridge |
180:96ed750bd169 | 436 | /** \brief Get CLIDR |
Anna Bridge |
180:96ed750bd169 | 437 | \return CLIDR Register value |
Anna Bridge |
180:96ed750bd169 | 438 | */ |
Anna Bridge |
180:96ed750bd169 | 439 | __STATIC_FORCEINLINE uint32_t __get_CLIDR(void) |
Anna Bridge |
180:96ed750bd169 | 440 | { |
Anna Bridge |
180:96ed750bd169 | 441 | uint32_t result; |
Anna Bridge |
180:96ed750bd169 | 442 | // __ASM volatile("MRC p15, 1, %0, c0, c0, 1" : "=r"(result) : : "memory"); |
Anna Bridge |
180:96ed750bd169 | 443 | __get_CP(15, 1, result, 0, 0, 1); |
Anna Bridge |
180:96ed750bd169 | 444 | return result; |
Anna Bridge |
180:96ed750bd169 | 445 | } |
Anna Bridge |
180:96ed750bd169 | 446 | |
Anna Bridge |
180:96ed750bd169 | 447 | /** \brief Set DCISW |
Anna Bridge |
180:96ed750bd169 | 448 | */ |
Anna Bridge |
180:96ed750bd169 | 449 | __STATIC_FORCEINLINE void __set_DCISW(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 450 | { |
Anna Bridge |
180:96ed750bd169 | 451 | // __ASM volatile("MCR p15, 0, %0, c7, c6, 2" : : "r"(value) : "memory") |
Anna Bridge |
180:96ed750bd169 | 452 | __set_CP(15, 0, value, 7, 6, 2); |
Anna Bridge |
180:96ed750bd169 | 453 | } |
Anna Bridge |
180:96ed750bd169 | 454 | |
Anna Bridge |
180:96ed750bd169 | 455 | /** \brief Set DCCSW |
Anna Bridge |
180:96ed750bd169 | 456 | */ |
Anna Bridge |
180:96ed750bd169 | 457 | __STATIC_FORCEINLINE void __set_DCCSW(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 458 | { |
Anna Bridge |
180:96ed750bd169 | 459 | // __ASM volatile("MCR p15, 0, %0, c7, c10, 2" : : "r"(value) : "memory") |
Anna Bridge |
180:96ed750bd169 | 460 | __set_CP(15, 0, value, 7, 10, 2); |
Anna Bridge |
180:96ed750bd169 | 461 | } |
Anna Bridge |
180:96ed750bd169 | 462 | |
Anna Bridge |
180:96ed750bd169 | 463 | /** \brief Set DCCISW |
Anna Bridge |
180:96ed750bd169 | 464 | */ |
Anna Bridge |
180:96ed750bd169 | 465 | __STATIC_FORCEINLINE void __set_DCCISW(uint32_t value) |
Anna Bridge |
180:96ed750bd169 | 466 | { |
Anna Bridge |
180:96ed750bd169 | 467 | // __ASM volatile("MCR p15, 0, %0, c7, c14, 2" : : "r"(value) : "memory") |
Anna Bridge |
180:96ed750bd169 | 468 | __set_CP(15, 0, value, 7, 14, 2); |
Anna Bridge |
180:96ed750bd169 | 469 | } |
Anna Bridge |
180:96ed750bd169 | 470 | |
Anna Bridge |
180:96ed750bd169 | 471 | #endif |