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:
Fri Feb 16 16:16:41 2018 +0000
Revision:
161:aa5281ff4a02
Child:
169:a7c7b631e539
mbed library. Release version 159.

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