pic_cpu.c (44423107e7b5731ef40c5c8632a5bad8b49d0838) pic_cpu.c (d73415a315471ac0b127ed3fad45c8ec5d711de1)
1/*
2 * Copyright (c) 2011, Max Filippov, Open Source and Linux Lab.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.

--- 58 unchanged lines hidden (view full) ---

67 CPUXtensaState *env = opaque;
68
69 if (irq >= env->config->ninterrupt) {
70 qemu_log("%s: bad IRQ %d\n", __func__, irq);
71 } else {
72 uint32_t irq_bit = 1 << irq;
73
74 if (active) {
1/*
2 * Copyright (c) 2011, Max Filippov, Open Source and Linux Lab.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.

--- 58 unchanged lines hidden (view full) ---

67 CPUXtensaState *env = opaque;
68
69 if (irq >= env->config->ninterrupt) {
70 qemu_log("%s: bad IRQ %d\n", __func__, irq);
71 } else {
72 uint32_t irq_bit = 1 << irq;
73
74 if (active) {
75 atomic_or(&env->sregs[INTSET], irq_bit);
75 qatomic_or(&env->sregs[INTSET], irq_bit);
76 } else if (env->config->interrupt[irq].inttype == INTTYPE_LEVEL) {
76 } else if (env->config->interrupt[irq].inttype == INTTYPE_LEVEL) {
77 atomic_and(&env->sregs[INTSET], ~irq_bit);
77 qatomic_and(&env->sregs[INTSET], ~irq_bit);
78 }
79
80 check_interrupts(env);
81 }
82}
83
84static void xtensa_ccompare_cb(void *opaque)
85{

--- 45 unchanged lines hidden ---
78 }
79
80 check_interrupts(env);
81 }
82}
83
84static void xtensa_ccompare_cb(void *opaque)
85{

--- 45 unchanged lines hidden ---