|
@@ -646,6 +646,16 @@ load_ind:
|
|
|
update_on_xread(ctx);
|
|
|
emit(ARM_ORR_R(r_A, r_A, r_X), ctx);
|
|
|
break;
|
|
|
+ case BPF_S_ALU_XOR_K:
|
|
|
+ /* A ^= K; */
|
|
|
+ OP_IMM3(ARM_EOR, r_A, r_A, k, ctx);
|
|
|
+ break;
|
|
|
+ case BPF_S_ANC_ALU_XOR_X:
|
|
|
+ case BPF_S_ALU_XOR_X:
|
|
|
+ /* A ^= X */
|
|
|
+ update_on_xread(ctx);
|
|
|
+ emit(ARM_EOR_R(r_A, r_A, r_X), ctx);
|
|
|
+ break;
|
|
|
case BPF_S_ALU_AND_K:
|
|
|
/* A &= K */
|
|
|
OP_IMM3(ARM_AND, r_A, r_A, k, ctx);
|
|
@@ -762,11 +772,6 @@ b_epilogue:
|
|
|
update_on_xread(ctx);
|
|
|
emit(ARM_MOV_R(r_A, r_X), ctx);
|
|
|
break;
|
|
|
- case BPF_S_ANC_ALU_XOR_X:
|
|
|
- /* A ^= X */
|
|
|
- update_on_xread(ctx);
|
|
|
- emit(ARM_EOR_R(r_A, r_A, r_X), ctx);
|
|
|
- break;
|
|
|
case BPF_S_ANC_PROTOCOL:
|
|
|
/* A = ntohs(skb->protocol) */
|
|
|
ctx->seen |= SEEN_SKB;
|