qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] sparc32 double "Set CPU IRQ 14"


From: Artyom Tarasenko
Subject: [Qemu-devel] sparc32 double "Set CPU IRQ 14"
Date: Thu, 6 Aug 2009 11:35:12 +0200

I observe double "Set CPU IRQ 14" in the log.  I don't see how  the
real harware would be able to generate the same irq twice, without
resetting it. I put a printf in cpuexec.c:

#elif defined(TARGET_SPARC)
                    if ((interrupt_request & CPU_INTERRUPT_HARD) &&
                        cpu_interrupts_enabled(env)) {
                        int pil = env->interrupt_index & 15;
                        int type = env->interrupt_index & 0xf0;

                        if (((type == TT_EXTINT) &&
                             (pil == 15 || pil > env->psrpil)) ||
                            type != TT_EXTINT) {
                            env->interrupt_request &= ~CPU_INTERRUPT_HARD;
                            env->exception_index = env->interrupt_index;
                            do_interrupt(env);
                            env->interrupt_index = 0;
#if !defined(CONFIG_USER_ONLY)
               printf("cpuexec calls cpu_check_irqs\n");
                            cpu_check_irqs(env);
#endif
                        next_tb = 0;
                        }


And now my log looks like this:

CPUIRQ: Raise CPU IRQ 14
CPUIRQ: Set CPU IRQ 14
cpuexec calls cpu_check_irqs
CPUIRQ: Set CPU IRQ 14

Does it look like cpuexec does an unnecessary call of cpu_check_irqs ?

I've removed this call, and see no difference: OBP works the same,
OpenBIOS too, NetBSD boot log also seems to be the same.

What this call is needed for?

Artyom




reply via email to

[Prev in Thread] Current Thread [Next in Thread]