Print this page
[mq]: core-v2


  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;