• Marc Zyngier's avatar
    arm64: insn: Add aarch64_{get,set}_branch_offset · 10b48f7e
    Marc Zyngier authored
    In order to deal with branches located in alternate sequences,
    but pointing to the main kernel text, it is required to extract
    the relative displacement encoded in the instruction, and to be
    able to update said instruction with a new offset (once it is
    known).
    
    For this, we introduce three new helpers:
    - aarch64_insn_is_branch_imm is a predicate indicating if the
      instruction is an immediate branch
    - aarch64_get_branch_offset returns a signed value representing
      the byte offset encoded in a branch instruction
    - aarch64_set_branch_offset takes an instruction and an offset,
      and returns the corresponding updated instruction.
    Acked-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    10b48f7e
insn.c 26.7 KB