sparc bpf_jit: support BPF_S_ANC_ALU_XOR_X instruction
authorDavid S. Miller <davem@davemloft.net>
Wed, 6 Jun 2012 17:20:21 +0000 (10:20 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Jun 2012 17:20:21 +0000 (10:20 -0700)
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/net/bpf_jit_comp.c

index 1a69244e785b4df215ffc68c7befd47905531dda..e9073e9501b37792e5e6941253b6c13f601102c3 100644 (file)
@@ -96,6 +96,7 @@ static void bpf_flush_icache(void *start_, void *end_)
 #define AND            F3(2, 0x01)
 #define ANDCC          F3(2, 0x11)
 #define OR             F3(2, 0x02)
+#define XOR            F3(2, 0x03)
 #define SUB            F3(2, 0x04)
 #define SUBCC          F3(2, 0x14)
 #define MUL            F3(2, 0x0a)     /* umul */
@@ -462,6 +463,9 @@ void bpf_jit_compile(struct sk_filter *fp)
                        case BPF_S_ALU_OR_K:    /* A |= K */
                                emit_alu_K(OR, K);
                                break;
+                       case BPF_S_ANC_ALU_XOR_X: /* A ^= X; */
+                               emit_alu_X(XOR);
+                               break;
                        case BPF_S_ALU_LSH_X:   /* A <<= X */
                                emit_alu_X(SLL);
                                break;