diff options
author | Laszlo Ast <laszlo.ast@siemens-enterprise.com> | 2009-11-19 11:07:12 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-12-03 09:41:41 -0600 |
commit | 38f5b2b88cbe02492a4cad3aa06a778a952f7146 (patch) | |
tree | 05fff2ce912e8e542b0466bf28d0a1370db90762 | |
parent | 07a1bea883895522a89e632757041c364ce2e12e (diff) | |
download | hqemu-38f5b2b88cbe02492a4cad3aa06a778a952f7146.zip hqemu-38f5b2b88cbe02492a4cad3aa06a778a952f7146.tar.gz |
lsi53c895a: Use alternative address when already reselected
See SCRIPTS, 3.2.17 SELECT.
Signed-off-by: Laszlo Ast <laszlo.ast@siemens-enterprise.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/lsi53c895a.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c index 7e141a0..7fed1d8 100644 --- a/hw/lsi53c895a.c +++ b/hw/lsi53c895a.c @@ -1040,8 +1040,9 @@ again: switch (opcode) { case 0: /* Select */ s->sdid = id; - if (s->current_dma_len && (s->ssid & 0xf) == id) { - DPRINTF("Already reselected by target %d\n", id); + if (s->scntl1 & LSI_SCNTL1_CON) { + DPRINTF("Already reselected, jumping to alternative address\n"); + s->dsp = s->dnad; break; } s->sstat0 |= LSI_SSTAT0_WOA; |