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:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
161:aa5281ff4a02
mbed library. Release version 162

Who changed what in which revision?

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