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