system.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/include/asm-arm/arch-ebsa110/system.h
  3.  *
  4.  *  Copyright (C) 1996-2000 Russell King.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #ifndef __ASM_ARCH_SYSTEM_H
  11. #define __ASM_ARCH_SYSTEM_H
  12. /*
  13.  * EBSA110 idling methodology:
  14.  *
  15.  * We can not execute the "wait for interrupt" instruction since that
  16.  * will stop our MCLK signal (which provides the clock for the glue
  17.  * logic, and therefore the timer interrupt).
  18.  *
  19.  * Instead, we spin, waiting for either hlt_counter or need_resched
  20.  * to be set.  If we have been spinning for 2cs, then we drop the
  21.  * core clock down to the memory clock.
  22.  */
  23. static void arch_idle(void)
  24. {
  25. unsigned long start_idle;
  26. start_idle = jiffies;
  27. do {
  28. if (current->need_resched || hlt_counter)
  29. goto slow_out;
  30. } while (time_before(jiffies, start_idle + HZ/50));
  31. cpu_do_idle(IDLE_CLOCK_SLOW);
  32. while (!current->need_resched && !hlt_counter) {
  33. /* do nothing slowly */
  34. }
  35. cpu_do_idle(IDLE_CLOCK_FAST);
  36. slow_out:
  37. }
  38. #define arch_reset(mode) cpu_reset(0x80000000)
  39. #endif