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:
165:d1b4690b3f8b
Child:
169:a7c7b631e539
Updating mbed 2 version number

Who changed what in which revision?

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