net: filter: Fix some minor issues in sparc JIT.
authorDavid S. Miller <davem@davemloft.net>
Tue, 17 Apr 2012 20:08:29 +0000 (16:08 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 17 Apr 2012 20:08:29 +0000 (16:08 -0400)
Correct conventions comments.  %o4 and %o5 were swapped,
%g3 was not documented.

Use r_TMP instead of r_SKB_DATA + r_OFF where possible in
assembler stubs.

Correct discussion of %o4 and %o5 in one of bpf_jit_compile()'s
comments.

Based upon feedback from Richard Mortimer.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/net/bpf_jit.h
arch/sparc/net/bpf_jit_asm.S
arch/sparc/net/bpf_jit_comp.c

index 74f048be739c6dd0aabd0016c5083aef611c58ec..05175be442fb41897059d8a52007e76f41f8155d 100644 (file)
@@ -4,13 +4,14 @@
 /* Conventions:
  *  %g1 : temporary
  *  %g2 : Secondary temporary used by SKB data helper stubs.
+ *  %g3 : packet offset passed into SKB data helper stubs.
  *  %o0 : pointer to skb (first argument given to JIT function)
  *  %o1 : BPF A accumulator
  *  %o2 : BPF X accumulator
  *  %o3 : Holds saved %o7 so we can call helper functions without needing
  *        to allocate a register window.
- *  %o4 : skb->data
- *  %o5 : skb->len - skb->data_len
+ *  %o4 : skb->len - skb->data_len
+ *  %o5 : skb->data
  */
 
 #ifndef __ASSEMBLER__
index fdc69324aabc28c48a03b41edb0760b7dd3a16c0..46d8f59f14c5348ba5c8ce0f82f3fd01b6c21c5f 100644 (file)
@@ -30,7 +30,7 @@ bpf_jit_load_word_positive_offset:
        bne     load_word_unaligned
         nop
        retl
-        ld     [r_SKB_DATA + r_OFF], r_A
+        ld     [r_TMP], r_A
 load_word_unaligned:
        ldub    [r_TMP + 0x0], r_OFF
        ldub    [r_TMP + 0x1], r_TMP2
@@ -59,7 +59,7 @@ bpf_jit_load_half_positive_offset:
        bne     load_half_unaligned
         nop
        retl
-        lduh   [r_SKB_DATA + r_OFF], r_A
+        lduh   [r_TMP], r_A
 load_half_unaligned:
        ldub    [r_TMP + 0x0], r_OFF
        ldub    [r_TMP + 0x1], r_TMP2
index 86349cab60c5d2bc980cdd32d3b7af151afa9ee7..ebc89809f585bbb21f66a0522b149383b568b1e6 100644 (file)
@@ -378,7 +378,7 @@ void bpf_jit_compile(struct sk_filter *fp)
                                emit_clear(r_X);
 
                        /* If this filter needs to access skb data,
-                        * load %o4 and %o4 with:
+                        * load %o4 and %o5 with:
                         *  %o4 = skb->len - skb->data_len
                         *  %o5 = skb->data
                         * And also back up %o7 into r_saved_O7 so we can