lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 7 Jun 2016 19:02:19 +0530 From: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com> To: linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org, netdev@...r.kernel.org, mpe@...erman.id.au Cc: Matt Evans <matt@...abs.org>, Denis Kirjanov <kda@...ux-powerpc.org>, Paul Mackerras <paulus@...ba.org>, Alexei Starovoitov <ast@...com>, Daniel Borkmann <daniel@...earbox.net>, "David S. Miller" <davem@...emloft.net>, Ananth N Mavinakayanahalli <ananth@...ibm.com> Subject: [PATCH 2/6] ppc: bpf/jit: Optimize 64-bit Immediate loads Similar to the LI32() optimization, if the value can be represented in 32-bits, use LI32(). Also handle loading a few specific forms of immediate values in an optimum manner. Cc: Matt Evans <matt@...abs.org> Cc: Denis Kirjanov <kda@...ux-powerpc.org> Cc: Michael Ellerman <mpe@...erman.id.au> Cc: Paul Mackerras <paulus@...ba.org> Cc: Alexei Starovoitov <ast@...com> Cc: Daniel Borkmann <daniel@...earbox.net> Cc: "David S. Miller" <davem@...emloft.net> Cc: Ananth N Mavinakayanahalli <ananth@...ibm.com> Signed-off-by: Naveen N. Rao <naveen.n.rao@...ux.vnet.ibm.com> --- arch/powerpc/net/bpf_jit.h | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h index a9882db..4c1e055 100644 --- a/arch/powerpc/net/bpf_jit.h +++ b/arch/powerpc/net/bpf_jit.h @@ -244,20 +244,25 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh); } } while(0) #define PPC_LI64(d, i) do { \ - if (!((uintptr_t)(i) & 0xffffffff00000000ULL)) \ + if ((long)(i) >= -2147483648 && \ + (long)(i) < 2147483648) \ PPC_LI32(d, i); \ else { \ - PPC_LIS(d, ((uintptr_t)(i) >> 48)); \ - if ((uintptr_t)(i) & 0x0000ffff00000000ULL) \ - PPC_ORI(d, d, \ - ((uintptr_t)(i) >> 32) & 0xffff); \ + if (!((uintptr_t)(i) & 0xffff800000000000ULL)) \ + PPC_LI(d, ((uintptr_t)(i) >> 32) & 0xffff); \ + else { \ + PPC_LIS(d, ((uintptr_t)(i) >> 48)); \ + if ((uintptr_t)(i) & 0x0000ffff00000000ULL) \ + PPC_ORI(d, d, \ + ((uintptr_t)(i) >> 32) & 0xffff); \ + } \ PPC_SLDI(d, d, 32); \ if ((uintptr_t)(i) & 0x00000000ffff0000ULL) \ PPC_ORIS(d, d, \ ((uintptr_t)(i) >> 16) & 0xffff); \ if ((uintptr_t)(i) & 0x000000000000ffffULL) \ PPC_ORI(d, d, (uintptr_t)(i) & 0xffff); \ - } } while (0); + } } while (0) #ifdef CONFIG_PPC64 #define PPC_FUNC_ADDR(d,i) do { PPC_LI64(d, i); } while(0) -- 2.8.2
Powered by blists - more mailing lists