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);
 
         */
        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
        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