]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/startup.c
xnu-792.22.5.tar.gz
[apple/xnu.git] / osfmk / kern / startup.c
index 9f51c90e3d245680050477e6770704cf4f07a23b..7f5f71bb9e73faa19a1ad22e2333d2dd82cdb628 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -87,6 +87,7 @@
 #include <kern/xpr.h>
 #include <kern/zalloc.h>
 #include <kern/locks.h>
+#include <console/serial_protos.h>
 #include <vm/vm_shared_memory_server.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_init.h>
 #ifdef __ppc__
 #include <ppc/Firmware.h>
 #include <ppc/mappings.h>
-#include <ppc/serial_io.h>
 #endif
 
 static void            kernel_bootstrap_thread(void);
@@ -109,9 +109,15 @@ static void                kernel_bootstrap_thread(void);
 static void            load_context(
                                        thread_t        thread);
 
+#ifdef i386
+extern void    cpu_window_init(int);
+#endif
+
+
 /*
  *     Running in virtual memory, on the interrupt stack.
  */
+
 void
 kernel_bootstrap(void)
 {
@@ -153,8 +159,8 @@ kernel_bootstrap(void)
         *      Create a kernel thread to execute the kernel bootstrap.
         */
        result = kernel_thread_create((thread_continue_t)kernel_bootstrap_thread, NULL, MAXPRI_KERNEL, &thread);
-       if (result != KERN_SUCCESS)
-               panic("kernel_bootstrap");
+
+       if (result != KERN_SUCCESS) panic("kernel_bootstrap: result = %08X\n", result);
 
        thread->state = TH_RUN;
        thread_deallocate(thread);
@@ -217,10 +223,18 @@ kernel_bootstrap_thread(void)
        
        (void) spllo();         /* Allow interruptions */
 
-    /*
-     * Fill in the comm area (mapped into every task address space.)
-     */
-    commpage_populate();
+       /*
+        *      Fill in the comm area (mapped into every task address space.)
+        */
+       commpage_populate();
+
+#ifdef i386
+       /*
+        *      create and initialize a copy window
+        *      for processor 0
+        */
+       cpu_window_init(0);
+#endif
 
        /*
         *      Start the user bootstrap.
@@ -231,9 +245,7 @@ kernel_bootstrap_thread(void)
        }
 #endif
 
-#if __ppc__
        serial_keyboard_init();         /* Start serial keyboard if wanted */
-#endif
 
        thread_bind(self, PROCESSOR_NULL);