diff options
author | Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> | 2021-04-07 20:57:53 +0100 |
---|---|---|
committer | Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> | 2021-04-12 22:34:02 +0100 |
commit | c5fef9112b15c4b5494791cdf8bbb40bc1938dd3 (patch) | |
tree | 11ecb9d685b0cce2d55f3714217ba71b5f036c4a /hw | |
parent | e5455b8c1c6170c788f3c0fd577cc3be53539a99 (diff) | |
download | qemu-c5fef9112b15c4b5494791cdf8bbb40bc1938dd3.zip qemu-c5fef9112b15c4b5494791cdf8bbb40bc1938dd3.tar.gz qemu-c5fef9112b15c4b5494791cdf8bbb40bc1938dd3.tar.bz2 |
esp: consolidate esp_cmdfifo_pop() into esp_fifo_pop()
Each FIFO currently has its own pop functions with the only difference being
the capacity check. The original reason for this was that the fifo8
implementation doesn't have a formal API for retrieving the FIFO capacity,
however there are multiple examples within QEMU where the capacity field is
accessed directly.
Change esp_fifo_pop() to access the FIFO capacity directly and then consolidate
esp_cmdfifo_pop() into esp_fifo_pop().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Alexander Bulekov <alxndr@bu.edu>
Message-Id: <20210407195801.685-5-mark.cave-ayland@ilande.co.uk>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/scsi/esp.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index b3471e0..89cc795 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -107,22 +107,14 @@ static void esp_fifo_push(Fifo8 *fifo, uint8_t val) fifo8_push(fifo, val); } -static uint8_t esp_fifo_pop(ESPState *s) -{ - if (fifo8_is_empty(&s->fifo)) { - return 0; - } - - return fifo8_pop(&s->fifo); -} -static uint8_t esp_cmdfifo_pop(ESPState *s) +static uint8_t esp_fifo_pop(Fifo8 *fifo) { - if (fifo8_is_empty(&s->cmdfifo)) { + if (fifo8_is_empty(fifo)) { return 0; } - return fifo8_pop(&s->cmdfifo); + return fifo8_pop(fifo); } static uint32_t esp_get_tc(ESPState *s) @@ -159,9 +151,9 @@ static uint8_t esp_pdma_read(ESPState *s) uint8_t val; if (s->do_cmd) { - val = esp_cmdfifo_pop(s); + val = esp_fifo_pop(&s->cmdfifo); } else { - val = esp_fifo_pop(s); + val = esp_fifo_pop(&s->fifo); } return val; @@ -887,7 +879,7 @@ uint64_t esp_reg_read(ESPState *s, uint32_t saddr) qemu_log_mask(LOG_UNIMP, "esp: PIO data read not implemented\n"); s->rregs[ESP_FIFO] = 0; } else { - s->rregs[ESP_FIFO] = esp_fifo_pop(s); + s->rregs[ESP_FIFO] = esp_fifo_pop(&s->fifo); } val = s->rregs[ESP_FIFO]; break; |