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 2718a77da165..74d56ca55039 100644
--- a/arch/arm64/kernel/insn.c
+++ b/arch/arm64/kernel/insn.c
@@ -1337,6 +1337,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));