Warning: That file was not part of the compilation database. It may have many parsing errors.

1/* SPDX-License-Identifier: GPL-2.0-or-later */
2#ifndef _ORC_TYPES_H
3#define _ORC_TYPES_H
4
5#include <linux/types.h>
6
7/*
8 * The ORC_REG_* registers are base registers which are used to find other
9 * registers on the stack.
10 *
11 * ORC_REG_PREV_SP, also known as DWARF Call Frame Address (CFA), is the
12 * address of the previous frame: the caller's SP before it called the current
13 * function.
14 *
15 * ORC_REG_UNDEFINED means the corresponding register's value didn't change in
16 * the current frame.
17 *
18 * The most commonly used base registers are SP and FP -- which the previous SP
19 * is usually based on -- and PREV_SP and UNDEFINED -- which the previous FP is
20 * usually based on.
21 *
22 * The rest of the base registers are needed for special cases like entry code
23 * and GCC realigned stacks.
24 */
25#define ORC_REG_UNDEFINED 0
26#define ORC_REG_PREV_SP 1
27#define ORC_REG_SP 2
28#define ORC_REG_FP 3
29#define ORC_REG_MAX 4
30
31#define ORC_TYPE_UNDEFINED 0
32#define ORC_TYPE_END_OF_STACK 1
33#define ORC_TYPE_CALL 2
34#define ORC_TYPE_REGS 3
35#define ORC_TYPE_REGS_PARTIAL 4
36
37#ifndef __ASSEMBLER__
38/*
39 * This struct is more or less a vastly simplified version of the DWARF Call
40 * Frame Information standard. It contains only the necessary parts of DWARF
41 * CFI, simplified for ease of access by the in-kernel unwinder. It tells the
42 * unwinder how to find the previous SP and FP (and sometimes entry regs) on
43 * the stack for a given code address. Each instance of the struct corresponds
44 * to one or more code locations.
45 */
46struct orc_entry {
47 s16 sp_offset;
48 s16 fp_offset;
49 s16 ra_offset;
50 unsigned int sp_reg:4;
51 unsigned int fp_reg:4;
52 unsigned int ra_reg:4;
53 unsigned int type:3;
54 unsigned int signal:1;
55};
56#endif /* __ASSEMBLER__ */
57
58#endif /* _ORC_TYPES_H */
59

Warning: That file was not part of the compilation database. It may have many parsing errors.

source code of linux/tools/arch/loongarch/include/asm/orc_types.h