18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/probes/decode-arm.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2013 Linaro Ltd. 68c2ecf20Sopenharmony_ci * Written by: David A. Long 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#ifndef _ARM_KERNEL_PROBES_ARM_H 108c2ecf20Sopenharmony_ci#define _ARM_KERNEL_PROBES_ARM_H 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include "decode.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cienum probes_arm_action { 158c2ecf20Sopenharmony_ci PROBES_PRELOAD_IMM, 168c2ecf20Sopenharmony_ci PROBES_PRELOAD_REG, 178c2ecf20Sopenharmony_ci PROBES_BRANCH_IMM, 188c2ecf20Sopenharmony_ci PROBES_BRANCH_REG, 198c2ecf20Sopenharmony_ci PROBES_MRS, 208c2ecf20Sopenharmony_ci PROBES_CLZ, 218c2ecf20Sopenharmony_ci PROBES_SATURATING_ARITHMETIC, 228c2ecf20Sopenharmony_ci PROBES_MUL1, 238c2ecf20Sopenharmony_ci PROBES_MUL2, 248c2ecf20Sopenharmony_ci PROBES_SWP, 258c2ecf20Sopenharmony_ci PROBES_LDRSTRD, 268c2ecf20Sopenharmony_ci PROBES_LOAD, 278c2ecf20Sopenharmony_ci PROBES_STORE, 288c2ecf20Sopenharmony_ci PROBES_LOAD_EXTRA, 298c2ecf20Sopenharmony_ci PROBES_STORE_EXTRA, 308c2ecf20Sopenharmony_ci PROBES_MOV_IP_SP, 318c2ecf20Sopenharmony_ci PROBES_DATA_PROCESSING_REG, 328c2ecf20Sopenharmony_ci PROBES_DATA_PROCESSING_IMM, 338c2ecf20Sopenharmony_ci PROBES_MOV_HALFWORD, 348c2ecf20Sopenharmony_ci PROBES_SEV, 358c2ecf20Sopenharmony_ci PROBES_WFE, 368c2ecf20Sopenharmony_ci PROBES_SATURATE, 378c2ecf20Sopenharmony_ci PROBES_REV, 388c2ecf20Sopenharmony_ci PROBES_MMI, 398c2ecf20Sopenharmony_ci PROBES_PACK, 408c2ecf20Sopenharmony_ci PROBES_EXTEND, 418c2ecf20Sopenharmony_ci PROBES_EXTEND_ADD, 428c2ecf20Sopenharmony_ci PROBES_MUL_ADD_LONG, 438c2ecf20Sopenharmony_ci PROBES_MUL_ADD, 448c2ecf20Sopenharmony_ci PROBES_BITFIELD, 458c2ecf20Sopenharmony_ci PROBES_BRANCH, 468c2ecf20Sopenharmony_ci PROBES_LDMSTM, 478c2ecf20Sopenharmony_ci NUM_PROBES_ARM_ACTIONS 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_civoid __kprobes simulate_bbl(probes_opcode_t opcode, 518c2ecf20Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 528c2ecf20Sopenharmony_civoid __kprobes simulate_blx1(probes_opcode_t opcode, 538c2ecf20Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 548c2ecf20Sopenharmony_civoid __kprobes simulate_blx2bx(probes_opcode_t opcode, 558c2ecf20Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 568c2ecf20Sopenharmony_civoid __kprobes simulate_mrs(probes_opcode_t opcode, 578c2ecf20Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 588c2ecf20Sopenharmony_civoid __kprobes simulate_mov_ipsp(probes_opcode_t opcode, 598c2ecf20Sopenharmony_ci struct arch_probes_insn *asi, struct pt_regs *regs); 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciextern const union decode_item probes_decode_arm_table[]; 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_cienum probes_insn arm_probes_decode_insn(probes_opcode_t, 648c2ecf20Sopenharmony_ci struct arch_probes_insn *, bool emulate, 658c2ecf20Sopenharmony_ci const union decode_action *actions, 668c2ecf20Sopenharmony_ci const struct decode_checker *checkers[]); 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci#endif 69