accel/qaic: Add AIC200 support
[drm/drm-misc.git] / tools / objtool / include / objtool / special.h
blob86d4af9c5aa9dc83cd543a140ab1979979a1d6fa
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3 * Copyright (C) 2015 Josh Poimboeuf <jpoimboe@redhat.com>
4 */
6 #ifndef _SPECIAL_H
7 #define _SPECIAL_H
9 #include <stdbool.h>
10 #include <objtool/check.h>
11 #include <objtool/elf.h>
13 #define C_JUMP_TABLE_SECTION ".rodata..c_jump_table"
15 struct special_alt {
16 struct list_head list;
18 bool group;
19 bool skip_orig;
20 bool skip_alt;
21 bool jump_or_nop;
22 u8 key_addend;
24 struct section *orig_sec;
25 unsigned long orig_off;
27 struct section *new_sec;
28 unsigned long new_off;
30 unsigned int orig_len, new_len; /* group only */
33 int special_get_alts(struct elf *elf, struct list_head *alts);
35 void arch_handle_alternative(unsigned short feature, struct special_alt *alt);
37 bool arch_support_alt_relocation(struct special_alt *special_alt,
38 struct instruction *insn,
39 struct reloc *reloc);
40 struct reloc *arch_find_switch_table(struct objtool_file *file,
41 struct instruction *insn);
42 #endif /* _SPECIAL_H */