Lines Matching refs:cpu

102 	struct cpu *cpu = CPU;  in apix_remove_pending_av()  local
110 if (avp->av_vector != NULL && avp->av_prilevel < cpu->cpu_base_spl) { in apix_remove_pending_av()
230 apix_do_softint_prolog(struct cpu *cpu, uint_t pil, uint_t oldpil, in apix_do_softint_prolog() argument
234 struct machcpu *mcpu = &cpu->cpu_m; in apix_do_softint_prolog()
238 ASSERT(pil > mcpu->mcpu_pri && pil > cpu->cpu_base_spl); in apix_do_softint_prolog()
251 it = cpu->cpu_intr_thread; in apix_do_softint_prolog()
253 cpu->cpu_intr_thread = it->t_link; in apix_do_softint_prolog()
256 t = cpu->cpu_thread; in apix_do_softint_prolog()
260 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_do_softint_prolog()
284 cpu->cpu_thread = it; in apix_do_softint_prolog()
290 ASSERT((cpu->cpu_intr_actv & (1 << pil)) == 0); in apix_do_softint_prolog()
291 cpu->cpu_intr_actv |= (1 << pil); in apix_do_softint_prolog()
304 apix_do_softint_epilog(struct cpu *cpu, uint_t oldpil) in apix_do_softint_epilog() argument
306 struct machcpu *mcpu = &cpu->cpu_m; in apix_do_softint_epilog()
312 it = cpu->cpu_thread; in apix_do_softint_epilog()
315 cpu->cpu_stats.sys.intr[pil - 1]++; in apix_do_softint_epilog()
317 ASSERT(cpu->cpu_intr_actv & (1 << pil)); in apix_do_softint_epilog()
318 cpu->cpu_intr_actv &= ~(1 << pil); in apix_do_softint_epilog()
322 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_do_softint_epilog()
341 if (apixs[cpu->cpu_id]->x_intr_pending) in apix_do_softint_epilog()
345 it->t_link = cpu->cpu_intr_thread; in apix_do_softint_epilog()
346 cpu->cpu_intr_thread = it; in apix_do_softint_epilog()
353 it->t_link = cpu->cpu_intr_thread; in apix_do_softint_epilog()
354 cpu->cpu_intr_thread = it; in apix_do_softint_epilog()
357 cpu->cpu_thread = t; in apix_do_softint_epilog()
361 basespl = cpu->cpu_base_spl; in apix_do_softint_epilog()
372 struct cpu *cpu = CPU; in apix_dispatch_softint() local
377 av_dispatch_softvect((int)cpu->cpu_thread->t_pil); in apix_dispatch_softint()
384 apix_do_softint_epilog(cpu, oldpil); in apix_dispatch_softint()
394 struct cpu *cpu = CPU; in apix_do_softint() local
400 while ((pending = cpu->cpu_softinfo.st_pending) != 0) { in apix_do_softint()
402 oldipl = cpu->cpu_pri; in apix_do_softint()
403 if (newipl <= oldipl || newipl <= cpu->cpu_base_spl) in apix_do_softint()
406 newsp = apix_do_softint_prolog(cpu, newipl, oldipl, in apix_do_softint()
416 apix_hilevel_intr_prolog(struct cpu *cpu, uint_t pil, uint_t oldpil, in apix_hilevel_intr_prolog() argument
419 struct machcpu *mcpu = &cpu->cpu_m; in apix_hilevel_intr_prolog()
422 apix_impl_t *apixp = apixs[cpu->cpu_id]; in apix_hilevel_intr_prolog()
425 ASSERT(pil > mcpu->mcpu_pri && pil > cpu->cpu_base_spl); in apix_hilevel_intr_prolog()
428 cpu->cpu_profile_pil = oldpil; in apix_hilevel_intr_prolog()
430 cpu->cpu_profile_pc = 0; in apix_hilevel_intr_prolog()
431 cpu->cpu_profile_upc = rp->r_pc; in apix_hilevel_intr_prolog()
432 cpu->cpu_cpcprofile_pc = 0; in apix_hilevel_intr_prolog()
433 cpu->cpu_cpcprofile_upc = rp->r_pc; in apix_hilevel_intr_prolog()
435 cpu->cpu_profile_pc = rp->r_pc; in apix_hilevel_intr_prolog()
436 cpu->cpu_profile_upc = 0; in apix_hilevel_intr_prolog()
437 cpu->cpu_cpcprofile_pc = rp->r_pc; in apix_hilevel_intr_prolog()
438 cpu->cpu_cpcprofile_upc = 0; in apix_hilevel_intr_prolog()
444 mask = cpu->cpu_intr_actv & CPU_INTR_ACTV_HIGH_LEVEL_MASK; in apix_hilevel_intr_prolog()
457 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_hilevel_intr_prolog()
459 kthread_t *t = cpu->cpu_thread; in apix_hilevel_intr_prolog()
469 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_hilevel_intr_prolog()
486 uint16_t *refcntp = (uint16_t *)&cpu->cpu_intr_actv + 1; in apix_hilevel_intr_prolog()
490 cpu->cpu_intr_actv |= (1 << pil); in apix_hilevel_intr_prolog()
498 apix_hilevel_intr_epilog(struct cpu *cpu, uint_t oldpil) in apix_hilevel_intr_epilog() argument
500 struct machcpu *mcpu = &cpu->cpu_m; in apix_hilevel_intr_epilog()
506 cpu->cpu_stats.sys.intr[pil - 1]++; in apix_hilevel_intr_epilog()
508 ASSERT(cpu->cpu_intr_actv & (1 << pil)); in apix_hilevel_intr_epilog()
517 uint16_t *refcntp = (uint16_t *)&cpu->cpu_intr_actv + 1; in apix_hilevel_intr_epilog()
522 cpu->cpu_intr_actv &= ~(1 << pil); in apix_hilevel_intr_epilog()
524 cpu->cpu_intr_actv &= ~(1 << pil); in apix_hilevel_intr_epilog()
531 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_hilevel_intr_epilog()
538 mask = cpu->cpu_intr_actv & CPU_INTR_ACTV_HIGH_LEVEL_MASK; in apix_hilevel_intr_epilog()
560 kthread_t *t = cpu->cpu_thread; in apix_hilevel_intr_epilog()
587 apix_do_pending_hilevel(struct cpu *cpu, struct regs *rp) in apix_do_pending_hilevel() argument
593 while ((pending = HILEVEL_PENDING(cpu)) != 0) { in apix_do_pending_hilevel()
595 ASSERT(newipl > LOCK_LEVEL && newipl > cpu->cpu_base_spl); in apix_do_pending_hilevel()
596 oldipl = cpu->cpu_pri; in apix_do_pending_hilevel()
603 if (apix_hilevel_intr_prolog(cpu, newipl, oldipl, rp) == 0) { in apix_do_pending_hilevel()
604 newsp = cpu->cpu_intr_stack; in apix_do_pending_hilevel()
610 (void) apix_hilevel_intr_epilog(cpu, oldipl); in apix_do_pending_hilevel()
622 apix_intr_thread_prolog(struct cpu *cpu, uint_t pil, caddr_t stackptr) in apix_intr_thread_prolog() argument
624 apix_impl_t *apixp = apixs[cpu->cpu_id]; in apix_intr_thread_prolog()
625 struct machcpu *mcpu = &cpu->cpu_m; in apix_intr_thread_prolog()
629 ASSERT(pil > mcpu->mcpu_pri && pil > cpu->cpu_base_spl); in apix_intr_thread_prolog()
632 ASSERT((cpu->cpu_intr_actv & (1 << pil)) == 0); in apix_intr_thread_prolog()
633 cpu->cpu_intr_actv |= (1 << pil); in apix_intr_thread_prolog()
642 t = cpu->cpu_thread; in apix_intr_thread_prolog()
646 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_intr_thread_prolog()
667 it = cpu->cpu_intr_thread; in apix_intr_thread_prolog()
668 cpu->cpu_intr_thread = it->t_link; in apix_intr_thread_prolog()
679 cpu->cpu_thread = it; in apix_intr_thread_prolog()
693 apix_intr_thread_epilog(struct cpu *cpu, uint_t oldpil) in apix_intr_thread_epilog() argument
695 struct machcpu *mcpu = &cpu->cpu_m; in apix_intr_thread_epilog()
696 kthread_t *t, *it = cpu->cpu_thread; in apix_intr_thread_epilog()
702 cpu->cpu_stats.sys.intr[pil - 1]++; in apix_intr_thread_epilog()
704 ASSERT(cpu->cpu_intr_actv & (1 << pil)); in apix_intr_thread_epilog()
705 cpu->cpu_intr_actv &= ~(1 << pil); in apix_intr_thread_epilog()
710 cpu->cpu_intracct[cpu->cpu_mstate] += intrtime; in apix_intr_thread_epilog()
730 cpu->cpu_stats.sys.intrblk++; in apix_intr_thread_epilog()
737 basespl = cpu->cpu_base_spl; in apix_intr_thread_epilog()
745 if (apixs[cpu->cpu_id]->x_intr_pending) in apix_intr_thread_epilog()
752 it->t_link = cpu->cpu_intr_thread; in apix_intr_thread_epilog()
753 cpu->cpu_intr_thread = it; in apix_intr_thread_epilog()
765 it->t_link = cpu->cpu_intr_thread; in apix_intr_thread_epilog()
766 cpu->cpu_intr_thread = it; in apix_intr_thread_epilog()
770 cpu->cpu_thread = t; in apix_intr_thread_epilog()
774 basespl = cpu->cpu_base_spl; in apix_intr_thread_epilog()
783 struct cpu *cpu = CPU; in apix_dispatch_pending_hardint() local
787 apix_dispatch_pending_autovect((int)cpu->cpu_thread->t_pil); in apix_dispatch_pending_hardint()
793 apix_intr_thread_epilog(cpu, oldpil); in apix_dispatch_pending_hardint()
797 apix_do_pending_hardint(struct cpu *cpu, struct regs *rp) in apix_do_pending_hardint() argument
803 while ((pending = LOWLEVEL_PENDING(cpu)) != 0) { in apix_do_pending_hardint()
806 oldipl = cpu->cpu_pri; in apix_do_pending_hardint()
807 if (newipl <= oldipl || newipl <= cpu->cpu_base_spl) in apix_do_pending_hardint()
813 newsp = apix_intr_thread_prolog(cpu, newipl, (caddr_t)rp); in apix_do_pending_hardint()
839 struct cpu *cpu = CPU; in apix_dispatch_by_vector() local
840 apix_vector_t *vecp = xv_vector(cpu->cpu_id, vector); in apix_dispatch_by_vector()
881 struct cpu *cpu = CPU; in apix_dispatch_lowlevel() local
889 apix_intr_thread_epilog(cpu, oldipl); in apix_dispatch_lowlevel()
898 struct cpu *cpu = CPU; in apix_do_interrupt() local
899 int vector = rp->r_trapno, newipl, oldipl = cpu->cpu_pri, ret; in apix_do_interrupt()
904 ttp->ttr_cpuid = cpu->cpu_id; in apix_do_interrupt()
907 ttp->ttr_spl = cpu->cpu_base_spl; in apix_do_interrupt()
913 ++*(uint16_t *)&cpu->cpu_m.mcpu_istamp; in apix_do_interrupt()
926 (void) apix_do_pending_hilevel(cpu, rp); in apix_do_interrupt()
927 (void) apix_do_pending_hardint(cpu, rp); in apix_do_interrupt()
955 vecp = xv_vector(cpu->cpu_id, vector); in apix_do_interrupt()
964 newipl > MAX(oldipl, cpu->cpu_base_spl)) { in apix_do_interrupt()
967 if (INTR_PENDING(apixs[cpu->cpu_id], newipl)) { in apix_do_interrupt()
975 if (apix_hilevel_intr_prolog(cpu, newipl, oldipl, rp) in apix_do_interrupt()
977 newsp = cpu->cpu_intr_stack; in apix_do_interrupt()
983 (void) apix_hilevel_intr_epilog(cpu, oldipl); in apix_do_interrupt()
985 newsp = apix_intr_thread_prolog(cpu, newipl, in apix_do_interrupt()
993 if (newipl <= MAX(oldipl, cpu->cpu_base_spl) || in apix_do_interrupt()
994 !apixs[cpu->cpu_id]->x_intr_pending) in apix_do_interrupt()
999 if (apix_do_pending_hilevel(cpu, rp) < 0) in apix_do_interrupt()
1003 ret = apix_do_pending_hardint(cpu, rp); in apix_do_interrupt()
1009 } while (!ret && LOWLEVEL_PENDING(cpu)); in apix_do_interrupt()