136b5d471SAndrii Nakryiko /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
236b5d471SAndrii Nakryiko #ifndef __BPF_LEGACY__
336b5d471SAndrii Nakryiko #define __BPF_LEGACY__
436b5d471SAndrii Nakryiko 
536b5d471SAndrii Nakryiko /*
636b5d471SAndrii Nakryiko  * legacy bpf_map_def with extra fields supported only by bpf_load(), do not
736b5d471SAndrii Nakryiko  * use outside of samples/bpf
836b5d471SAndrii Nakryiko  */
936b5d471SAndrii Nakryiko struct bpf_map_def_legacy {
1036b5d471SAndrii Nakryiko 	unsigned int type;
1136b5d471SAndrii Nakryiko 	unsigned int key_size;
1236b5d471SAndrii Nakryiko 	unsigned int value_size;
1336b5d471SAndrii Nakryiko 	unsigned int max_entries;
1436b5d471SAndrii Nakryiko 	unsigned int map_flags;
1536b5d471SAndrii Nakryiko 	unsigned int inner_map_idx;
1636b5d471SAndrii Nakryiko 	unsigned int numa_node;
1736b5d471SAndrii Nakryiko };
1836b5d471SAndrii Nakryiko 
1936b5d471SAndrii Nakryiko #define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val)		\
2036b5d471SAndrii Nakryiko 	struct ____btf_map_##name {				\
2136b5d471SAndrii Nakryiko 		type_key key;					\
2236b5d471SAndrii Nakryiko 		type_val value;					\
2336b5d471SAndrii Nakryiko 	};							\
2436b5d471SAndrii Nakryiko 	struct ____btf_map_##name				\
2536b5d471SAndrii Nakryiko 	__attribute__ ((section(".maps." #name), used))		\
2636b5d471SAndrii Nakryiko 		____btf_map_##name = { }
2736b5d471SAndrii Nakryiko 
2836b5d471SAndrii Nakryiko /* llvm builtin functions that eBPF C program may use to
2936b5d471SAndrii Nakryiko  * emit BPF_LD_ABS and BPF_LD_IND instructions
3036b5d471SAndrii Nakryiko  */
3136b5d471SAndrii Nakryiko unsigned long long load_byte(void *skb,
3236b5d471SAndrii Nakryiko 			     unsigned long long off) asm("llvm.bpf.load.byte");
3336b5d471SAndrii Nakryiko unsigned long long load_half(void *skb,
3436b5d471SAndrii Nakryiko 			     unsigned long long off) asm("llvm.bpf.load.half");
3536b5d471SAndrii Nakryiko unsigned long long load_word(void *skb,
3636b5d471SAndrii Nakryiko 			     unsigned long long off) asm("llvm.bpf.load.word");
3736b5d471SAndrii Nakryiko 
3836b5d471SAndrii Nakryiko #endif
3936b5d471SAndrii Nakryiko 
40