[Top][All Lists]
[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
- [Qemu-devel] sparc32 double "Set CPU IRQ 14",
Artyom Tarasenko <=