patch-2.4.0-test9 linux/include/asm-arm/arch-ebsa110/system.h
Next file: linux/include/asm-arm/arch-ebsa110/time.h
Previous file: linux/include/asm-arm/arch-ebsa110/serial.h
Back to the patch index
Back to the overall index
- Lines: 39
- Date:
Mon Sep 18 15:15:23 2000
- Orig file:
v2.4.0-test8/linux/include/asm-arm/arch-ebsa110/system.h
- Orig date:
Tue Jul 18 22:43:25 2000
diff -u --recursive --new-file v2.4.0-test8/linux/include/asm-arm/arch-ebsa110/system.h linux/include/asm-arm/arch-ebsa110/system.h
@@ -1,14 +1,25 @@
/*
- * linux/include/asm-arm/arch-ebsa110/system.h
+ * linux/include/asm-arm/arch-ebsa110/system.h
*
- * Copyright (c) 1996-1999 Russell King.
+ * Copyright (C) 1996-2000 Russell King.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
*/
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
/*
- * This machine must never stop it MCLK. However, if we are
- * idle for a long time, slow the processor clock to MCLK.
+ * EBSA110 idling methodology:
+ *
+ * We can not execute the "wait for interrupt" instruction since that
+ * will stop our MCLK signal (which provides the clock for the glue
+ * logic, and therefore the timer interrupt).
+ *
+ * Instead, we spin, waiting for either hlt_counter or need_resched
+ * to be set. If we have been spinning for 2cs, then we drop the
+ * core clock down to the memory clock.
*/
static void arch_idle(void)
{
@@ -19,7 +30,7 @@
do {
if (current->need_resched || hlt_counter)
goto slow_out;
- } while (time_before(start_idle, jiffies + HZ/3));
+ } while (time_before(jiffies, start_idle + HZ/50));
cpu_do_idle(IDLE_CLOCK_SLOW);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)