Re: [PATCH v6 bpf-next 3/4] bpf: Add cond_break macro

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2024-03-05 at 19:19 -0800, Alexei Starovoitov wrote:
> From: Alexei Starovoitov <ast@xxxxxxxxxx>
> 
> Use may_goto instruction to implement cond_break macro.
> Ideally the macro should be written as:
>   asm volatile goto(".byte 0xe5;
>                      .byte 0;
>                      .short %l[l_break] ...
>                      .long 0;
> but LLVM doesn't recognize fixup of 2 byte PC relative yet.
> Hence use
>   asm volatile goto(".byte 0xe5;
>                      .byte 0;
>                      .long %l[l_break] ...
>                      .short 0;
> that produces correct asm on little endian.
> 
> Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx>

Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx>

I tried rewriting with offset +1 and an additional goto:

	({ __label__ l_break, l_continue;		\
	 asm volatile goto("%[jcond]; goto %l[l_break];"\
			   :: __imm_insn(jcond, BPF_RAW_INSN(BPF_JMP | BPF_JCOND, 0, 0, 1, 0)) \
			   :: l_break);			\
	goto l_continue;				\
	l_break: break;					\
	l_continue:;					\
	})

But BPF_RAW_INSN needs filter.h, which can't be included because of vmlinux.h,
unfortunate :(






[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux