Lines Matching refs:uic

52 static void ppcuic_trigger_irq(PPCUIC *uic)  in ppcuic_trigger_irq()  argument
58 ir = uic->uicsr & uic->uicer & (~uic->uiccr); in ppcuic_trigger_irq()
59 cr = uic->uicsr & uic->uicer & uic->uiccr; in ppcuic_trigger_irq()
63 __func__, uic->uicsr, uic->uicer, uic->uiccr, in ppcuic_trigger_irq()
64 uic->uicsr & uic->uicer, ir, cr); in ppcuic_trigger_irq()
67 qemu_irq_raise(uic->output_int); in ppcuic_trigger_irq()
70 qemu_irq_lower(uic->output_int); in ppcuic_trigger_irq()
74 qemu_irq_raise(uic->output_cint); in ppcuic_trigger_irq()
75 if (uic->use_vectors) { in ppcuic_trigger_irq()
77 if (uic->uicvcr & 1) { in ppcuic_trigger_irq()
86 uic->uicvr = uic->uicvcr & 0xFFFFFFFC; in ppcuic_trigger_irq()
89 uic->uicvr += (i - start) * 512 * inc; in ppcuic_trigger_irq()
95 "vector %08" PRIx32 "\n", uic->uicvr); in ppcuic_trigger_irq()
98 qemu_irq_lower(uic->output_cint); in ppcuic_trigger_irq()
99 uic->uicvr = 0x00000000; in ppcuic_trigger_irq()
105 PPCUIC *uic = opaque; in ppcuic_set_irq() local
112 uic->uicsr, mask, uic->uicsr & mask, level << irq_num); in ppcuic_set_irq()
116 sr = uic->uicsr; in ppcuic_set_irq()
119 if (uic->uictr & mask) { in ppcuic_set_irq()
122 uic->uicsr |= mask; in ppcuic_set_irq()
127 uic->uicsr |= mask; in ppcuic_set_irq()
128 uic->level |= mask; in ppcuic_set_irq()
130 uic->uicsr &= ~mask; in ppcuic_set_irq()
131 uic->level &= ~mask; in ppcuic_set_irq()
135 "%08" PRIx32 "\n", __func__, irq_num, level, uic->uicsr, sr); in ppcuic_set_irq()
136 if (sr != uic->uicsr) { in ppcuic_set_irq()
137 ppcuic_trigger_irq(uic); in ppcuic_set_irq()
143 PPCUIC *uic = opaque; in dcr_read_uic() local
146 dcrn -= uic->dcr_base; in dcr_read_uic()
150 ret = uic->uicsr; in dcr_read_uic()
153 ret = uic->uicer; in dcr_read_uic()
156 ret = uic->uiccr; in dcr_read_uic()
159 ret = uic->uicpr; in dcr_read_uic()
162 ret = uic->uictr; in dcr_read_uic()
165 ret = uic->uicsr & uic->uicer; in dcr_read_uic()
168 if (!uic->use_vectors) { in dcr_read_uic()
171 ret = uic->uicvr; in dcr_read_uic()
174 if (!uic->use_vectors) { in dcr_read_uic()
177 ret = uic->uicvcr; in dcr_read_uic()
190 PPCUIC *uic = opaque; in dcr_write_uic() local
192 dcrn -= uic->dcr_base; in dcr_write_uic()
196 uic->uicsr &= ~val; in dcr_write_uic()
197 uic->uicsr |= uic->level; in dcr_write_uic()
198 ppcuic_trigger_irq(uic); in dcr_write_uic()
201 uic->uicsr |= val; in dcr_write_uic()
202 ppcuic_trigger_irq(uic); in dcr_write_uic()
205 uic->uicer = val; in dcr_write_uic()
206 ppcuic_trigger_irq(uic); in dcr_write_uic()
209 uic->uiccr = val; in dcr_write_uic()
210 ppcuic_trigger_irq(uic); in dcr_write_uic()
213 uic->uicpr = val; in dcr_write_uic()
216 uic->uictr = val; in dcr_write_uic()
217 ppcuic_trigger_irq(uic); in dcr_write_uic()
224 uic->uicvcr = val & 0xFFFFFFFD; in dcr_write_uic()
225 ppcuic_trigger_irq(uic); in dcr_write_uic()
232 PPCUIC *uic = PPC_UIC(dev); in ppc_uic_reset() local
234 uic->uiccr = 0x00000000; in ppc_uic_reset()
235 uic->uicer = 0x00000000; in ppc_uic_reset()
236 uic->uicpr = 0x00000000; in ppc_uic_reset()
237 uic->uicsr = 0x00000000; in ppc_uic_reset()
238 uic->uictr = 0x00000000; in ppc_uic_reset()
239 if (uic->use_vectors) { in ppc_uic_reset()
240 uic->uicvcr = 0x00000000; in ppc_uic_reset()
241 uic->uicvr = 0x0000000; in ppc_uic_reset()
247 PPCUIC *uic = PPC_UIC(dev); in ppc_uic_realize() local
253 ppc4xx_dcr_register(dcr, uic->dcr_base + i, uic, in ppc_uic_realize()
257 sysbus_init_irq(sbd, &uic->output_int); in ppc_uic_realize()
258 sysbus_init_irq(sbd, &uic->output_cint); in ppc_uic_realize()