Index: kern/kern_idle.c =================================================================== RCS file: /cvsroot/src/sys/kern/kern_idle.c,v retrieving revision 1.25 diff -u -u -r1.25 kern_idle.c --- kern/kern_idle.c 29 Jan 2012 22:55:40 -0000 1.25 +++ kern/kern_idle.c 15 May 2017 12:48:35 -0000 @@ -42,6 +42,9 @@ #include /* uvm_pageidlezero */ #include +extern void footbridge_status(void); + +int idledebug = 0; void idle_loop(void *dummy) { @@ -79,6 +82,9 @@ KASSERT(l->l_priority == PRI_IDLE); sched_idle(); + if (idledebug) { + footbridge_status(); + } if (!sched_curcpu_runnable_p()) { if ((spc->spc_flags & SPCF_OFFLINE) == 0) { uvm_pageidlezero(); Index: arch/arm/footbridge/footbridge_irqhandler.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/footbridge/footbridge_irqhandler.c,v retrieving revision 1.25 diff -u -u -r1.25 footbridge_irqhandler.c --- arch/arm/footbridge/footbridge_irqhandler.c 2 Apr 2014 11:35:36 -0000 1.25 +++ arch/arm/footbridge/footbridge_irqhandler.c 15 May 2017 12:48:36 -0000 @@ -281,6 +281,19 @@ return ((volatile uint32_t*)(DC21285_ARMCSR_VBASE))[IRQ_STATUS>>2]; } +void +footbridge_status(void); +void +footbridge_status(void) +{ + struct cpu_info * const ci = curcpu(); + for (size_t i = 0; i < NIPL; i++) + printf("ipl%zu: %#x\n", i, footbridge_imask[i]); + printf("pending=%#x\n", footbridge_intstatus()); + printf("cpl=%d\n", ci->ci_cpl); +} + + /* called with external interrupts disabled */ void footbridge_intr_dispatch(struct clockframe *frame)