1 #ifndef RESOURCES_PROCESSOR_H
2 #define RESOURCES_PROCESSOR_H
5 Copyright © 2010-2011, The AROS Development Team. All rights reserved.
7 Tags and defines for processors information queries
10 #ifndef UTILITY_TAGITEM_H
11 # include <utility/tagitem.h>
14 #define PROCESSORNAME "processor.resource"
19 * ARM-specific implementation:
20 * 1. GCIT_Model manufacturer-specific part number
21 * 2. GCIT_Version manufacturer-specific revision and variant numbers (see macros below)
22 * 3. GCIT_Vendor implementer ID as defined by ARM Ltd.
24 #define GCIT_NumberOfProcessors (TAG_USER + 1)
25 #define GCIT_NumberOfCPUs GCIT_NumberOfProcessors
26 #define GCIT_Family (TAG_USER + 2)
27 #define GCIT_Model (TAG_USER + 3)
28 #define GCIT_ModelString (TAG_USER + 4)
29 #define GCIT_Version (TAG_USER + 5)
30 /* #define GCIT_VersionString (TAG_USER + 6) */
31 #define GCIT_FrontsideSpeed (TAG_USER + 7)
32 #define GCIT_ProcessorSpeed (TAG_USER + 8)
33 #define GCIT_L1CacheSize (TAG_USER + 9)
34 #define GCIT_L2CacheSize (TAG_USER + 10)
35 #define GCIT_L3CacheSize (TAG_USER + 11)
36 #define GCIT_VectorUnit (TAG_USER + 12)
37 /* #define GCIT_Extensions (TAG_USER + 13) */
38 #define GCIT_CacheLineSize (TAG_USER + 14)
39 /* #define GCIT_CPUPageSize (TAG_USER + 15) */
40 /* #define GCIT_ExecPageSize (TAG_USER + 16) */
41 /* #define GCIT_TimeBaseSpeed (TAG_USER + 17) */
42 #define GCIT_SelectedProcessor (TAG_USER + 100)
43 #define GCIT_L1DataCacheSize (TAG_USER + 102)
44 #define GCIT_L1InstructionCacheSize (TAG_USER + 103)
45 #define GCIT_Architecture (TAG_USER + 104)
46 #define GCIT_Endianness (TAG_USER + 105)
47 #define GCIT_ProcessorLoad (TAG_USER + 106)
48 #define GCIT_Vendor (TAG_USER + 107)
50 /* Space [TAG_USER + 200, TAG_USER + 499] is reserved for boolean feature
51 tags. Do no introduce non boolean, non feature tags in this space. */
52 #define GCIT_FeaturesBase (TAG_USER + 200)
53 #define GCIT_SupportsFPU (GCIT_FeaturesBase + 1)
54 #define GCIT_SupportsAltiVec (GCIT_FeaturesBase + 2)
55 #define GCIT_SupportsVMX (GCIT_FeaturesBase + 3)
56 #define GCIT_SupportsMMX (GCIT_FeaturesBase + 4)
57 #define GCIT_SupportsMMXEXT (GCIT_FeaturesBase + 5)
58 #define GCIT_Supports3DNOW (GCIT_FeaturesBase + 6)
59 #define GCIT_Supports3DNOWEXT (GCIT_FeaturesBase + 7)
60 #define GCIT_SupportsSSE (GCIT_FeaturesBase + 8)
61 #define GCIT_SupportsSSE2 (GCIT_FeaturesBase + 9)
62 #define GCIT_SupportsSSE3 (GCIT_FeaturesBase + 10)
63 #define GCIT_SupportsSSSE3 (GCIT_FeaturesBase + 11)
64 #define GCIT_SupportsSSE41 (GCIT_FeaturesBase + 12)
65 #define GCIT_SupportsSSE42 (GCIT_FeaturesBase + 13)
66 #define GCIT_SupportsSSE4A (GCIT_FeaturesBase + 14)
67 #define GCIT_SupportsVME (GCIT_FeaturesBase + 15)
68 #define GCIT_SupportsPSE (GCIT_FeaturesBase + 16)
69 #define GCIT_SupportsPAE (GCIT_FeaturesBase + 17)
70 #define GCIT_SupportsCX8 (GCIT_FeaturesBase + 18)
71 #define GCIT_SupportsAPIC (GCIT_FeaturesBase + 19)
72 #define GCIT_SupportsCMOV (GCIT_FeaturesBase + 20)
73 #define GCIT_SupportsPSE36 (GCIT_FeaturesBase + 21)
74 #define GCIT_SupportsCLFSH (GCIT_FeaturesBase + 22)
75 #define GCIT_SupportsACPI (GCIT_FeaturesBase + 23)
76 #define GCIT_SupportsFXSR (GCIT_FeaturesBase + 24)
77 #define GCIT_SupportsHTT (GCIT_FeaturesBase + 25)
78 #define GCIT_SupportsCX16 (GCIT_FeaturesBase + 26)
79 #define GCIT_SupportsVirtualization (GCIT_FeaturesBase + 27)
80 #define GCIT_SupportsNoExecutionBit (GCIT_FeaturesBase + 28)
81 #define GCIT_Supports64BitMode (GCIT_FeaturesBase + 29)
82 #define GCIT_SupportsMSR (GCIT_FeaturesBase + 30)
83 #define GCIT_SupportsVFP (GCIT_FeaturesBase + 31)
84 #define GCIT_SupportsVFPv3 (GCIT_FeaturesBase + 32)
85 #define GCIT_SupportsVFPv3D16 (GCIT_FeaturesBase + 33)
86 #define GCIT_SupportsNeon (GCIT_FeaturesBase + 34)
87 #define GCIT_SupportsVFPv4 (GCIT_FeaturesBase + 35)
88 #define GCIT_SupportsThumb (GCIT_FeaturesBase + 36)
89 #define GCIT_SupportsThumbEE (GCIT_FeaturesBase + 37)
90 #define GCIT_SupportsBranchPred (GCIT_FeaturesBase + 38)
91 #define GCIT_SupportsSecurityExt (GCIT_FeaturesBase + 39)
92 #define GCIT_FeaturesLast (TAG_USER + 499)
94 /* Processor family defines */
95 #define CPUFAMILY_UNKNOWN 0
96 #define CPUFAMILY_60X 1
97 #define CPUFAMILY_7X0 2
98 #define CPUFAMILY_74XX 3
99 #define CPUFAMILY_4XX 4
100 #define CPUFAMILY_AMD_K5 100
101 #define CPUFAMILY_AMD_K6 101
102 #define CPUFAMILY_AMD_K7 102
103 #define CPUFAMILY_AMD_K8 103
104 #define CPUFAMILY_AMD_K9 104
105 #define CPUFAMILY_AMD_K10 105
106 #define CPUFAMILY_INTEL_486 106
107 #define CPUFAMILY_INTEL_PENTIUM 107
108 #define CPUFAMILY_INTEL_PENTIUM_PRO 108
109 #define CPUFAMILY_INTEL_PENTIUM4 109
110 #define CPUFAMILY_MOTOROLA_68000 110
111 #define CPUFAMILY_ARM_3 120 /* ARM family is architecture designation */
112 #define CPUFAMILY_ARM_4 121
113 #define CPUFAMILY_ARM_4T 122
114 #define CPUFAMILY_ARM_5 123
115 #define CPUFAMILY_ARM_5T 124
116 #define CPUFAMILY_ARM_5TE 125
117 #define CPUFAMILY_ARM_5TEJ 126
118 #define CPUFAMILY_ARM_6 127
119 #define CPUFAMILY_ARM_7 128
121 /* Vector unit type */
122 #define VECTORTYPE_NONE 0
123 #define VECTORTYPE_ALTIVEC 1
124 #define VECTORTYPE_VMX 2
125 #define VECTORTYPE_MMX 100
126 #define VECTORTYPE_MMXEXT 101
127 #define VECTORTYPE_3DNOW 102
128 #define VECTORTYPE_3DNOWEXT 103
129 #define VECTORTYPE_SSE 104
130 #define VECTORTYPE_SSE2 105
131 #define VECTORTYPE_SSE3 106
132 #define VECTORTYPE_SSSE3 107
133 #define VECTORTYPE_SSE41 108
134 #define VECTORTYPE_SSE42 109
135 #define VECTORTYPE_SSE4A 110
136 #define VECTORTYPE_VFP 120
137 #define VECTORTYPE_VFPv3 121
138 #define VECTORTYPE_NEON 122
140 /* Processor architecture defines */
141 #define PROCESSORARCH_UNKNOWN 0
142 #define PROCESSORARCH_M68K 1
143 #define PROCESSORARCH_PPC 2
144 #define PROCESSORARCH_X86 3
145 #define PROCESSORARCH_ARM 4
148 #define ENDIANNESS_UNKNOWN 0
149 #define ENDIANNESS_LE 1
150 #define ENDIANNESS_BE 2
152 /* Some generic vendor IDs */
153 #define VENDOR_UNKNOWN 0
155 #define VENDOR_INTEL 2
156 #define VENDOR_CYRIX 3
158 #define VENDOR_NEXGEN 5
159 #define VENDOR_CENTAUR 6
160 #define VENDOR_RISE 7
162 #define VENDOR_TRANSMETA 9
163 #define VENDOR_NSC 10 /* National Semiconductor */
164 #define VENDOR_MOTOROLA 256
166 /* ARM implementer IDs */
167 #define ARM_VENDOR_ARMLTD 0x41 /* ARM Ltd */
168 #define ARM_VENDOR_DEC 0x44 /* Digital Equipment Corp */
169 #define ARM_VENDOR_MOTOROLA 0x4D /* Motorola/Freescale */
170 #define ARM_VENDOR_QUALCOMM 0x51 /* Qualcomm */
171 #define ARM_VENDOR_MARVELL 0x56 /* Marvell Semi Inc */
172 #define ARM_VENDOR_INTEL 0x69 /* Intel corp */
174 /* For ARM Version tag encodes Revision and Variant numbers */
175 #define ARM_REVISION(x) ((x >> 16) & 0xFFFF)
176 #define ARM_VARIANT(x) (x & 0xFFFF)
178 #endif /* EXEC_PROCESSORS_H */