+/*
+ * ARM subtypes
+ */
+#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
+#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
+
+/*
+ * CPU families (sysctl hw.cpufamily)
+ *
+ * These are meant to identify the CPU's marketing name - an
+ * application can map these to (possibly) localized strings.
+ * 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_13 0xaa33392b
+#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 Duo" */
+#define CPUFAMILY_INTEL_6_23 0x78ea4fbc /* Penryn */
+#define CPUFAMILY_INTEL_6_26 0x6b5a4cd2 /* Nehalem */
+#define CPUFAMILY_ARM_9 0xe73283ae
+#define CPUFAMILY_ARM_11 0x8ff620d8
+
+#define CPUFAMILY_INTEL_YONAH CPUFAMILY_INTEL_6_14
+#define CPUFAMILY_INTEL_MEROM CPUFAMILY_INTEL_6_15
+#define CPUFAMILY_INTEL_PENRYN CPUFAMILY_INTEL_6_23
+#define CPUFAMILY_INTEL_NEHALEM CPUFAMILY_INTEL_6_26
+
+#define CPUFAMILY_INTEL_CORE CPUFAMILY_INTEL_6_14
+#define CPUFAMILY_INTEL_CORE2 CPUFAMILY_INTEL_6_15
+