1*2597a25cSStanislav Fomichev // SPDX-License-Identifier: GPL-2.0
2*2597a25cSStanislav Fomichev 
3*2597a25cSStanislav Fomichev #include <vmlinux.h>
4*2597a25cSStanislav Fomichev #include <bpf/bpf_helpers.h>
5*2597a25cSStanislav Fomichev #include "bpf_misc.h"
6*2597a25cSStanislav Fomichev 
7*2597a25cSStanislav Fomichev SEC("fentry/bpf_fentry_test_sinfo")
8*2597a25cSStanislav Fomichev __description("typedef: resolve")
9*2597a25cSStanislav Fomichev __success __retval(0)
resolve_typedef(void)10*2597a25cSStanislav Fomichev __naked void resolve_typedef(void)
11*2597a25cSStanislav Fomichev {
12*2597a25cSStanislav Fomichev 	asm volatile ("					\
13*2597a25cSStanislav Fomichev 	r1 = *(u64 *)(r1 +0);				\
14*2597a25cSStanislav Fomichev 	r2 = *(u64 *)(r1 +%[frags_offs]);		\
15*2597a25cSStanislav Fomichev 	r0 = 0;						\
16*2597a25cSStanislav Fomichev 	exit;						\
17*2597a25cSStanislav Fomichev "	:
18*2597a25cSStanislav Fomichev 	: __imm_const(frags_offs,
19*2597a25cSStanislav Fomichev 		      offsetof(struct skb_shared_info, frags))
20*2597a25cSStanislav Fomichev 	: __clobber_all);
21*2597a25cSStanislav Fomichev }
22*2597a25cSStanislav Fomichev 
23*2597a25cSStanislav Fomichev char _license[] SEC("license") = "GPL";
24