55 mutex_init(&cpu_idle_lock, NULL, MUTEX_SPIN, (void *)ipltospl(PIL_15));
56 }
57
58 static void
59 cpu_idle_self(void)
60 {
61 uint_t s;
62 label_t save;
63
64 s = spl8();
65 debug_flush_windows();
66
67 CPU->cpu_m.in_prom = 1;
68 membar_stld();
69
70 save = curthread->t_pcb;
71 (void) setjmp(&curthread->t_pcb);
72
73 kern_idle[CPU->cpu_id] = 1;
74 while (kern_idle[CPU->cpu_id])
75 dumpsys_helper_nw();
76
77 CPU->cpu_m.in_prom = 0;
78 membar_stld();
79
80 curthread->t_pcb = save;
81 splx(s);
82 }
83
84 void
85 idle_other_cpus(void)
86 {
87 int i, cpuid, ntries;
88 int failed = 0;
89
90 if (ncpus == 1)
91 return;
92
93 mutex_enter(&cpu_idle_lock);
94
95 cpuid = CPU->cpu_id;
|
55 mutex_init(&cpu_idle_lock, NULL, MUTEX_SPIN, (void *)ipltospl(PIL_15));
56 }
57
58 static void
59 cpu_idle_self(void)
60 {
61 uint_t s;
62 label_t save;
63
64 s = spl8();
65 debug_flush_windows();
66
67 CPU->cpu_m.in_prom = 1;
68 membar_stld();
69
70 save = curthread->t_pcb;
71 (void) setjmp(&curthread->t_pcb);
72
73 kern_idle[CPU->cpu_id] = 1;
74 while (kern_idle[CPU->cpu_id])
75 /* SPIN */;
76
77 CPU->cpu_m.in_prom = 0;
78 membar_stld();
79
80 curthread->t_pcb = save;
81 splx(s);
82 }
83
84 void
85 idle_other_cpus(void)
86 {
87 int i, cpuid, ntries;
88 int failed = 0;
89
90 if (ncpus == 1)
91 return;
92
93 mutex_enter(&cpu_idle_lock);
94
95 cpuid = CPU->cpu_id;
|