162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/arm/probes/decode-arm.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2013 Linaro Ltd. 662306a36Sopenharmony_ci * Written by: David A. Long 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _ARM_KERNEL_PROBES_ARM_H 1062306a36Sopenharmony_ci#define _ARM_KERNEL_PROBES_ARM_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "decode.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cienum probes_arm_action { 1562306a36Sopenharmony_ci PROBES_PRELOAD_IMM, 1662306a36Sopenharmony_ci PROBES_PRELOAD_REG, 1762306a36Sopenharmony_ci PROBES_BRANCH_IMM, 1862306a36Sopenharmony_ci PROBES_BRANCH_REG, 1962306a36Sopenharmony_ci PROBES_MRS, 2062306a36Sopenharmony_ci PROBES_CLZ, 2162306a36Sopenharmony_ci PROBES_SATURATING_ARITHMETIC, 2262306a36Sopenharmony_ci PROBES_MUL1, 2362306a36Sopenharmony_ci PROBES_MUL2, 2462306a36Sopenharmony_ci PROBES_SWP, 2562306a36Sopenharmony_ci PROBES_LDRSTRD, 2662306a36Sopenharmony_ci PROBES_LOAD, 2762306a36Sopenharmony_ci PROBES_STORE, 2862306a36Sopenharmony_ci PROBES_LOAD_EXTRA, 2962306a36Sopenharmony_ci PROBES_STORE_EXTRA, 3062306a36Sopenharmony_ci PROBES_MOV_IP_SP, 3162306a36Sopenharmony_ci PROBES_DATA_PROCESSING_REG, 3262306a36Sopenharmony_ci PROBES_DATA_PROCESSING_IMM, 3362306a36Sopenharmony_ci PROBES_MOV_HALFWORD, 3462306a36Sopenharmony_ci PROBES_SEV, 3562306a36Sopenharmony_ci PROBES_WFE, 3662306a36Sopenharmony_ci PROBES_SATURATE, 3762306a36Sopenharmony_ci PROBES_REV, 3862306a36Sopenharmony_ci PROBES_MMI, 3962306a36Sopenharmony_ci PROBES_PACK, 4062306a36Sopenharmony_ci PROBES_EXTEND, 4162306a36Sopenharmony_ci PROBES_EXTEND_ADD, 4262306a36Sopenharmony_ci PROBES_MUL_ADD_LONG, 4362306a36Sopenharmony_ci PROBES_MUL_ADD, 4462306a36Sopenharmony_ci PROBES_BITFIELD, 4562306a36Sopenharmony_ci PROBES_BRANCH, 4662306a36Sopenharmony_ci PROBES_LDMSTM, 4762306a36Sopenharmony_ci NUM_PROBES_ARM_ACTIONS 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_civoid __kprobes simulate_bbl(probes_opcode_t opcode, 5162306a36Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 5262306a36Sopenharmony_civoid __kprobes simulate_blx1(probes_opcode_t opcode, 5362306a36Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 5462306a36Sopenharmony_civoid __kprobes simulate_blx2bx(probes_opcode_t opcode, 5562306a36Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 5662306a36Sopenharmony_civoid __kprobes simulate_mrs(probes_opcode_t opcode, 5762306a36Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 5862306a36Sopenharmony_civoid __kprobes simulate_mov_ipsp(probes_opcode_t opcode, 5962306a36Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciextern const union decode_item probes_decode_arm_table[]; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cienum probes_insn arm_probes_decode_insn(probes_opcode_t, 6462306a36Sopenharmony_ci struct arch_probes_insn *, bool emulate, 6562306a36Sopenharmony_ci const union decode_action *actions, 6662306a36Sopenharmony_ci const struct decode_checker *checkers[]); 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci#endif 69