1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2015-2017 Josh Poimboeuf <jpoimboe@redhat.com>
4  */
5 
6 #ifndef _OBJTOOL_CFI_H
7 #define _OBJTOOL_CFI_H
8 
9 #include <arch/cfi_regs.h>
10 
11 #define CFI_UNDEFINED		-1
12 #define CFI_CFA			-2
13 #define CFI_SP_INDIRECT		-3
14 #define CFI_BP_INDIRECT		-4
15 
16 struct cfi_reg {
17 	int base;
18 	int offset;
19 };
20 
21 struct cfi_init_state {
22 	struct cfi_reg regs[CFI_NUM_REGS];
23 	struct cfi_reg cfa;
24 };
25 
26 struct cfi_state {
27 	struct cfi_reg regs[CFI_NUM_REGS];
28 	struct cfi_reg vals[CFI_NUM_REGS];
29 	struct cfi_reg cfa;
30 	int stack_size;
31 	int drap_reg, drap_offset;
32 	unsigned char type;
33 	bool bp_scratch;
34 	bool drap;
35 	bool end;
36 };
37 
38 #endif /* _OBJTOOL_CFI_H */
39