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/TOOLCHAIN_ARM_STD/cmsis_cp15.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New 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 | |
Anna Bridge |
169:a7c7b631e539 | 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 | { |
Anna Bridge |
169:a7c7b631e539 | 247 | __set_CP(15, 0, vbar, 12, 0, 0); |
Anna Bridge |
169:a7c7b631e539 | 248 | } |
Anna Bridge |
169:a7c7b631e539 | 249 | |
Anna Bridge |
169:a7c7b631e539 | 250 | /** \brief Get MVBAR |
Anna Bridge |
169:a7c7b631e539 | 251 | |
Anna Bridge |
169:a7c7b631e539 | 252 | This function returns the value of the Monitor Vector Base Address Register. |
Anna Bridge |
169:a7c7b631e539 | 253 | |
Anna Bridge |
169:a7c7b631e539 | 254 | \return Monitor Vector Base Address Register |
Anna Bridge |
169:a7c7b631e539 | 255 | */ |
Anna Bridge |
169:a7c7b631e539 | 256 | __STATIC_FORCEINLINE uint32_t __get_MVBAR(void) |
Anna Bridge |
169:a7c7b631e539 | 257 | { |
Anna Bridge |
169:a7c7b631e539 | 258 | uint32_t result; |
Anna Bridge |
169:a7c7b631e539 | 259 | __get_CP(15, 0, result, 12, 0, 1); |
Anna Bridge |
169:a7c7b631e539 | 260 | return result; |
Anna Bridge |
169:a7c7b631e539 | 261 | } |
Anna Bridge |
169:a7c7b631e539 | 262 | |
Anna Bridge |
169:a7c7b631e539 | 263 | /** \brief Set MVBAR |
Anna Bridge |
169:a7c7b631e539 | 264 | |
Anna Bridge |
169:a7c7b631e539 | 265 | This function assigns the given value to the Monitor Vector Base Address Register. |
Anna Bridge |
169:a7c7b631e539 | 266 | |
Anna Bridge |
169:a7c7b631e539 | 267 | \param [in] mvbar Monitor Vector Base Address Register value to set |
Anna Bridge |
169:a7c7b631e539 | 268 | */ |
Anna Bridge |
169:a7c7b631e539 | 269 | __STATIC_FORCEINLINE void __set_MVBAR(uint32_t mvbar) |
Anna Bridge |
169:a7c7b631e539 | 270 | { |
Anna Bridge |
169:a7c7b631e539 | 271 | __set_CP(15, 0, mvbar, 12, 0, 1); |
AnnaBridge | 161:aa5281ff4a02 | 272 | } |
AnnaBridge | 161:aa5281ff4a02 | 273 | |
AnnaBridge | 161:aa5281ff4a02 | 274 | #if (defined(__CORTEX_A) && (__CORTEX_A == 7U) && \ |
AnnaBridge | 161:aa5281ff4a02 | 275 | defined(__TIM_PRESENT) && (__TIM_PRESENT == 1U)) || \ |
AnnaBridge | 161:aa5281ff4a02 | 276 | defined(DOXYGEN) |
AnnaBridge | 161:aa5281ff4a02 | 277 | |
AnnaBridge | 161:aa5281ff4a02 | 278 | /** \brief Set CNTFRQ |
AnnaBridge | 161:aa5281ff4a02 | 279 | |
AnnaBridge | 161:aa5281ff4a02 | 280 | This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ). |
AnnaBridge | 161:aa5281ff4a02 | 281 | |
AnnaBridge | 161:aa5281ff4a02 | 282 | \param [in] value CNTFRQ Register value to set |
AnnaBridge | 161:aa5281ff4a02 | 283 | */ |
AnnaBridge | 161:aa5281ff4a02 | 284 | __STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 285 | { |
AnnaBridge | 161:aa5281ff4a02 | 286 | __set_CP(15, 0, value, 14, 0, 0); |
AnnaBridge | 161:aa5281ff4a02 | 287 | } |
AnnaBridge | 161:aa5281ff4a02 | 288 | |
AnnaBridge | 161:aa5281ff4a02 | 289 | /** \brief Get CNTFRQ |
AnnaBridge | 161:aa5281ff4a02 | 290 | |
AnnaBridge | 161:aa5281ff4a02 | 291 | This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ). |
AnnaBridge | 161:aa5281ff4a02 | 292 | |
AnnaBridge | 161:aa5281ff4a02 | 293 | \return CNTFRQ Register value |
AnnaBridge | 161:aa5281ff4a02 | 294 | */ |
AnnaBridge | 161:aa5281ff4a02 | 295 | __STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void) |
AnnaBridge | 161:aa5281ff4a02 | 296 | { |
AnnaBridge | 161:aa5281ff4a02 | 297 | uint32_t result; |
AnnaBridge | 161:aa5281ff4a02 | 298 | __get_CP(15, 0, result, 14, 0 , 0); |
AnnaBridge | 161:aa5281ff4a02 | 299 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 300 | } |
AnnaBridge | 161:aa5281ff4a02 | 301 | |
AnnaBridge | 161:aa5281ff4a02 | 302 | /** \brief Set CNTP_TVAL |
AnnaBridge | 161:aa5281ff4a02 | 303 | |
AnnaBridge | 161:aa5281ff4a02 | 304 | This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL). |
AnnaBridge | 161:aa5281ff4a02 | 305 | |
AnnaBridge | 161:aa5281ff4a02 | 306 | \param [in] value CNTP_TVAL Register value to set |
AnnaBridge | 161:aa5281ff4a02 | 307 | */ |
AnnaBridge | 161:aa5281ff4a02 | 308 | __STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 309 | { |
AnnaBridge | 161:aa5281ff4a02 | 310 | __set_CP(15, 0, value, 14, 2, 0); |
AnnaBridge | 161:aa5281ff4a02 | 311 | } |
AnnaBridge | 161:aa5281ff4a02 | 312 | |
AnnaBridge | 161:aa5281ff4a02 | 313 | /** \brief Get CNTP_TVAL |
AnnaBridge | 161:aa5281ff4a02 | 314 | |
AnnaBridge | 161:aa5281ff4a02 | 315 | This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL). |
AnnaBridge | 161:aa5281ff4a02 | 316 | |
AnnaBridge | 161:aa5281ff4a02 | 317 | \return CNTP_TVAL Register value |
AnnaBridge | 161:aa5281ff4a02 | 318 | */ |
AnnaBridge | 161:aa5281ff4a02 | 319 | __STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(void) |
AnnaBridge | 161:aa5281ff4a02 | 320 | { |
AnnaBridge | 161:aa5281ff4a02 | 321 | uint32_t result; |
AnnaBridge | 161:aa5281ff4a02 | 322 | __get_CP(15, 0, result, 14, 2, 0); |
AnnaBridge | 161:aa5281ff4a02 | 323 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 324 | } |
AnnaBridge | 161:aa5281ff4a02 | 325 | |
AnnaBridge | 161:aa5281ff4a02 | 326 | /** \brief Get CNTPCT |
AnnaBridge | 161:aa5281ff4a02 | 327 | |
AnnaBridge | 161:aa5281ff4a02 | 328 | This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT). |
AnnaBridge | 161:aa5281ff4a02 | 329 | |
AnnaBridge | 161:aa5281ff4a02 | 330 | \return CNTPCT Register value |
AnnaBridge | 161:aa5281ff4a02 | 331 | */ |
AnnaBridge | 161:aa5281ff4a02 | 332 | __STATIC_FORCEINLINE uint64_t __get_CNTPCT(void) |
AnnaBridge | 161:aa5281ff4a02 | 333 | { |
AnnaBridge | 161:aa5281ff4a02 | 334 | uint64_t result; |
AnnaBridge | 161:aa5281ff4a02 | 335 | __get_CP64(15, 0, result, 14); |
AnnaBridge | 161:aa5281ff4a02 | 336 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 337 | } |
AnnaBridge | 161:aa5281ff4a02 | 338 | |
AnnaBridge | 161:aa5281ff4a02 | 339 | /** \brief Set CNTP_CVAL |
AnnaBridge | 161:aa5281ff4a02 | 340 | |
AnnaBridge | 161:aa5281ff4a02 | 341 | This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). |
AnnaBridge | 161:aa5281ff4a02 | 342 | |
AnnaBridge | 161:aa5281ff4a02 | 343 | \param [in] value CNTP_CVAL Register value to set |
AnnaBridge | 161:aa5281ff4a02 | 344 | */ |
AnnaBridge | 161:aa5281ff4a02 | 345 | __STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value) |
AnnaBridge | 161:aa5281ff4a02 | 346 | { |
AnnaBridge | 161:aa5281ff4a02 | 347 | __set_CP64(15, 2, value, 14); |
AnnaBridge | 161:aa5281ff4a02 | 348 | } |
AnnaBridge | 161:aa5281ff4a02 | 349 | |
AnnaBridge | 161:aa5281ff4a02 | 350 | /** \brief Get CNTP_CVAL |
AnnaBridge | 161:aa5281ff4a02 | 351 | |
AnnaBridge | 161:aa5281ff4a02 | 352 | This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). |
AnnaBridge | 161:aa5281ff4a02 | 353 | |
AnnaBridge | 161:aa5281ff4a02 | 354 | \return CNTP_CVAL Register value |
AnnaBridge | 161:aa5281ff4a02 | 355 | */ |
AnnaBridge | 161:aa5281ff4a02 | 356 | __STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void) |
AnnaBridge | 161:aa5281ff4a02 | 357 | { |
AnnaBridge | 161:aa5281ff4a02 | 358 | uint64_t result; |
AnnaBridge | 161:aa5281ff4a02 | 359 | __get_CP64(15, 2, result, 14); |
AnnaBridge | 161:aa5281ff4a02 | 360 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 361 | } |
AnnaBridge | 161:aa5281ff4a02 | 362 | |
AnnaBridge | 161:aa5281ff4a02 | 363 | /** \brief Set CNTP_CTL |
AnnaBridge | 161:aa5281ff4a02 | 364 | |
AnnaBridge | 161:aa5281ff4a02 | 365 | This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL). |
AnnaBridge | 161:aa5281ff4a02 | 366 | |
AnnaBridge | 161:aa5281ff4a02 | 367 | \param [in] value CNTP_CTL Register value to set |
AnnaBridge | 161:aa5281ff4a02 | 368 | */ |
AnnaBridge | 161:aa5281ff4a02 | 369 | __STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 370 | { |
AnnaBridge | 161:aa5281ff4a02 | 371 | __set_CP(15, 0, value, 14, 2, 1); |
AnnaBridge | 161:aa5281ff4a02 | 372 | } |
AnnaBridge | 161:aa5281ff4a02 | 373 | |
AnnaBridge | 161:aa5281ff4a02 | 374 | /** \brief Get CNTP_CTL register |
AnnaBridge | 161:aa5281ff4a02 | 375 | \return CNTP_CTL Register value |
AnnaBridge | 161:aa5281ff4a02 | 376 | */ |
AnnaBridge | 161:aa5281ff4a02 | 377 | __STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void) |
AnnaBridge | 161:aa5281ff4a02 | 378 | { |
AnnaBridge | 161:aa5281ff4a02 | 379 | uint32_t result; |
AnnaBridge | 161:aa5281ff4a02 | 380 | __get_CP(15, 0, result, 14, 2, 1); |
AnnaBridge | 161:aa5281ff4a02 | 381 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 382 | } |
AnnaBridge | 161:aa5281ff4a02 | 383 | |
AnnaBridge | 161:aa5281ff4a02 | 384 | #endif |
AnnaBridge | 161:aa5281ff4a02 | 385 | |
AnnaBridge | 161:aa5281ff4a02 | 386 | /** \brief Set TLBIALL |
AnnaBridge | 161:aa5281ff4a02 | 387 | |
AnnaBridge | 161:aa5281ff4a02 | 388 | TLB Invalidate All |
AnnaBridge | 161:aa5281ff4a02 | 389 | */ |
AnnaBridge | 161:aa5281ff4a02 | 390 | __STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 391 | { |
AnnaBridge | 161:aa5281ff4a02 | 392 | __set_CP(15, 0, value, 8, 7, 0); |
AnnaBridge | 161:aa5281ff4a02 | 393 | } |
AnnaBridge | 161:aa5281ff4a02 | 394 | |
AnnaBridge | 161:aa5281ff4a02 | 395 | /** \brief Set BPIALL. |
AnnaBridge | 161:aa5281ff4a02 | 396 | |
AnnaBridge | 161:aa5281ff4a02 | 397 | Branch Predictor Invalidate All |
AnnaBridge | 161:aa5281ff4a02 | 398 | */ |
AnnaBridge | 161:aa5281ff4a02 | 399 | __STATIC_FORCEINLINE void __set_BPIALL(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 400 | { |
AnnaBridge | 161:aa5281ff4a02 | 401 | __set_CP(15, 0, value, 7, 5, 6); |
AnnaBridge | 161:aa5281ff4a02 | 402 | } |
AnnaBridge | 161:aa5281ff4a02 | 403 | |
AnnaBridge | 161:aa5281ff4a02 | 404 | /** \brief Set ICIALLU |
AnnaBridge | 161:aa5281ff4a02 | 405 | |
AnnaBridge | 161:aa5281ff4a02 | 406 | Instruction Cache Invalidate All |
AnnaBridge | 161:aa5281ff4a02 | 407 | */ |
AnnaBridge | 161:aa5281ff4a02 | 408 | __STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 409 | { |
AnnaBridge | 161:aa5281ff4a02 | 410 | __set_CP(15, 0, value, 7, 5, 0); |
AnnaBridge | 161:aa5281ff4a02 | 411 | } |
AnnaBridge | 161:aa5281ff4a02 | 412 | |
AnnaBridge | 161:aa5281ff4a02 | 413 | /** \brief Set DCCMVAC |
AnnaBridge | 161:aa5281ff4a02 | 414 | |
AnnaBridge | 161:aa5281ff4a02 | 415 | Data cache clean |
AnnaBridge | 161:aa5281ff4a02 | 416 | */ |
AnnaBridge | 161:aa5281ff4a02 | 417 | __STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 418 | { |
AnnaBridge | 161:aa5281ff4a02 | 419 | __set_CP(15, 0, value, 7, 10, 1); |
AnnaBridge | 161:aa5281ff4a02 | 420 | } |
AnnaBridge | 161:aa5281ff4a02 | 421 | |
AnnaBridge | 161:aa5281ff4a02 | 422 | /** \brief Set DCIMVAC |
AnnaBridge | 161:aa5281ff4a02 | 423 | |
AnnaBridge | 161:aa5281ff4a02 | 424 | Data cache invalidate |
AnnaBridge | 161:aa5281ff4a02 | 425 | */ |
AnnaBridge | 161:aa5281ff4a02 | 426 | __STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 427 | { |
AnnaBridge | 161:aa5281ff4a02 | 428 | __set_CP(15, 0, value, 7, 6, 1); |
AnnaBridge | 161:aa5281ff4a02 | 429 | } |
AnnaBridge | 161:aa5281ff4a02 | 430 | |
AnnaBridge | 161:aa5281ff4a02 | 431 | /** \brief Set DCCIMVAC |
AnnaBridge | 161:aa5281ff4a02 | 432 | |
AnnaBridge | 161:aa5281ff4a02 | 433 | Data cache clean and invalidate |
AnnaBridge | 161:aa5281ff4a02 | 434 | */ |
AnnaBridge | 161:aa5281ff4a02 | 435 | __STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 436 | { |
AnnaBridge | 161:aa5281ff4a02 | 437 | __set_CP(15, 0, value, 7, 14, 1); |
AnnaBridge | 161:aa5281ff4a02 | 438 | } |
AnnaBridge | 161:aa5281ff4a02 | 439 | |
Anna Bridge |
169:a7c7b631e539 | 440 | /** \brief Set CSSELR |
AnnaBridge | 161:aa5281ff4a02 | 441 | */ |
Anna Bridge |
169:a7c7b631e539 | 442 | __STATIC_FORCEINLINE void __set_CSSELR(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 443 | { |
AnnaBridge | 161:aa5281ff4a02 | 444 | // __ASM volatile("MCR p15, 2, %0, c0, c0, 0" : : "r"(value) : "memory"); |
AnnaBridge | 161:aa5281ff4a02 | 445 | __set_CP(15, 2, value, 0, 0, 0); |
AnnaBridge | 161:aa5281ff4a02 | 446 | } |
AnnaBridge | 161:aa5281ff4a02 | 447 | |
Anna Bridge |
169:a7c7b631e539 | 448 | /** \brief Get CSSELR |
Anna Bridge |
169:a7c7b631e539 | 449 | \return CSSELR Register value |
Anna Bridge |
169:a7c7b631e539 | 450 | */ |
Anna Bridge |
169:a7c7b631e539 | 451 | __STATIC_FORCEINLINE uint32_t __get_CSSELR(void) |
Anna Bridge |
169:a7c7b631e539 | 452 | { |
Anna Bridge |
169:a7c7b631e539 | 453 | uint32_t result; |
Anna Bridge |
169:a7c7b631e539 | 454 | // __ASM volatile("MRC p15, 2, %0, c0, c0, 0" : "=r"(result) : : "memory"); |
Anna Bridge |
169:a7c7b631e539 | 455 | __get_CP(15, 2, result, 0, 0, 0); |
Anna Bridge |
169:a7c7b631e539 | 456 | return result; |
Anna Bridge |
169:a7c7b631e539 | 457 | } |
Anna Bridge |
169:a7c7b631e539 | 458 | |
Anna Bridge |
169:a7c7b631e539 | 459 | /** \brief Set CCSIDR |
Anna Bridge |
169:a7c7b631e539 | 460 | \deprecated CCSIDR itself is read-only. Use __set_CSSELR to select cache level instead. |
Anna Bridge |
169:a7c7b631e539 | 461 | */ |
Anna Bridge |
169:a7c7b631e539 | 462 | CMSIS_DEPRECATED |
Anna Bridge |
169:a7c7b631e539 | 463 | __STATIC_FORCEINLINE void __set_CCSIDR(uint32_t value) |
Anna Bridge |
169:a7c7b631e539 | 464 | { |
Anna Bridge |
169:a7c7b631e539 | 465 | __set_CSSELR(value); |
Anna Bridge |
169:a7c7b631e539 | 466 | } |
Anna Bridge |
169:a7c7b631e539 | 467 | |
AnnaBridge | 161:aa5281ff4a02 | 468 | /** \brief Get CCSIDR |
AnnaBridge | 161:aa5281ff4a02 | 469 | \return CCSIDR Register value |
AnnaBridge | 161:aa5281ff4a02 | 470 | */ |
AnnaBridge | 161:aa5281ff4a02 | 471 | __STATIC_FORCEINLINE uint32_t __get_CCSIDR(void) |
AnnaBridge | 161:aa5281ff4a02 | 472 | { |
AnnaBridge | 161:aa5281ff4a02 | 473 | uint32_t result; |
AnnaBridge | 161:aa5281ff4a02 | 474 | // __ASM volatile("MRC p15, 1, %0, c0, c0, 0" : "=r"(result) : : "memory"); |
AnnaBridge | 161:aa5281ff4a02 | 475 | __get_CP(15, 1, result, 0, 0, 0); |
AnnaBridge | 161:aa5281ff4a02 | 476 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 477 | } |
AnnaBridge | 161:aa5281ff4a02 | 478 | |
AnnaBridge | 161:aa5281ff4a02 | 479 | /** \brief Get CLIDR |
AnnaBridge | 161:aa5281ff4a02 | 480 | \return CLIDR Register value |
AnnaBridge | 161:aa5281ff4a02 | 481 | */ |
AnnaBridge | 161:aa5281ff4a02 | 482 | __STATIC_FORCEINLINE uint32_t __get_CLIDR(void) |
AnnaBridge | 161:aa5281ff4a02 | 483 | { |
AnnaBridge | 161:aa5281ff4a02 | 484 | uint32_t result; |
AnnaBridge | 161:aa5281ff4a02 | 485 | // __ASM volatile("MRC p15, 1, %0, c0, c0, 1" : "=r"(result) : : "memory"); |
AnnaBridge | 161:aa5281ff4a02 | 486 | __get_CP(15, 1, result, 0, 0, 1); |
AnnaBridge | 161:aa5281ff4a02 | 487 | return result; |
AnnaBridge | 161:aa5281ff4a02 | 488 | } |
AnnaBridge | 161:aa5281ff4a02 | 489 | |
AnnaBridge | 161:aa5281ff4a02 | 490 | /** \brief Set DCISW |
AnnaBridge | 161:aa5281ff4a02 | 491 | */ |
AnnaBridge | 161:aa5281ff4a02 | 492 | __STATIC_FORCEINLINE void __set_DCISW(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 493 | { |
AnnaBridge | 161:aa5281ff4a02 | 494 | // __ASM volatile("MCR p15, 0, %0, c7, c6, 2" : : "r"(value) : "memory") |
AnnaBridge | 161:aa5281ff4a02 | 495 | __set_CP(15, 0, value, 7, 6, 2); |
AnnaBridge | 161:aa5281ff4a02 | 496 | } |
AnnaBridge | 161:aa5281ff4a02 | 497 | |
AnnaBridge | 161:aa5281ff4a02 | 498 | /** \brief Set DCCSW |
AnnaBridge | 161:aa5281ff4a02 | 499 | */ |
AnnaBridge | 161:aa5281ff4a02 | 500 | __STATIC_FORCEINLINE void __set_DCCSW(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 501 | { |
AnnaBridge | 161:aa5281ff4a02 | 502 | // __ASM volatile("MCR p15, 0, %0, c7, c10, 2" : : "r"(value) : "memory") |
AnnaBridge | 161:aa5281ff4a02 | 503 | __set_CP(15, 0, value, 7, 10, 2); |
AnnaBridge | 161:aa5281ff4a02 | 504 | } |
AnnaBridge | 161:aa5281ff4a02 | 505 | |
AnnaBridge | 161:aa5281ff4a02 | 506 | /** \brief Set DCCISW |
AnnaBridge | 161:aa5281ff4a02 | 507 | */ |
AnnaBridge | 161:aa5281ff4a02 | 508 | __STATIC_FORCEINLINE void __set_DCCISW(uint32_t value) |
AnnaBridge | 161:aa5281ff4a02 | 509 | { |
AnnaBridge | 161:aa5281ff4a02 | 510 | // __ASM volatile("MCR p15, 0, %0, c7, c14, 2" : : "r"(value) : "memory") |
AnnaBridge | 161:aa5281ff4a02 | 511 | __set_CP(15, 0, value, 7, 14, 2); |
AnnaBridge | 161:aa5281ff4a02 | 512 | } |
AnnaBridge | 161:aa5281ff4a02 | 513 | |
AnnaBridge | 161:aa5281ff4a02 | 514 | #endif |