Move Origin crapola into a machine-specific header file.
authorRalf Baechle <ralf@linux-mips.org>
Thu, 14 Jul 2005 09:42:32 +0000 (09:42 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:31:52 +0000 (19:31 +0100)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/head.S
include/asm-mips/mach-generic/kernel-entry-init.h [new file with mode: 0644]
include/asm-mips/mach-ip27/kernel-entry-init.h [new file with mode: 0644]

index d7d7de7cdb402a70250d9fd08fc590f68bd69390..d2de5d025dbf328e84a96721e90ad05d84a5a9ad 100644 (file)
 #include <asm/page.h>
 #include <asm/mipsregs.h>
 #include <asm/stackframe.h>
-#ifdef CONFIG_SGI_IP27
-#include <asm/sn/addrs.h>
-#include <asm/sn/sn0/hubni.h>
-#include <asm/sn/klkernvars.h>
-#endif
+
+#include <kernel-entry-init.h>
 
        .macro  ARC64_TWIDDLE_PC
 #if defined(CONFIG_ARC64) || defined(CONFIG_MAPPED_KERNEL)
 #endif
        .endm
 
-#ifdef CONFIG_SGI_IP27
-       /*
-        * outputs the local nasid into res.  IP27 stuff.
-        */
-       .macro GET_NASID_ASM res
-       dli     \res, LOCAL_HUB_ADDR(NI_STATUS_REV_ID)
-       ld      \res, (\res)
-       and     \res, NSRI_NODEID_MASK
-       dsrl    \res, NSRI_NODEID_SHFT
-       .endm
-#endif /* CONFIG_SGI_IP27 */
-
        /*
         * inputs are the text nasid in t1, data nasid in t2.
         */
@@ -142,13 +127,10 @@ EXPORT(_stext)
        __INIT
 
 NESTED(kernel_entry, 16, sp)                   # kernel entry point
-       setup_c0_status_pri
 
-#ifdef CONFIG_SGI_IP27
-       GET_NASID_ASM   t1
-       move    t2, t1                          # text and data are here
-       MAPPED_KERNEL_SETUP_TLB
-#endif /* IP27 */
+       kernel_entry_setup                      # cpu specific setup
+
+       setup_c0_status_pri
 
        ARC64_TWIDDLE_PC
 
@@ -185,20 +167,7 @@ NESTED(kernel_entry, 16, sp)                       # kernel entry point
  */
 NESTED(smp_bootstrap, 16, sp)
        setup_c0_status_sec
-
-#ifdef CONFIG_SGI_IP27
-       GET_NASID_ASM   t1
-       dli     t0, KLDIR_OFFSET + (KLI_KERN_VARS * KLDIR_ENT_SIZE) + \
-                   KLDIR_OFF_POINTER + CAC_BASE
-       dsll    t1, NASID_SHFT
-       or      t0, t0, t1
-       ld      t0, 0(t0)                       # t0 points to kern_vars struct
-       lh      t1, KV_RO_NASID_OFFSET(t0)
-       lh      t2, KV_RW_NASID_OFFSET(t0)
-       MAPPED_KERNEL_SETUP_TLB
-       ARC64_TWIDDLE_PC
-#endif /* CONFIG_SGI_IP27 */
-
+       smp_slave_setup
        j       start_secondary
        END(smp_bootstrap)
 #endif /* CONFIG_SMP */
diff --git a/include/asm-mips/mach-generic/kernel-entry-init.h b/include/asm-mips/mach-generic/kernel-entry-init.h
new file mode 100644 (file)
index 0000000..7e66505
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ *
+ * Copyright (C) 2005 Embedded Alley Solutions, Inc
+ * Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
+ */
+#ifndef __ASM_MACH_GENERIC_KERNEL_ENTRY_H
+#define __ASM_MACH_GENERIC_KERNEL_ENTRY_H
+
+/* Intentionally empty macro, used in head.S. Override in
+ * arch/mips/mach-xxx/kernel-entry-init.h when necessary.
+ */
+.macro kernel_entry_setup
+.endm
+
+/*
+ * Do SMP slave processor setup necessary before we can savely execute C code.
+ */
+       .macro  smp_slave_setup
+       .endm
+
+
+#endif /* __ASM_MACH_GENERIC_KERNEL_ENTRY_H */
diff --git a/include/asm-mips/mach-ip27/kernel-entry-init.h b/include/asm-mips/mach-ip27/kernel-entry-init.h
new file mode 100644 (file)
index 0000000..c1a1031
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ *
+ * Copyright (C) 2000 Silicon Graphics, Inc.
+ * Copyright (C) 2005 Ralf Baechle <ralf@linux-mips.org>
+ */
+#ifndef __ASM_MACH_IP27_KERNEL_ENTRY_H
+#define __ASM_MACH_IP27_KERNEL_ENTRY_H
+
+#include <asm/sn/addrs.h>
+#include <asm/sn/sn0/hubni.h>
+#include <asm/sn/klkernvars.h>
+
+/*
+ * Returns the local nasid into res.
+ */
+       .macro GET_NASID_ASM res
+       dli     \res, LOCAL_HUB_ADDR(NI_STATUS_REV_ID)
+       ld      \res, (\res)
+       and     \res, NSRI_NODEID_MASK
+       dsrl    \res, NSRI_NODEID_SHFT
+       .endm
+
+/*
+ * Intentionally empty macro, used in head.S. Override in
+ * arch/mips/mach-xxx/kernel-entry-init.h when necessary.
+ */
+       .macro  kernel_entry_setup
+       GET_NASID_ASM   t1
+       move            t2, t1                  # text and data are here
+       MAPPED_KERNEL_SETUP_TLB
+       .endm
+
+/*
+ * Do SMP slave processor setup necessary before we can savely execute C code.
+ */
+       .macro  smp_slave_setup
+       GET_NASID_ASM   t1
+       dli     t0, KLDIR_OFFSET + (KLI_KERN_VARS * KLDIR_ENT_SIZE) + \
+                   KLDIR_OFF_POINTER + CAC_BASE
+       dsll    t1, NASID_SHFT
+       or      t0, t0, t1
+       ld      t0, 0(t0)                       # t0 points to kern_vars struct
+       lh      t1, KV_RO_NASID_OFFSET(t0)
+       lh      t2, KV_RW_NASID_OFFSET(t0)
+       MAPPED_KERNEL_SETUP_TLB
+       ARC64_TWIDDLE_PC
+       .endm
+
+#endif /* __ASM_MACH_IP27_KERNEL_ENTRY_H */