sim-card
/
qemu
Archived
10
0
Fork 0

Fix length mismatch condition, by Wang Cheng Yeh.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2735 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
ths 2007-04-28 20:45:04 +00:00
parent 85a6f12925
commit 7faa239ca3
1 changed files with 3 additions and 2 deletions

View File

@ -855,6 +855,7 @@ again:
offset = sxt24(addr); offset = sxt24(addr);
cpu_physical_memory_read(s->dsa + offset, (uint8_t *)buf, 8); cpu_physical_memory_read(s->dsa + offset, (uint8_t *)buf, 8);
s->dbc = cpu_to_le32(buf[0]); s->dbc = cpu_to_le32(buf[0]);
s->rbc = s->dbc;
addr = cpu_to_le32(buf[1]); addr = cpu_to_le32(buf[1]);
} }
if ((s->sstat1 & PHASE_MASK) != ((insn >> 24) & 7)) { if ((s->sstat1 & PHASE_MASK) != ((insn >> 24) & 7)) {
@ -864,6 +865,8 @@ again:
break; break;
} }
s->dnad = addr; s->dnad = addr;
/* ??? Set ESA. */
s->ia = s->dsp - 8;
switch (s->sstat1 & 0x7) { switch (s->sstat1 & 0x7) {
case PHASE_DO: case PHASE_DO:
s->waiting = 2; s->waiting = 2;
@ -898,8 +901,6 @@ again:
s->sbc = s->dbc; s->sbc = s->dbc;
s->rbc -= s->dbc; s->rbc -= s->dbc;
s->ua = addr + s->dbc; s->ua = addr + s->dbc;
/* ??? Set ESA. */
s->ia = s->dsp - 8;
break; break;
case 1: /* IO or Read/Write instruction. */ case 1: /* IO or Read/Write instruction. */