Revision 6bae7071 hw/slavio_intctl.c
b/hw/slavio_intctl.c | ||
---|---|---|
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 | 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 | 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 |
} |
Also available in: Unified diff