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 --- |