mirror of https://gitee.com/openkylin/linux.git
ARM: net: bpf: improve 64-bit sign-extended immediate load
Improve the 64-bit sign-extended immediate from: mov r6, #1 str r6, [fp, #-52] ; 0xffffffcc mov r6, #0 str r6, [fp, #-48] ; 0xffffffd0 to: mov r6, #1 mov r7, #0 strd r6, [fp, #-52] ; 0xffffffcc Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
f9ff5018c1
commit
077513b894
|
@ -613,12 +613,11 @@ static void emit_a32_mov_i64(const s8 dst[], u64 val, struct jit_ctx *ctx)
|
|||
/* Sign extended move */
|
||||
static inline void emit_a32_mov_se_i64(const bool is64, const s8 dst[],
|
||||
const u32 val, struct jit_ctx *ctx) {
|
||||
u32 hi = 0;
|
||||
u64 val64 = val;
|
||||
|
||||
if (is64 && (val & (1<<31)))
|
||||
hi = (u32)~0;
|
||||
emit_a32_mov_i(dst_lo, val, ctx);
|
||||
emit_a32_mov_i(dst_hi, hi, ctx);
|
||||
val64 |= 0xffffffff00000000ULL;
|
||||
emit_a32_mov_i64(dst, val64, ctx);
|
||||
}
|
||||
|
||||
static inline void emit_a32_add_r(const u8 dst, const u8 src,
|
||||
|
|
Loading…
Reference in New Issue