]>
Commit | Line | Data |
---|---|---|
09f05d85 RV |
1 | #include <linux/kernel.h> |
2 | #include <linux/jump_label.h> | |
3 | ||
4 | #include "insn.h" | |
5 | #include "patch.h" | |
6 | ||
7 | #ifdef HAVE_JUMP_LABEL | |
8 | ||
9 | static void __arch_jump_label_transform(struct jump_entry *entry, | |
10 | enum jump_label_type type, | |
11 | bool is_static) | |
12 | { | |
13 | void *addr = (void *)entry->code; | |
14 | unsigned int insn; | |
15 | ||
16 | if (type == JUMP_LABEL_ENABLE) | |
17 | insn = arm_gen_branch(entry->code, entry->target); | |
18 | else | |
19 | insn = arm_gen_nop(); | |
20 | ||
21 | if (is_static) | |
22 | __patch_text(addr, insn); | |
23 | else | |
24 | patch_text(addr, insn); | |
25 | } | |
26 | ||
27 | void arch_jump_label_transform(struct jump_entry *entry, | |
28 | enum jump_label_type type) | |
29 | { | |
30 | __arch_jump_label_transform(entry, type, false); | |
31 | } | |
32 | ||
33 | void arch_jump_label_transform_static(struct jump_entry *entry, | |
34 | enum jump_label_type type) | |
35 | { | |
36 | __arch_jump_label_transform(entry, type, true); | |
37 | } | |
38 | ||
39 | #endif |