File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -142,6 +142,52 @@ int detect(void){
142
142
143
143
return CPUTYPE_PPC970 ;
144
144
#endif
145
+
146
+ #if defined(__FreeBSD__ ) || defined(__OpenBSD__ ) || defined(__DragonFly__ )
147
+ int id ;
148
+ id = __asm __volatile ("mfpvr %0" : "=r" (id ));
149
+ switch ( id >> 16 ) {
150
+ case 0x4e : // POWER9
151
+ return return CPUTYPE_POWER8 ;
152
+ break ;
153
+ case 0x4d :
154
+ case 0x4b : // POWER8/8E
155
+ return CPUTYPE_POWER8 ;
156
+ break ;
157
+ case 0x4a :
158
+ case 0x3f : // POWER7/7E
159
+ return CPUTYPE_POWER6 ;
160
+ break ;
161
+ case 0x3e :
162
+ return CPUTYPE_POWER6 ;
163
+ break ;
164
+ case 0x3a :
165
+ return CPUTYPE_POWER5 ;
166
+ break ;
167
+ case 0x35 :
168
+ case 0x38 : // POWER4 /4+
169
+ return CPUTYPE_POWER4 ;
170
+ break ;
171
+ case 0x40 :
172
+ case 0x41 : // POWER3 /3+
173
+ return CPUTYPE_POWER3 ;
174
+ break ;
175
+ case 0x39 :
176
+ case 0x3c :
177
+ case 0x44 :
178
+ case 0x45 :
179
+ return CPUTYPE_PPC970 ;
180
+ break ;
181
+ case 0x70 :
182
+ return CPUTYPE_CELL ;
183
+ break ;
184
+ case 0x8003 :
185
+ return CPUTYPE_PPCG4 ;
186
+ break ;
187
+ default :
188
+ return CPUTYPE_UNKNOWN ;
189
+ }
190
+ #endif
145
191
}
146
192
147
193
void get_architecture (void ){
You can’t perform that action at this time.
0 commit comments