sh: trapped io support for highlander V2
[safe/jmp/linux-2.6] / include / asm-sh / smp.h
index f57c4fe..9c8d34b 100644 (file)
@@ -1,12 +1,3 @@
-/*
- * include/asm-sh/smp.h
- *
- * Copyright (C) 2002, 2003  Paul Mundt
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive for
- * more details.
- */
 #ifndef __ASM_SH_SMP_H
 #define __ASM_SH_SMP_H
 
 
 #ifdef CONFIG_SMP
 
-#include <asm/spinlock.h>
+#include <linux/spinlock.h>
 #include <asm/atomic.h>
 #include <asm/current.h>
 
-extern cpumask_t cpu_online_map;
-extern cpumask_t cpu_possible_map;
+#define raw_smp_processor_id() (current_thread_info()->cpu)
+#define hard_smp_processor_id()        plat_smp_processor_id()
 
-#define cpu_online(cpu)                cpu_isset(cpu, cpu_online_map)
+/* Map from cpu id to sequential logical cpu number. */
+extern int __cpu_number_map[NR_CPUS];
+#define cpu_number_map(cpu)  __cpu_number_map[cpu]
 
-#define raw_smp_processor_id() (current_thread_info()->cpu)
+/* The reverse map from sequential logical cpu number to cpu id.  */
+extern int __cpu_logical_map[NR_CPUS];
+#define cpu_logical_map(cpu)  __cpu_logical_map[cpu]
 
 /* I've no idea what the real meaning of this is */
 #define PROC_CHANGE_PENALTY    20
@@ -40,7 +35,21 @@ struct smp_fn_call_struct {
 
 extern struct smp_fn_call_struct smp_fn_call;
 
-#define SMP_MSG_RESCHEDULE     0x0001
+#define SMP_MSG_FUNCTION       0
+#define SMP_MSG_RESCHEDULE     1
+#define SMP_MSG_NR             2
+
+void plat_smp_setup(void);
+void plat_prepare_cpus(unsigned int max_cpus);
+int plat_smp_processor_id(void);
+void plat_start_cpu(unsigned int cpu, unsigned long entry_point);
+void plat_send_ipi(unsigned int cpu, unsigned int message);
+int plat_register_ipi_handler(unsigned int message,
+                             void (*handler)(void *), void *arg);
+
+#else
+
+#define hard_smp_processor_id()        (0)
 
 #endif /* CONFIG_SMP */