144 |
switch (saddr) { |
switch (saddr) { |
145 |
case 2: // clear (enable) |
case 2: // clear (enable) |
146 |
// Force clear unused bits |
// Force clear unused bits |
147 |
val &= ~0x7fb2007f; |
val &= ~0x4fb2007f; |
148 |
s->intregm_disabled &= ~val; |
s->intregm_disabled &= ~val; |
149 |
DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); |
DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); |
150 |
slavio_check_interrupts(s); |
slavio_check_interrupts(s); |
151 |
break; |
break; |
152 |
case 3: // set (disable, clear pending) |
case 3: // set (disable, clear pending) |
153 |
// Force clear unused bits |
// Force clear unused bits |
154 |
val &= ~0x7fb2007f; |
val &= ~0x4fb2007f; |
155 |
s->intregm_disabled |= val; |
s->intregm_disabled |= val; |
156 |
s->intregm_pending &= ~val; |
s->intregm_pending &= ~val; |
157 |
DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); |
DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); |
208 |
|
|
209 |
static const uint32_t intbit_to_level[32] = { |
static const uint32_t intbit_to_level[32] = { |
210 |
2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, |
2, 3, 5, 7, 9, 11, 0, 14, 3, 5, 7, 9, 11, 13, 12, 12, |
211 |
6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 0, 0, |
6, 0, 4, 10, 8, 0, 11, 0, 0, 0, 0, 0, 15, 0, 15, 0, |
212 |
}; |
}; |
213 |
|
|
214 |
static void slavio_check_interrupts(void *opaque) |
static void slavio_check_interrupts(void *opaque) |