Print this page
[mq]: core-v2


 344         CPU_SIGNATURE(OS_SIG, SIGST_EXIT, SIGSUBST_REBOOT, -1);
 345         prom_reboot(bootstr);
 346         /*NOTREACHED*/
 347 }
 348 
 349 /*
 350  * We use the x-trap mechanism and idle_stop_xcall() to stop the other CPUs.
 351  * Once in panic_idle() they raise spl, record their location, and spin.
 352  */
 353 static void
 354 panic_idle(void)
 355 {
 356         (void) spl7();
 357 
 358         debug_flush_windows();
 359         (void) setjmp(&curthread->t_pcb);
 360 
 361         CPU->cpu_m.in_prom = 1;
 362         membar_stld();
 363 
 364         dumpsys_helper();
 365 
 366         for (;;)
 367                 ;
 368 }
 369 
 370 /*
 371  * Force the other CPUs to trap into panic_idle(), and then remove them
 372  * from the cpu_ready_set so they will no longer receive cross-calls.
 373  */
 374 /*ARGSUSED*/
 375 void
 376 panic_stopcpus(cpu_t *cp, kthread_t *t, int spl)
 377 {
 378         cpuset_t cps;
 379         int i;
 380 
 381         (void) splzs();
 382         CPUSET_ALL_BUT(cps, cp->cpu_id);
 383         xt_some(cps, (xcfunc_t *)idle_stop_xcall, (uint64_t)&panic_idle, NULL);
 384 
 385         for (i = 0; i < NCPU; i++) {




 344         CPU_SIGNATURE(OS_SIG, SIGST_EXIT, SIGSUBST_REBOOT, -1);
 345         prom_reboot(bootstr);
 346         /*NOTREACHED*/
 347 }
 348 
 349 /*
 350  * We use the x-trap mechanism and idle_stop_xcall() to stop the other CPUs.
 351  * Once in panic_idle() they raise spl, record their location, and spin.
 352  */
 353 static void
 354 panic_idle(void)
 355 {
 356         (void) spl7();
 357 
 358         debug_flush_windows();
 359         (void) setjmp(&curthread->t_pcb);
 360 
 361         CPU->cpu_m.in_prom = 1;
 362         membar_stld();
 363 


 364         for (;;)
 365                 ;
 366 }
 367 
 368 /*
 369  * Force the other CPUs to trap into panic_idle(), and then remove them
 370  * from the cpu_ready_set so they will no longer receive cross-calls.
 371  */
 372 /*ARGSUSED*/
 373 void
 374 panic_stopcpus(cpu_t *cp, kthread_t *t, int spl)
 375 {
 376         cpuset_t cps;
 377         int i;
 378 
 379         (void) splzs();
 380         CPUSET_ALL_BUT(cps, cp->cpu_id);
 381         xt_some(cps, (xcfunc_t *)idle_stop_xcall, (uint64_t)&panic_idle, NULL);
 382 
 383         for (i = 0; i < NCPU; i++) {