hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * BPF Jit compiler defines
 *
 * Copyright IBM Corp. 2012,2015
 *
 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
 *          Michael Holzheu <holzheu@linux.vnet.ibm.com>
 */
 
#ifndef __ARCH_S390_NET_BPF_JIT_H
#define __ARCH_S390_NET_BPF_JIT_H
 
#ifndef __ASSEMBLY__
 
#include <linux/filter.h>
#include <linux/types.h>
 
#endif /* __ASSEMBLY__ */
 
/*
 * Stackframe layout (packed stack):
 *
 *                    ^ high
 *          +---------------+     |
 *          | old backchain |     |
 *          +---------------+     |
 *          |   r15 - r6    |     |
 *          +---------------+     |
 *          | 4 byte align  |     |
 *          | tail_call_cnt |     |
 * BFP       -> +===============+     |
 *          |              |     |
 *          |   BPF stack   |     |
 *          |              |     |
 * R15+160 -> +---------------+     |
 *          | new backchain |     |
 * R15+152 -> +---------------+     |
 *          | + 152 byte SA |     |
 * R15       -> +---------------+     + low
 *
 * We get 160 bytes stack space from calling function, but only use
 * 12 * 8 byte for old backchain, r15..r6, and tail_call_cnt.
 *
 * The stack size used by the BPF program ("BPF stack" above) is passed
 * via "aux->stack_depth".
 */
#define STK_SPACE_ADD    (160)
#define STK_160_UNUSED    (160 - 12 * 8)
#define STK_OFF        (STK_SPACE_ADD - STK_160_UNUSED)
 
#define STK_OFF_R6    (160 - 11 * 8)    /* Offset of r6 on stack */
#define STK_OFF_TCCNT    (160 - 12 * 8)    /* Offset of tail_call_cnt on stack */
 
#endif /* __ARCH_S390_NET_BPF_JIT_H */