Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[pandora-kernel.git] / arch / powerpc / kernel / head_64.S
index 3564c49..06c7251 100644 (file)
  *  For pSeries or server processors:
  *   1. The MMU is off & open firmware is running in real mode.
  *   2. The kernel is entered at __start
+ * -or- For OPAL entry:
+ *   1. The MMU is off, processor in HV mode, primary CPU enters at 0
+ *      with device-tree in gpr3. We also get OPAL base in r8 and
+ *     entry in r9 for debugging purposes
+ *   2. Secondary processors enter at 0x60 with PIR in gpr3
  *
  *  For iSeries:
  *   1. The MMU is on (as it always is for iSeries)
@@ -331,6 +336,11 @@ _GLOBAL(__start_initialization_multiplatform)
        /* Save parameters */
        mr      r31,r3
        mr      r30,r4
+#ifdef CONFIG_PPC_EARLY_DEBUG_OPAL
+       /* Save OPAL entry */
+       mr      r28,r8
+       mr      r29,r9
+#endif
 
 #ifdef CONFIG_PPC_BOOK3E
        bl      .start_initialization_book3e
@@ -674,9 +684,9 @@ _GLOBAL(enable_64b_mode)
 _GLOBAL(relative_toc)
        mflr    r0
        bcl     20,31,$+4
-0:     mflr    r9
-       ld      r2,(p_toc - 0b)(r9)
-       add     r2,r2,r9
+0:     mflr    r11
+       ld      r2,(p_toc - 0b)(r11)
+       add     r2,r2,r11
        mtlr    r0
        blr
 
@@ -707,6 +717,12 @@ _INIT_STATIC(start_here_multiplatform)
        bdnz    3b
 4:
 
+#ifdef CONFIG_PPC_EARLY_DEBUG_OPAL
+       /* Setup OPAL entry */
+       std     r28,0(r11);
+       std     r29,8(r11);
+#endif
+
 #ifndef CONFIG_PPC_BOOK3E
        mfmsr   r6
        ori     r6,r6,MSR_RI