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