Commit 6bae70713cb2f87be60ef4f83105c2c928d8612e

Authored by bellard
1 parent 90f11f95

sparc fix (Blue Swirl)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1262 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 5 additions and 5 deletions
hw/slavio_intctl.c
@@ -113,7 +113,7 @@ static uint32_t slavio_intctlm_mem_readl(void *opaque, target_phys_addr_t addr) @@ -113,7 +113,7 @@ static uint32_t slavio_intctlm_mem_readl(void *opaque, target_phys_addr_t addr)
113 saddr = (addr & INTCTLM_MAXADDR) >> 2; 113 saddr = (addr & INTCTLM_MAXADDR) >> 2;
114 switch (saddr) { 114 switch (saddr) {
115 case 0: 115 case 0:
116 - return s->intregm_pending; 116 + return s->intregm_pending & 0x7fffffff;
117 case 1: 117 case 1:
118 return s->intregm_disabled; 118 return s->intregm_disabled;
119 case 4: 119 case 4:
@@ -132,12 +132,12 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin @@ -132,12 +132,12 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin
132 saddr = (addr & INTCTLM_MAXADDR) >> 2; 132 saddr = (addr & INTCTLM_MAXADDR) >> 2;
133 switch (saddr) { 133 switch (saddr) {
134 case 2: // clear (enable) 134 case 2: // clear (enable)
135 - // Force unused bits  
136 - val |= 0x7fb2007f; 135 + // Force clear unused bits
  136 + val &= ~0x7fb2007f;
137 s->intregm_disabled &= ~val; 137 s->intregm_disabled &= ~val;
138 break; 138 break;
139 case 3: // set (disable, clear pending) 139 case 3: // set (disable, clear pending)
140 - // Force unused bits 140 + // Force clear unused bits
141 val &= ~0x7fb2007f; 141 val &= ~0x7fb2007f;
142 s->intregm_disabled |= val; 142 s->intregm_disabled |= val;
143 s->intregm_pending &= ~val; 143 s->intregm_pending &= ~val;
@@ -269,7 +269,7 @@ static void slavio_intctl_reset(void *opaque) @@ -269,7 +269,7 @@ static void slavio_intctl_reset(void *opaque)
269 for (i = 0; i < MAX_CPUS; i++) { 269 for (i = 0; i < MAX_CPUS; i++) {
270 s->intreg_pending[i] = 0; 270 s->intreg_pending[i] = 0;
271 } 271 }
272 - s->intregm_disabled = 0xffffffff; 272 + s->intregm_disabled = ~0xffb2007f;
273 s->intregm_pending = 0; 273 s->intregm_pending = 0;
274 s->target_cpu = 0; 274 s->target_cpu = 0;
275 } 275 }