|  | #include <linux/kernel.h> | 
|  | #include <linux/jump_label.h> | 
|  |  | 
|  | #include "insn.h" | 
|  | #include "patch.h" | 
|  |  | 
|  | #ifdef HAVE_JUMP_LABEL | 
|  |  | 
|  | static void __arch_jump_label_transform(struct jump_entry *entry, | 
|  | enum jump_label_type type, | 
|  | bool is_static) | 
|  | { | 
|  | void *addr = (void *)entry->code; | 
|  | unsigned int insn; | 
|  |  | 
|  | if (type == JUMP_LABEL_ENABLE) | 
|  | insn = arm_gen_branch(entry->code, entry->target); | 
|  | else | 
|  | insn = arm_gen_nop(); | 
|  |  | 
|  | if (is_static) | 
|  | __patch_text(addr, insn); | 
|  | else | 
|  | patch_text(addr, insn); | 
|  | } | 
|  |  | 
|  | void arch_jump_label_transform(struct jump_entry *entry, | 
|  | enum jump_label_type type) | 
|  | { | 
|  | __arch_jump_label_transform(entry, type, false); | 
|  | } | 
|  |  | 
|  | void arch_jump_label_transform_static(struct jump_entry *entry, | 
|  | enum jump_label_type type) | 
|  | { | 
|  | __arch_jump_label_transform(entry, type, true); | 
|  | } | 
|  |  | 
|  | #endif |