blob: d8dd772093139d3f67b067d979e5a89310cfde50 [file] [log] [blame]
/*
* Copyright (c) 2014 Wind River Systems, Inc.
* Copyright (c) 2016 Cadence Design Systems, Inc.
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Xtensa public exception handling
*
* Xtensa-specific kernel exception handling interface. Included by
* arch/xtensa/arch.h.
*/
#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_EXC_H_
#define ZEPHYR_INCLUDE_ARCH_XTENSA_EXC_H_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _ASMLANGUAGE
/**
* @brief Exception Stack Frame
*
* A pointer to an "exception stack frame" (ESF) is passed as an argument
* to exception handlers registered via nanoCpuExcConnect().
*/
struct __esf {
/* FIXME - not finished yet */
sys_define_gpr_with_alias(a1, sp);
u32_t pc;
};
/* Xtensa uses a variable length stack frame depending on how many
* register windows are in use. This isn't a struct type, it just
* matches the register/stack-unit width.
*/
typedef int z_arch_esf_t;
void z_xtensa_dump_stack(const z_arch_esf_t *stack);
char *z_xtensa_exccause(unsigned int cause_code);
#endif
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_EXC_H_ */