Commit 6bae70713cb2f87be60ef4f83105c2c928d8612e
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 | 113 | saddr = (addr & INTCTLM_MAXADDR) >> 2; |
| 114 | 114 | switch (saddr) { |
| 115 | 115 | case 0: |
| 116 | - return s->intregm_pending; | |
| 116 | + return s->intregm_pending & 0x7fffffff; | |
| 117 | 117 | case 1: |
| 118 | 118 | return s->intregm_disabled; |
| 119 | 119 | case 4: |
| ... | ... | @@ -132,12 +132,12 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, uin |
| 132 | 132 | saddr = (addr & INTCTLM_MAXADDR) >> 2; |
| 133 | 133 | switch (saddr) { |
| 134 | 134 | case 2: // clear (enable) |
| 135 | - // Force unused bits | |
| 136 | - val |= 0x7fb2007f; | |
| 135 | + // Force clear unused bits | |
| 136 | + val &= ~0x7fb2007f; | |
| 137 | 137 | s->intregm_disabled &= ~val; |
| 138 | 138 | break; |
| 139 | 139 | case 3: // set (disable, clear pending) |
| 140 | - // Force unused bits | |
| 140 | + // Force clear unused bits | |
| 141 | 141 | val &= ~0x7fb2007f; |
| 142 | 142 | s->intregm_disabled |= val; |
| 143 | 143 | s->intregm_pending &= ~val; |
| ... | ... | @@ -269,7 +269,7 @@ static void slavio_intctl_reset(void *opaque) |
| 269 | 269 | for (i = 0; i < MAX_CPUS; i++) { |
| 270 | 270 | s->intreg_pending[i] = 0; |
| 271 | 271 | } |
| 272 | - s->intregm_disabled = 0xffffffff; | |
| 272 | + s->intregm_disabled = ~0xffb2007f; | |
| 273 | 273 | s->intregm_pending = 0; |
| 274 | 274 | s->target_cpu = 0; |
| 275 | 275 | } | ... | ... |