]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kernel/prom_init.c
[PATCH] powerpc: return to OF via trap, not exit
[karo-tx-linux.git] / arch / powerpc / kernel / prom_init.c
index 813c2cd194c218dd0d2803c402b9a2e9281b887f..0d0887844501d3f99347bd4c1646a3fcca3cdb8c 100644 (file)
@@ -397,6 +397,11 @@ static void __init __attribute__((noreturn)) prom_panic(const char *reason)
        reason = PTRRELOC(reason);
 #endif
        prom_print(reason);
+       /* Do not call exit because it clears the screen on pmac
+        * it also causes some sort of double-fault on early pmacs */
+       if (RELOC(of_platform) == PLATFORM_POWERMAC)
+               asm("trap\n");
+
        /* ToDo: should put up an SRC here on p/iSeries */
        call_prom("exit", 0, 0);
 
@@ -2060,15 +2065,6 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
         */
        prom_init_stdout();
 
-       /* Bail if this is a kdump kernel. */
-       if (PHYSICAL_START > 0)
-               prom_panic("Error: You can't boot a kdump kernel from OF!\n");
-
-       /*
-        * Check for an initrd
-        */
-       prom_check_initrd(r3, r4);
-
        /*
         * Get default machine type. At this point, we do not differentiate
         * between pSeries SMP and pSeries LPAR
@@ -2078,6 +2074,15 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
        prom_setprop(_prom->chosen, "/chosen", "linux,platform",
                     &getprop_rval, sizeof(getprop_rval));
 
+       /* Bail if this is a kdump kernel. */
+       if (PHYSICAL_START > 0)
+               prom_panic("Error: You can't boot a kdump kernel from OF!\n");
+
+       /*
+        * Check for an initrd
+        */
+       prom_check_initrd(r3, r4);
+
 #ifdef CONFIG_PPC_PSERIES
        /*
         * On pSeries, inform the firmware about our capabilities