I does not understand hw/esp.c fully. This patch supresses esp/TC related errors on NetBSD/sparc 5.1.2 or 6.0_RC2.
Please review the patch. This is patch for https://bugs.launchpad.net/qemu/+bug/1055090 . Signed-off-by: Ryo ONODERA <ryo...@yk.rim.or.jp> --- hw/esp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/esp.c b/hw/esp.c index 84a4e74..cd14ed1 100644 --- a/hw/esp.c +++ b/hw/esp.c @@ -91,6 +91,10 @@ static uint32_t get_cmd(ESPState *s, uint8_t *buf) dmalen |= s->rregs[ESP_TCMID] << 8; dmalen |= s->rregs[ESP_TCHI] << 16; s->dma_memory_read(s->dma_opaque, buf, dmalen); + s->rregs[ESP_RSTAT] |= STAT_TC; + s->rregs[ESP_TCLO] = 0; + s->rregs[ESP_TCMID] = 0; + s->rregs[ESP_TCHI] = 0; } else { dmalen = s->ti_size; memcpy(buf, s->ti_buf, dmalen); @@ -242,6 +246,10 @@ static void esp_do_dma(ESPState *s) if (s->do_cmd) { trace_esp_do_dma(s->cmdlen, len); s->dma_memory_read(s->dma_opaque, &s->cmdbuf[s->cmdlen], len); + s->rregs[ESP_RSTAT] |= STAT_TC; + s->rregs[ESP_TCLO] = 0; + s->rregs[ESP_TCMID] = 0; + s->rregs[ESP_TCHI] = 0; s->ti_size = 0; s->cmdlen = 0; s->do_cmd = 0; -- 1.7.12