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;