1#include <linux/kernel.h> 2#include <linux/jump_label.h> 3#include <asm/patch.h> 4#include <asm/insn.h> 5 6#ifdef HAVE_JUMP_LABEL 7 8static 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 15 if (type == JUMP_LABEL_JMP) 16 insn = arm_gen_branch(entry->code, entry->target); 17 else 18 insn = arm_gen_nop(); 19 20 if (is_static) 21 __patch_text_early(addr, insn); 22 else 23 patch_text(addr, insn); 24} 25 26void 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 32void 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 39