DS GX: Use CircleBufferRead/Write
Vicki Pfau vi@endrift.com
Tue, 21 Mar 2017 22:30:43 -0700
1 files changed,
7 insertions(+),
35 deletions(-)
jump to
M
src/ds/gx.c
→
src/ds/gx.c
@@ -116,29 +116,13 @@
static void _pullPipe(struct DSGX* gx) { if (CircleBufferSize(&gx->fifo) >= sizeof(struct DSGXEntry)) { struct DSGXEntry entry = { 0 }; - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.command); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[0]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[1]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[2]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[3]); - CircleBufferWrite8(&gx->pipe, entry.command); - CircleBufferWrite8(&gx->pipe, entry.params[0]); - CircleBufferWrite8(&gx->pipe, entry.params[1]); - CircleBufferWrite8(&gx->pipe, entry.params[2]); - CircleBufferWrite8(&gx->pipe, entry.params[3]); + CircleBufferRead(&gx->fifo, &entry, sizeof(entry)); + CircleBufferWrite(&gx->pipe, &entry, sizeof(entry)); } if (CircleBufferSize(&gx->fifo) >= sizeof(struct DSGXEntry)) { struct DSGXEntry entry = { 0 }; - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.command); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[0]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[1]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[2]); - CircleBufferRead8(&gx->fifo, (int8_t*) &entry.params[3]); - CircleBufferWrite8(&gx->pipe, entry.command); - CircleBufferWrite8(&gx->pipe, entry.params[0]); - CircleBufferWrite8(&gx->pipe, entry.params[1]); - CircleBufferWrite8(&gx->pipe, entry.params[2]); - CircleBufferWrite8(&gx->pipe, entry.params[3]); + CircleBufferRead(&gx->fifo, &entry, sizeof(entry)); + CircleBufferWrite(&gx->pipe, &entry, sizeof(entry)); } }@@ -680,11 +664,7 @@ first = false;
} else if (!gx->activeParams && cycles > cyclesLate) { break; } - CircleBufferRead8(&gx->pipe, (int8_t*) &entry.command); - CircleBufferRead8(&gx->pipe, (int8_t*) &entry.params[0]); - CircleBufferRead8(&gx->pipe, (int8_t*) &entry.params[1]); - CircleBufferRead8(&gx->pipe, (int8_t*) &entry.params[2]); - CircleBufferRead8(&gx->pipe, (int8_t*) &entry.params[3]); + CircleBufferRead(&gx->pipe, &entry, sizeof(entry)); if (gx->activeParams) { int index = _gxCommandParams[entry.command] - gx->activeParams;@@ -1452,17 +1432,9 @@ if (!cycles) {
return; } if (CircleBufferSize(&gx->fifo) == 0 && CircleBufferSize(&gx->pipe) < (DS_GX_PIPE_SIZE * sizeof(entry))) { - CircleBufferWrite8(&gx->pipe, entry.command); - CircleBufferWrite8(&gx->pipe, entry.params[0]); - CircleBufferWrite8(&gx->pipe, entry.params[1]); - CircleBufferWrite8(&gx->pipe, entry.params[2]); - CircleBufferWrite8(&gx->pipe, entry.params[3]); + CircleBufferWrite(&gx->pipe, &entry, sizeof(entry)); } else if (CircleBufferSize(&gx->fifo) < (DS_GX_FIFO_SIZE * sizeof(entry))) { - CircleBufferWrite8(&gx->fifo, entry.command); - CircleBufferWrite8(&gx->fifo, entry.params[0]); - CircleBufferWrite8(&gx->fifo, entry.params[1]); - CircleBufferWrite8(&gx->fifo, entry.params[2]); - CircleBufferWrite8(&gx->fifo, entry.params[3]); + CircleBufferWrite(&gx->fifo, &entry, sizeof(entry)); } if (entry.command == DS_GX_CMD_BOX_TEST) { DSRegGXSTAT gxstat = gx->p->memory.io9[DS9_REG_GXSTAT_LO >> 1];