Commit b7c7b18129e137bd24240800d7fac02eee3b1edf

Authored by bellard
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,9 +298,11 @@ static uint32_t cuda_readb(void *opaque, target_phys_addr_t addr)
298 break; 298 break;
299 case 13: 299 case 13:
300 val = s->ifr; 300 val = s->ifr;
  301 + if (s->ifr & s->ier)
  302 + val |= 0x80;
301 break; 303 break;
302 case 14: 304 case 14:
303 - val = s->ier; 305 + val = s->ier | 0x80;
304 break; 306 break;
305 default: 307 default:
306 case 15: 308 case 15:
@@ -379,7 +381,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) @@ -379,7 +381,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
379 cuda_update_irq(s); 381 cuda_update_irq(s);
380 break; 382 break;
381 case 14: 383 case 14:
382 -#if 0  
383 if (val & IER_SET) { 384 if (val & IER_SET) {
384 /* set bits */ 385 /* set bits */
385 s->ier |= val & 0x7f; 386 s->ier |= val & 0x7f;
@@ -387,10 +388,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) @@ -387,10 +388,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
387 /* reset bits */ 388 /* reset bits */
388 s->ier &= ~val; 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 cuda_update_irq(s); 391 cuda_update_irq(s);
395 break; 392 break;
396 default: 393 default: