From f48693eaf5d3cec9161b796be91c7d6d24f09e91 Mon Sep 17 00:00:00 2001 From: zhangyuan21 Date: Mon, 10 Apr 2023 20:55:19 +0800 Subject: [PATCH] arch: Return directly when arch not support interrupt context save Signed-off-by: zhangyuan21 --- 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 7206720461c..090587295d9 100644 --- a/arch/ceva/src/common/ceva_saveusercontext.c +++ b/arch/ceva/src/common/ceva_saveusercontext.c @@ -25,6 +25,8 @@ #include #include +#include + #include #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 19b9b309004..001714de519 100644 --- a/arch/mips/src/mips32/mips_saveusercontext.c +++ b/arch/mips/src/mips32/mips_saveusercontext.c @@ -23,6 +23,9 @@ ****************************************************************************/ #include +#include + +#include #include @@ -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 110e7705439..2733002104d 100644 --- a/arch/misoc/src/lm32/lm32_saveusercontext.c +++ b/arch/misoc/src/lm32/lm32_saveusercontext.c @@ -23,6 +23,9 @@ ****************************************************************************/ #include +#include + +#include #include @@ -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 a35b998bcce..6c4190bdc04 100644 --- a/arch/misoc/src/minerva/minerva_saveusercontext.c +++ b/arch/misoc/src/minerva/minerva_saveusercontext.c @@ -23,6 +23,9 @@ ****************************************************************************/ #include +#include + +#include #include @@ -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 14bfbfa15d0..ab28d2692af 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 +#include + +#include #include @@ -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); }