Root/
Source at commit 1146 created 12 years 10 months ago. By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing). | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights␊ |
7 | * Reserved. This file contains Original Code and/or Modifications of␊ |
8 | * Original Code as defined in and that are subject to the Apple Public␊ |
9 | * Source License Version 2.0 (the "License"). You may not use this file␊ |
10 | * except in compliance with the License. Please obtain a copy of the␊ |
11 | * License at http://www.apple.com/publicsource and read it before using␊ |
12 | * this file.␊ |
13 | * ␊ |
14 | * The Original Code and all software distributed under the License are␊ |
15 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
16 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
17 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
18 | * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the␊ |
19 | * License for the specific language governing rights and limitations␊ |
20 | * under the License.␊ |
21 | * ␊ |
22 | * @APPLE_LICENSE_HEADER_END@␊ |
23 | */␊ |
24 | /* ␊ |
25 | * Mach Operating System␊ |
26 | * Copyright (c) 1990 Carnegie-Mellon University␊ |
27 | * Copyright (c) 1989 Carnegie-Mellon University␊ |
28 | * All rights reserved. The CMU software License Agreement specifies␊ |
29 | * the terms and conditions for use and redistribution.␊ |
30 | */␊ |
31 | ␊ |
32 | /*␊ |
33 | * INTEL CORPORATION PROPRIETARY INFORMATION␊ |
34 | *␊ |
35 | * This software is supplied under the terms of a license agreement or ␊ |
36 | * nondisclosure agreement with Intel Corporation and may not be copied ␊ |
37 | * nor disclosed except in accordance with the terms of that agreement.␊ |
38 | *␊ |
39 | * Copyright 1988, 1989 by Intel Corporation␊ |
40 | */␊ |
41 | ␊ |
42 | /*␊ |
43 | * Copyright 1993 NeXT Computer, Inc.␊ |
44 | * All rights reserved.␊ |
45 | */␊ |
46 | ␊ |
47 | /*␊ |
48 | * Completely reworked by Sam Streeper (sam_s@NeXT.com)␊ |
49 | * Reworked again by Curtis Galloway (galloway@NeXT.com)␊ |
50 | */␊ |
51 | ␊ |
52 | ␊ |
53 | #include "boot.h"␊ |
54 | #include "sl.h"␊ |
55 | #include "libsa.h"␊ |
56 | ␊ |
57 | extern void init_module_system();␊ |
58 | extern int execute_hook(const char* name, void*, void*, void*, void*);␊ |
59 | ␊ |
60 | ␊ |
61 | long gBootMode; /* defaults to 0 == kBootModeNormal */␊ |
62 | bool gOverrideKernel;␊ |
63 | char *gPlatformName;␊ |
64 | char gRootDevice[512];␊ |
65 | char gMKextName[512];␊ |
66 | char gMacOSVersion[8];␊ |
67 | bool gEnableCDROMRescan;␊ |
68 | bool gScanSingleDrive;␊ |
69 | ␊ |
70 | int bvCount = 0;␊ |
71 | int gDeviceCount = 0; ␊ |
72 | ␊ |
73 | BVRef bvr;␊ |
74 | BVRef menuBVR;␊ |
75 | BVRef bvChain;␊ |
76 | bool useGUI;␊ |
77 | ␊ |
78 | /*␊ |
79 | * How long to wait (in seconds) to load the␊ |
80 | * kernel after displaying the "boot:" prompt.␊ |
81 | */␊ |
82 | #define kBootErrorTimeout 5␊ |
83 | ␊ |
84 | /*␊ |
85 | * Default path to kernel cache file␊ |
86 | */␊ |
87 | //Slice - first one for Leopard␊ |
88 | #define kDefaultCachePathLeo "/System/Library/Caches/com.apple.kernelcaches/"␊ |
89 | #define kDefaultCachePathSnow "/System/Library/Caches/com.apple.kext.caches/Startup/"␊ |
90 | ␊ |
91 | //==========================================================================␊ |
92 | // Zero the BSS.␊ |
93 | ␊ |
94 | static void zeroBSS(void)␊ |
95 | {␊ |
96 | ␉extern char _DATA__bss__begin, _DATA__bss__end;␊ |
97 | ␉extern char _DATA__common__begin, _DATA__common__end;␊ |
98 | ␊ |
99 | ␉bzero(&_DATA__bss__begin, (&_DATA__bss__end - &_DATA__bss__begin));␊ |
100 | ␉bzero(&_DATA__common__begin, (&_DATA__common__end - &_DATA__common__begin));␊ |
101 | }␊ |
102 | ␊ |
103 | //==========================================================================␊ |
104 | // Malloc error function␊ |
105 | ␊ |
106 | static void malloc_error(char *addr, size_t size, const char *file, int line)␊ |
107 | {␊ |
108 | ␉stop("\nMemory allocation error! Addr=0x%x, Size=0x%x, File=%s, Line=%d\n", (unsigned)addr, (unsigned)size, file, line);␊ |
109 | }␊ |
110 | ␊ |
111 | //==========================================================================␊ |
112 | //Initializes the runtime. Right now this means zeroing the BSS and initializing malloc.␊ |
113 | //␊ |
114 | void initialize_runtime(void)␊ |
115 | {␊ |
116 | ␉zeroBSS();␊ |
117 | ␉malloc_init(0, 0, 0, malloc_error);␊ |
118 | }␊ |
119 | ␊ |
120 | //==========================================================================␊ |
121 | // This is the entrypoint from real-mode which functions exactly as it did␊ |
122 | // before. Multiboot does its own runtime initialization, does some of its␊ |
123 | // own things, and then calls common_boot.␊ |
124 | void boot(int biosdev)␊ |
125 | {␊ |
126 | ␉initialize_runtime();␊ |
127 | ␉// Enable A20 gate before accessing memory above 1Mb.␊ |
128 | ␉enableA20();␊ |
129 | ␉common_boot(biosdev);␊ |
130 | }␊ |
131 | ␊ |
132 | //==========================================================================␊ |
133 | // The 'main' function for the booter. Called by boot0 when booting␊ |
134 | // from a block device, or by the network booter.␊ |
135 | //␊ |
136 | // arguments:␊ |
137 | // biosdev - Value passed from boot1/NBP to specify the device␊ |
138 | // that the booter was loaded from.␊ |
139 | //␊ |
140 | // If biosdev is kBIOSDevNetwork, then this function will return if␊ |
141 | // booting was unsuccessful. This allows the PXE firmware to try the␊ |
142 | // next boot device on its list.␊ |
143 | void common_boot(int biosdev)␊ |
144 | {␊ |
145 | video_mode( 2 ); // 80x25 mono text mode.␊ |
146 | ␊ |
147 | ␉// Intialize module system ␊ |
148 | ␉init_module_system();␊ |
149 | ␊ |
150 | int loopCount = 0;␊ |
151 | while(1)␊ |
152 | {␊ |
153 | execute_hook("WorkLoop", (void*)loopCount++, NULL, NULL, NULL);␉// Main work loop␊ |
154 | }␊ |
155 | }␊ |
156 |