diff options
Diffstat (limited to 'arch/s390/net')
-rw-r--r-- | arch/s390/net/bpf_jit_comp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index 1ff930167348..bb284419b0fd 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c | |||
@@ -389,10 +389,17 @@ static int bpf_jit_insn(struct bpf_jit *jit, struct sock_filter *filter, | |||
389 | EMIT4_DISP(0x5650d000, EMIT_CONST(K)); | 389 | EMIT4_DISP(0x5650d000, EMIT_CONST(K)); |
390 | break; | 390 | break; |
391 | case BPF_S_ANC_ALU_XOR_X: /* A ^= X; */ | 391 | case BPF_S_ANC_ALU_XOR_X: /* A ^= X; */ |
392 | case BPF_S_ALU_XOR_X: | ||
392 | jit->seen |= SEEN_XREG; | 393 | jit->seen |= SEEN_XREG; |
393 | /* xr %r5,%r12 */ | 394 | /* xr %r5,%r12 */ |
394 | EMIT2(0x175c); | 395 | EMIT2(0x175c); |
395 | break; | 396 | break; |
397 | case BPF_S_ALU_XOR_K: /* A ^= K */ | ||
398 | if (!K) | ||
399 | break; | ||
400 | /* x %r5,<d(K)>(%r13) */ | ||
401 | EMIT4_DISP(0x5750d000, EMIT_CONST(K)); | ||
402 | break; | ||
396 | case BPF_S_ALU_LSH_X: /* A <<= X; */ | 403 | case BPF_S_ALU_LSH_X: /* A <<= X; */ |
397 | jit->seen |= SEEN_XREG; | 404 | jit->seen |= SEEN_XREG; |
398 | /* sll %r5,0(%r12) */ | 405 | /* sll %r5,0(%r12) */ |