• Naveen N. Rao's avatar
    powerpc/bpf: Add support for bpf constant blinding · b7b7013c
    Naveen N. Rao authored
    In line with similar support for other architectures by Daniel Borkmann.
    
    'MOD Default X' from test_bpf without constant blinding:
    84 bytes emitted from JIT compiler (pass:3, flen:7)
    d0000000058a4688 + <x>:
       0:	nop
       4:	nop
       8:	std     r27,-40(r1)
       c:	std     r28,-32(r1)
      10:	xor     r8,r8,r8
      14:	xor     r28,r28,r28
      18:	mr      r27,r3
      1c:	li      r8,66
      20:	cmpwi   r28,0
      24:	bne     0x0000000000000030
      28:	li      r8,0
      2c:	b       0x0000000000000044
      30:	divwu   r9,r8,r28
      34:	mullw   r9,r28,r9
      38:	subf    r8,r9,r8
      3c:	rotlwi  r8,r8,0
      40:	li      r8,66
      44:	ld      r27,-40(r1)
      48:	ld      r28,-32(r1)
      4c:	mr      r3,r8
      50:	blr
    
    ... and with constant blinding:
    140 bytes emitted from JIT compiler (pass:3, flen:11)
    d00000000bd6ab24 + <x>:
       0:	nop
       4:	nop
       8:	std     r27,-40(r1)
       c:	std     r28,-32(r1)
      10:	xor     r8,r8,r8
      14:	xor     r28,r28,r28
      18:	mr      r27,r3
      1c:	lis     r2,-22834
      20:	ori     r2,r2,36083
      24:	rotlwi  r2,r2,0
      28:	xori    r2,r2,36017
      2c:	xoris   r2,r2,42702
      30:	rotlwi  r2,r2,0
      34:	mr      r8,r2
      38:	rotlwi  r8,r8,0
      3c:	cmpwi   r28,0
      40:	bne     0x000000000000004c
      44:	li      r8,0
      48:	b       0x000000000000007c
      4c:	divwu   r9,r8,r28
      50:	mullw   r9,r28,r9
      54:	subf    r8,r9,r8
      58:	rotlwi  r8,r8,0
      5c:	lis     r2,-17137
      60:	ori     r2,r2,39065
      64:	rotlwi  r2,r2,0
      68:	xori    r2,r2,39131
      6c:	xoris   r2,r2,48399
      70:	rotlwi  r2,r2,0
      74:	mr      r8,r2
      78:	rotlwi  r8,r8,0
      7c:	ld      r27,-40(r1)
      80:	ld      r28,-32(r1)
      84:	mr      r3,r8
      88:	blr
    Signed-off-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    b7b7013c
bpf_jit_comp64.c 29.8 KB