mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

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?

UserRevisionLine numberNew 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