Lines Matching +full:use +full:- +full:case

9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26 #include "hw/intc/ppc-uic.h"
28 #include "hw/qdev-properties.h"
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()
80 inc = -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()
94 LOG_UIC("Raise UIC critical interrupt - " 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()
108 mask = 1U << (31 - irq_num); in ppcuic_set_irq()
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()
146 dcrn -= uic->dcr_base; in dcr_read_uic()
148 case DCR_UICSR: in dcr_read_uic()
149 case DCR_UICSRS: in dcr_read_uic()
150 ret = uic->uicsr; in dcr_read_uic()
152 case DCR_UICER: in dcr_read_uic()
153 ret = uic->uicer; in dcr_read_uic()
155 case DCR_UICCR: in dcr_read_uic()
156 ret = uic->uiccr; in dcr_read_uic()
158 case DCR_UICPR: in dcr_read_uic()
159 ret = uic->uicpr; in dcr_read_uic()
161 case DCR_UICTR: in dcr_read_uic()
162 ret = uic->uictr; in dcr_read_uic()
164 case DCR_UICMSR: in dcr_read_uic()
165 ret = uic->uicsr & uic->uicer; in dcr_read_uic()
167 case DCR_UICVR: in dcr_read_uic()
168 if (!uic->use_vectors) { in dcr_read_uic()
171 ret = uic->uicvr; in dcr_read_uic()
173 case DCR_UICVCR: in dcr_read_uic()
174 if (!uic->use_vectors) { in dcr_read_uic()
177 ret = uic->uicvcr; in dcr_read_uic()
192 dcrn -= uic->dcr_base; in dcr_write_uic()
195 case DCR_UICSR: in dcr_write_uic()
196 uic->uicsr &= ~val; in dcr_write_uic()
197 uic->uicsr |= uic->level; in dcr_write_uic()
200 case DCR_UICSRS: in dcr_write_uic()
201 uic->uicsr |= val; in dcr_write_uic()
204 case DCR_UICER: in dcr_write_uic()
205 uic->uicer = val; in dcr_write_uic()
208 case DCR_UICCR: in dcr_write_uic()
209 uic->uiccr = val; in dcr_write_uic()
212 case DCR_UICPR: in dcr_write_uic()
213 uic->uicpr = val; in dcr_write_uic()
215 case DCR_UICTR: in dcr_write_uic()
216 uic->uictr = val; in dcr_write_uic()
219 case DCR_UICMSR: in dcr_write_uic()
221 case DCR_UICVR: in dcr_write_uic()
223 case DCR_UICVCR: in dcr_write_uic()
224 uic->uicvcr = val & 0xFFFFFFFD; in dcr_write_uic()
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()
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()
263 DEFINE_PROP_UINT32("dcr-base", PPCUIC, dcr_base, 0xc0),
264 DEFINE_PROP_BOOL("use-vectors", PPCUIC, use_vectors, true),
268 .name = "ppc-uic",
289 dc->realize = ppc_uic_realize; in ppc_uic_class_init()
290 dc->vmsd = &ppc_uic_vmstate; in ppc_uic_class_init()