* x86-assem.S.
*/
#ifdef LISP_FEATURE_X86
- extern void fast_bzero_base(void *, size_t);
- extern void (*fast_bzero_pointer)(void *, size_t);
size_t len;
int instruction_sse;
len = sizeof(instruction_sse);
- if (sysctlbyname("hw.instruction_sse", &instruction_sse, &len, NULL, 0) != 0
- || instruction_sse == 0) {
- /* Use the non-SSE version*/
- fast_bzero_pointer = fast_bzero_base;
+ if (sysctlbyname("hw.instruction_sse", &instruction_sse, &len, NULL, 0) == 0
+ && instruction_sse != 0) {
+ /* Use the SSE detector */
+ fast_bzero_pointer = fast_bzero_detect;
}
#endif /* LISP_FEATURE_X86 */
}
fprintf(stderr, "WARNING: Couldn't re-execute SBCL with the proper personality flags (maybe /proc isn't mounted?). Trying to continue anyway.\n");
}
}
+ /* Use SSE detector. Recent versions of Linux enable SSE support
+ * on SSE capable CPUs. */
+ /* FIXME: Are there any old versions that does not support SSE? */
+ fast_bzero_pointer = fast_bzero_detect;
#endif
}
return old_value;
}
+extern void fast_bzero_detect(void *, size_t);
+extern void (*fast_bzero_pointer)(void *, size_t);
+
#endif /* _X86_ARCH_H */
.align 4
GNAME(fast_bzero_pointer):
/* Variable containing a pointer to the bzero function to use.
- * Initially points to a function that detects which implementation
- * should be used, and then updates the variable. */
- .long GNAME(fast_bzero_detect)
+ * Initially points to a basic function. Change this variable
+ * to fast_bzero_detect if OS supports SSE. */
+ .long GNAME(fast_bzero_base)
\f
.text
.align align_8byte,0x90
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.9"
+"0.9.9.1"