pp_fifo: Fix full fifo losing all data on simultaneous push & pop
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 14 May 2020 02:30:11 +0000 (12:30 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 15 May 2020 10:49:09 +0000 (20:49 +1000)
commitbd42580a4217b6a66e0842d370f57b5022e6f9f1
treeb642295f6d12e41f9ad5398d532335d661af7e05
parent803ee9ef3594d3810e63a994ea45ca244c28958e
pp_fifo: Fix full fifo losing all data on simultaneous push & pop

The pp_fifo decides whether top = bottom means empty or full based
on whether the previous operation was a push or a pop.

If the fifo performs both in one cycle, it sets the previous op to
pop. That means that a full fifo being added a character and removed
one at the same time becomes empty.

Instead, just leave the previous op alone. If the fifo was empty, it
remains so, if it was full ditto.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
fpga/pp_fifo.vhd