// SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */ #include #include #include .code64 .section .text, "ax" SYM_FUNC_START(arch_bpf_timed_may_goto) ANNOTATE_NOENDBR /* * r10 passes us stack depth, load the pointer to count and timestamp * into r10 by adding it to BPF frame pointer. */ leaq (%rbp, %r10, 1), %r10 /* Setup frame. */ pushq %rbp movq %rsp, %rbp /* Save r0-r5. */ pushq %rax pushq %rdi pushq %rsi pushq %rdx pushq %rcx pushq %r8 /* * r10 has the pointer to count and timestamp, pass it as first * argument. */ movq %r10, %rdi /* Emit call depth accounting for call below. */ CALL_DEPTH_ACCOUNT call bpf_check_timed_may_goto /* BPF_REG_AX=r10 will be stored into count, so move return value to it. */ movq %rax, %r10 /* Restore r5-r0. */ popq %r8 popq %rcx popq %rdx popq %rsi popq %rdi popq %rax leave RET SYM_FUNC_END(arch_bpf_timed_may_goto)