To support arm64, objtool will need to be able to decode aarch64 instructions. This patch series adds some instruction definitions needed by objtool and moves out encoding/decoding functionalities that do not rely on kernel code in order.
Changes since v1[1]: - Split the isolation of instruction encoder/decoder capabilities in several steps as suggested by Mark R. - Exclude dsb encoding where CRm != 0b0x00 - Support dsb FEAT_XS encoding - Support previously missing barriers [1] https://lkml.org/lkml/2021/1/20/791 Thanks, Julien --> Julien Thierry (8): arm64: Move patching utilities out of instruction encoding/decoding arm64: Move aarch32 condition check functions arm64: insn: Reduce header dependencies of instruction decoder arm64: Move instruction encoder/decoder under lib/ arm64: insn: Add SVE instruction class arm64: insn: Add barrier encodings arm64: insn: Add some opcodes to instruction decoder arm64: insn: Add load/store decoding helpers arch/arm64/include/asm/alternative-macros.h | 3 - arch/arm64/include/asm/insn.h | 70 +++++- arch/arm64/include/asm/patching.h | 13 + arch/arm64/include/asm/probes.h | 2 +- arch/arm64/include/asm/traps.h | 3 + arch/arm64/kernel/Makefile | 4 +- arch/arm64/kernel/ftrace.c | 1 + arch/arm64/kernel/jump_label.c | 1 + arch/arm64/kernel/patching.c | 148 ++++++++++++ arch/arm64/kernel/probes/simulate-insn.c | 1 + arch/arm64/kernel/traps.c | 100 +++++++- arch/arm64/lib/Makefile | 6 +- arch/arm64/{kernel => lib}/insn.c | 249 +------------------- 13 files changed, 338 insertions(+), 263 deletions(-) create mode 100644 arch/arm64/include/asm/patching.h create mode 100644 arch/arm64/kernel/patching.c rename arch/arm64/{kernel => lib}/insn.c (86%) -- 2.25.4

