]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/powerpc/include/asm/kexec.h
powerpc/kexec: Add support for FSL-BookE
[mv-sheeva.git] / arch / powerpc / include / asm / kexec.h
index 6dbffc9817024d684420ea7144d68e66f477d119..2a9cd74a841e3e234b6d1a4bb6beb8e5cd1b207b 100644 (file)
@@ -2,6 +2,18 @@
 #define _ASM_POWERPC_KEXEC_H
 #ifdef __KERNEL__
 
+#ifdef CONFIG_FSL_BOOKE
+
+/*
+ * On FSL-BookE we setup a 1:1 mapping which covers the first 2GiB of memory
+ * and therefore we can only deal with memory within this range
+ */
+#define KEXEC_SOURCE_MEMORY_LIMIT      (2 * 1024 * 1024 * 1024UL)
+#define KEXEC_DESTINATION_MEMORY_LIMIT (2 * 1024 * 1024 * 1024UL)
+#define KEXEC_CONTROL_MEMORY_LIMIT     (2 * 1024 * 1024 * 1024UL)
+
+#else
+
 /*
  * Maximum page that is mapped directly into kernel memory.
  * XXX: Since we copy virt we can use any page we allocate
@@ -21,6 +33,7 @@
 /* TASK_SIZE, probably left over from use_mm ?? */
 #define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
 #endif
+#endif
 
 #define KEXEC_CONTROL_PAGE_SIZE 4096
 
 #define KEXEC_ARCH KEXEC_ARCH_PPC
 #endif
 
+#define KEXEC_STATE_NONE 0
+#define KEXEC_STATE_IRQS_OFF 1
+#define KEXEC_STATE_REAL_MODE 2
+
 #ifndef __ASSEMBLY__
 #include <linux/cpumask.h>
 #include <asm/reg.h>
@@ -48,63 +65,8 @@ static inline void crash_setup_regs(struct pt_regs *newregs,
 {
        if (oldregs)
                memcpy(newregs, oldregs, sizeof(*newregs));
-#ifdef __powerpc64__
-       else {
-               /* FIXME Merge this with xmon_save_regs ?? */
-               unsigned long tmp1, tmp2;
-               __asm__ __volatile__ (
-                       "std    0,0(%2)\n"
-                       "std    1,8(%2)\n"
-                       "std    2,16(%2)\n"
-                       "std    3,24(%2)\n"
-                       "std    4,32(%2)\n"
-                       "std    5,40(%2)\n"
-                       "std    6,48(%2)\n"
-                       "std    7,56(%2)\n"
-                       "std    8,64(%2)\n"
-                       "std    9,72(%2)\n"
-                       "std    10,80(%2)\n"
-                       "std    11,88(%2)\n"
-                       "std    12,96(%2)\n"
-                       "std    13,104(%2)\n"
-                       "std    14,112(%2)\n"
-                       "std    15,120(%2)\n"
-                       "std    16,128(%2)\n"
-                       "std    17,136(%2)\n"
-                       "std    18,144(%2)\n"
-                       "std    19,152(%2)\n"
-                       "std    20,160(%2)\n"
-                       "std    21,168(%2)\n"
-                       "std    22,176(%2)\n"
-                       "std    23,184(%2)\n"
-                       "std    24,192(%2)\n"
-                       "std    25,200(%2)\n"
-                       "std    26,208(%2)\n"
-                       "std    27,216(%2)\n"
-                       "std    28,224(%2)\n"
-                       "std    29,232(%2)\n"
-                       "std    30,240(%2)\n"
-                       "std    31,248(%2)\n"
-                       "mfmsr  %0\n"
-                       "std    %0, 264(%2)\n"
-                       "mfctr  %0\n"
-                       "std    %0, 280(%2)\n"
-                       "mflr   %0\n"
-                       "std    %0, 288(%2)\n"
-                       "bl     1f\n"
-               "1:     mflr   %1\n"
-                       "std    %1, 256(%2)\n"
-                       "mtlr   %0\n"
-                       "mfxer  %0\n"
-                       "std    %0, 296(%2)\n"
-                       : "=&r" (tmp1), "=&r" (tmp2)
-                       : "b" (newregs)
-                       : "memory");
-       }
-#else
        else
                ppc_save_regs(newregs);
-#endif /* __powerpc64__ */
 }
 
 extern void kexec_smp_wait(void);      /* get and clear naca physid, wait for