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_VK_RZ_A1H/cmsis_cp15.h@166:5aab5a7997ee, 2018-04-20 (annotated)
- 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?
User | Revision | Line number | New 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 |