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.
TARGET_RZ_A1H/cmsis_cp15.h@160:5571c4ff569f, 2018-01-17 (annotated)
- Committer:
- Anna Bridge
- Date:
- Wed Jan 17 16:13:02 2018 +0000
- Revision:
- 160:5571c4ff569f
- Child:
- 169:a7c7b631e539
mbed library. Release version 158
Who changed what in which revision?
User | Revision | Line number | New 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 |