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