summary refs log tree commit diff stats
path: root/hw/cuda.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-23 14:01:47 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-23 14:01:47 +0000
commitb7c7b18129e137bd24240800d7fac02eee3b1edf (patch)
tree39e0c9240114c33781afdfa7fb42d046d0dc636f /hw/cuda.c
parent98352369101d2f3097e7f75d291b0a438c4dbbe4 (diff)
downloadfocaccia-qemu-b7c7b18129e137bd24240800d7fac02eee3b1edf.tar.gz
focaccia-qemu-b7c7b18129e137bd24240800d7fac02eee3b1edf.zip
fixed VIA irq register access
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1513 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/cuda.c')
-rw-r--r--hw/cuda.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/hw/cuda.c b/hw/cuda.c
index 98a26377d8..dec5ffb310 100644
--- a/hw/cuda.c
+++ b/hw/cuda.c
@@ -298,9 +298,11 @@ static uint32_t cuda_readb(void *opaque, target_phys_addr_t addr)
         break;
     case 13:
         val = s->ifr;
+        if (s->ifr & s->ier) 
+            val |= 0x80;
         break;
     case 14:
-        val = s->ier;
+        val = s->ier | 0x80;
         break;
     default:
     case 15:
@@ -379,7 +381,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
         cuda_update_irq(s);
         break;
     case 14:
-#if 0
         if (val & IER_SET) {
             /* set bits */
             s->ier |= val & 0x7f;
@@ -387,10 +388,6 @@ static void cuda_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
             /* reset bits */
             s->ier &= ~val;
         }
-#else
-        /* XXX: please explain me why the SPEC is not correct ! */
-        s->ier = val;
-#endif
         cuda_update_irq(s);
         break;
     default: