diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-02-21 15:12:04 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-02-21 15:12:04 -0500 |
commit | fe7ef49a026fada706d93f504d368ebd0c0ef17b (patch) | |
tree | 51b54dc52e1cbecc944e9738de65608960f84db5 /arch/sparc | |
parent | ba9c4b4d0b1a45b83b40eb1b8fa3d9d1be32fd97 (diff) | |
parent | 1569265782ef26ed77ce45ebeb0676f11d4c114a (diff) |
Merge tag 'v3.10.29' into v3.10-rt
This is the 3.10.29 stable release
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/net/bpf_jit_comp.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/arch/sparc/net/bpf_jit_comp.c b/arch/sparc/net/bpf_jit_comp.c index d36a85ebb5e0..fd95862c65aa 100644 --- a/arch/sparc/net/bpf_jit_comp.c +++ b/arch/sparc/net/bpf_jit_comp.c @@ -497,9 +497,20 @@ void bpf_jit_compile(struct sk_filter *fp) case BPF_S_ALU_MUL_K: /* A *= K */ emit_alu_K(MUL, K); break; - case BPF_S_ALU_DIV_K: /* A /= K */ - emit_alu_K(MUL, K); - emit_read_y(r_A); + case BPF_S_ALU_DIV_K: /* A /= K with K != 0*/ + if (K == 1) + break; + emit_write_y(G0); +#ifdef CONFIG_SPARC32 + /* The Sparc v8 architecture requires + * three instructions between a %y + * register write and the first use. + */ + emit_nop(); + emit_nop(); + emit_nop(); +#endif + emit_alu_K(DIV, K); break; case BPF_S_ALU_DIV_X: /* A /= X; */ emit_cmpi(r_X, 0); |