Loading arch/sh/Kconfig +4 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ config GENERIC_TIME config GENERIC_CLOCKEVENTS def_bool n config GENERIC_CLOCKEVENTS_BROADCAST bool config GENERIC_LOCKBREAK def_bool y depends on SMP && PREEMPT Loading Loading @@ -323,6 +326,7 @@ config CPU_SUBTYPE_SHX3 select ARCH_SPARSEMEM_ENABLE select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_SMP select GENERIC_CLOCKEVENTS_BROADCAST # SH4AL-DSP Processor Support Loading arch/sh/include/asm/smp.h +3 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ enum { void smp_message_recv(unsigned int msg); void smp_timer_broadcast(cpumask_t mask); void local_timer_interrupt(void); void local_timer_setup(unsigned int cpu); void plat_smp_setup(void); void plat_prepare_cpus(unsigned int max_cpus); int plat_smp_processor_id(void); Loading arch/sh/kernel/smp.c +5 −2 Original line number Diff line number Diff line Loading @@ -84,9 +84,12 @@ asmlinkage void __cpuinit start_secondary(void) local_irq_enable(); cpu = smp_processor_id(); /* Enable local timers */ local_timer_setup(cpu); calibrate_delay(); cpu = smp_processor_id(); smp_store_cpu_info(cpu); cpu_set(cpu, cpu_online_map); Loading Loading @@ -195,7 +198,7 @@ void smp_timer_broadcast(cpumask_t mask) static void ipi_timer(void) { irq_enter(); /* XXX ... */ local_timer_interrupt(); irq_exit(); } Loading arch/sh/kernel/time_32.c +7 −2 Original line number Diff line number Diff line /* * arch/sh/kernel/time.c * arch/sh/kernel/time_32.c * * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> * Copyright (C) 2002 - 2007 Paul Mundt * Copyright (C) 2002 - 2008 Paul Mundt * Copyright (C) 2002 M. R. Brown <mrbrown@linux-sh.org> * * Some code taken from i386 version. Loading @@ -16,6 +16,7 @@ #include <linux/timex.h> #include <linux/sched.h> #include <linux/clockchips.h> #include <linux/smp.h> #include <asm/clock.h> #include <asm/rtc.h> #include <asm/timer.h> Loading Loading @@ -260,6 +261,10 @@ void __init time_init(void) sys_timer = get_sys_timer(); printk(KERN_INFO "Using %s for system timer\n", sys_timer->name); #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST local_timer_setup(smp_processor_id()); #endif if (sys_timer->ops->read) clocksource_sh.read = sys_timer->ops->read; Loading arch/sh/kernel/timers/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,4 @@ obj-$(CONFIG_SH_TMU) += timer-tmu.o obj-$(CONFIG_SH_MTU2) += timer-mtu2.o obj-$(CONFIG_SH_CMT) += timer-cmt.o obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer-broadcast.o Loading
arch/sh/Kconfig +4 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ config GENERIC_TIME config GENERIC_CLOCKEVENTS def_bool n config GENERIC_CLOCKEVENTS_BROADCAST bool config GENERIC_LOCKBREAK def_bool y depends on SMP && PREEMPT Loading Loading @@ -323,6 +326,7 @@ config CPU_SUBTYPE_SHX3 select ARCH_SPARSEMEM_ENABLE select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_SMP select GENERIC_CLOCKEVENTS_BROADCAST # SH4AL-DSP Processor Support Loading
arch/sh/include/asm/smp.h +3 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ enum { void smp_message_recv(unsigned int msg); void smp_timer_broadcast(cpumask_t mask); void local_timer_interrupt(void); void local_timer_setup(unsigned int cpu); void plat_smp_setup(void); void plat_prepare_cpus(unsigned int max_cpus); int plat_smp_processor_id(void); Loading
arch/sh/kernel/smp.c +5 −2 Original line number Diff line number Diff line Loading @@ -84,9 +84,12 @@ asmlinkage void __cpuinit start_secondary(void) local_irq_enable(); cpu = smp_processor_id(); /* Enable local timers */ local_timer_setup(cpu); calibrate_delay(); cpu = smp_processor_id(); smp_store_cpu_info(cpu); cpu_set(cpu, cpu_online_map); Loading Loading @@ -195,7 +198,7 @@ void smp_timer_broadcast(cpumask_t mask) static void ipi_timer(void) { irq_enter(); /* XXX ... */ local_timer_interrupt(); irq_exit(); } Loading
arch/sh/kernel/time_32.c +7 −2 Original line number Diff line number Diff line /* * arch/sh/kernel/time.c * arch/sh/kernel/time_32.c * * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> * Copyright (C) 2002 - 2007 Paul Mundt * Copyright (C) 2002 - 2008 Paul Mundt * Copyright (C) 2002 M. R. Brown <mrbrown@linux-sh.org> * * Some code taken from i386 version. Loading @@ -16,6 +16,7 @@ #include <linux/timex.h> #include <linux/sched.h> #include <linux/clockchips.h> #include <linux/smp.h> #include <asm/clock.h> #include <asm/rtc.h> #include <asm/timer.h> Loading Loading @@ -260,6 +261,10 @@ void __init time_init(void) sys_timer = get_sys_timer(); printk(KERN_INFO "Using %s for system timer\n", sys_timer->name); #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST local_timer_setup(smp_processor_id()); #endif if (sys_timer->ops->read) clocksource_sh.read = sys_timer->ops->read; Loading
arch/sh/kernel/timers/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,4 @@ obj-$(CONFIG_SH_TMU) += timer-tmu.o obj-$(CONFIG_SH_MTU2) += timer-mtu2.o obj-$(CONFIG_SH_CMT) += timer-cmt.o obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer-broadcast.o