fixed VIA irq register access

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1513 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2005-07-23 14:01:47 +00:00
parent 9835236910
commit b7c7b18129

View File

@ -298,9 +298,11 @@ static uint32_t cuda_readb(void *opaque, target_phys_addr_t addr)
break; break;
case 13: case 13:
val = s->ifr; val = s->ifr;
if (s->ifr & s->ier)
val |= 0x80;
break; break;
case 14: case 14:
val = s->ier; val = s->ier | 0x80;
break; break;
default: default:
case 15: case 15:
@ -379,7 +381,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
cuda_update_irq(s); cuda_update_irq(s);
break; break;
case 14: case 14:
#if 0
if (val & IER_SET) { if (val & IER_SET) {
/* set bits */ /* set bits */
s->ier |= val & 0x7f; s->ier |= val & 0x7f;
@ -387,10 +388,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
/* reset bits */ /* reset bits */
s->ier &= ~val; s->ier &= ~val;
} }
#else
/* XXX: please explain me why the SPEC is not correct ! */
s->ier = val;
#endif
cuda_update_irq(s); cuda_update_irq(s);
break; break;
default: default: