root/arch/sh/kernel/idle.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. default_idle
  2. arch_cpu_idle_dead
  3. arch_cpu_idle
  4. select_idle_routine
  5. stop_this_cpu

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * The idle loop for all SuperH platforms.
   4  *
   5  *  Copyright (C) 2002 - 2009  Paul Mundt
   6  */
   7 #include <linux/module.h>
   8 #include <linux/init.h>
   9 #include <linux/mm.h>
  10 #include <linux/pm.h>
  11 #include <linux/tick.h>
  12 #include <linux/preempt.h>
  13 #include <linux/thread_info.h>
  14 #include <linux/irqflags.h>
  15 #include <linux/smp.h>
  16 #include <linux/atomic.h>
  17 #include <asm/pgalloc.h>
  18 #include <asm/smp.h>
  19 #include <asm/bl_bit.h>
  20 
  21 static void (*sh_idle)(void);
  22 
  23 void default_idle(void)
  24 {
  25         set_bl_bit();
  26         local_irq_enable();
  27         /* Isn't this racy ? */
  28         cpu_sleep();
  29         clear_bl_bit();
  30 }
  31 
  32 void arch_cpu_idle_dead(void)
  33 {
  34         play_dead();
  35 }
  36 
  37 void arch_cpu_idle(void)
  38 {
  39         sh_idle();
  40 }
  41 
  42 void __init select_idle_routine(void)
  43 {
  44         /*
  45          * If a platform has set its own idle routine, leave it alone.
  46          */
  47         if (!sh_idle)
  48                 sh_idle = default_idle;
  49 }
  50 
  51 void stop_this_cpu(void *unused)
  52 {
  53         local_irq_disable();
  54         set_cpu_online(smp_processor_id(), false);
  55 
  56         for (;;)
  57                 cpu_sleep();
  58 }

/* [<][>][^][v][top][bottom][index][help] */