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 Apr 20 11:08:29 2018 +0100
Revision:
166:5aab5a7997ee
Parent:
160:5571c4ff569f
Child:
169:a7c7b631e539
Updating mbed 2 version number

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 160:5571c4ff569f 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 160:5571c4ff569f 247 __set_CP(15, 0, vbar, 12, 0, 1);
Anna Bridge 160:5571c4ff569f 248 }
Anna Bridge 160:5571c4ff569f 249
Anna Bridge 160:5571c4ff569f 250 #if (defined(__CORTEX_A) && (__CORTEX_A == 7U) && \
Anna Bridge 160:5571c4ff569f 251 defined(__TIM_PRESENT) && (__TIM_PRESENT == 1U)) || \
Anna Bridge 160:5571c4ff569f 252 defined(DOXYGEN)
Anna Bridge 160:5571c4ff569f 253
Anna Bridge 160:5571c4ff569f 254 /** \brief Set CNTFRQ
Anna Bridge 160:5571c4ff569f 255
Anna Bridge 160:5571c4ff569f 256 This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ).
Anna Bridge 160:5571c4ff569f 257
Anna Bridge 160:5571c4ff569f 258 \param [in] value CNTFRQ Register value to set
Anna Bridge 160:5571c4ff569f 259 */
Anna Bridge 160:5571c4ff569f 260 __STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value)
Anna Bridge 160:5571c4ff569f 261 {
Anna Bridge 160:5571c4ff569f 262 __set_CP(15, 0, value, 14, 0, 0);
Anna Bridge 160:5571c4ff569f 263 }
Anna Bridge 160:5571c4ff569f 264
Anna Bridge 160:5571c4ff569f 265 /** \brief Get CNTFRQ
Anna Bridge 160:5571c4ff569f 266
Anna Bridge 160:5571c4ff569f 267 This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ).
Anna Bridge 160:5571c4ff569f 268
Anna Bridge 160:5571c4ff569f 269 \return CNTFRQ Register value
Anna Bridge 160:5571c4ff569f 270 */
Anna Bridge 160:5571c4ff569f 271 __STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void)
Anna Bridge 160:5571c4ff569f 272 {
Anna Bridge 160:5571c4ff569f 273 uint32_t result;
Anna Bridge 160:5571c4ff569f 274 __get_CP(15, 0, result, 14, 0 , 0);
Anna Bridge 160:5571c4ff569f 275 return result;
Anna Bridge 160:5571c4ff569f 276 }
Anna Bridge 160:5571c4ff569f 277
Anna Bridge 160:5571c4ff569f 278 /** \brief Set CNTP_TVAL
Anna Bridge 160:5571c4ff569f 279
Anna Bridge 160:5571c4ff569f 280 This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL).
Anna Bridge 160:5571c4ff569f 281
Anna Bridge 160:5571c4ff569f 282 \param [in] value CNTP_TVAL Register value to set
Anna Bridge 160:5571c4ff569f 283 */
Anna Bridge 160:5571c4ff569f 284 __STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value)
Anna Bridge 160:5571c4ff569f 285 {
Anna Bridge 160:5571c4ff569f 286 __set_CP(15, 0, value, 14, 2, 0);
Anna Bridge 160:5571c4ff569f 287 }
Anna Bridge 160:5571c4ff569f 288
Anna Bridge 160:5571c4ff569f 289 /** \brief Get CNTP_TVAL
Anna Bridge 160:5571c4ff569f 290
Anna Bridge 160:5571c4ff569f 291 This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL).
Anna Bridge 160:5571c4ff569f 292
Anna Bridge 160:5571c4ff569f 293 \return CNTP_TVAL Register value
Anna Bridge 160:5571c4ff569f 294 */
Anna Bridge 160:5571c4ff569f 295 __STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(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, 2, 0);
Anna Bridge 160:5571c4ff569f 299 return result;
Anna Bridge 160:5571c4ff569f 300 }
Anna Bridge 160:5571c4ff569f 301
Anna Bridge 160:5571c4ff569f 302 /** \brief Get CNTPCT
Anna Bridge 160:5571c4ff569f 303
Anna Bridge 160:5571c4ff569f 304 This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT).
Anna Bridge 160:5571c4ff569f 305
Anna Bridge 160:5571c4ff569f 306 \return CNTPCT Register value
Anna Bridge 160:5571c4ff569f 307 */
Anna Bridge 160:5571c4ff569f 308 __STATIC_FORCEINLINE uint64_t __get_CNTPCT(void)
Anna Bridge 160:5571c4ff569f 309 {
Anna Bridge 160:5571c4ff569f 310 uint64_t result;
Anna Bridge 160:5571c4ff569f 311 __get_CP64(15, 0, result, 14);
Anna Bridge 160:5571c4ff569f 312 return result;
Anna Bridge 160:5571c4ff569f 313 }
Anna Bridge 160:5571c4ff569f 314
Anna Bridge 160:5571c4ff569f 315 /** \brief Set CNTP_CVAL
Anna Bridge 160:5571c4ff569f 316
Anna Bridge 160:5571c4ff569f 317 This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL).
Anna Bridge 160:5571c4ff569f 318
Anna Bridge 160:5571c4ff569f 319 \param [in] value CNTP_CVAL Register value to set
Anna Bridge 160:5571c4ff569f 320 */
Anna Bridge 160:5571c4ff569f 321 __STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value)
Anna Bridge 160:5571c4ff569f 322 {
Anna Bridge 160:5571c4ff569f 323 __set_CP64(15, 2, value, 14);
Anna Bridge 160:5571c4ff569f 324 }
Anna Bridge 160:5571c4ff569f 325
Anna Bridge 160:5571c4ff569f 326 /** \brief Get CNTP_CVAL
Anna Bridge 160:5571c4ff569f 327
Anna Bridge 160:5571c4ff569f 328 This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL).
Anna Bridge 160:5571c4ff569f 329
Anna Bridge 160:5571c4ff569f 330 \return CNTP_CVAL Register value
Anna Bridge 160:5571c4ff569f 331 */
Anna Bridge 160:5571c4ff569f 332 __STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void)
Anna Bridge 160:5571c4ff569f 333 {
Anna Bridge 160:5571c4ff569f 334 uint64_t result;
Anna Bridge 160:5571c4ff569f 335 __get_CP64(15, 2, 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_CTL
Anna Bridge 160:5571c4ff569f 340
Anna Bridge 160:5571c4ff569f 341 This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL).
Anna Bridge 160:5571c4ff569f 342
Anna Bridge 160:5571c4ff569f 343 \param [in] value CNTP_CTL Register value to set
Anna Bridge 160:5571c4ff569f 344 */
Anna Bridge 160:5571c4ff569f 345 __STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value)
Anna Bridge 160:5571c4ff569f 346 {
Anna Bridge 160:5571c4ff569f 347 __set_CP(15, 0, value, 14, 2, 1);
Anna Bridge 160:5571c4ff569f 348 }
Anna Bridge 160:5571c4ff569f 349
Anna Bridge 160:5571c4ff569f 350 /** \brief Get CNTP_CTL register
Anna Bridge 160:5571c4ff569f 351 \return CNTP_CTL Register value
Anna Bridge 160:5571c4ff569f 352 */
Anna Bridge 160:5571c4ff569f 353 __STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void)
Anna Bridge 160:5571c4ff569f 354 {
Anna Bridge 160:5571c4ff569f 355 uint32_t result;
Anna Bridge 160:5571c4ff569f 356 __get_CP(15, 0, result, 14, 2, 1);
Anna Bridge 160:5571c4ff569f 357 return result;
Anna Bridge 160:5571c4ff569f 358 }
Anna Bridge 160:5571c4ff569f 359
Anna Bridge 160:5571c4ff569f 360 #endif
Anna Bridge 160:5571c4ff569f 361
Anna Bridge 160:5571c4ff569f 362 /** \brief Set TLBIALL
Anna Bridge 160:5571c4ff569f 363
Anna Bridge 160:5571c4ff569f 364 TLB Invalidate All
Anna Bridge 160:5571c4ff569f 365 */
Anna Bridge 160:5571c4ff569f 366 __STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value)
Anna Bridge 160:5571c4ff569f 367 {
Anna Bridge 160:5571c4ff569f 368 __set_CP(15, 0, value, 8, 7, 0);
Anna Bridge 160:5571c4ff569f 369 }
Anna Bridge 160:5571c4ff569f 370
Anna Bridge 160:5571c4ff569f 371 /** \brief Set BPIALL.
Anna Bridge 160:5571c4ff569f 372
Anna Bridge 160:5571c4ff569f 373 Branch Predictor Invalidate All
Anna Bridge 160:5571c4ff569f 374 */
Anna Bridge 160:5571c4ff569f 375 __STATIC_FORCEINLINE void __set_BPIALL(uint32_t value)
Anna Bridge 160:5571c4ff569f 376 {
Anna Bridge 160:5571c4ff569f 377 __set_CP(15, 0, value, 7, 5, 6);
Anna Bridge 160:5571c4ff569f 378 }
Anna Bridge 160:5571c4ff569f 379
Anna Bridge 160:5571c4ff569f 380 /** \brief Set ICIALLU
Anna Bridge 160:5571c4ff569f 381
Anna Bridge 160:5571c4ff569f 382 Instruction Cache Invalidate All
Anna Bridge 160:5571c4ff569f 383 */
Anna Bridge 160:5571c4ff569f 384 __STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value)
Anna Bridge 160:5571c4ff569f 385 {
Anna Bridge 160:5571c4ff569f 386 __set_CP(15, 0, value, 7, 5, 0);
Anna Bridge 160:5571c4ff569f 387 }
Anna Bridge 160:5571c4ff569f 388
Anna Bridge 160:5571c4ff569f 389 /** \brief Set DCCMVAC
Anna Bridge 160:5571c4ff569f 390
Anna Bridge 160:5571c4ff569f 391 Data cache clean
Anna Bridge 160:5571c4ff569f 392 */
Anna Bridge 160:5571c4ff569f 393 __STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value)
Anna Bridge 160:5571c4ff569f 394 {
Anna Bridge 160:5571c4ff569f 395 __set_CP(15, 0, value, 7, 10, 1);
Anna Bridge 160:5571c4ff569f 396 }
Anna Bridge 160:5571c4ff569f 397
Anna Bridge 160:5571c4ff569f 398 /** \brief Set DCIMVAC
Anna Bridge 160:5571c4ff569f 399
Anna Bridge 160:5571c4ff569f 400 Data cache invalidate
Anna Bridge 160:5571c4ff569f 401 */
Anna Bridge 160:5571c4ff569f 402 __STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value)
Anna Bridge 160:5571c4ff569f 403 {
Anna Bridge 160:5571c4ff569f 404 __set_CP(15, 0, value, 7, 6, 1);
Anna Bridge 160:5571c4ff569f 405 }
Anna Bridge 160:5571c4ff569f 406
Anna Bridge 160:5571c4ff569f 407 /** \brief Set DCCIMVAC
Anna Bridge 160:5571c4ff569f 408
Anna Bridge 160:5571c4ff569f 409 Data cache clean and invalidate
Anna Bridge 160:5571c4ff569f 410 */
Anna Bridge 160:5571c4ff569f 411 __STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value)
Anna Bridge 160:5571c4ff569f 412 {
Anna Bridge 160:5571c4ff569f 413 __set_CP(15, 0, value, 7, 14, 1);
Anna Bridge 160:5571c4ff569f 414 }
Anna Bridge 160:5571c4ff569f 415
Anna Bridge 160:5571c4ff569f 416
Anna Bridge 160:5571c4ff569f 417 /** \brief Set CCSIDR
Anna Bridge 160:5571c4ff569f 418 */
Anna Bridge 160:5571c4ff569f 419 __STATIC_FORCEINLINE void __set_CCSIDR(uint32_t value)
Anna Bridge 160:5571c4ff569f 420 {
Anna Bridge 160:5571c4ff569f 421 // __ASM volatile("MCR p15, 2, %0, c0, c0, 0" : : "r"(value) : "memory");
Anna Bridge 160:5571c4ff569f 422 __set_CP(15, 2, value, 0, 0, 0);
Anna Bridge 160:5571c4ff569f 423 }
Anna Bridge 160:5571c4ff569f 424
Anna Bridge 160:5571c4ff569f 425 /** \brief Get CCSIDR
Anna Bridge 160:5571c4ff569f 426 \return CCSIDR Register value
Anna Bridge 160:5571c4ff569f 427 */
Anna Bridge 160:5571c4ff569f 428 __STATIC_FORCEINLINE uint32_t __get_CCSIDR(void)
Anna Bridge 160:5571c4ff569f 429 {
Anna Bridge 160:5571c4ff569f 430 uint32_t result;
Anna Bridge 160:5571c4ff569f 431 // __ASM volatile("MRC p15, 1, %0, c0, c0, 0" : "=r"(result) : : "memory");
Anna Bridge 160:5571c4ff569f 432 __get_CP(15, 1, result, 0, 0, 0);
Anna Bridge 160:5571c4ff569f 433 return result;
Anna Bridge 160:5571c4ff569f 434 }
Anna Bridge 160:5571c4ff569f 435
Anna Bridge 160:5571c4ff569f 436 /** \brief Get CLIDR
Anna Bridge 160:5571c4ff569f 437 \return CLIDR Register value
Anna Bridge 160:5571c4ff569f 438 */
Anna Bridge 160:5571c4ff569f 439 __STATIC_FORCEINLINE uint32_t __get_CLIDR(void)
Anna Bridge 160:5571c4ff569f 440 {
Anna Bridge 160:5571c4ff569f 441 uint32_t result;
Anna Bridge 160:5571c4ff569f 442 // __ASM volatile("MRC p15, 1, %0, c0, c0, 1" : "=r"(result) : : "memory");
Anna Bridge 160:5571c4ff569f 443 __get_CP(15, 1, result, 0, 0, 1);
Anna Bridge 160:5571c4ff569f 444 return result;
Anna Bridge 160:5571c4ff569f 445 }
Anna Bridge 160:5571c4ff569f 446
Anna Bridge 160:5571c4ff569f 447 /** \brief Set DCISW
Anna Bridge 160:5571c4ff569f 448 */
Anna Bridge 160:5571c4ff569f 449 __STATIC_FORCEINLINE void __set_DCISW(uint32_t value)
Anna Bridge 160:5571c4ff569f 450 {
Anna Bridge 160:5571c4ff569f 451 // __ASM volatile("MCR p15, 0, %0, c7, c6, 2" : : "r"(value) : "memory")
Anna Bridge 160:5571c4ff569f 452 __set_CP(15, 0, value, 7, 6, 2);
Anna Bridge 160:5571c4ff569f 453 }
Anna Bridge 160:5571c4ff569f 454
Anna Bridge 160:5571c4ff569f 455 /** \brief Set DCCSW
Anna Bridge 160:5571c4ff569f 456 */
Anna Bridge 160:5571c4ff569f 457 __STATIC_FORCEINLINE void __set_DCCSW(uint32_t value)
Anna Bridge 160:5571c4ff569f 458 {
Anna Bridge 160:5571c4ff569f 459 // __ASM volatile("MCR p15, 0, %0, c7, c10, 2" : : "r"(value) : "memory")
Anna Bridge 160:5571c4ff569f 460 __set_CP(15, 0, value, 7, 10, 2);
Anna Bridge 160:5571c4ff569f 461 }
Anna Bridge 160:5571c4ff569f 462
Anna Bridge 160:5571c4ff569f 463 /** \brief Set DCCISW
Anna Bridge 160:5571c4ff569f 464 */
Anna Bridge 160:5571c4ff569f 465 __STATIC_FORCEINLINE void __set_DCCISW(uint32_t value)
Anna Bridge 160:5571c4ff569f 466 {
Anna Bridge 160:5571c4ff569f 467 // __ASM volatile("MCR p15, 0, %0, c7, c14, 2" : : "r"(value) : "memory")
Anna Bridge 160:5571c4ff569f 468 __set_CP(15, 0, value, 7, 14, 2);
Anna Bridge 160:5571c4ff569f 469 }
Anna Bridge 160:5571c4ff569f 470
Anna Bridge 160:5571c4ff569f 471 #endif