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