]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/machine.h
xnu-792.10.96.tar.gz
[apple/xnu.git] / osfmk / mach / machine.h
index 130a23ce7829a6e892c8f9758fc8d449050587ab..7c88e5836fdc9416bebb066d9ae1aca5cbf83357 100644 (file)
@@ -134,7 +134,10 @@ __END_DECLS
 /* skip                                ((cpu_type_t) 4)        */
 /* skip                                ((cpu_type_t) 5)        */
 #define        CPU_TYPE_MC680x0        ((cpu_type_t) 6)
-#define CPU_TYPE_I386          ((cpu_type_t) 7)
+#define CPU_TYPE_X86           ((cpu_type_t) 7)
+#define CPU_TYPE_I386          CPU_TYPE_X86            /* compatibility */
+#define        CPU_TYPE_X86_64         (CPU_TYPE_X86 | CPU_ARCH_ABI64)
+
 /* skip CPU_TYPE_MIPS          ((cpu_type_t) 8)        */
 /* skip                        ((cpu_type_t) 9)        */
 #define CPU_TYPE_MC98000       ((cpu_type_t) 10)
@@ -217,19 +220,32 @@ __END_DECLS
 #define        CPU_SUBTYPE_MC68030_ONLY        ((cpu_subtype_t) 3)
 
 /*
- *     I386 subtypes.
+ *     I386 subtypes
  */
 
-#define        CPU_SUBTYPE_I386_ALL    ((cpu_subtype_t) 3)
-#define CPU_SUBTYPE_386                ((cpu_subtype_t) 3)
-#define CPU_SUBTYPE_486                ((cpu_subtype_t) 4)
-#define CPU_SUBTYPE_486SX      ((cpu_subtype_t) 4 + 128)
-#define CPU_SUBTYPE_586                ((cpu_subtype_t) 5)
 #define CPU_SUBTYPE_INTEL(f, m)        ((cpu_subtype_t) (f) + ((m) << 4))
+
+#define        CPU_SUBTYPE_I386_ALL                    CPU_SUBTYPE_INTEL(3, 0)
+#define CPU_SUBTYPE_386                                        CPU_SUBTYPE_INTEL(3, 0)
+#define CPU_SUBTYPE_486                                        CPU_SUBTYPE_INTEL(4, 0)
+#define CPU_SUBTYPE_486SX                              CPU_SUBTYPE_INTEL(4, 8) // 8 << 4 = 128
+#define CPU_SUBTYPE_586                                        CPU_SUBTYPE_INTEL(5, 0)
 #define CPU_SUBTYPE_PENT       CPU_SUBTYPE_INTEL(5, 0)
 #define CPU_SUBTYPE_PENTPRO    CPU_SUBTYPE_INTEL(6, 1)
 #define CPU_SUBTYPE_PENTII_M3  CPU_SUBTYPE_INTEL(6, 3)
 #define CPU_SUBTYPE_PENTII_M5  CPU_SUBTYPE_INTEL(6, 5)
+#define CPU_SUBTYPE_CELERON                            CPU_SUBTYPE_INTEL(7, 6)
+#define CPU_SUBTYPE_CELERON_MOBILE             CPU_SUBTYPE_INTEL(7, 7)
+#define CPU_SUBTYPE_PENTIUM_3                  CPU_SUBTYPE_INTEL(8, 0)
+#define CPU_SUBTYPE_PENTIUM_3_M                        CPU_SUBTYPE_INTEL(8, 1)
+#define CPU_SUBTYPE_PENTIUM_3_XEON             CPU_SUBTYPE_INTEL(8, 2)
+#define CPU_SUBTYPE_PENTIUM_M                  CPU_SUBTYPE_INTEL(9, 0)
+#define CPU_SUBTYPE_PENTIUM_4                  CPU_SUBTYPE_INTEL(10, 0)
+#define CPU_SUBTYPE_PENTIUM_4_M                        CPU_SUBTYPE_INTEL(10, 1)
+#define CPU_SUBTYPE_ITANIUM                            CPU_SUBTYPE_INTEL(11, 0)
+#define CPU_SUBTYPE_ITANIUM_2                  CPU_SUBTYPE_INTEL(11, 1)
+#define CPU_SUBTYPE_XEON                               CPU_SUBTYPE_INTEL(12, 0)
+#define CPU_SUBTYPE_XEON_MP                            CPU_SUBTYPE_INTEL(12, 1)
 
 #define CPU_SUBTYPE_INTEL_FAMILY(x)    ((x) & 15)
 #define CPU_SUBTYPE_INTEL_FAMILY_MAX   15
@@ -237,6 +253,14 @@ __END_DECLS
 #define CPU_SUBTYPE_INTEL_MODEL(x)     ((x) >> 4)
 #define CPU_SUBTYPE_INTEL_MODEL_ALL    0
 
+/*
+ *     X86 subtypes.
+ */
+
+#define CPU_SUBTYPE_X86_ALL            ((cpu_subtype_t)3)
+#define CPU_SUBTYPE_X86_64_ALL         ((cpu_subtype_t)3)
+#define CPU_SUBTYPE_X86_ARCH1          ((cpu_subtype_t)4)
+
 
 #define CPU_THREADTYPE_INTEL_HTT       ((cpu_threadtype_t) 1)
 
@@ -303,4 +327,20 @@ __END_DECLS
 #define CPU_SUBTYPE_POWERPC_7450       ((cpu_subtype_t) 11)
 #define CPU_SUBTYPE_POWERPC_970                ((cpu_subtype_t) 100)
 
+/*
+ *      CPU families (sysctl hw.cpufamily)
+ *
+ * NB: the encodings of the CPU families are intentionally arbitrary.
+ * There is no ordering, and you should never try to deduce whether
+ * or not some feature is available based on the family.
+ * Use feature flags (eg, hw.optional.altivec) to test for optional
+ * functionality.
+ */
+#define CPUFAMILY_UNKNOWN    0
+#define CPUFAMILY_POWERPC_G3 0xcee41549
+#define CPUFAMILY_POWERPC_G4 0x77c184ae
+#define CPUFAMILY_POWERPC_G5 0xed76d8aa
+#define CPUFAMILY_INTEL_6_14 0x73d67300  /* Intel Core Solo and Intel Core Duo (32-bit Pentium-M with SSE3) */
+#define CPUFAMILY_INTEL_6_15 0x426f69ef  /* Intel Core 2 */
+
 #endif /* _MACH_MACHINE_H_ */