Commit b7c7b18129e137bd24240800d7fac02eee3b1edf
1 parent
98352369
fixed VIA irq register access
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1513 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
6 deletions
hw/cuda.c
| ... | ... | @@ -298,9 +298,11 @@ static uint32_t cuda_readb(void *opaque, target_phys_addr_t addr) |
| 298 | 298 | break; |
| 299 | 299 | case 13: |
| 300 | 300 | val = s->ifr; |
| 301 | + if (s->ifr & s->ier) | |
| 302 | + val |= 0x80; | |
| 301 | 303 | break; |
| 302 | 304 | case 14: |
| 303 | - val = s->ier; | |
| 305 | + val = s->ier | 0x80; | |
| 304 | 306 | break; |
| 305 | 307 | default: |
| 306 | 308 | case 15: |
| ... | ... | @@ -379,7 +381,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) |
| 379 | 381 | cuda_update_irq(s); |
| 380 | 382 | break; |
| 381 | 383 | case 14: |
| 382 | -#if 0 | |
| 383 | 384 | if (val & IER_SET) { |
| 384 | 385 | /* set bits */ |
| 385 | 386 | s->ier |= val & 0x7f; |
| ... | ... | @@ -387,10 +388,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) |
| 387 | 388 | /* reset bits */ |
| 388 | 389 | s->ier &= ~val; |
| 389 | 390 | } |
| 390 | -#else | |
| 391 | - /* XXX: please explain me why the SPEC is not correct ! */ | |
| 392 | - s->ier = val; | |
| 393 | -#endif | |
| 394 | 391 | cuda_update_irq(s); |
| 395 | 392 | break; |
| 396 | 393 | default: | ... | ... |