Revision 7a3161ba hw/etraxfs_ser.c
b/hw/etraxfs_ser.c | ||
---|---|---|
67 | 67 |
|
68 | 68 |
static void ser_update_irq(struct etrax_serial_t *s) |
69 | 69 |
{ |
70 |
uint32_t o_irq = s->r_masked_intr; |
|
71 |
|
|
72 | 70 |
s->r_intr &= ~(s->rw_ack_intr); |
73 | 71 |
s->r_masked_intr = s->r_intr & s->rw_intr_mask; |
74 | 72 |
|
75 |
if (o_irq != s->r_masked_intr) { |
|
76 |
D(printf("irq_mask=%x r_intr=%x rmi=%x airq=%x \n", |
|
77 |
s->rw_intr_mask, s->r_intr, |
|
78 |
s->r_masked_intr, s->rw_ack_intr)); |
|
79 |
if (s->r_masked_intr) |
|
80 |
qemu_irq_raise(s->irq[0]); |
|
81 |
else |
|
82 |
qemu_irq_lower(s->irq[0]); |
|
83 |
} |
|
73 |
D(printf("irq_mask=%x r_intr=%x rmi=%x airq=%x \n", |
|
74 |
s->rw_intr_mask, s->r_intr, |
|
75 |
s->r_masked_intr, s->rw_ack_intr)); |
|
76 |
qemu_set_irq(s->irq[0], !!s->r_masked_intr); |
|
84 | 77 |
s->rw_ack_intr = 0; |
85 | 78 |
} |
86 | 79 |
|
87 |
|
|
88 | 80 |
static uint32_t ser_readb (void *opaque, target_phys_addr_t addr) |
89 | 81 |
{ |
90 | 82 |
D(CPUState *env = opaque); |
Also available in: Unified diff