mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
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 <ast@kernel.org> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
b1a057879a
commit
277285b854
@ -272,6 +272,8 @@
|
||||
#define __PPC_SH(s) __PPC_WS(s)
|
||||
#define __PPC_MB(s) (((s) & 0x1f) << 6)
|
||||
#define __PPC_ME(s) (((s) & 0x1f) << 1)
|
||||
#define __PPC_MB64(s) (__PPC_MB(s) | ((s) & 0x20))
|
||||
#define __PPC_ME64(s) __PPC_MB64(s)
|
||||
#define __PPC_BI(s) (((s) & 0x1f) << 16)
|
||||
#define __PPC_CT(t) (((t) & 0x0f) << 21)
|
||||
|
||||
|
@ -210,18 +210,20 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
|
||||
___PPC_RS(a) | ___PPC_RB(s))
|
||||
#define PPC_SRW(d, a, s) EMIT(PPC_INST_SRW | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | ___PPC_RB(s))
|
||||
#define PPC_RLWINM(d, a, i, mb, me) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | __PPC_SH(i) | \
|
||||
__PPC_MB(mb) | __PPC_ME(me))
|
||||
#define PPC_RLDICR(d, a, i, me) EMIT(PPC_INST_RLDICR | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | __PPC_SH(i) | \
|
||||
__PPC_ME64(me) | (((i) & 0x20) >> 4))
|
||||
|
||||
/* slwi = rlwinm Rx, Ry, n, 0, 31-n */
|
||||
#define PPC_SLWI(d, a, i) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | __PPC_SH(i) | \
|
||||
__PPC_MB(0) | __PPC_ME(31-(i)))
|
||||
#define PPC_SLWI(d, a, i) PPC_RLWINM(d, a, i, 0, 31-(i))
|
||||
/* srwi = rlwinm Rx, Ry, 32-n, n, 31 */
|
||||
#define PPC_SRWI(d, a, i) EMIT(PPC_INST_RLWINM | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | __PPC_SH(32-(i)) | \
|
||||
__PPC_MB(i) | __PPC_ME(31))
|
||||
#define PPC_SRWI(d, a, i) PPC_RLWINM(d, a, 32-(i), i, 31)
|
||||
/* sldi = rldicr Rx, Ry, n, 63-n */
|
||||
#define PPC_SLDI(d, a, i) EMIT(PPC_INST_RLDICR | ___PPC_RA(d) | \
|
||||
___PPC_RS(a) | __PPC_SH(i) | \
|
||||
__PPC_MB(63-(i)) | (((i) & 0x20) >> 4))
|
||||
#define PPC_SLDI(d, a, i) PPC_RLDICR(d, a, i, 63-(i))
|
||||
|
||||
#define PPC_NEG(d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))
|
||||
|
||||
/* Long jump; (unconditional 'branch') */
|
||||
|
Loading…
Reference in New Issue
Block a user