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/04/27 20:21:12 UTC

[nuttx] branch master updated: arch: Return directly when arch not support interrupt context save

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 f48693eaf5 arch: Return directly when arch not support interrupt context save
f48693eaf5 is described below

commit f48693eaf5d3cec9161b796be91c7d6d24f09e91
Author: zhangyuan21 <zh...@xiaomi.com>
AuthorDate: Mon Apr 10 20:55:19 2023 +0800

    arch: Return directly when arch not support interrupt context save
    
    Signed-off-by: zhangyuan21 <zh...@xiaomi.com>
---
 arch/ceva/src/common/ceva_saveusercontext.c        | 10 ++++++++++
 arch/mips/src/mips32/mips_saveusercontext.c        | 11 +++++++++++
 arch/misoc/src/lm32/lm32_saveusercontext.c         | 11 +++++++++++
 arch/misoc/src/minerva/minerva_saveusercontext.c   | 11 +++++++++++
 arch/sparc/src/sparc_v8/sparc_v8_saveusercontext.c | 11 +++++++++++
 5 files changed, 54 insertions(+)

diff --git a/arch/ceva/src/common/ceva_saveusercontext.c b/arch/ceva/src/common/ceva_saveusercontext.c
index 7206720461..090587295d 100644
--- a/arch/ceva/src/common/ceva_saveusercontext.c
+++ b/arch/ceva/src/common/ceva_saveusercontext.c
@@ -25,6 +25,8 @@
 #include <nuttx/config.h>
 #include <nuttx/irq.h>
 
+#include <string.h>
+
 #include <arch/syscall.h>
 
 #include "ceva_internal.h"
@@ -51,6 +53,14 @@ int up_saveusercontext(void *saveregs)
 {
   int ret;
 
+  if (up_interrupt_context())
+    {
+      /* TODO: save interrupt context */
+
+      memset(saveregs, 0x0, XCPTCONTEXT_SIZE);
+      return 0;
+    }
+
   /* Let sys_call1() do all of the work */
 
   ret = sys_call1(SYS_save_context, (uintptr_t)saveregs);
diff --git a/arch/mips/src/mips32/mips_saveusercontext.c b/arch/mips/src/mips32/mips_saveusercontext.c
index 19b9b30900..001714de51 100644
--- a/arch/mips/src/mips32/mips_saveusercontext.c
+++ b/arch/mips/src/mips32/mips_saveusercontext.c
@@ -23,6 +23,9 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+#include <nuttx/irq.h>
+
+#include <string.h>
 
 #include <arch/syscall.h>
 
@@ -46,5 +49,13 @@
 
 int up_saveusercontext(void *saveregs)
 {
+  if (up_interrupt_context())
+    {
+      /* TODO: save interrupt context */
+
+      memset(saveregs, 0x0, XCPTCONTEXT_SIZE);
+      return 0;
+    }
+
   return sys_call1(SYS_save_context, (uintptr_t)saveregs);
 }
diff --git a/arch/misoc/src/lm32/lm32_saveusercontext.c b/arch/misoc/src/lm32/lm32_saveusercontext.c
index 110e770543..2733002104 100644
--- a/arch/misoc/src/lm32/lm32_saveusercontext.c
+++ b/arch/misoc/src/lm32/lm32_saveusercontext.c
@@ -23,6 +23,9 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+#include <nuttx/irq.h>
+
+#include <string.h>
 
 #include <arch/syscall.h>
 
@@ -46,5 +49,13 @@
 
 int up_saveusercontext(void *saveregs)
 {
+  if (up_interrupt_context())
+    {
+      /* TODO: save interrupt context */
+
+      memset(saveregs, 0x0, XCPTCONTEXT_SIZE);
+      return 0;
+    }
+
   return sys_call1(SYS_save_context, (uintptr_t)saveregs);
 }
diff --git a/arch/misoc/src/minerva/minerva_saveusercontext.c b/arch/misoc/src/minerva/minerva_saveusercontext.c
index a35b998bcc..6c4190bdc0 100644
--- a/arch/misoc/src/minerva/minerva_saveusercontext.c
+++ b/arch/misoc/src/minerva/minerva_saveusercontext.c
@@ -23,6 +23,9 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+#include <nuttx/irq.h>
+
+#include <string.h>
 
 #include <arch/syscall.h>
 
@@ -46,5 +49,13 @@
 
 int up_saveusercontext(void *saveregs)
 {
+  if (up_interrupt_context())
+    {
+      /* TODO: save interrupt context */
+
+      memset(saveregs, 0x0, XCPTCONTEXT_SIZE);
+      return 0;
+    }
+
   return sys_call1(SYS_save_context, (uintptr_t)saveregs);
 }
diff --git a/arch/sparc/src/sparc_v8/sparc_v8_saveusercontext.c b/arch/sparc/src/sparc_v8/sparc_v8_saveusercontext.c
index 14bfbfa15d..ab28d2692a 100644
--- a/arch/sparc/src/sparc_v8/sparc_v8_saveusercontext.c
+++ b/arch/sparc/src/sparc_v8/sparc_v8_saveusercontext.c
@@ -23,6 +23,9 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+#include <nuttx/irq.h>
+
+#include <string.h>
 
 #include <arch/syscall.h>
 
@@ -46,5 +49,13 @@
 
 int up_saveusercontext(void *saveregs)
 {
+  if (up_interrupt_context())
+    {
+      /* TODO: save interrupt context */
+
+      memset(saveregs, 0x0, XCPTCONTEXT_SIZE);
+      return 0;
+    }
+
   return sys_call1(SYS_save_context, (uintptr_t)saveregs);
 }