Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/i386/include/mach/machine.h

Source at commit 1808 created 12 years 4 months ago.
By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier?
1/*
2 * Copyright (c) 2000-2007 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * Mach Operating System
30 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
31 * All Rights Reserved.
32 *
33 * Permission to use, copy, modify and distribute this software and its
34 * documentation is hereby granted, provided that both the copyright
35 * notice and this permission notice appear in all copies of the
36 * software, derivative works or modified versions, and any portions
37 * thereof, and that both notices appear in supporting documentation.
38 *
39 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
40 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
41 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
42 *
43 * Carnegie Mellon requests users of this software to return to
44 *
45 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
46 * School of Computer Science
47 * Carnegie Mellon University
48 * Pittsburgh PA 15213-3890
49 *
50 * any improvements or extensions that they make and grant Carnegie Mellon
51 * the rights to redistribute these changes.
52 */
53/*File:machine.h
54 *Author:Avadis Tevanian, Jr.
55 *Date:1986
56 *
57 *Machine independent machine abstraction.
58 */
59
60#ifndef_MACH_MACHINE_H_
61#define _MACH_MACHINE_H_
62
63#include <stdint.h>
64#include <mach/machine/vm_types.h>
65#include <mach/boolean.h>
66
67typedef integer_tcpu_type_t;
68typedef integer_tcpu_subtype_t;
69typedef integer_tcpu_threadtype_t;
70
71#define CPU_STATE_MAX4
72
73#define CPU_STATE_USER0
74#define CPU_STATE_SYSTEM1
75#define CPU_STATE_IDLE2
76#define CPU_STATE_NICE3
77
78
79
80/*
81 * Capability bits used in the definition of cpu_type.
82 */
83#defineCPU_ARCH_MASK0xff000000/* mask for architecture bits */
84#define CPU_ARCH_ABI640x01000000/* 64 bit ABI */
85
86/*
87 *Machine types known by all.
88 */
89
90#define CPU_TYPE_ANY((cpu_type_t) -1)
91
92#define CPU_TYPE_VAX((cpu_type_t) 1)
93/* skip((cpu_type_t) 2)*/
94/* skip((cpu_type_t) 3)*/
95/* skip((cpu_type_t) 4)*/
96/* skip((cpu_type_t) 5)*/
97#defineCPU_TYPE_MC680x0((cpu_type_t) 6)
98#define CPU_TYPE_X86((cpu_type_t) 7)
99#define CPU_TYPE_I386CPU_TYPE_X86/* compatibility */
100#defineCPU_TYPE_X86_64(CPU_TYPE_X86 | CPU_ARCH_ABI64)
101
102/* skip CPU_TYPE_MIPS((cpu_type_t) 8)*/
103/* skip ((cpu_type_t) 9)*/
104#define CPU_TYPE_MC98000((cpu_type_t) 10)
105#define CPU_TYPE_HPPA ((cpu_type_t) 11)
106#define CPU_TYPE_ARM((cpu_type_t) 12)
107#define CPU_TYPE_MC88000((cpu_type_t) 13)
108#define CPU_TYPE_SPARC((cpu_type_t) 14)
109#define CPU_TYPE_I860((cpu_type_t) 15)
110/* skipCPU_TYPE_ALPHA((cpu_type_t) 16)*/
111/* skip((cpu_type_t) 17)*/
112#define CPU_TYPE_POWERPC((cpu_type_t) 18)
113#define CPU_TYPE_POWERPC64(CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
114
115/*
116 *Machine subtypes (these are defined here, instead of in a machine
117 *dependent directory, so that any program can get all definitions
118 *regardless of where is it compiled).
119 */
120
121/*
122 * Capability bits used in the definition of cpu_subtype.
123 */
124#define CPU_SUBTYPE_MASK0xff000000/* mask for feature flags */
125#define CPU_SUBTYPE_LIB640x80000000/* 64 bit libraries */
126
127
128/*
129 *Object files that are hand-crafted to run on any
130 *implementation of an architecture are tagged with
131 *CPU_SUBTYPE_MULTIPLE. This functions essentially the same as
132 *the "ALL" subtype of an architecture except that it allows us
133 *to easily find object files that may need to be modified
134 *whenever a new implementation of an architecture comes out.
135 *
136 *It is the responsibility of the implementor to make sure the
137 *software handles unsupported implementations elegantly.
138 */
139#defineCPU_SUBTYPE_MULTIPLE((cpu_subtype_t) -1)
140#define CPU_SUBTYPE_LITTLE_ENDIAN((cpu_subtype_t) 0)
141#define CPU_SUBTYPE_BIG_ENDIAN((cpu_subtype_t) 1)
142
143/*
144 * Machine threadtypes.
145 * This is none - not defined - for most machine types/subtypes.
146 */
147#define CPU_THREADTYPE_NONE((cpu_threadtype_t) 0)
148
149/*
150 *VAX subtypes (these do *not* necessary conform to the actual cpu
151 *ID assigned by DEC available via the SID register).
152 */
153
154#defineCPU_SUBTYPE_VAX_ALL((cpu_subtype_t) 0)
155#define CPU_SUBTYPE_VAX780((cpu_subtype_t) 1)
156#define CPU_SUBTYPE_VAX785((cpu_subtype_t) 2)
157#define CPU_SUBTYPE_VAX750((cpu_subtype_t) 3)
158#define CPU_SUBTYPE_VAX730((cpu_subtype_t) 4)
159#define CPU_SUBTYPE_UVAXI((cpu_subtype_t) 5)
160#define CPU_SUBTYPE_UVAXII((cpu_subtype_t) 6)
161#define CPU_SUBTYPE_VAX8200((cpu_subtype_t) 7)
162#define CPU_SUBTYPE_VAX8500((cpu_subtype_t) 8)
163#define CPU_SUBTYPE_VAX8600((cpu_subtype_t) 9)
164#define CPU_SUBTYPE_VAX8650((cpu_subtype_t) 10)
165#define CPU_SUBTYPE_VAX8800((cpu_subtype_t) 11)
166#define CPU_SUBTYPE_UVAXIII((cpu_subtype_t) 12)
167
168/*
169 * 680x0 subtypes
170 *
171 * The subtype definitions here are unusual for historical reasons.
172 * NeXT used to consider 68030 code as generic 68000 code. For
173 * backwards compatability:
174 *
175 *CPU_SUBTYPE_MC68030 symbol has been preserved for source code
176 *compatability.
177 *
178 *CPU_SUBTYPE_MC680x0_ALL has been defined to be the same
179 *subtype as CPU_SUBTYPE_MC68030 for binary comatability.
180 *
181 *CPU_SUBTYPE_MC68030_ONLY has been added to allow new object
182 *files to be tagged as containing 68030-specific instructions.
183 */
184
185#defineCPU_SUBTYPE_MC680x0_ALL((cpu_subtype_t) 1)
186#define CPU_SUBTYPE_MC68030((cpu_subtype_t) 1) /* compat */
187#define CPU_SUBTYPE_MC68040((cpu_subtype_t) 2)
188#defineCPU_SUBTYPE_MC68030_ONLY((cpu_subtype_t) 3)
189
190/*
191 *I386 subtypes
192 */
193
194#define CPU_SUBTYPE_INTEL(f, m)((cpu_subtype_t) (f) + ((m) << 4))
195
196#defineCPU_SUBTYPE_I386_ALLCPU_SUBTYPE_INTEL(3, 0)
197#define CPU_SUBTYPE_386CPU_SUBTYPE_INTEL(3, 0)
198#define CPU_SUBTYPE_486CPU_SUBTYPE_INTEL(4, 0)
199#define CPU_SUBTYPE_486SXCPU_SUBTYPE_INTEL(4, 8)// 8 << 4 = 128
200#define CPU_SUBTYPE_586CPU_SUBTYPE_INTEL(5, 0)
201#define CPU_SUBTYPE_PENTCPU_SUBTYPE_INTEL(5, 0)
202#define CPU_SUBTYPE_PENTPROCPU_SUBTYPE_INTEL(6, 1)
203#define CPU_SUBTYPE_PENTII_M3CPU_SUBTYPE_INTEL(6, 3)
204#define CPU_SUBTYPE_PENTII_M5CPU_SUBTYPE_INTEL(6, 5)
205#define CPU_SUBTYPE_CELERONCPU_SUBTYPE_INTEL(7, 6)
206#define CPU_SUBTYPE_CELERON_MOBILECPU_SUBTYPE_INTEL(7, 7)
207#define CPU_SUBTYPE_PENTIUM_3CPU_SUBTYPE_INTEL(8, 0)
208#define CPU_SUBTYPE_PENTIUM_3_MCPU_SUBTYPE_INTEL(8, 1)
209#define CPU_SUBTYPE_PENTIUM_3_XEONCPU_SUBTYPE_INTEL(8, 2)
210#define CPU_SUBTYPE_PENTIUM_MCPU_SUBTYPE_INTEL(9, 0)
211#define CPU_SUBTYPE_PENTIUM_4CPU_SUBTYPE_INTEL(10, 0)
212#define CPU_SUBTYPE_PENTIUM_4_MCPU_SUBTYPE_INTEL(10, 1)
213#define CPU_SUBTYPE_ITANIUMCPU_SUBTYPE_INTEL(11, 0)
214#define CPU_SUBTYPE_ITANIUM_2CPU_SUBTYPE_INTEL(11, 1)
215#define CPU_SUBTYPE_XEONCPU_SUBTYPE_INTEL(12, 0)
216#define CPU_SUBTYPE_XEON_MPCPU_SUBTYPE_INTEL(12, 1)
217
218#define CPU_SUBTYPE_INTEL_FAMILY(x)((x) & 15)
219#define CPU_SUBTYPE_INTEL_FAMILY_MAX15
220
221#define CPU_SUBTYPE_INTEL_MODEL(x)((x) >> 4)
222#define CPU_SUBTYPE_INTEL_MODEL_ALL0
223
224/*
225 *X86 subtypes.
226 */
227
228#define CPU_SUBTYPE_X86_ALL((cpu_subtype_t)3)
229#define CPU_SUBTYPE_X86_64_ALL((cpu_subtype_t)3)
230#define CPU_SUBTYPE_X86_ARCH1((cpu_subtype_t)4)
231
232
233#define CPU_THREADTYPE_INTEL_HTT((cpu_threadtype_t) 1)
234
235/*
236 *Mips subtypes.
237 */
238
239#defineCPU_SUBTYPE_MIPS_ALL((cpu_subtype_t) 0)
240#define CPU_SUBTYPE_MIPS_R2300((cpu_subtype_t) 1)
241#define CPU_SUBTYPE_MIPS_R2600((cpu_subtype_t) 2)
242#define CPU_SUBTYPE_MIPS_R2800((cpu_subtype_t) 3)
243#define CPU_SUBTYPE_MIPS_R2000a((cpu_subtype_t) 4)/* pmax */
244#define CPU_SUBTYPE_MIPS_R2000((cpu_subtype_t) 5)
245#define CPU_SUBTYPE_MIPS_R3000a((cpu_subtype_t) 6)/* 3max */
246#define CPU_SUBTYPE_MIPS_R3000((cpu_subtype_t) 7)
247
248/*
249 *MC98000 (PowerPC) subtypes
250 */
251#defineCPU_SUBTYPE_MC98000_ALL((cpu_subtype_t) 0)
252#define CPU_SUBTYPE_MC98601((cpu_subtype_t) 1)
253
254/*
255 *HPPA subtypes for Hewlett-Packard HP-PA family of
256 *risc processors. Port by NeXT to 700 series.
257 */
258
259#defineCPU_SUBTYPE_HPPA_ALL((cpu_subtype_t) 0)
260#define CPU_SUBTYPE_HPPA_7100((cpu_subtype_t) 0) /* compat */
261#define CPU_SUBTYPE_HPPA_7100LC((cpu_subtype_t) 1)
262
263/*
264 *MC88000 subtypes.
265 */
266#defineCPU_SUBTYPE_MC88000_ALL((cpu_subtype_t) 0)
267#define CPU_SUBTYPE_MC88100((cpu_subtype_t) 1)
268#define CPU_SUBTYPE_MC88110((cpu_subtype_t) 2)
269
270/*
271 *SPARC subtypes
272 */
273#defineCPU_SUBTYPE_SPARC_ALL((cpu_subtype_t) 0)
274
275/*
276 *I860 subtypes
277 */
278#define CPU_SUBTYPE_I860_ALL((cpu_subtype_t) 0)
279#define CPU_SUBTYPE_I860_860((cpu_subtype_t) 1)
280
281/*
282 *PowerPC subtypes
283 */
284#define CPU_SUBTYPE_POWERPC_ALL((cpu_subtype_t) 0)
285#define CPU_SUBTYPE_POWERPC_601((cpu_subtype_t) 1)
286#define CPU_SUBTYPE_POWERPC_602((cpu_subtype_t) 2)
287#define CPU_SUBTYPE_POWERPC_603((cpu_subtype_t) 3)
288#define CPU_SUBTYPE_POWERPC_603e((cpu_subtype_t) 4)
289#define CPU_SUBTYPE_POWERPC_603ev((cpu_subtype_t) 5)
290#define CPU_SUBTYPE_POWERPC_604((cpu_subtype_t) 6)
291#define CPU_SUBTYPE_POWERPC_604e((cpu_subtype_t) 7)
292#define CPU_SUBTYPE_POWERPC_620((cpu_subtype_t) 8)
293#define CPU_SUBTYPE_POWERPC_750((cpu_subtype_t) 9)
294#define CPU_SUBTYPE_POWERPC_7400((cpu_subtype_t) 10)
295#define CPU_SUBTYPE_POWERPC_7450((cpu_subtype_t) 11)
296#define CPU_SUBTYPE_POWERPC_970((cpu_subtype_t) 100)
297
298/*
299 *ARM subtypes
300 */
301#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
302#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
303#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
304#define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
305#define CPU_SUBTYPE_ARM_XSCALE((cpu_subtype_t) 8)
306#define CPU_SUBTYPE_ARM_V7((cpu_subtype_t) 9)
307
308/*
309 *CPU families (sysctl hw.cpufamily)
310 *
311 * These are meant to identify the CPU's marketing name - an
312 * application can map these to (possibly) localized strings.
313 * NB: the encodings of the CPU families are intentionally arbitrary.
314 * There is no ordering, and you should never try to deduce whether
315 * or not some feature is available based on the family.
316 * Use feature flags (eg, hw.optional.altivec) to test for optional
317 * functionality.
318 */
319#define CPUFAMILY_UNKNOWN 0
320#define CPUFAMILY_POWERPC_G30xcee41549
321#define CPUFAMILY_POWERPC_G40x77c184ae
322#define CPUFAMILY_POWERPC_G50xed76d8aa
323#define CPUFAMILY_INTEL_6_130xaa33392b
324#define CPUFAMILY_INTEL_YONAH0x73d67300
325#define CPUFAMILY_INTEL_MEROM0x426f69ef
326#define CPUFAMILY_INTEL_PENRYN0x78ea4fbc
327#define CPUFAMILY_INTEL_NEHALEM0x6b5a4cd2
328#define CPUFAMILY_INTEL_WESTMERE0x573b5eec
329#define CPUFAMILY_ARM_90xe73283ae
330#define CPUFAMILY_ARM_110x8ff620d8
331#define CPUFAMILY_ARM_XSCALE0x53b005f5
332#define CPUFAMILY_ARM_130x0cc90e64
333
334/* The following synonyms are deprecated: */
335#define CPUFAMILY_INTEL_6_14CPUFAMILY_INTEL_YONAH
336#define CPUFAMILY_INTEL_6_15CPUFAMILY_INTEL_MEROM
337#define CPUFAMILY_INTEL_6_23CPUFAMILY_INTEL_PENRYN
338#define CPUFAMILY_INTEL_6_26CPUFAMILY_INTEL_NEHALEM
339
340#define CPUFAMILY_INTEL_CORECPUFAMILY_INTEL_YONAH
341#define CPUFAMILY_INTEL_CORE2CPUFAMILY_INTEL_MEROM
342
343
344#endif/* _MACH_MACHINE_H_ */
345

Archive Download this file

Revision: 1808