MIPS: BPF: Fix load delay slots.
authorRalf Baechle <ralf@linux-mips.org>
Fri, 2 Oct 2015 07:48:57 +0000 (09:48 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 2 Oct 2015 07:48:57 +0000 (09:48 +0200)
commit0c5d187828588dd1b36cb93b4481a8db467ef3e8
tree899cdb3b4b6e2b99718d7916296bcfbffc853846
parent1e16a8f11669c98a0adf5fb5f8522aebc1f69f71
MIPS: BPF: Fix load delay slots.

The entire bpf_jit_asm.S is written in noreorder mode because "we know
better" according to a comment.  This also prevented the assembler from
throwing in the required NOPs for MIPS I processors which have no
load-use interlock, thus the load's consumer might end up using the
old value of the register from prior to the load.

Fixed by putting the assembler in reorder mode for just the affected
load instructions.  This is not enough for gas to actually try to be
clever by looking at the next instruction and inserting a nop only
when needed but as the comment said "we know better", so getting gas
to unconditionally emit a NOP is just right in this case and prevents
adding further ifdefery.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/net/bpf_jit_asm.S