Print this page
[mq]: core-v2


 216         /*NOTREACHED*/
 217 }
 218 
 219 /*
 220  * We use the x-trap mechanism and idle_stop_xcall() to stop the other CPUs.
 221  * Once in panic_idle() they raise spl, record their location, and spin.
 222  */
 223 static void
 224 panic_idle(void)
 225 {
 226         cpu_async_panic_callb(); /* check for async errors */
 227 
 228         (void) spl7();
 229 
 230         debug_flush_windows();
 231         (void) setjmp(&curthread->t_pcb);
 232 
 233         CPU->cpu_m.in_prom = 1;
 234         membar_stld();
 235 
 236         dumpsys_helper();
 237 
 238         for (;;)
 239                 continue;
 240 }
 241 
 242 /*
 243  * Force the other CPUs to trap into panic_idle(), and then remove them
 244  * from the cpu_ready_set so they will no longer receive cross-calls.
 245  */
 246 /*ARGSUSED*/
 247 void
 248 panic_stopcpus(cpu_t *cp, kthread_t *t, int spl)
 249 {
 250         cpuset_t cps;
 251         int i;
 252 
 253         (void) splzs();
 254         CPUSET_ALL_BUT(cps, cp->cpu_id);
 255         xt_some(cps, (xcfunc_t *)idle_stop_xcall, (uint64_t)&panic_idle, NULL);
 256 
 257         for (i = 0; i < NCPU; i++) {




 216         /*NOTREACHED*/
 217 }
 218 
 219 /*
 220  * We use the x-trap mechanism and idle_stop_xcall() to stop the other CPUs.
 221  * Once in panic_idle() they raise spl, record their location, and spin.
 222  */
 223 static void
 224 panic_idle(void)
 225 {
 226         cpu_async_panic_callb(); /* check for async errors */
 227 
 228         (void) spl7();
 229 
 230         debug_flush_windows();
 231         (void) setjmp(&curthread->t_pcb);
 232 
 233         CPU->cpu_m.in_prom = 1;
 234         membar_stld();
 235 


 236         for (;;)
 237                 continue;
 238 }
 239 
 240 /*
 241  * Force the other CPUs to trap into panic_idle(), and then remove them
 242  * from the cpu_ready_set so they will no longer receive cross-calls.
 243  */
 244 /*ARGSUSED*/
 245 void
 246 panic_stopcpus(cpu_t *cp, kthread_t *t, int spl)
 247 {
 248         cpuset_t cps;
 249         int i;
 250 
 251         (void) splzs();
 252         CPUSET_ALL_BUT(cps, cp->cpu_id);
 253         xt_some(cps, (xcfunc_t *)idle_stop_xcall, (uint64_t)&panic_idle, NULL);
 254 
 255         for (i = 0; i < NCPU; i++) {