Skip to content

Commit 277285b

Browse files
rnavmpe
authored andcommitted
powerpc/bpf/jit: Introduce rotate immediate instructions
Since we will be using the rotate immediate instructions for extended BPF JIT, let's introduce macros for the same. And since the shift immediate operations use the rotate immediate instructions, let's redo those macros to use the newly introduced instructions. Acked-by: Alexei Starovoitov <[email protected]> Signed-off-by: Naveen N. Rao <[email protected]> Signed-off-by: Michael Ellerman <[email protected]>
1 parent b1a0578 commit 277285b

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

arch/powerpc/include/asm/ppc-opcode.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@
272272
#define __PPC_SH(s) __PPC_WS(s)
273273
#define __PPC_MB(s) (((s) & 0x1f) << 6)
274274
#define __PPC_ME(s) (((s) & 0x1f) << 1)
275+
#define __PPC_MB64(s) (__PPC_MB(s) | ((s) & 0x20))
276+
#define __PPC_ME64(s) __PPC_MB64(s)
275277
#define __PPC_BI(s) (((s) & 0x1f) << 16)
276278
#define __PPC_CT(t) (((t) & 0x0f) << 21)
277279

arch/powerpc/net/bpf_jit.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,18 +210,20 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
210210
___PPC_RS(a) | ___PPC_RB(s))
211211
#define PPC_SRW(d, a, s) EMIT(PPC_INST_SRW | ___PPC_RA(d) | \
212212
___PPC_RS(a) | ___PPC_RB(s))
213+
#define PPC_RLWINM(d, a, i, mb, me) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
214+
___PPC_RS(a) | __PPC_SH(i) | \
215+
__PPC_MB(mb) | __PPC_ME(me))
216+
#define PPC_RLDICR(d, a, i, me) EMIT(PPC_INST_RLDICR | ___PPC_RA(d) | \
217+
___PPC_RS(a) | __PPC_SH(i) | \
218+
__PPC_ME64(me) | (((i) & 0x20) >> 4))
219+
213220
/* slwi = rlwinm Rx, Ry, n, 0, 31-n */
214-
#define PPC_SLWI(d, a, i) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
215-
___PPC_RS(a) | __PPC_SH(i) | \
216-
__PPC_MB(0) | __PPC_ME(31-(i)))
221+
#define PPC_SLWI(d, a, i) PPC_RLWINM(d, a, i, 0, 31-(i))
217222
/* srwi = rlwinm Rx, Ry, 32-n, n, 31 */
218-
#define PPC_SRWI(d, a, i) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
219-
___PPC_RS(a) | __PPC_SH(32-(i)) | \
220-
__PPC_MB(i) | __PPC_ME(31))
223+
#define PPC_SRWI(d, a, i) PPC_RLWINM(d, a, 32-(i), i, 31)
221224
/* sldi = rldicr Rx, Ry, n, 63-n */
222-
#define PPC_SLDI(d, a, i) EMIT(PPC_INST_RLDICR | ___PPC_RA(d) | \
223-
___PPC_RS(a) | __PPC_SH(i) | \
224-
__PPC_MB(63-(i)) | (((i) & 0x20) >> 4))
225+
#define PPC_SLDI(d, a, i) PPC_RLDICR(d, a, i, 63-(i))
226+
225227
#define PPC_NEG(d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))
226228

227229
/* Long jump; (unconditional 'branch') */

0 commit comments

Comments
 (0)