diff --git a/core/panic.c b/core/panic.c index 72f66035af..d3052ab0e7 100644 --- a/core/panic.c +++ b/core/panic.c @@ -30,7 +30,7 @@ #include "irq.h" #include "panic.h" #include "arch/panic_arch.h" -#include "reboot.h" +#include "periph/pm.h" #include "log.h" #if defined(DEVELHELP) && defined(MODULE_PS) @@ -42,6 +42,8 @@ const char assert_crash_message[] = "FAILED ASSERTION."; /* flag preventing "recursive crash printing loop" */ static int crashed = 0; +void __attribute__((weak)) panic_arch(void) {} + /* WARNING: this function NEVER returns! */ NORETURN void core_panic(core_panic_t crash_code, const char *message) { @@ -74,7 +76,10 @@ NORETURN void core_panic(core_panic_t crash_code, const char *message) panic_arch(); #ifndef DEVELHELP /* DEVELHELP not set => reboot system */ - reboot(); + pm_reboot(); +#else + /* DEVELHELP set => power off system */ + pm_off(); #endif /* tell the compiler that we won't return from this function diff --git a/cpu/arm7_common/panic.c b/cpu/arm7_common/panic.c deleted file mode 100644 index 8a7d3d18ea..0000000000 --- a/cpu/arm7_common/panic.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2014 INRIA - * - * This file is subject to the terms and conditions of the GNU Lesser General - * Public License v2.1. See the file LICENSE in the top level directory for more - * details. - */ - -/** - * @ingroup cpu_arm7_common - * @{ - * - * @file - * @brief Crash handling functions implementation for ARM-based MCUs - * - * @author Kévin Roussel - * @author Oliver Hahm - */ - -void panic_arch(void) -{ -#ifdef DEVELHELP - /* enter infinite loop, into deepest possible sleep mode */ - // TODO -#endif -} diff --git a/cpu/atmega_common/panic.c b/cpu/atmega_common/panic.c deleted file mode 100644 index 8ea5e92197..0000000000 --- a/cpu/atmega_common/panic.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2015 INRIA - * - * This file is subject to the terms and conditions of the GNU Lesser - * General Public License v2.1. See the file LICENSE in the top level - * directory for more details. - */ - -/** - * @ingroup cpu_atmega_common - * @{ - * - * @file - * @brief Crash handling functions implementation for ATmega MCUs - * - * @author Oliver Hahm - */ - -#include - -void panic_arch(void) -{ - wdt_disable(); -#ifdef DEVELHELP - /* enter infinite loop, into deepest possible sleep mode */ - // TODO -#endif - -} diff --git a/cpu/cortexm_common/panic.c b/cpu/cortexm_common/panic.c index 912502b131..6a72a6131d 100644 --- a/cpu/cortexm_common/panic.c +++ b/cpu/cortexm_common/panic.c @@ -23,6 +23,10 @@ #include "cpu.h" #include "log.h" +#ifdef FEATURE_PERIPH_PM +#include "periph/pm.h" +#endif + #ifdef DEVELHELP static void print_ipsr(void) { @@ -42,8 +46,4 @@ void panic_arch(void) /* The bkpt instruction will signal to the debugger to break here. */ __asm__("bkpt #0"); #endif - - /* turn off device if possible */ - // TODO - while (1) { } } diff --git a/cpu/msp430-common/panic.c b/cpu/msp430-common/panic.c deleted file mode 100644 index 3f8baea9c6..0000000000 --- a/cpu/msp430-common/panic.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2014, 2015 INRIA - * - * This file is subject to the terms and conditions of the GNU Lesser - * General Public License v2.1. See the file LICENSE in the top level - * directory for more details. - */ - -/** - * @ingroup cpu_msp430_common - * @{ - * - * @file - * @brief Crash handling functions implementation for MSP430 MCUs - * - * @author Kévin Roussel - * @author Oliver Hahm - */ - -#include "cpu.h" - -void panic_arch(void) -{ - /* disable watchdog and all possible sources of interrupts */ - WDTCTL = WDTPW | WDTHOLD; -#ifdef DEVELHELP - /* enter infinite loop, into deepest possible sleep mode */ - // TODO -#endif -} diff --git a/cpu/x86/panic.c b/cpu/x86/panic.c deleted file mode 100644 index acab2f329f..0000000000 --- a/cpu/x86/panic.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2015 INRIA - * - * This file is subject to the terms and conditions of the GNU Lesser - * General Public License v2.1. See the file LICENSE in the top level - * directory for more details. - */ - -/** - * @ingroup x86_cpu - * @{ - * - * @file - * @brief Crash handling functions implementation for x86 port - * - * @author Oliver Hahm - */ - -#include "x86_reboot.h" - -void panic_arch(void) -{ -#if DEVELHELP - /* enter infinite loop, into deepest possible sleep mode */ - // TODO -#else - x86_shutdown(); -#endif -}