Commit 7faa239ca39b986a64ca99056311b32bc6cff55f
1 parent
85a6f129
Fix length mismatch condition, by Wang Cheng Yeh.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2735 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
2 deletions
hw/lsi53c895a.c
| @@ -855,6 +855,7 @@ again: | @@ -855,6 +855,7 @@ again: | ||
| 855 | offset = sxt24(addr); | 855 | offset = sxt24(addr); |
| 856 | cpu_physical_memory_read(s->dsa + offset, (uint8_t *)buf, 8); | 856 | cpu_physical_memory_read(s->dsa + offset, (uint8_t *)buf, 8); |
| 857 | s->dbc = cpu_to_le32(buf[0]); | 857 | s->dbc = cpu_to_le32(buf[0]); |
| 858 | + s->rbc = s->dbc; | ||
| 858 | addr = cpu_to_le32(buf[1]); | 859 | addr = cpu_to_le32(buf[1]); |
| 859 | } | 860 | } |
| 860 | if ((s->sstat1 & PHASE_MASK) != ((insn >> 24) & 7)) { | 861 | if ((s->sstat1 & PHASE_MASK) != ((insn >> 24) & 7)) { |
| @@ -864,6 +865,8 @@ again: | @@ -864,6 +865,8 @@ again: | ||
| 864 | break; | 865 | break; |
| 865 | } | 866 | } |
| 866 | s->dnad = addr; | 867 | s->dnad = addr; |
| 868 | + /* ??? Set ESA. */ | ||
| 869 | + s->ia = s->dsp - 8; | ||
| 867 | switch (s->sstat1 & 0x7) { | 870 | switch (s->sstat1 & 0x7) { |
| 868 | case PHASE_DO: | 871 | case PHASE_DO: |
| 869 | s->waiting = 2; | 872 | s->waiting = 2; |
| @@ -898,8 +901,6 @@ again: | @@ -898,8 +901,6 @@ again: | ||
| 898 | s->sbc = s->dbc; | 901 | s->sbc = s->dbc; |
| 899 | s->rbc -= s->dbc; | 902 | s->rbc -= s->dbc; |
| 900 | s->ua = addr + s->dbc; | 903 | s->ua = addr + s->dbc; |
| 901 | - /* ??? Set ESA. */ | ||
| 902 | - s->ia = s->dsp - 8; | ||
| 903 | break; | 904 | break; |
| 904 | 905 | ||
| 905 | case 1: /* IO or Read/Write instruction. */ | 906 | case 1: /* IO or Read/Write instruction. */ |