aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/sun4d_smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/sun4d_smp.c')
-rw-r--r--arch/sparc/kernel/sun4d_smp.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index 69596402a500..7a6a5e795928 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -20,6 +20,7 @@
20#include <linux/swap.h> 20#include <linux/swap.h>
21#include <linux/profile.h> 21#include <linux/profile.h>
22#include <linux/delay.h> 22#include <linux/delay.h>
23#include <linux/cpu.h>
23 24
24#include <asm/ptrace.h> 25#include <asm/ptrace.h>
25#include <asm/atomic.h> 26#include <asm/atomic.h>
@@ -30,7 +31,6 @@
30#include <asm/pgalloc.h> 31#include <asm/pgalloc.h>
31#include <asm/pgtable.h> 32#include <asm/pgtable.h>
32#include <asm/oplib.h> 33#include <asm/oplib.h>
33#include <asm/sbus.h>
34#include <asm/sbi.h> 34#include <asm/sbi.h>
35#include <asm/tlbflush.h> 35#include <asm/tlbflush.h>
36#include <asm/cacheflush.h> 36#include <asm/cacheflush.h>
@@ -72,6 +72,17 @@ static void smp_setup_percpu_timer(void);
72extern void cpu_probe(void); 72extern void cpu_probe(void);
73extern void sun4d_distribute_irqs(void); 73extern void sun4d_distribute_irqs(void);
74 74
75static unsigned char cpu_leds[32];
76
77static inline void show_leds(int cpuid)
78{
79 cpuid &= 0x1e;
80 __asm__ __volatile__ ("stba %0, [%1] %2" : :
81 "r" ((cpu_leds[cpuid] << 4) | cpu_leds[cpuid+1]),
82 "r" (ECSR_BASE(cpuid) | BB_LEDS),
83 "i" (ASI_M_CTL));
84}
85
75void __init smp4d_callin(void) 86void __init smp4d_callin(void)
76{ 87{
77 int cpuid = hard_smp4d_processor_id(); 88 int cpuid = hard_smp4d_processor_id();
@@ -88,6 +99,7 @@ void __init smp4d_callin(void)
88 local_flush_cache_all(); 99 local_flush_cache_all();
89 local_flush_tlb_all(); 100 local_flush_tlb_all();
90 101
102 notify_cpu_starting(cpuid);
91 /* 103 /*
92 * Unblock the master CPU _only_ when the scheduler state 104 * Unblock the master CPU _only_ when the scheduler state
93 * of all secondary CPUs will be up-to-date, so after 105 * of all secondary CPUs will be up-to-date, so after