linux/arch/sparc/net/bpf_jit_32.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _BPF_JIT_H
   3#define _BPF_JIT_H
   4
   5/* Conventions:
   6 *  %g1 : temporary
   7 *  %g2 : Secondary temporary used by SKB data helper stubs.
   8 *  %g3 : packet offset passed into SKB data helper stubs.
   9 *  %o0 : pointer to skb (first argument given to JIT function)
  10 *  %o1 : BPF A accumulator
  11 *  %o2 : BPF X accumulator
  12 *  %o3 : Holds saved %o7 so we can call helper functions without needing
  13 *        to allocate a register window.
  14 *  %o4 : skb->len - skb->data_len
  15 *  %o5 : skb->data
  16 */
  17
  18#ifndef __ASSEMBLER__
  19#define G0              0x00
  20#define G1              0x01
  21#define G3              0x03
  22#define G6              0x06
  23#define O0              0x08
  24#define O1              0x09
  25#define O2              0x0a
  26#define O3              0x0b
  27#define O4              0x0c
  28#define O5              0x0d
  29#define SP              0x0e
  30#define O7              0x0f
  31#define FP              0x1e
  32
  33#define r_SKB           O0
  34#define r_A             O1
  35#define r_X             O2
  36#define r_saved_O7      O3
  37#define r_HEADLEN       O4
  38#define r_SKB_DATA      O5
  39#define r_TMP           G1
  40#define r_TMP2          G2
  41#define r_OFF           G3
  42
  43/* assembly code in arch/sparc/net/bpf_jit_asm_32.S */
  44extern u32 bpf_jit_load_word[];
  45extern u32 bpf_jit_load_half[];
  46extern u32 bpf_jit_load_byte[];
  47extern u32 bpf_jit_load_byte_msh[];
  48extern u32 bpf_jit_load_word_positive_offset[];
  49extern u32 bpf_jit_load_half_positive_offset[];
  50extern u32 bpf_jit_load_byte_positive_offset[];
  51extern u32 bpf_jit_load_byte_msh_positive_offset[];
  52extern u32 bpf_jit_load_word_negative_offset[];
  53extern u32 bpf_jit_load_half_negative_offset[];
  54extern u32 bpf_jit_load_byte_negative_offset[];
  55extern u32 bpf_jit_load_byte_msh_negative_offset[];
  56
  57#else
  58#define r_SKB           %o0
  59#define r_A             %o1
  60#define r_X             %o2
  61#define r_saved_O7      %o3
  62#define r_HEADLEN       %o4
  63#define r_SKB_DATA      %o5
  64#define r_TMP           %g1
  65#define r_TMP2          %g2
  66#define r_OFF           %g3
  67#endif
  68
  69#endif /* _BPF_JIT_H */
  70