]>
Commit | Line | Data |
---|---|---|
45051539 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
bff595c1 CM |
2 | /* |
3 | * arch/arm/include/asm/unwind.h | |
4 | * | |
5 | * Copyright (C) 2008 ARM Limited | |
bff595c1 CM |
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 */ | |
14 | enum 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 | ||
20 | struct unwind_idx { | |
de66a979 | 21 | unsigned long addr_offset; |
bff595c1 CM |
22 | unsigned long insn; |
23 | }; | |
24 | ||
25 | struct unwind_table { | |
26 | struct list_head list; | |
de66a979 UKK |
27 | const struct unwind_idx *start; |
28 | const struct unwind_idx *origin; | |
29 | const struct unwind_idx *stop; | |
bff595c1 CM |
30 | unsigned long begin_addr; |
31 | unsigned long end_addr; | |
32 | }; | |
33 | ||
34 | extern struct unwind_table *unwind_table_add(unsigned long start, | |
35 | unsigned long size, | |
36 | unsigned long text_addr, | |
37 | unsigned long text_size); | |
38 | extern void unwind_table_del(struct unwind_table *tab); | |
e8d7b735 DS |
39 | extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk, |
40 | const char *loglvl); | |
bff595c1 | 41 | |
bff595c1 CM |
42 | #endif /* !__ASSEMBLY__ */ |
43 | ||
44 | #ifdef CONFIG_ARM_UNWIND | |
45 | #define UNWIND(code...) code | |
46 | #else | |
47 | #define UNWIND(code...) | |
48 | #endif | |
49 | ||
50 | #endif /* __ASM_UNWIND_H */ |