bpf_jit_64.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _BPF_JIT_H
  3. #define _BPF_JIT_H
  4. #ifndef __ASSEMBLER__
  5. #define G0 0x00
  6. #define G1 0x01
  7. #define G2 0x02
  8. #define G3 0x03
  9. #define G6 0x06
  10. #define G7 0x07
  11. #define O0 0x08
  12. #define O1 0x09
  13. #define O2 0x0a
  14. #define O3 0x0b
  15. #define O4 0x0c
  16. #define O5 0x0d
  17. #define SP 0x0e
  18. #define O7 0x0f
  19. #define L0 0x10
  20. #define L1 0x11
  21. #define L2 0x12
  22. #define L3 0x13
  23. #define L4 0x14
  24. #define L5 0x15
  25. #define L6 0x16
  26. #define L7 0x17
  27. #define I0 0x18
  28. #define I1 0x19
  29. #define I2 0x1a
  30. #define I3 0x1b
  31. #define I4 0x1c
  32. #define I5 0x1d
  33. #define FP 0x1e
  34. #define I7 0x1f
  35. #define r_SKB L0
  36. #define r_HEADLEN L4
  37. #define r_SKB_DATA L5
  38. #define r_TMP G1
  39. #define r_TMP2 G3
  40. /* assembly code in arch/sparc/net/bpf_jit_asm_64.S */
  41. extern u32 bpf_jit_load_word[];
  42. extern u32 bpf_jit_load_half[];
  43. extern u32 bpf_jit_load_byte[];
  44. extern u32 bpf_jit_load_byte_msh[];
  45. extern u32 bpf_jit_load_word_positive_offset[];
  46. extern u32 bpf_jit_load_half_positive_offset[];
  47. extern u32 bpf_jit_load_byte_positive_offset[];
  48. extern u32 bpf_jit_load_byte_msh_positive_offset[];
  49. extern u32 bpf_jit_load_word_negative_offset[];
  50. extern u32 bpf_jit_load_half_negative_offset[];
  51. extern u32 bpf_jit_load_byte_negative_offset[];
  52. extern u32 bpf_jit_load_byte_msh_negative_offset[];
  53. #else
  54. #define r_RESULT %o0
  55. #define r_SKB %o0
  56. #define r_OFF %o1
  57. #define r_HEADLEN %l4
  58. #define r_SKB_DATA %l5
  59. #define r_TMP %g1
  60. #define r_TMP2 %g3
  61. #endif
  62. #endif /* _BPF_JIT_H */