1*f02644e3SYouling Tang // SPDX-License-Identifier: GPL-2.0-only 2*f02644e3SYouling Tang /* 3*f02644e3SYouling Tang * Copyright (C) 2023 Loongson Technology Corporation Limited 4*f02644e3SYouling Tang * 5*f02644e3SYouling Tang * Based on arch/arm64/kernel/jump_label.c 6*f02644e3SYouling Tang */ 7*f02644e3SYouling Tang #include <linux/kernel.h> 8*f02644e3SYouling Tang #include <linux/jump_label.h> 9*f02644e3SYouling Tang #include <asm/inst.h> 10*f02644e3SYouling Tang arch_jump_label_transform(struct jump_entry * entry,enum jump_label_type type)11*f02644e3SYouling Tangvoid arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type) 12*f02644e3SYouling Tang { 13*f02644e3SYouling Tang u32 insn; 14*f02644e3SYouling Tang void *addr = (void *)jump_entry_code(entry); 15*f02644e3SYouling Tang 16*f02644e3SYouling Tang if (type == JUMP_LABEL_JMP) 17*f02644e3SYouling Tang insn = larch_insn_gen_b(jump_entry_code(entry), jump_entry_target(entry)); 18*f02644e3SYouling Tang else 19*f02644e3SYouling Tang insn = larch_insn_gen_nop(); 20*f02644e3SYouling Tang 21*f02644e3SYouling Tang larch_insn_patch_text(addr, insn); 22*f02644e3SYouling Tang } 23