aboutsummaryrefslogtreecommitdiff
path: root/hw/slavio_intctl.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-02-02 20:40:17 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-02-02 20:40:17 +0000
commit6bae70713cb2f87be60ef4f83105c2c928d8612e (patch)
tree801ea614b6098f6fc1b87f2b8bc594eabb3985b2 /hw/slavio_intctl.c
parent90f11f95fe41c1b0ec3c70f11f93efeec8a34611 (diff)
sparc fix (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1262 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/slavio_intctl.c')
-rw-r--r--hw/slavio_intctl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c
index 745467214b..352ae1f0f0 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;
}