summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/insn.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/kernel/insn.c')
-rw-r--r--arch/arm64/kernel/insn.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c
index 816d03c4c913..67cc3f14ecb4 100644
--- a/arch/arm64/kernel/insn.c
+++ b/arch/arm64/kernel/insn.c
@@ -1355,6 +1355,19 @@ u32 aarch64_set_branch_offset(u32 insn, s32 offset)
BUG();
}
+s32 aarch64_insn_adr_get_offset(u32 insn)
+{
+ BUG_ON(!aarch64_insn_is_adr(insn));
+ return aarch64_insn_decode_immediate(AARCH64_INSN_IMM_ADR, insn);
+}
+
+u32 aarch64_insn_adr_set_offset(u32 insn, s32 offset)
+{
+ BUG_ON(!aarch64_insn_is_adr(insn));
+ return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_ADR, insn,
+ offset);
+}
+
s32 aarch64_insn_adrp_get_offset(u32 insn)
{
BUG_ON(!aarch64_insn_is_adrp(insn));