Patchwork [1/4] sparc32: refactor cpu_idle()

login
register
mail settings
Submitter Sam Ravnborg
Date May 26, 2012, 2:43 p.m.
Message ID <1338043409-6827-1-git-send-email-sam@ravnborg.org>
Download mbox | patch
Permalink /patch/161487/
State Superseded
Delegated to: David Miller
Headers show

Comments

Sam Ravnborg - May 26, 2012, 2:43 p.m.
With the removal of sun4c we can use the same cpu_idle()
implementation on UP and SMP.
This also fix it so we use the same version independent on LEON
enabled or not.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Konrad Eisele <konrad@gaisler.com>
---
 arch/sparc/kernel/process_32.c |   28 ++--------------------------
 1 files changed, 2 insertions(+), 26 deletions(-)
Josip Rodin - May 27, 2012, 9:15 p.m.
On Sat, May 26, 2012 at 04:43:26PM +0200, Sam Ravnborg wrote:
> With the removal of sun4c we can use the same cpu_idle()
> implementation on UP and SMP.
> This also fix it so we use the same version independent on LEON
> enabled or not.
> 
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Daniel Hellstrom <daniel@gaisler.com>
> Cc: Konrad Eisele <konrad@gaisler.com>
> ---
>  arch/sparc/kernel/process_32.c |   28 ++--------------------------
>  1 files changed, 2 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
> index fe6787c..7d6f60e 100644
> --- a/arch/sparc/kernel/process_32.c
> +++ b/arch/sparc/kernel/process_32.c
> @@ -65,13 +65,13 @@ extern void fpsave(unsigned long *, unsigned long *, void *, unsigned long *);
>  struct task_struct *last_task_used_math = NULL;
>  struct thread_info *current_set[NR_CPUS];
>  
> -#ifndef CONFIG_SMP
> -
>  /*
>   * the idle loop on a Sparc... ;)
>   */
>  void cpu_idle(void)
>  {
> +        set_thread_flag(TIF_POLLING_NRFLAG);

That seems to be 8 spaces instead of a tab there.

Patch

diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index fe6787c..7d6f60e 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -65,13 +65,13 @@  extern void fpsave(unsigned long *, unsigned long *, void *, unsigned long *);
 struct task_struct *last_task_used_math = NULL;
 struct thread_info *current_set[NR_CPUS];
 
-#ifndef CONFIG_SMP
-
 /*
  * the idle loop on a Sparc... ;)
  */
 void cpu_idle(void)
 {
+        set_thread_flag(TIF_POLLING_NRFLAG);
+
 	/* endless idle loop with no priority at all */
 	for (;;) {
 		if (pm_idle) {
@@ -85,30 +85,6 @@  void cpu_idle(void)
 	}
 }
 
-#else
-
-/* This is being executed in task 0 'user space'. */
-void cpu_idle(void)
-{
-        set_thread_flag(TIF_POLLING_NRFLAG);
-	/* endless idle loop with no priority at all */
-	while(1) {
-#ifdef CONFIG_SPARC_LEON
-		if (pm_idle) {
-			while (!need_resched())
-				(*pm_idle)();
-		} else
-#endif
-		{
-			while (!need_resched())
-				cpu_relax();
-		}
-		schedule_preempt_disabled();
-	}
-}
-
-#endif
-
 /* XXX cli/sti -> local_irq_xxx here, check this works once SMP is fixed. */
 void machine_halt(void)
 {