/* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2023 NXP * Copyright(c) 2018 Intel Corporation. All rights reserved. * * Author: Liam Girdwood */ #ifndef __XTOS_RTOS_PANIC_H__ #define __XTOS_RTOS_PANIC_H__ #include #include #include #ifdef __ZEPHYR__ #error "This file should only be included in XTOS builds." #endif /* __ZEPHYR__ */ #ifdef __clang_analyzer__ #define SOF_NORETURN __attribute__((analyzer_noreturn)) #elif __GNUC__ #define SOF_NORETURN __attribute__((noreturn)) #else #define SOF_NORETURN #endif #ifndef RELATIVE_FILE #error "This file requires RELATIVE_FILE to be defined. "\ "Add it to CMake's target with sof_append_relative_path_definitions." #endif void dump_panicinfo(void *addr, struct sof_ipc_panic_info *panic_info); void panic_dump(uint32_t p, struct sof_ipc_panic_info *panic_info, uintptr_t *data) SOF_NORETURN; void __panic(uint32_t p, char *filename, uint32_t linenum) SOF_NORETURN; /** panic dump filename and linenumber of the call * * \param x panic code defined in ipc/trace.h */ #define sof_panic(x) __panic((x), (RELATIVE_FILE), (__LINE__)) /* runtime assertion */ #ifndef assert #define assert(cond) (void)((cond) || (sof_panic(SOF_IPC_PANIC_ASSERT), 0)) #endif #endif /* __XTOS_RTOS_PANIC_H__ */