blob: 86f28fc05be41ad4464a19deee3fa7c2f5b46ba8 [file] [log] [blame]
/*
* 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__
/*!
* @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 (1)
#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__ */