s390/bpf,jit: add support for XOR instruction
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Sat, 1 Dec 2012 11:42:32 +0000 (12:42 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 3 Dec 2012 15:44:05 +0000 (10:44 -0500)
Add support for XOR instruction for use with X/K.

s390 JIT support for the new BPF_S_ALU_XOR_* instructions introduced
with 9e49e889 "filter: add XOR instruction for use with X/K".

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/net/bpf_jit_comp.c

index 1ff930167348ebff98bf8915b944e56fb9b677ae..bb284419b0fd95a651348701516cf53a56ca2935 100644 (file)
@@ -389,10 +389,17 @@ static int bpf_jit_insn(struct bpf_jit *jit, struct sock_filter *filter,
                        EMIT4_DISP(0x5650d000, EMIT_CONST(K));
                break;
        case BPF_S_ANC_ALU_XOR_X: /* A ^= X; */
+       case BPF_S_ALU_XOR_X:
                jit->seen |= SEEN_XREG;
                /* xr %r5,%r12 */
                EMIT2(0x175c);
                break;
+       case BPF_S_ALU_XOR_K: /* A ^= K */
+               if (!K)
+                       break;
+               /* x %r5,<d(K)>(%r13) */
+               EMIT4_DISP(0x5750d000, EMIT_CONST(K));
+               break;
        case BPF_S_ALU_LSH_X: /* A <<= X; */
                jit->seen |= SEEN_XREG;
                /* sll %r5,0(%r12) */