blob: c7c59c6a44eeacaeff9f0338bf6af83d5476e9f0 [file] [log] [blame]
Thomas Gleixner1ccea772019-05-19 15:51:43 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Josh Poimboeufbaa41462017-06-28 10:11:07 -05002/*
3 * Copyright (C) 2015-2017 Josh Poimboeuf <jpoimboe@redhat.com>
Josh Poimboeufbaa41462017-06-28 10:11:07 -05004 */
5
6#ifndef _OBJTOOL_CFI_H
7#define _OBJTOOL_CFI_H
8
Julien Thierry6f8ca672020-03-27 15:28:46 +00009#include "cfi_regs.h"
10
Josh Poimboeufbaa41462017-06-28 10:11:07 -050011#define CFI_UNDEFINED -1
12#define CFI_CFA -2
13#define CFI_SP_INDIRECT -3
14#define CFI_BP_INDIRECT -4
15
Josh Poimboeufbaa41462017-06-28 10:11:07 -050016struct cfi_reg {
17 int base;
18 int offset;
19};
20
Peter Zijlstraa3608f52020-03-25 15:34:50 +010021struct cfi_init_state {
Josh Poimboeufbaa41462017-06-28 10:11:07 -050022 struct cfi_reg regs[CFI_NUM_REGS];
Peter Zijlstrae7c02192020-03-25 14:04:45 +010023 struct cfi_reg cfa;
24};
25
26struct 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;
Josh Poimboeufbaa41462017-06-28 10:11:07 -050036};
37
38#endif /* _OBJTOOL_CFI_H */