Skip to content
Snippets Groups Projects
Commit 546d574b authored by Frederik van Hövell's avatar Frederik van Hövell Committed by Peter Maydell
Browse files

hw/char/bcm2835_aux: Fix assert when receive FIFO fills up


When a bare-metal application on the raspi3 board reads the
AUX_MU_STAT_REG MMIO register while the device's buffer is
at full receive FIFO capacity
(i.e. `s->read_count == BCM2835_AUX_RX_FIFO_LEN`) the
assertion `assert(s->read_count < BCM2835_AUX_RX_FIFO_LEN)`
fails.

Reported-by: default avatarCryptjar <cryptjar@junk.studio>
Suggested-by: default avatarCryptjar <cryptjar@junk.studio>
Resolves: qemu-project/qemu#459


Signed-off-by: default avatarFrederik van Hövell <frederik@fvhovell.nl>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
[PMM: commit message tweaks]
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 93b799fa
No related branches found
No related tags found
No related merge requests found
......@@ -138,7 +138,7 @@ static uint64_t bcm2835_aux_read(void *opaque, hwaddr offset, unsigned size)
res = 0x30e; /* space in the output buffer, empty tx fifo, idle tx/rx */
if (s->read_count > 0) {
res |= 0x1; /* data in input buffer */
assert(s->read_count < BCM2835_AUX_RX_FIFO_LEN);
assert(s->read_count <= BCM2835_AUX_RX_FIFO_LEN);
res |= ((uint32_t)s->read_count) << 16; /* rx fifo fill level */
}
return res;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment