/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (c) 2015, Linaro Limited
 */

#ifndef KERNEL_ABORT_H
#define KERNEL_ABORT_H

#define ABORT_TYPE_UNDEF	0
#define ABORT_TYPE_PREFETCH	1
#define ABORT_TYPE_DATA		2
#define ABORT_TYPE_TA_PANIC	3 /* Dump stack on TA panic (not an abort) */

#ifndef __ASSEMBLER__

#include <compiler.h>
#include <types_ext.h>

struct abort_info {
	uint32_t abort_type;
	uint32_t fault_descr;	/* only valid for data of prefetch abort */
	vaddr_t va;
	uint32_t pc;
	struct thread_abort_regs *regs;
};

/* Print abort info to the console */
void abort_print(struct abort_info *ai);
/* Print abort info + stack dump to the console */
void abort_print_error(struct abort_info *ai);

void abort_handler(uint32_t abort_type, struct thread_abort_regs *regs);

bool abort_is_user_exception(struct abort_info *ai);

/* Called from a normal thread */
void abort_print_current_ta(void);

#endif /*__ASSEMBLER__*/
#endif /*KERNEL_ABORT_H*/

