1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

core: panic: adapt to pariph/pm

This commit is contained in:
Kaspar Schleiser 2017-01-09 18:06:26 +01:00
parent 1b31fc75c4
commit ca7bf15ac4
6 changed files with 11 additions and 120 deletions

View File

@ -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

View File

@ -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 <Kevin.Roussel@inria.fr>
* @author Oliver Hahm <oliver.hahm@inria.fr>
*/
void panic_arch(void)
{
#ifdef DEVELHELP
/* enter infinite loop, into deepest possible sleep mode */
// TODO
#endif
}

View File

@ -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 <oliver.hahm@inria.fr>
*/
#include <avr/wdt.h>
void panic_arch(void)
{
wdt_disable();
#ifdef DEVELHELP
/* enter infinite loop, into deepest possible sleep mode */
// TODO
#endif
}

View File

@ -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) { }
}

View File

@ -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 <Kevin.Roussel@inria.fr>
* @author Oliver Hahm <oliver.hahm@inria.fr>
*/
#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
}

View File

@ -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 <oliver.hahm@inria.fr>
*/
#include "x86_reboot.h"
void panic_arch(void)
{
#if DEVELHELP
/* enter infinite loop, into deepest possible sleep mode */
// TODO
#else
x86_shutdown();
#endif
}