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); }