The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Sep 06 13:39:34 2018 +0100
Revision:
170:e95d10626187
Parent:
169:a7c7b631e539
mbed library. Release version 163

Who changed what in which revision?

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