Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * BPF Jit compiler defines
0004  *
0005  * Copyright IBM Corp. 2012,2015
0006  *
0007  * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
0008  *        Michael Holzheu <holzheu@linux.vnet.ibm.com>
0009  */
0010 
0011 #ifndef __ARCH_S390_NET_BPF_JIT_H
0012 #define __ARCH_S390_NET_BPF_JIT_H
0013 
0014 #ifndef __ASSEMBLY__
0015 
0016 #include <linux/filter.h>
0017 #include <linux/types.h>
0018 
0019 #endif /* __ASSEMBLY__ */
0020 
0021 /*
0022  * Stackframe layout (packed stack):
0023  *
0024  *                  ^ high
0025  *        +---------------+     |
0026  *        | old backchain |     |
0027  *        +---------------+     |
0028  *        |   r15 - r6    |     |
0029  *        +---------------+     |
0030  *        | 4 byte align  |     |
0031  *        | tail_call_cnt |     |
0032  * BFP     -> +===============+     |
0033  *        |           |     |
0034  *        |   BPF stack   |     |
0035  *        |           |     |
0036  * R15+160 -> +---------------+     |
0037  *        | new backchain |     |
0038  * R15+152 -> +---------------+     |
0039  *        | + 152 byte SA |     |
0040  * R15     -> +---------------+     + low
0041  *
0042  * We get 160 bytes stack space from calling function, but only use
0043  * 12 * 8 byte for old backchain, r15..r6, and tail_call_cnt.
0044  *
0045  * The stack size used by the BPF program ("BPF stack" above) is passed
0046  * via "aux->stack_depth".
0047  */
0048 #define STK_SPACE_ADD   (160)
0049 #define STK_160_UNUSED  (160 - 12 * 8)
0050 #define STK_OFF     (STK_SPACE_ADD - STK_160_UNUSED)
0051 
0052 #define STK_OFF_R6  (160 - 11 * 8)  /* Offset of r6 on stack */
0053 #define STK_OFF_TCCNT   (160 - 12 * 8)  /* Offset of tail_call_cnt on stack */
0054 
0055 #endif /* __ARCH_S390_NET_BPF_JIT_H */