From 6bae70713cb2f87be60ef4f83105c2c928d8612e Mon Sep 17 00:00:00 2001
From: bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Date: Wed, 2 Feb 2005 20:40:17 +0000
Subject: [PATCH] sparc fix (Blue Swirl)

---
 hw/slavio_intctl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c
index 7454672..352ae1f 100644
--- a/hw/slavio_intctl.c
+++ b/hw/slavio_intctl.c
@@ -113,7 +113,7 @@ static uint32_t slavio_intctlm_mem_readl(void *opaque, target_phys_addr_t addr)
     saddr = (addr & INTCTLM_MAXADDR) >> 2;
     switch (saddr) {
     case 0:
-	return s->intregm_pending;
+	return s->intregm_pending & 0x7fffffff;
     case 1:
 	return s->intregm_disabled;
     case 4:
@@ -132,12 +132,12 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin
     saddr = (addr & INTCTLM_MAXADDR) >> 2;
     switch (saddr) {
     case 2: // clear (enable)
-	// Force unused bits
-	val |= 0x7fb2007f;
+	// Force clear unused bits
+	val &= ~0x7fb2007f;
 	s->intregm_disabled &= ~val;
 	break;
     case 3: // set (disable, clear pending)
-	// Force unused bits
+	// Force clear unused bits
 	val &= ~0x7fb2007f;
 	s->intregm_disabled |= val;
 	s->intregm_pending &= ~val;
@@ -269,7 +269,7 @@ static void slavio_intctl_reset(void *opaque)
     for (i = 0; i < MAX_CPUS; i++) {
 	s->intreg_pending[i] = 0;
     }
-    s->intregm_disabled = 0xffffffff;
+    s->intregm_disabled = ~0xffb2007f;
     s->intregm_pending = 0;
     s->target_cpu = 0;
 }
--
libgit2 0.23.3