unwind.h (1201B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * arch/arm/include/asm/unwind.h 4 * 5 * Copyright (C) 2008 ARM Limited 6 */ 7 8#ifndef __ASM_UNWIND_H 9#define __ASM_UNWIND_H 10 11#ifndef __ASSEMBLY__ 12 13/* Unwind reason code according the the ARM EABI documents */ 14enum unwind_reason_code { 15 URC_OK = 0, /* operation completed successfully */ 16 URC_CONTINUE_UNWIND = 8, 17 URC_FAILURE = 9 /* unspecified failure of some kind */ 18}; 19 20struct unwind_idx { 21 unsigned long addr_offset; 22 unsigned long insn; 23}; 24 25struct unwind_table { 26 struct list_head list; 27 struct list_head mod_list; 28 const struct unwind_idx *start; 29 const struct unwind_idx *origin; 30 const struct unwind_idx *stop; 31 unsigned long begin_addr; 32 unsigned long end_addr; 33}; 34 35extern struct unwind_table *unwind_table_add(unsigned long start, 36 unsigned long size, 37 unsigned long text_addr, 38 unsigned long text_size); 39extern void unwind_table_del(struct unwind_table *tab); 40extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk, 41 const char *loglvl); 42 43#endif /* !__ASSEMBLY__ */ 44 45#ifdef CONFIG_ARM_UNWIND 46#define UNWIND(code...) code 47#else 48#define UNWIND(code...) 49#endif 50 51#endif /* __ASM_UNWIND_H */