checkers.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * arch/arm/probes/kprobes/checkers.h
  4. *
  5. * Copyright (C) 2014 Huawei Inc.
  6. */
  7. #ifndef _ARM_KERNEL_PROBES_CHECKERS_H
  8. #define _ARM_KERNEL_PROBES_CHECKERS_H
  9. #include <linux/kernel.h>
  10. #include <linux/types.h>
  11. #include "../decode.h"
  12. extern probes_check_t checker_stack_use_none;
  13. extern probes_check_t checker_stack_use_unknown;
  14. #ifdef CONFIG_THUMB2_KERNEL
  15. extern probes_check_t checker_stack_use_imm_0xx;
  16. #else
  17. extern probes_check_t checker_stack_use_imm_x0x;
  18. #endif
  19. extern probes_check_t checker_stack_use_imm_xxx;
  20. extern probes_check_t checker_stack_use_stmdx;
  21. enum {
  22. STACK_USE_NONE,
  23. STACK_USE_UNKNOWN,
  24. #ifdef CONFIG_THUMB2_KERNEL
  25. STACK_USE_FIXED_0XX,
  26. STACK_USE_T32STRD,
  27. #else
  28. STACK_USE_FIXED_X0X,
  29. #endif
  30. STACK_USE_FIXED_XXX,
  31. STACK_USE_STMDX,
  32. NUM_STACK_USE_TYPES
  33. };
  34. extern const union decode_action stack_check_actions[];
  35. #ifndef CONFIG_THUMB2_KERNEL
  36. extern const struct decode_checker arm_stack_checker[];
  37. extern const struct decode_checker arm_regs_checker[];
  38. #else
  39. #endif
  40. extern const struct decode_checker t32_stack_checker[];
  41. extern const struct decode_checker t16_stack_checker[];
  42. #endif