Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / sh / include / asm / unwinder.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_UNWINDER_H
3 #define _LINUX_UNWINDER_H
4
5 #include <asm/stacktrace.h>
6
7 struct unwinder {
8         const char *name;
9         struct list_head list;
10         int rating;
11         void (*dump)(struct task_struct *, struct pt_regs *,
12                      unsigned long *, const struct stacktrace_ops *, void *);
13 };
14
15 extern int unwinder_init(void);
16 extern int unwinder_register(struct unwinder *);
17
18 extern void unwind_stack(struct task_struct *, struct pt_regs *,
19                          unsigned long *, const struct stacktrace_ops *,
20                          void *);
21
22 extern void stack_reader_dump(struct task_struct *, struct pt_regs *,
23                               unsigned long *, const struct stacktrace_ops *,
24                               void *);
25
26 /*
27  * Used by fault handling code to signal to the unwinder code that it
28  * should switch to a different unwinder.
29  */
30 extern int unwinder_faulted;
31
32 #endif /* _LINUX_UNWINDER_H */