xref: /linux/tools/testing/selftests/bpf/progs/test_endian.c (revision 77ec462536a13d4b428a1eead725c4818a49f0b1)
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2020 Facebook */
3 
4 #include "vmlinux.h"
5 #include <bpf/bpf_helpers.h>
6 #include <bpf/bpf_endian.h>
7 
8 #define IN16 0x1234
9 #define IN32 0x12345678U
10 #define IN64 0x123456789abcdef0ULL
11 
12 __u16 in16 = 0;
13 __u32 in32 = 0;
14 __u64 in64 = 0;
15 
16 __u16 out16 = 0;
17 __u32 out32 = 0;
18 __u64 out64 = 0;
19 
20 __u16 const16 = 0;
21 __u32 const32 = 0;
22 __u64 const64 = 0;
23 
24 SEC("raw_tp/sys_enter")
25 int sys_enter(const void *ctx)
26 {
27 	out16 = __builtin_bswap16(in16);
28 	out32 = __builtin_bswap32(in32);
29 	out64 = __builtin_bswap64(in64);
30 	const16 = ___bpf_swab16(IN16);
31 	const32 = ___bpf_swab32(IN32);
32 	const64 = ___bpf_swab64(IN64);
33 
34 	return 0;
35 }
36 
37 char _license[] SEC("license") = "GPL";
38