You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2023/01/05 21:17:50 UTC
[nuttx] branch master updated: arch:add faultmask register operation to armv7-m & armv8-m
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 172d467c26 arch:add faultmask register operation to armv7-m & armv8-m
172d467c26 is described below
commit 172d467c26303408887c2fbd7aecb5887789bff3
Author: anjiahao <an...@xiaomi.com>
AuthorDate: Sun Jan 1 22:33:52 2023 +0800
arch:add faultmask register operation to armv7-m & armv8-m
Signed-off-by: anjiahao <an...@xiaomi.com>
---
arch/arm/include/armv7-m/irq.h | 27 +++++++++++++++++++++++++++
arch/arm/include/armv8-m/irq.h | 27 +++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/arch/arm/include/armv7-m/irq.h b/arch/arm/include/armv7-m/irq.h
index 772ba5e6e2..10bc465615 100644
--- a/arch/arm/include/armv7-m/irq.h
+++ b/arch/arm/include/armv7-m/irq.h
@@ -474,6 +474,33 @@ static inline uint32_t getipsr(void)
return ipsr;
}
+/* Get/set FAULTMASK */
+
+static inline uint32_t getfaultmask(void) always_inline_function;
+static inline uint32_t getfaultmask(void)
+{
+ uint32_t faultmask;
+ __asm__ __volatile__
+ (
+ "\tmrs %0, faultmask\n"
+ : "=r" (faultmask)
+ :
+ : "memory");
+
+ return faultmask;
+}
+
+static inline void setfaultmask(uint32_t faultmask) always_inline_function;
+static inline void setfaultmask(uint32_t faultmask)
+{
+ __asm__ __volatile__
+ (
+ "\tmsr faultmask, %0\n"
+ :
+ : "r" (faultmask)
+ : "memory");
+}
+
/* Get/set CONTROL */
static inline uint32_t getcontrol(void) always_inline_function;
diff --git a/arch/arm/include/armv8-m/irq.h b/arch/arm/include/armv8-m/irq.h
index 86d135b02b..066a575427 100644
--- a/arch/arm/include/armv8-m/irq.h
+++ b/arch/arm/include/armv8-m/irq.h
@@ -451,6 +451,33 @@ static inline uint32_t getipsr(void)
return ipsr;
}
+/* Get/set FAULTMASK */
+
+static inline uint32_t getfaultmask(void) always_inline_function;
+static inline uint32_t getfaultmask(void)
+{
+ uint32_t faultmask;
+ __asm__ __volatile__
+ (
+ "\tmrs %0, faultmask\n"
+ : "=r" (faultmask)
+ :
+ : "memory");
+
+ return faultmask;
+}
+
+static inline void setfaultmask(uint32_t faultmask) always_inline_function;
+static inline void setfaultmask(uint32_t faultmask)
+{
+ __asm__ __volatile__
+ (
+ "\tmsr faultmask, %0\n"
+ :
+ : "r" (faultmask)
+ : "memory");
+}
+
/* Get/set CONTROL */
static inline uint32_t getcontrol(void) always_inline_function;