84 lines
3.0 KiB
C
84 lines
3.0 KiB
C
/*
|
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
|
* Copyright 2016-2020 NXP
|
|
*
|
|
*
|
|
* This is the header file for the Panic module.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef __PANIC_H__
|
|
#define __PANIC_H__
|
|
|
|
#ifndef SDK_COMPONENT_DEPENDENCY_FSL_COMMON
|
|
#define SDK_COMPONENT_DEPENDENCY_FSL_COMMON (1U)
|
|
#endif
|
|
#if (defined(SDK_COMPONENT_DEPENDENCY_FSL_COMMON) && (SDK_COMPONENT_DEPENDENCY_FSL_COMMON > 0U))
|
|
#include "fsl_common.h"
|
|
#else
|
|
#endif
|
|
|
|
/*!
|
|
* @addtogroup Panic
|
|
* @{
|
|
*/
|
|
|
|
/*! *********************************************************************************
|
|
*************************************************************************************
|
|
* Include
|
|
*************************************************************************************
|
|
********************************************************************************** */
|
|
|
|
/*! *********************************************************************************
|
|
*************************************************************************************
|
|
* Public type definitions
|
|
*************************************************************************************
|
|
********************************************************************************** */
|
|
|
|
/**@brief panic id. */
|
|
typedef uint32_t panic_id_t;
|
|
|
|
/**@brief panic data structure. */
|
|
typedef struct _panic_data
|
|
{
|
|
panic_id_t id; /* Panic ID */
|
|
uint32_t location; /* location address where the Panic occurred */
|
|
uint32_t extra1; /* extra1 */
|
|
uint32_t extra2; /* extra2 */
|
|
uint32_t linkRegister; /* Link register */
|
|
uint32_t cpsr_contents; /* cpsr_contents*/
|
|
uint8_t stack_dump[4]; /* initially just contain the contents of the LR */
|
|
} panic_data_t;
|
|
|
|
/*! *********************************************************************************
|
|
*************************************************************************************
|
|
* Public macros
|
|
*************************************************************************************
|
|
********************************************************************************** */
|
|
#ifndef PANIC_ENABLE_LOG
|
|
#define PANIC_ENABLE_LOG (0)
|
|
#endif
|
|
|
|
#define ID_PANIC(grp, value) ((panic_id_t)(((panic_id_t)(grp) << 16) + ((panic_id_t)(value))))
|
|
|
|
/*! *********************************************************************************
|
|
*************************************************************************************
|
|
* Public prototypes
|
|
*************************************************************************************
|
|
********************************************************************************** */
|
|
|
|
/*!
|
|
* @brief Panic function.
|
|
*
|
|
*
|
|
* @param id Panic ID
|
|
* @param location location address where the Panic occurred
|
|
* @param extra1 extra1 parameter to be stored in Panic structure.
|
|
* @param extra2 extra2 parameter to be stored in Panic structure
|
|
* @retval No return vaule.
|
|
*/
|
|
void panic(panic_id_t id, uint32_t location, uint32_t extra1, uint32_t extra2);
|
|
/*! @}*/
|
|
#endif /* __PANIC_H__ */
|