Loading...
--- Libc/Libc-262/pthreads/pthread.c
+++ Libc/Libc-262.3.2/pthreads/pthread.c
@@ -1292,7 +1292,6 @@
#define kHasAltivec 0x01
#define kCache32 0x04
#define kUseDcba 0x20
-#define kNoDcba 0x40
static int
pthread_init(void)
@@ -1308,10 +1307,9 @@
mach_msg_type_number_t count;
int mib[2];
size_t len;
- int hasvectorunit, numcpus;
+ int numcpus;
extern int _bcopy_initialize(void);
- int dynamic_choice;
count = HOST_PRIORITY_INFO_COUNT;
@@ -1359,20 +1357,11 @@
}
mach_port_deallocate(mach_task_self(), host);
- mib[0] = CTL_HW;
- mib[1] = HW_VECTORUNIT;
- len = sizeof(hasvectorunit);
- if (sysctl(mib, 2, &hasvectorunit, &len, NULL, 0) == 0) {
- _cpu_has_altivec = hasvectorunit;
- }
- if (_cpu_has_altivec) { // G4, let bcopy decide whether to use dcba
- _cpu_capabilities = kCache32 + kHasAltivec;
- } else { // G3, no altivec and no dcba
- _cpu_capabilities = kCache32 + kNoDcba;
- }
-
- dynamic_choice = _bcopy_initialize(); // returns 0, kUseDcba, or kNoDcba
- _cpu_capabilities |= dynamic_choice; // remember dynamic choice, if any
+ len = sizeof(_cpu_capabilities);
+ sysctlbyname("hw._cpu_capabilities", &_cpu_capabilities, &len, NULL, 0);
+
+ _bcopy_initialize();
+
mig_init(1); /* enable multi-threaded mig interfaces */
return 0;
}